From: Vincent Vanwaelscappel Date: Tue, 19 Jun 2018 13:43:47 +0000 (+0200) Subject: wip #809 @7 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=adc8d8306ec95eccf9654af838a1174ba87be78a;p=fluidbook-html5.git wip #809 @7 --- diff --git a/_index.html b/_index.html index 53bb7f06..ce20770a 100644 --- a/_index.html +++ b/_index.html @@ -66,6 +66,7 @@
+
diff --git a/js/3dflip/ltr/IndirectSpotStudioIRD_c00.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioIRD_c00.renderer.exr new file mode 100644 index 00000000..313ee5ed Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioIRD_c00.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioIRD_c01.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioIRD_c01.renderer.exr new file mode 100644 index 00000000..2d987fa2 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioIRD_c01.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioIRD_c02.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioIRD_c02.renderer.exr new file mode 100644 index 00000000..268b6d63 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioIRD_c02.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioIRD_c03.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioIRD_c03.renderer.exr new file mode 100644 index 00000000..bdf5168a Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioIRD_c03.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioIRD_c04.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioIRD_c04.renderer.exr new file mode 100644 index 00000000..4ec906b9 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioIRD_c04.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioIRD_c05.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioIRD_c05.renderer.exr new file mode 100644 index 00000000..050d1f9f Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioIRD_c05.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioSPE_c00.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioSPE_c00.renderer.exr new file mode 100644 index 00000000..e30bf402 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioSPE_c00.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioSPE_c01.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioSPE_c01.renderer.exr new file mode 100644 index 00000000..feb982aa Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioSPE_c01.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioSPE_c02.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioSPE_c02.renderer.exr new file mode 100644 index 00000000..60d1deb9 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioSPE_c02.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioSPE_c03.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioSPE_c03.renderer.exr new file mode 100644 index 00000000..d800f3aa Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioSPE_c03.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioSPE_c04.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioSPE_c04.renderer.exr new file mode 100644 index 00000000..5ce07ef4 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioSPE_c04.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudioSPE_c05.renderer.exr b/js/3dflip/ltr/IndirectSpotStudioSPE_c05.renderer.exr new file mode 100644 index 00000000..d501c4b1 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudioSPE_c05.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudio_latlong_1K.renderer.exr b/js/3dflip/ltr/IndirectSpotStudio_latlong_1K.renderer.exr new file mode 100644 index 00000000..7a6d9a90 Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudio_latlong_1K.renderer.exr differ diff --git a/js/3dflip/ltr/IndirectSpotStudio_thumb.jpg b/js/3dflip/ltr/IndirectSpotStudio_thumb.jpg new file mode 100644 index 00000000..de2b16ec Binary files /dev/null and b/js/3dflip/ltr/IndirectSpotStudio_thumb.jpg differ diff --git a/js/3dflip/ltr/Photo-studio-with-umbrella.jpg b/js/3dflip/ltr/Photo-studio-with-umbrella.jpg new file mode 100644 index 00000000..8f75533b Binary files /dev/null and b/js/3dflip/ltr/Photo-studio-with-umbrella.jpg differ diff --git a/js/3dflip/ltr/flipping-test-with-morpher.json b/js/3dflip/ltr/flipping-test-with-morpher.json new file mode 100644 index 00000000..a913e7e7 --- /dev/null +++ b/js/3dflip/ltr/flipping-test-with-morpher.json @@ -0,0 +1,868 @@ +{ + "materials": [{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__1.005", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "BC3187A1-7BA9-32F8-8EF0-988F0A4965DB", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__10.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "791ED2CA-4CF7-37BD-B7A5-93E5C53334E6", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__11.003", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "E1C33DF2-8F43-302A-9D0D-E28306BED34C", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__12.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "0B0F01C9-8714-3C8E-982F-65EA7E4CAAD7", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__13", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "B80EEB38-A743-3E46-8FCF-2980C906ABF8", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__14.001", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "C7EE7895-5448-3E31-AD9E-585A06B2436D", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__15.001", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "0900AA13-3AAA-35EE-924B-384C6758BE52", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__16.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "800B5119-8B3F-36C6-94A0-A5A539678C74", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__17.004", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "444E0A9B-3E53-339A-B7CE-C89B8733E0DD", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__18.005", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "8A540E16-F140-3A80-918E-0626BBE324A0", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__19.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "BF9DB5D5-19C6-3106-88B0-71EB3963ECE5", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__2.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "69015046-C32F-37C8-9BD7-85C69F43A187", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__21.004", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "D35E67A3-94FC-3970-8C0E-9B88AB66070B", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__22.004", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "5CC2BB2B-1487-3519-8A92-971CA3BFFDD8", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__23.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "77FDF23B-DF16-3F79-92F9-1E81A7C388E1", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__24.004", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "A2C4E408-6162-31D7-8B4E-1D49CA0ADE5C", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__25.004", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "D4294D8A-3AC2-37AE-8B96-DA280B52674A", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__26", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "46EC61AD-1F64-370E-8F66-BB5E08490B28", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__27.001", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "0734F973-3EEC-3B1A-A7D3-DCD616642E7A", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__28", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "8540320A-85EF-37FA-A1D8-61D6920F449D", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__29.005", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "7FACB788-2021-3EB9-9D96-FA2F65928C61", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__3", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "F20FB3E5-C08E-32C2-B39F-E474BFF42466", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__4", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "D576C33C-5622-34A8-9053-49E51AAD0A1E", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__5", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "31F72AF1-4654-36BC-9F22-A85315B05D0B", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__6", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "ABC0B408-AE53-36EE-A398-C0FB8A44291D", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__7.003", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "19F0F770-4EEB-35C5-8360-B754546D1F80", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__8.003", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "DB1EC116-7961-38D4-AACD-3A6085AAC5F8", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "depthWrite": true, + "name": "07___Default_Slot__9.002", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "EF0D6FED-F199-360E-8CC8-8D386638725E", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 0, + "ambient": 0 + },{ + "blending": "NormalBlending", + "map": "7738E2DA-557B-3F32-B4A5-19A9302EF3F1", + "depthWrite": true, + "name": "2.001", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "8DF1CFAB-E744-3C88-BA40-D246A7439BAA", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 9868950, + "ambient": 9868950 + },{ + "blending": "NormalBlending", + "map": "5FCAB75F-200B-38C7-86E7-27E6D26F3D32", + "depthWrite": true, + "name": "3.005", + "type": "MeshPhongMaterial", + "specular": 131586, + "uuid": "7E64CE34-38C6-3FC6-BF62-C782D9458625", + "vertexColors": false, + "depthTest": true, + "emissive": 0, + "shininess": 50, + "color": 9868950, + "ambient": 9868950 + }], + "geometries": [{ + "materials": [{ + "visible": true, + "mapDiffuse": "fluidbook-4pages 3.jpg", + "wireframe": false, + "shading": "phong", + "mapDiffuseRepeat": [1,1], + "specularCoef": 50, + "depthWrite": true, + "colorSpecular": [0.01,0.01,0.01], + "mapDiffuseAnisotropy": 1, + "colorDiffuse": [0.588235,0.588235,0.588235], + "colorAmbient": [0.588235,0.588235,0.588235], + "DbgIndex": 29, + "blending": "NormalBlending", + "DbgName": "3.005", + "opacity": 1, + "colorEmissive": [0,0,0], + "depthTest": true, + "mapDiffuseWrap": ["RepeatWrapping","RepeatWrapping"], + "DbgColor": 15658734, + "transparent": false + },{ + "visible": true, + "mapDiffuse": "fluidbook-4pages 2.jpg", + "wireframe": false, + "shading": "phong", + "mapDiffuseRepeat": [1,1], + "specularCoef": 50, + "depthWrite": true, + "colorSpecular": [0.01,0.01,0.01], + "mapDiffuseAnisotropy": 1, + "colorDiffuse": [0.588235,0.588235,0.588235], + "colorAmbient": [0.588235,0.588235,0.588235], + "DbgIndex": 19, + "blending": "NormalBlending", + "DbgName": "2.001", + "opacity": 1, + "colorEmissive": [0,0,0], + "depthTest": true, + "mapDiffuseWrap": ["RepeatWrapping","RepeatWrapping"], + "DbgColor": 15658734, + "transparent": false + },{ + "visible": true, + "wireframe": false, + "shading": "phong", + "specularCoef": 50, + "depthWrite": true, + "colorSpecular": [0.01,0.01,0.01], + "colorDiffuse": [0,0,0], + "colorAmbient": [0,0,0], + "DbgIndex": 4, + "blending": "NormalBlending", + "DbgName": "07___Default_Slot__5", + "opacity": 1, + "colorEmissive": [0,0,0], + "depthTest": true, + "DbgColor": 15658496, + "transparent": false + },{ + "visible": true, + "wireframe": false, + "shading": "phong", + "specularCoef": 50, + "depthWrite": true, + "colorSpecular": [0.01,0.01,0.01], + "colorDiffuse": [0,0,0], + "colorAmbient": [0,0,0], + "DbgIndex": 3, + "blending": "NormalBlending", + "DbgName": "07___Default_Slot__4", + "opacity": 1, + "colorEmissive": [0,0,0], + "depthTest": true, + "DbgColor": 238, + "transparent": false + },{ + "visible": true, + "wireframe": false, + "shading": "phong", + "specularCoef": 50, + "depthWrite": true, + "colorSpecular": [0.01,0.01,0.01], + "colorDiffuse": [0,0,0], + "colorAmbient": [0,0,0], + "DbgIndex": 5, + "blending": "NormalBlending", + "DbgName": "07___Default_Slot__6", + "opacity": 1, + "colorEmissive": [0,0,0], + "depthTest": true, + "DbgColor": 61166, + "transparent": false + },{ + "visible": true, + "wireframe": false, + "shading": "phong", + "specularCoef": 50, + "depthWrite": true, + "colorSpecular": [0.01,0.01,0.01], + "colorDiffuse": [0,0,0], + "colorAmbient": [0,0,0], + "DbgIndex": 2, + "blending": "NormalBlending", + "DbgName": "07___Default_Slot__3", + "opacity": 1, + "colorEmissive": [0,0,0], + "depthTest": true, + "DbgColor": 60928, + "transparent": false + }], + "type": "Geometry", + "data": { + "skinWeights": [], + "metadata": { + "generator": "io_three", + "materials": 6, + "uvs": 1, + "normals": 20, + "bones": 0, + "vertices": 1302, + "morphTargets": 3, + "faces": 2600, + "version": 3 + }, + "bones": [], + "animations": [], + "name": "004Geometry", + "morphTargets": [{ + "vertices": [[-6.9e-05,1.35431,-148.189],[12.5981,0.633327,-148.361],[24.4402,0.850573,-148.327],[35.5261,2.00604,-148.085],[45.8558,4.09975,-147.636],[55.4294,7.13168,-146.979],[64.2469,11.1018,-146.116],[72.3082,16.0102,-145.046],[79.6133,21.8568,-143.768],[86.1622,28.6417,-142.283],[91.955,36.3647,-140.591],[96.9917,45.026,-138.692],[101.272,54.6256,-136.586],[104.797,65.1633,-134.273],[107.565,76.6393,-131.752],[109.577,89.0535,-129.024],[110.833,102.406,-126.09],[111.332,116.697,-122.948],[111.076,131.925,-119.599],[110.063,148.093,-116.042],[108.295,165.198,-112.279],[-6.9e-05,1.35431,-138.309],[12.5564,0.627329,-138.471],[24.3724,0.82658,-138.439],[35.4479,1.95206,-138.213],[45.783,4.00378,-137.793],[55.3775,6.98172,-137.18],[64.2316,10.8859,-136.373],[72.3452,15.7163,-135.372],[79.7183,21.4729,-134.178],[86.3509,28.1558,-132.79],[92.243,35.7649,-131.209],[97.3947,44.3002,-129.434],[101.806,53.7618,-127.465],[105.477,64.1496,-125.302],[108.407,75.4636,-122.946],[110.596,87.7039,-120.397],[112.046,100.87,-117.653],[112.754,114.963,-114.716],[112.723,129.982,-111.585],[111.951,145.927,-108.261],[110.438,162.799,-104.743],[-6.9e-05,1.35431,-128.429],[12.5163,0.621304,-128.581],[24.3077,0.802479,-128.551],[35.3742,1.89783,-128.341],[45.7157,3.90737,-127.95],[55.3323,6.83109,-127.378],[64.2239,10.669,-126.626],[72.3906,15.4211,-125.692],[79.8323,21.0873,-124.578],[86.5491,27.6678,-123.283],[92.5409,35.1624,-121.807],[97.8078,43.5712,-120.151],[102.35,52.8942,-118.313],[106.167,63.1313,-116.295],[109.259,74.2827,-114.096],[111.626,86.3482,-111.716],[113.268,99.3279,-109.155],[114.185,113.222,-106.414],[114.378,128.03,-103.492],[113.845,143.752,-100.389],[112.587,160.389,-97.1046],[-6.9e-05,1.35431,-118.548],[12.4778,0.615252,-118.691],[24.2461,0.778271,-118.665],[35.3048,1.84337,-118.47],[45.654,3.81054,-118.107],[55.2937,6.67979,-117.575],[64.2238,10.4511,-116.875],[72.4444,15.1245,-116.006],[79.9554,20.7,-114.968],[86.7569,27.1776,-113.762],[92.8488,34.5572,-112.387],[98.2312,42.8389,-110.843],[102.904,52.0227,-109.131],[106.867,62.1085,-107.25],[110.121,73.0965,-105.201],[112.665,84.9865,-102.983],[114.5,97.7786,-100.597],[115.625,111.473,-98.0416],[116.041,126.069,-95.3178],[115.747,141.567,-92.4254],[114.743,157.968,-89.3645],[-6.9e-05,1.35431,-108.666],[12.4409,0.609173,-108.801],[24.1875,0.753955,-108.779],[35.2399,1.78866,-108.6],[45.598,3.71328,-108.263],[55.2618,6.52782,-107.77],[64.2314,10.2323,-107.119],[72.5066,14.8267,-106.312],[80.0876,20.3109,-105.347],[86.9743,26.6852,-104.226],[93.1666,33.9493,-102.947],[98.6647,42.1034,-101.511],[103.469,51.1473,-99.9185],[107.578,61.0812,-98.1687],[110.993,71.905,-96.2618],[113.714,83.6188,-94.1978],[115.741,96.2224,-91.9768],[117.073,109.716,-89.5988],[117.712,124.099,-87.0637],[117.655,139.373,-84.3716],[116.905,155.536,-81.5224],[-6.9e-05,1.35431,-98.7841],[12.4056,0.603067,-98.9121],[24.1321,0.729532,-98.894],[35.1795,1.7337,-98.7298],[45.5476,3.61558,-98.4194],[55.2367,6.37517,-97.9628],[64.2466,10.0125,-97.3602],[72.5773,14.5275,-96.6114],[80.2288,19.9202,-95.7164],[87.2012,26.1906,-94.6753],[93.4944,33.3387,-93.4881],[99.1085,41.3646,-92.1547],[104.043,50.2681,-90.6752],[108.299,60.0493,-89.0496],[111.876,70.7083,-87.2778],[114.773,82.245,-85.3599],[116.992,94.6593,-83.2959],[118.531,107.951,-81.0857],[119.391,122.121,-78.7294],[119.571,137.169,-76.2269],[119.073,153.094,-73.5783],[-6.9e-05,1.35431,-88.901],[12.3719,0.596934,-89.0233],[24.0797,0.705001,-89.0098],[35.1234,1.67851,-88.8604],[45.5029,3.51746,-88.575],[55.2182,6.22186,-88.1539],[64.2693,9.79169,-87.5968],[72.6563,14.227,-86.9039],[80.3791,19.5277,-86.0751],[87.4377,25.6939,-85.1105],[93.8322,32.7255,-84.01],[99.5625,40.6225,-82.7737],[104.629,49.385,-81.4014],[109.031,59.0129,-79.8933],[112.768,69.5063,-78.2493],[115.842,80.8651,-76.4695],[118.251,93.0894,-74.5538],[119.997,106.179,-72.5022],[121.078,120.134,-70.3148],[121.495,134.955,-67.9915],[121.247,150.641,-65.5323],[-6.9e-05,1.35431,-79.0173],[12.3399,0.590775,-79.1349],[24.0305,0.680363,-79.1263],[35.0718,1.62307,-78.9915],[45.4637,3.41891,-78.7304],[55.2064,6.06787,-78.343],[64.2997,9.56995,-77.8295],[72.7437,13.9252,-77.1897],[80.5384,19.1335,-76.4236],[87.6838,25.1949,-75.5313],[94.1799,32.1095,-74.5128],[100.027,39.8772,-73.368],[105.224,48.498,-72.097],[109.772,57.9719,-70.6998],[113.671,68.299,-69.1763],[116.92,79.4792,-67.5266],[119.521,91.5125,-65.7506],[121.471,104.399,-63.8484],[122.773,118.138,-61.8199],[123.425,132.731,-59.6653],[123.428,148.177,-57.3843],[-6.9e-05,1.35431,-69.1328],[12.3094,0.584588,-69.2468],[23.9843,0.655617,-69.2436],[35.0245,1.5674,-69.1231],[45.4302,3.31993,-68.8853],[55.2013,5.91321,-68.5303],[64.3378,9.34724,-68.0581],[72.8396,13.622,-67.4685],[80.7069,18.7375,-66.7618],[87.9395,24.6938,-65.9377],[94.5376,31.4909,-64.9964],[100.501,39.1286,-63.9379],[105.83,47.6072,-62.7621],[110.524,56.9264,-61.469],[114.584,67.0865,-60.0587],[118.009,78.0873,-58.5311],[120.799,89.9288,-56.8863],[122.955,102.611,-55.1242],[124.476,116.134,-53.2448],[125.363,130.498,-51.2483],[125.615,145.702,-49.1344],[-6.9e-05,1.35431,-59.2477],[12.2806,0.578375,-59.3591],[23.9412,0.630764,-59.3617],[34.9818,1.51148,-59.2553],[45.4023,3.22051,-59.04],[55.2029,5.75787,-58.7157],[64.3834,9.12356,-58.2826],[72.9439,13.3176,-57.7406],[80.8843,18.3399,-57.0896],[88.2048,24.1905,-56.3297],[94.9052,30.8695,-55.4609],[100.986,38.3768,-54.4832],[106.446,46.7125,-53.3966],[111.286,55.8764,-52.201],[115.507,65.8687,-50.8965],[119.107,76.6893,-49.4832],[122.087,88.3382,-47.9609],[124.447,100.815,-46.3297],[126.188,114.121,-44.5895],[127.308,128.255,-42.7405],[127.808,143.217,-40.7825],[-6.9e-05,1.35431,-49.3618],[12.2533,0.572135,-49.4718],[23.9012,0.605803,-49.4805],[34.9434,1.45531,-49.388],[45.3801,3.12067,-49.1942],[55.2111,5.60187,-48.8993],[64.4366,8.89891,-48.5031],[73.0565,13.0118,-48.0057],[81.0709,17.9405,-47.4071],[88.4796,23.6851,-46.7073],[95.2828,30.2455,-45.9063],[101.48,37.6218,-45.004],[107.072,45.8139,-44.0005],[112.059,54.8218,-42.8958],[116.44,64.6456,-41.6899],[120.215,75.2852,-40.3827],[123.384,86.7407,-38.9744],[125.948,99.012,-37.4648],[127.907,112.099,-35.854],[129.26,126.002,-34.1419],[130.007,140.721,-32.3287],[-6.9e-05,1.35431,-39.4753],[12.2277,0.565868,-39.5847],[23.8642,0.580735,-39.6001],[34.9095,1.39891,-39.5212],[45.3634,3.0204,-39.3481],[55.2261,5.44519,-39.081],[64.4975,8.67329,-38.7196],[73.1776,12.7047,-38.264],[81.2665,17.5394,-37.7143],[88.764,23.1775,-37.0705],[95.6703,29.6188,-36.3324],[101.985,36.8634,-35.5002],[107.709,44.9114,-34.5739],[112.841,53.7627,-33.5533],[117.383,63.4172,-32.4386],[121.332,73.8751,-31.2298],[124.691,85.1363,-29.9267],[127.458,97.2008,-28.5295],[129.634,110.069,-27.0381],[131.219,123.74,-25.4526],[132.213,138.214,-23.7729],[-6.9e-05,1.35431,-29.5881],[12.2037,0.559574,-29.6981],[23.8304,0.555559,-29.7204],[34.88,1.34227,-29.6549],[45.3524,2.91969,-29.5017],[55.2478,5.28784,-29.2607],[64.566,8.44671,-28.932],[73.3071,12.3963,-28.5155],[81.4711,17.1366,-28.0112],[89.058,22.6676,-27.4192],[96.0678,28.9894,-26.7395],[102.5,36.1019,-25.9719],[108.356,44.0051,-25.1167],[113.634,52.699,-24.1736],[118.336,62.1836,-23.1428],[122.46,72.459,-22.0243],[126.007,83.5251,-20.818],[128.977,95.3819,-19.5239],[131.37,108.029,-18.1421],[133.186,121.468,-16.6725],[134.424,135.697,-15.1152],[-6.9e-05,1.35431,-19.7002],[12.1813,0.553253,-19.8118],[23.7997,0.530276,-19.8416],[34.8549,1.28538,-19.7892],[45.3471,2.81856,-19.6549],[55.2761,5.12982,-19.4386],[64.6421,8.21916,-19.1404],[73.445,12.0866,-18.7601],[81.6849,16.7321,-18.2978],[89.3616,22.1557,-17.7536],[96.4753,28.3573,-17.1273],[103.026,35.3371,-16.4191],[109.013,43.0949,-15.6289],[114.438,51.6308,-14.7567],[119.299,60.9447,-13.8025],[123.597,71.0368,-12.7663],[127.333,81.9069,-11.6481],[130.505,93.5552,-10.4479],[133.114,105.981,-9.16577],[135.16,119.186,-7.80162],[136.642,133.168,-6.35547],[-6.9e-05,1.35431,-9.81157],[12.1606,0.546905,-9.9259],[23.772,0.504885,-9.96343],[34.8342,1.22825,-9.92404],[45.3473,2.717,-9.80779],[55.3112,4.97113,-9.61466],[64.7258,7.99064,-9.3447],[73.5913,11.7755,-8.99786],[81.9076,16.3258,-8.57413],[89.6748,21.6415,-8.07353],[96.8927,27.7225,-7.49609],[103.561,34.569,-6.84175],[109.681,42.1808,-6.11058],[115.251,50.558,-5.30252],[120.273,59.7006,-4.4176],[124.744,69.6086,-3.4558],[128.667,80.2819,-2.41715],[132.041,91.7207,-1.30162],[134.865,103.925,-0.109238],[137.141,116.894,1.16003],[138.867,130.629,2.50615],[-6.9e-05,1.35431,0.077713],[12.1414,0.540531,-0.040359],[23.7474,0.479387,-0.086075],[34.818,1.17088,-0.059372],[45.3532,2.615,0.039703],[55.3529,4.81176,0.211182],[64.8172,7.76116,0.455032],[73.7461,11.4632,0.771271],[82.1395,15.9179,1.15991],[89.9975,21.1252,1.62094],[97.3201,27.0851,2.15433],[104.107,33.7977,2.76012],[110.359,41.2629,3.43831],[116.075,49.4807,4.18889],[121.256,58.4512,5.01184],[125.901,68.1743,5.9072],[130.011,78.65,6.87494],[133.586,89.8784,7.91505],[136.625,101.859,9.02757],[139.129,114.593,10.2125],[141.097,128.079,11.4697],[-6.9e-05,1.35431,9.9677],[12.1238,0.534129,9.84483],[23.7259,0.453781,9.7905],[34.8062,1.11326,9.80476],[45.3647,2.51258,9.88756],[55.4013,4.65173,10.0389],[64.9162,7.53071,10.2588],[73.9092,11.1495,10.5472],[82.3804,15.5082,10.9042],[90.3298,20.6066,11.3298],[97.7574,26.4449,11.8239],[104.663,33.0231,12.3866],[111.047,40.3411,13.0177],[116.909,48.3988,13.7175],[122.25,57.1965,14.4858],[127.068,66.734,15.3227],[131.365,77.0112,16.2281],[135.14,88.0284,17.2021],[138.393,99.7853,18.2446],[141.124,112.282,19.3557],[143.334,125.519,20.5353],[-6.9e-05,1.35431,19.8584],[12.1079,0.527701,19.7297],[23.7075,0.428067,19.6663],[34.7988,1.05541,19.6684],[45.3818,2.40973,19.7358],[55.4564,4.49102,19.8685],[65.0228,7.29929,20.0666],[74.0807,10.8345,20.33],[82.6304,15.0967,20.6589],[90.6717,20.0859,21.0531],[98.2047,25.8021,21.5126],[105.229,32.2452,22.0375],[111.746,39.4154,22.6278],[117.754,47.3124,23.2834],[123.253,55.9365,24.0044],[128.245,65.2876,24.7907],[132.728,75.3656,25.6424],[136.702,86.1706,26.5595],[140.169,97.7025,27.5419],[143.127,109.962,28.5897],[145.576,122.947,29.7028],[-6.9e-05,1.35431,29.7498],[12.0936,0.521246,29.6142],[23.6922,0.402246,29.5414],[34.7959,0.997312,29.5315],[45.4045,2.30644,29.5843],[55.5182,4.32964,29.7],[65.1369,7.0669,29.8785],[74.2607,10.5182,30.1197],[82.8894,14.6836,30.4239],[91.0232,19.5631,30.7908],[98.6619,25.1566,31.2205],[105.806,31.4642,31.713],[112.455,38.4858,32.2684],[118.608,46.2215,32.8865],[124.267,54.6713,33.5675],[129.431,63.8351,34.3112],[134.1,73.7131,35.1178],[138.274,84.305,35.9872],[141.953,95.611,36.9194],[145.137,107.631,37.9144],[147.826,120.365,38.9723],[-6.9e-05,1.35431,39.6418],[12.0808,0.514763,39.4983],[23.68,0.376318,39.4157],[34.7973,0.938972,39.394],[45.4329,2.20273,39.4332],[55.5867,4.16758,39.5333],[65.2588,6.83354,39.6944],[74.449,10.2006,39.9163],[83.1575,14.2688,40.1992],[91.3842,19.038,40.5429],[99.1291,24.5084,40.9475],[106.392,30.6798,41.413],[113.174,37.5524,41.9395],[119.473,45.126,42.5269],[125.291,53.4008,43.1751],[130.627,62.3767,43.8843],[135.482,72.0536,44.6544],[139.854,82.4317,45.4853],[143.745,93.5108,46.3772],[147.154,105.291,47.33],[150.081,117.772,48.3437],[-6.9e-05,1.35431,49.5345],[12.0697,0.508254,49.3821],[23.6708,0.350282,49.2892],[34.8032,0.880391,49.256],[45.4669,2.09858,49.2825],[55.6619,4.00486,49.3686],[65.3882,6.59922,49.5143],[74.6458,9.88166,49.7196],[83.4347,13.8522,49.9847],[91.7548,18.5108,50.3094],[99.6063,23.8575,50.6936],[106.989,29.8922,51.1376],[113.903,36.6151,51.6412],[120.349,44.026,52.2044],[126.325,52.125,52.8273],[131.833,60.9121,53.5098],[136.872,70.3873,54.252],[141.443,80.5506,55.0538],[145.545,91.4019,55.9152],[149.178,102.941,56.8363],[152.342,115.169,57.817],[-6.9e-05,1.35431,59.428],[12.0602,0.501719,59.2655],[23.6648,0.324138,59.162],[34.8135,0.821568,59.1175],[45.5065,1.99401,59.1321],[55.7438,3.84146,59.2057],[65.5253,6.36393,59.3383],[74.851,9.5614,59.5299],[83.7209,13.4339,59.7806],[92.135,17.9814,60.0903],[100.093,23.2039,60.459],[107.596,29.1014,60.8867],[114.643,35.6739,61.3734],[121.234,42.9215,61.9192],[127.369,50.844,62.5241],[133.049,59.4416,63.1879],[138.273,68.7141,63.9107],[143.041,78.6617,64.6926],[147.353,89.2843,65.5335],[151.209,100.582,66.4334],[154.61,112.555,67.3924],[-6.9e-05,1.35431,69.3221],[12.0523,0.495156,69.1485],[23.6618,0.297887,69.034],[34.8283,0.762503,68.9785],[45.5518,1.88901,68.9821],[55.8323,3.67739,69.0447],[65.6699,6.12767,69.1663],[75.0645,9.23982,69.347],[84.0162,13.0139,69.5868],[92.5248,17.4498,69.8856],[100.591,22.5476,70.2434],[108.213,28.3073,70.6603],[115.393,34.7289,71.1363],[122.13,41.8123,71.6713],[128.424,49.5577,72.2653],[134.274,57.965,72.9184],[139.682,67.0341,73.6306],[144.647,76.7651,74.4018],[149.169,87.158,75.232],[153.248,98.2128,76.1213],[156.884,109.929,77.0697],[-6.9e-05,1.35431,79.2169],[12.0461,0.488566,79.0312],[23.6619,0.271529,78.9052],[34.8475,0.703197,78.8389],[45.6027,1.78357,78.8324],[55.9276,3.51265,78.8855],[65.8222,5.89044,78.9984],[75.2865,8.91693,79.1709],[84.3205,12.5921,79.4033],[92.9242,16.916,79.6953],[101.098,21.8886,80.047],[108.841,27.51,80.4585],[116.153,33.78,80.9297],[123.036,40.6987,81.4606],[129.488,48.2661,82.0512],[135.51,56.4823,82.7015],[141.101,65.3471,83.4115],[146.263,74.8607,84.1813],[150.994,85.0229,85.0108],[155.294,95.8339,85.9],[159.164,107.294,86.8489],[-6.9e-05,1.35431,89.1124],[12.0414,0.48195,88.9136],[23.6651,0.245063,88.7757],[34.8711,0.643648,88.6988],[45.6592,1.67771,88.6831],[56.0295,3.34724,88.7283],[65.9821,5.65224,88.8345],[75.5169,8.59272,89.0018],[84.6339,12.1687,89.2301],[93.3331,16.3801,89.5195],[101.615,21.227,89.8698],[109.478,26.7094,90.2812],[116.924,32.8272,90.7537],[123.952,39.5805,91.2871],[130.563,46.9693,91.8816],[136.755,54.9936,92.5371],[142.53,63.6533,93.2536],[147.887,72.9485,94.0312],[152.826,82.8792,94.8698],[157.347,93.4453,95.7694],[161.451,104.647,96.7301],[-6.9e-05,1.35431,99.0087],[12.0384,0.475306,98.7956],[23.6714,0.218489,98.6454],[34.8991,0.583857,98.5583],[45.7213,1.57141,98.5341],[56.1382,3.18115,98.5729],[66.1496,5.41308,98.6747],[75.7557,8.26719,98.8395],[84.9564,11.7435,99.0673],[93.7517,15.842,99.358],[102.142,20.5626,99.7117],[110.126,25.9055,100.128],[117.705,31.8706,100.608],[124.879,38.4578,101.151],[131.647,45.6672,101.757],[138.01,53.4988,102.425],[143.968,61.9526,103.157],[149.52,71.0286,103.951],[154.666,80.7267,104.809],[159.408,91.0471,105.73],[163.744,101.99,106.713],[-6.9e-05,1.35431,108.906],[12.0369,0.468636,108.677],[23.6808,0.191808,108.514],[34.9315,0.523825,108.417],[45.7891,1.46469,108.385],[56.2535,3.0144,108.419],[66.3248,5.17295,108.519],[76.0029,7.94035,108.684],[85.2879,11.3166,108.915],[94.1797,15.3017,109.211],[102.678,19.8956,109.573],[110.784,25.0984,110],[118.496,30.91,110.493],[125.816,37.3305,111.052],[132.742,44.3598,111.676],[139.275,51.998,112.366],[145.415,60.245,113.121],[151.161,69.1008,113.942],[156.515,78.5655,114.829],[161.475,88.6391,115.781],[166.042,99.3215,116.798],[-6.9e-05,1.35431,118.803],[12.0371,0.461939,118.558],[23.6933,0.165019,118.382],[34.9684,0.46355,118.275],[45.8625,1.35753,118.237],[56.3755,2.84697,118.268],[66.5076,4.93185,118.367],[76.2585,7.61219,118.535],[85.6285,10.888,118.772],[94.6174,14.7592,119.078],[103.225,19.2259,119.453],[111.452,24.288,119.897],[119.298,29.9456,120.409],[126.763,36.1987,120.99],[133.847,43.0472,121.64],[140.549,50.4911,122.359],[146.871,58.5305,123.147],[152.812,67.1654,124.003],[158.371,76.3956,124.928],[163.55,86.2214,125.922],[168.348,96.6426,126.985],[-6.9e-05,1.35431,128.701],[12.0389,0.455215,128.439],[23.7088,0.138123,128.25],[35.0097,0.403034,128.133],[45.9415,1.24995,128.089],[56.5042,2.67887,128.118],[66.6979,4.68979,128.219],[76.5226,7.28271,128.394],[85.9781,10.4576,128.641],[95.0647,14.2146,128.96],[103.782,18.5535,129.352],[112.131,23.4744,129.817],[120.11,28.9774,130.355],[127.72,35.0623,130.966],[134.962,41.7293,131.649],[141.834,48.9782,132.405],[148.337,56.8092,133.233],[154.471,65.2221,134.134],[160.236,74.2171,135.108],[165.632,83.794,136.155],[170.659,93.953,137.274],[-6.9e-05,1.35431,138.6],[12.0423,0.448464,138.32],[23.7274,0.111119,138.117],[35.0554,0.342275,137.991],[46.0261,1.14193,137.942],[56.6396,2.51009,137.97],[66.8959,4.44675,138.076],[76.795,6.95191,138.259],[86.3369,10.0256,138.519],[95.5215,13.6677,138.856],[104.349,17.8784,139.271],[112.819,22.6576,139.763],[120.932,28.0052,140.332],[128.688,33.9214,140.978],[136.087,40.4061,141.702],[143.128,47.4592,142.503],[149.812,55.0809,143.381],[156.139,63.2711,144.336],[162.109,72.0298,145.368],[167.721,81.3569,146.478],[172.977,91.2526,147.665],[-6.9e-05,1.35431,148.5],[12.0473,0.441686,148.2],[23.7492,0.084008,147.982],[35.1055,0.281275,147.847],[46.1164,1.03349,147.794],[56.7817,2.34065,147.824],[67.1015,4.20275,147.936],[77.0758,6.6198,148.131],[86.7046,9.5918,148.408],[95.9879,13.1187,148.767],[104.926,17.2006,149.209],[113.518,21.8375,149.733],[121.765,27.0292,150.339],[129.666,32.776,151.028],[137.222,39.0776,151.799],[144.432,45.9342,152.653],[151.297,53.3458,153.589],[157.816,61.3123,154.608],[163.99,69.8337,155.709],[169.818,78.9102,156.892],[175.3,88.5415,158.158],[-6.9e-05,1.25431,-148.189],[12.5975,0.533327,-148.366],[24.439,0.750572,-148.335],[35.5243,1.90604,-148.097],[45.8536,3.99974,-147.651],[55.4268,7.03167,-146.997],[64.244,11.0018,-146.136],[72.305,15.9102,-145.067],[79.61,21.7568,-143.791],[86.1588,28.5417,-142.307],[91.9516,36.2647,-140.615],[96.9883,44.926,-138.716],[101.269,54.5255,-136.609],[104.793,65.0633,-134.294],[107.562,76.5393,-131.772],[109.574,88.9535,-129.042],[110.83,102.306,-126.105],[111.331,116.597,-122.96],[111.075,131.825,-119.607],[110.063,147.993,-116.047],[108.295,165.098,-112.279],[-6.9e-05,1.25431,-138.309],[12.5558,0.527329,-138.475],[24.3712,0.726579,-138.447],[35.4463,1.85206,-138.224],[45.7809,3.90377,-137.807],[55.3751,6.88172,-137.197],[64.2289,10.7859,-136.392],[72.3422,15.6163,-135.393],[79.7151,21.3729,-134.2],[86.3477,28.0558,-132.813],[92.2398,35.6649,-131.231],[97.3915,44.2002,-129.456],[101.803,53.6618,-127.486],[105.474,64.0496,-125.323],[108.404,75.3636,-122.965],[110.594,87.6039,-120.413],[112.044,100.77,-117.667],[112.753,114.863,-114.727],[112.722,129.882,-111.593],[111.95,145.827,-108.265],[110.438,162.699,-104.743],[-6.9e-05,1.25431,-128.429],[12.5157,0.521303,-128.585],[24.3066,0.702478,-128.559],[35.3726,1.79783,-128.352],[45.7138,3.80737,-127.964],[55.33,6.73109,-127.394],[64.2214,10.569,-126.643],[72.3878,15.3211,-125.712],[79.8294,20.9873,-124.598],[86.5461,27.5678,-123.304],[92.5379,35.0624,-121.828],[97.8048,43.4712,-120.172],[102.347,52.7942,-118.333],[106.164,63.0313,-116.314],[109.256,74.1827,-114.114],[111.624,86.2482,-111.732],[113.266,99.2279,-109.169],[114.184,113.122,-106.425],[114.377,127.93,-103.499],[113.844,143.652,-100.393],[112.587,160.289,-97.1046],[-6.9e-05,1.25431,-118.548],[12.4772,0.515252,-118.694],[24.2451,0.67827,-118.672],[35.3034,1.74337,-118.48],[45.6522,3.71054,-118.119],[55.2916,6.57979,-117.59],[64.2215,10.3511,-116.891],[72.4418,15.0245,-116.023],[79.9527,20.6,-114.987],[86.7541,27.0775,-113.781],[92.846,34.4572,-112.406],[98.2284,42.7389,-110.863],[102.901,51.9227,-109.15],[106.865,62.0085,-107.268],[110.119,72.9965,-105.218],[112.663,84.8865,-102.998],[114.498,97.6786,-100.609],[115.624,111.373,-98.0515],[116.04,125.969,-95.3248],[115.746,141.467,-92.4291],[114.743,157.868,-89.3645],[-6.9e-05,1.25431,-108.666],[12.4404,0.509173,-108.805],[24.1866,0.653955,-108.786],[35.2386,1.68866,-108.609],[45.5964,3.61327,-108.275],[55.2599,6.42781,-107.783],[64.2292,10.1323,-107.135],[72.5042,14.7266,-106.328],[80.0851,20.2109,-105.365],[86.9717,26.5852,-104.244],[93.164,33.8493,-102.965],[98.6622,42.0033,-101.529],[103.466,51.0473,-99.9358],[107.576,60.9812,-98.1851],[110.991,71.805,-96.2769],[113.712,83.5187,-94.2114],[115.739,96.1224,-91.9884],[117.072,109.616,-89.608],[117.711,123.999,-87.0702],[117.655,139.273,-84.375],[116.905,155.436,-81.5224],[-6.9e-05,1.25431,-98.7841],[12.4051,0.503067,-98.9153],[24.1312,0.629532,-98.9],[35.1782,1.6337,-98.7383],[45.5461,3.51558,-98.4301],[55.2349,6.27517,-97.9754],[64.2445,9.91246,-97.3742],[72.5751,14.4275,-96.6266],[80.2265,19.8202,-95.7324],[87.1988,26.0906,-94.6919],[93.492,33.2387,-93.5048],[99.1061,41.2645,-92.1713],[104.041,50.1681,-90.6913],[108.297,59.9493,-89.0648],[111.874,70.6083,-87.2919],[114.771,82.1449,-85.3725],[116.99,94.5593,-83.3066],[118.529,107.851,-81.0942],[119.39,122.021,-78.7354],[119.571,137.069,-76.2301],[119.073,152.994,-73.5783],[-6.9e-05,1.25431,-88.901],[12.3715,0.496934,-89.0263],[24.0789,0.605001,-89.0153],[35.1223,1.57851,-88.8682],[45.5014,3.41746,-88.5849],[55.2165,6.12185,-88.1654],[64.2675,9.69169,-87.6098],[72.6543,14.127,-86.918],[80.377,19.4277,-86.0899],[87.4355,25.5938,-85.1258],[93.83,32.6254,-84.0254],[99.5603,40.5225,-82.7889],[104.626,49.285,-81.4162],[109.029,58.9129,-79.9073],[112.766,69.4063,-78.2623],[115.84,80.7651,-76.481],[118.25,92.9894,-74.5636],[119.996,106.079,-72.5101],[121.077,120.034,-70.3203],[121.494,134.855,-67.9944],[121.247,150.541,-65.5323],[-6.9e-05,1.25431,-79.0173],[12.3395,0.490774,-79.1376],[24.0297,0.580362,-79.1314],[35.0707,1.52307,-78.9987],[45.4624,3.31891,-78.7394],[55.2049,5.96786,-78.3537],[64.298,9.46994,-77.8414],[72.7419,13.8251,-77.2025],[80.5365,19.0335,-76.4372],[87.6818,25.0949,-75.5453],[94.1778,32.0095,-74.5269],[100.025,39.7772,-73.382],[105.222,48.398,-72.1106],[109.77,57.8719,-70.7127],[113.669,68.199,-69.1882],[116.919,79.3792,-67.5372],[119.519,91.4125,-65.7597],[121.47,104.299,-63.8556],[122.772,118.038,-61.825],[123.425,132.631,-59.6679],[123.428,148.077,-57.3843],[-6.9e-05,1.25431,-69.1328],[12.3091,0.484588,-69.2493],[23.9836,0.555617,-69.2483],[35.0236,1.4674,-69.1297],[45.429,3.21992,-68.8936],[55.1999,5.8132,-68.54],[64.3362,9.24723,-68.0689],[72.8379,13.522,-67.4803],[80.7051,18.6375,-66.7742],[87.9377,24.5938,-65.9505],[94.5357,31.3908,-65.0094],[100.499,39.0286,-63.9507],[105.828,47.5072,-62.7745],[110.522,56.8264,-61.4808],[114.582,66.9865,-60.0696],[118.007,77.9872,-58.5408],[120.798,89.8288,-56.8946],[122.954,102.511,-55.1308],[124.476,116.034,-53.2495],[125.363,130.398,-51.2507],[125.615,145.602,-49.1344],[-6.9e-05,1.25431,-59.2477],[12.2802,0.478375,-59.3614],[23.9406,0.530764,-59.3659],[34.9809,1.41148,-59.2613],[45.4012,3.12051,-59.0475],[55.2016,5.65787,-58.7246],[64.382,9.02355,-58.2925],[72.9423,13.2176,-57.7513],[80.8827,18.2399,-57.1009],[88.2031,24.0905,-56.3414],[94.9035,30.7695,-55.4727],[100.984,38.2768,-54.4949],[106.444,46.6124,-53.4079],[111.285,55.7764,-52.2117],[115.505,65.7687,-50.9064],[119.106,76.5892,-49.492],[122.086,88.2382,-47.9684],[124.446,100.715,-46.3357],[126.187,114.021,-44.5938],[127.307,128.155,-42.7427],[127.808,143.117,-40.7825],[-6.9e-05,1.25431,-49.3618],[12.253,0.472135,-49.4738],[23.9006,0.505803,-49.4843],[34.9426,1.35531,-49.3934],[45.3791,3.02067,-49.2011],[55.21,5.50186,-48.9073],[64.4353,8.79891,-48.5121],[73.0552,12.9118,-48.0155],[81.0694,17.8405,-47.4174],[88.4781,23.5851,-46.7179],[95.2812,30.1455,-45.917],[101.479,37.5217,-45.0146],[107.071,45.7139,-44.0108],[112.057,54.7218,-42.9055],[116.438,64.5456,-41.6989],[120.214,75.1852,-40.3907],[123.383,86.6407,-38.9812],[125.948,98.912,-37.4702],[127.906,111.999,-35.8578],[129.26,125.902,-34.144],[130.007,140.621,-32.3287],[-6.9e-05,1.25431,-39.4753],[12.2275,0.465868,-39.5866],[23.8637,0.480735,-39.6035],[34.9088,1.29891,-39.5261],[45.3625,2.9204,-39.3543],[55.2251,5.34519,-39.0882],[64.4964,8.57329,-38.7277],[73.1764,12.6047,-38.2728],[81.2651,17.4394,-37.7236],[88.7626,23.0774,-37.08],[95.6689,29.5188,-36.3421],[101.984,36.7634,-35.5098],[107.708,44.8114,-34.5831],[112.84,53.6626,-33.5621],[117.381,63.3172,-32.4467],[121.331,73.7751,-31.237],[124.69,85.0363,-29.9329],[127.458,97.1008,-28.5344],[129.634,109.969,-27.0416],[131.219,123.64,-25.4544],[132.213,138.114,-23.7729],[-6.9e-05,1.25431,-29.5881],[12.2035,0.459574,-29.6998],[23.83,0.455559,-29.7235],[34.8793,1.24226,-29.6594],[45.3516,2.81969,-29.5073],[55.2468,5.18784,-29.2672],[64.565,8.34671,-28.9393],[73.306,12.2963,-28.5234],[81.4699,17.0366,-28.0195],[89.0568,22.5676,-27.4278],[96.0666,28.8894,-26.7481],[102.499,36.0019,-25.9805],[108.355,43.9051,-25.125],[113.633,52.599,-24.1815],[118.335,62.0836,-23.1501],[122.459,72.359,-22.0308],[126.006,83.4251,-20.8235],[128.977,95.2819,-19.5283],[131.37,107.929,-18.1452],[133.186,121.368,-16.6741],[134.424,135.597,-15.1152],[-6.9e-05,1.25431,-19.7002],[12.1811,0.453253,-19.8133],[23.7993,0.430275,-19.8443],[34.8543,1.18538,-19.7932],[45.3463,2.71856,-19.6599],[55.2753,5.02982,-19.4444],[64.6412,8.11916,-19.1468],[73.444,11.9866,-18.7671],[81.6838,16.6321,-18.3053],[89.3605,22.0557,-17.7612],[96.4742,28.2573,-17.1351],[103.025,35.237,-16.4268],[109.012,42.9949,-15.6363],[114.437,51.5307,-14.7637],[119.298,60.8447,-13.809],[123.597,70.9368,-12.7721],[127.332,81.8069,-11.653],[130.504,93.4551,-10.4519],[133.113,105.881,-9.16855],[135.159,119.086,-7.80309],[136.642,133.068,-6.35547],[-6.9e-05,1.25431,-9.81157],[12.1604,0.446905,-9.92722],[23.7716,0.404884,-9.96588],[34.8337,1.12825,-9.92754],[45.3467,2.617,-9.81216],[55.3104,4.87113,-9.6198],[64.725,7.89064,-9.35045],[73.5904,11.6755,-9.00407],[81.9067,16.2258,-8.58069],[89.6738,21.5415,-8.08031],[96.8917,27.6225,-7.50293],[103.56,34.469,-6.84854],[109.68,42.0808,-6.11714],[115.25,50.458,-5.30875],[120.272,59.6006,-4.42334],[124.744,69.5086,-3.46094],[128.667,80.1819,-2.42152],[132.04,91.6206,-1.3051],[134.865,103.825,-0.111694],[137.14,116.794,1.15874],[138.867,130.529,2.50615],[-6.9e-05,1.25431,0.077713],[12.1412,0.44053,-0.041489],[23.7471,0.379386,-0.088242],[34.8176,1.07088,-0.062439],[45.3526,2.515,0.035858],[55.3523,4.71176,0.206665],[64.8165,7.66116,0.449982],[73.7453,11.3632,0.765793],[82.1387,15.8178,1.15414],[89.9966,21.0251,1.61498],[97.3192,26.9851,2.14832],[104.106,33.6976,2.75417],[110.358,41.1629,3.43253],[116.074,49.3807,4.18343],[121.255,58.3512,5.00679],[125.901,68.0743,5.90269],[130.011,78.55,6.87108],[133.586,89.7784,7.91199],[136.625,101.759,9.02541],[139.129,114.493,10.2113],[141.097,127.979,11.4697],[-6.9e-05,1.25431,9.9677],[12.1237,0.434129,9.84384],[23.7257,0.35378,9.78862],[34.8058,1.01326,9.80209],[45.3642,2.41258,9.8842],[55.4008,4.55172,10.035],[64.9155,7.4307,10.2544],[73.9085,11.0495,10.5425],[82.3797,15.4082,10.8992],[90.3291,20.5066,11.3246],[97.7566,26.3449,11.8187],[104.662,32.9231,12.3814],[111.046,40.241,13.0127],[116.909,48.2988,13.7128],[122.249,57.0965,14.4814],[127.068,66.6339,15.3188],[131.364,76.9112,16.2248],[135.139,87.9284,17.1994],[138.393,99.6853,18.2427],[141.124,112.182,19.3547],[143.334,125.419,20.5353],[-6.9e-05,1.25431,19.8584],[12.1078,0.427701,19.7288],[23.7073,0.328067,19.6647],[34.7985,0.955408,19.6661],[45.3814,2.30972,19.7329],[55.4559,4.39102,19.8651],[65.0222,7.19928,20.0628],[74.0801,10.7345,20.3259],[82.6297,14.9967,20.6546],[90.6711,19.9859,21.0486],[98.204,25.7021,21.5081],[105.229,32.1452,22.033],[111.745,39.3154,22.6234],[117.753,47.2124,23.2793],[123.253,55.8365,24.0006],[128.244,65.1876,24.7873],[132.727,75.2656,25.6395],[136.702,86.0706,26.5572],[140.169,97.6025,27.5403],[143.127,109.861,28.5888],[145.576,122.847,29.7028],[-6.9e-05,1.25431,29.7498],[12.0935,0.421245,29.6135],[23.692,0.302246,29.54],[34.7956,0.897311,29.5295],[45.4042,2.20644,29.5819],[55.5178,4.22964,29.6971],[65.1365,6.96689,29.8752],[74.2602,10.4182,30.1162],[82.8889,14.5836,30.4202],[91.0226,19.4631,30.7869],[98.6614,25.0566,31.2166],[105.805,31.3642,31.7092],[112.454,38.3858,32.2646],[118.608,46.1215,32.883],[124.267,54.5713,33.5643],[129.431,63.7351,34.3084],[134.1,73.613,35.1154],[138.274,84.205,35.9853],[141.953,95.511,36.918],[145.137,107.531,37.9137],[147.826,120.265,38.9723],[-6.9e-05,1.25431,39.6418],[12.0808,0.414763,39.4977],[23.6798,0.276317,39.4145],[34.7971,0.838972,39.3923],[45.4326,2.10273,39.4312],[55.5864,4.06758,39.5309],[65.2584,6.73354,39.6917],[74.4486,10.1006,39.9133],[83.1571,14.1688,40.196],[91.3838,18.938,40.5397],[99.1287,24.4084,40.9442],[106.392,30.5798,41.4099],[113.173,37.4524,41.9364],[119.473,45.026,42.5239],[125.291,53.3008,43.1724],[130.627,62.2766,43.8819],[135.481,71.9536,44.6523],[139.854,82.3317,45.4837],[143.745,93.4108,46.3761],[147.154,105.191,47.3294],[150.081,117.672,48.3437],[-6.9e-05,1.25431,49.5345],[12.0697,0.408254,49.3816],[23.6707,0.250282,49.2883],[34.803,0.780391,49.2547],[45.4667,1.99858,49.2808],[55.6616,3.90486,49.3666],[65.3879,6.49921,49.512],[74.6454,9.78165,49.7172],[83.4343,13.7522,49.9821],[91.7545,18.4108,50.3067],[99.6059,23.7575,50.691],[106.989,29.7922,51.135],[113.903,36.5151,51.6386],[120.348,43.926,52.202],[126.325,52.025,52.8251],[131.833,60.8121,53.5078],[136.872,70.2873,54.2503],[141.443,80.4506,55.0524],[145.545,91.3019,55.9143],[149.178,102.841,56.8358],[152.342,115.069,57.817],[-6.9e-05,1.25431,59.428],[12.0602,0.401718,59.265],[23.6647,0.224138,59.1612],[34.8134,0.721568,59.1164],[45.5063,1.89401,59.1307],[55.7435,3.74146,59.204],[65.525,6.26392,59.3364],[74.8507,9.46139,59.528],[83.7206,13.3339,59.7785],[92.1347,17.8814,60.0881],[100.093,23.1039,60.4568],[107.596,29.0014,60.8846],[114.643,35.5739,61.3714],[121.234,42.8214,61.9173],[127.369,50.744,62.5222],[133.049,59.3416,63.1862],[138.273,68.6141,63.9093],[143.041,78.5617,64.6915],[147.353,89.1843,65.5327],[151.209,100.482,66.433],[154.61,112.454,67.3924],[-6.9e-05,1.25431,69.3221],[12.0523,0.395156,69.1482],[23.6617,0.197887,69.0334],[34.8282,0.662503,68.9776],[45.5516,1.789,68.981],[55.8322,3.57739,69.0434],[65.6697,6.02766,69.1649],[75.0643,9.13982,69.3455],[84.0159,12.9139,69.5852],[92.5246,17.3498,69.8839],[100.59,22.4476,70.2417],[108.213,28.2073,70.6586],[115.393,34.6289,71.1346],[122.13,41.7123,71.6697],[128.423,49.4577,72.2639],[134.274,57.8649,72.9172],[139.682,66.9341,73.6295],[144.647,76.6651,74.4009],[149.169,87.0579,75.2314],[153.248,98.1127,76.121],[156.884,109.829,77.0697],[-6.9e-05,1.25431,79.2169],[12.046,0.388566,79.031],[23.6619,0.171528,78.9047],[34.8474,0.603196,78.8382],[45.6026,1.68357,78.8315],[55.9275,3.41265,78.8845],[65.8221,5.79044,78.9973],[75.2863,8.81693,79.1698],[84.3203,12.4921,79.4021],[92.924,16.816,79.694],[101.097,21.7886,80.0457],[108.84,27.4099,80.4572],[116.153,33.68,80.9284],[123.036,40.5987,81.4594],[129.488,48.1661,82.0501],[135.51,56.3823,82.7005],[141.101,65.2471,83.4107],[146.263,74.7607,84.1806],[150.993,84.9229,85.0103],[155.294,95.7339,85.8997],[159.164,107.194,86.8489],[-6.9e-05,1.25431,89.1124],[12.0414,0.381949,88.9134],[23.6651,0.145062,88.7754],[34.871,0.543648,88.6984],[45.6591,1.57771,88.6824],[56.0294,3.24724,88.7275],[65.982,5.55224,88.8337],[75.5168,8.49272,89.0009],[84.6338,12.0687,89.2292],[93.333,16.2801,89.5185],[101.614,21.127,89.8689],[109.478,26.6093,90.2803],[116.924,32.7272,90.7527],[123.952,39.4805,91.2862],[130.562,46.8693,91.8808],[136.755,54.8936,92.5364],[142.53,63.5533,93.253],[147.887,72.8485,94.0307],[152.826,82.7792,94.8694],[157.347,93.3453,95.7692],[161.451,104.547,96.7301],[-6.9e-05,1.25431,99.0087],[12.0384,0.375306,98.7954],[23.6714,0.118488,98.6451],[34.899,0.483857,98.5579],[45.7213,1.47141,98.5337],[56.1381,3.08115,98.5724],[66.1496,5.31308,98.6742],[75.7556,8.16719,98.8389],[84.9563,11.6435,99.0666],[93.7516,15.742,99.3574],[102.141,20.4626,99.7111],[110.126,25.8055,100.128],[117.705,31.7705,100.608],[124.879,38.3578,101.15],[131.647,45.5672,101.756],[138.01,53.3988,102.425],[143.967,61.8526,103.156],[149.52,70.9285,103.951],[154.666,80.6267,104.809],[159.408,90.947,105.73],[163.744,101.89,106.713],[-6.9e-05,1.25431,108.906],[12.0369,0.368636,108.677],[23.6808,0.091807,108.514],[34.9315,0.423824,108.417],[45.789,1.36469,108.385],[56.2535,2.91439,108.419],[66.3247,5.07295,108.519],[76.0029,7.84035,108.684],[85.2878,11.2166,108.914],[94.1797,15.2017,109.211],[102.678,19.7956,109.572],[110.784,24.9984,110],[118.496,30.81,110.493],[125.816,37.2305,111.051],[132.742,44.2598,111.676],[139.275,51.898,112.365],[145.415,60.145,113.121],[151.161,69.0008,113.942],[156.515,78.4655,114.828],[161.475,88.5391,115.781],[166.042,99.2214,116.798],[-6.9e-05,1.25431,118.803],[12.0371,0.361939,118.558],[23.6932,0.065019,118.382],[34.9684,0.36355,118.275],[45.8624,1.25753,118.237],[56.3755,2.74696,118.268],[66.5075,4.83185,118.367],[76.2585,7.51218,118.535],[85.6285,10.788,118.772],[94.6174,14.6592,119.078],[103.225,19.1259,119.453],[111.452,24.188,119.896],[119.298,29.8456,120.409],[126.763,36.0987,120.99],[133.847,42.9472,121.64],[140.549,50.3911,122.359],[146.871,58.4305,123.146],[152.812,67.0653,124.003],[158.371,76.2956,124.928],[163.55,86.1214,125.922],[168.348,96.5426,126.985],[-6.9e-05,1.25431,128.701],[12.0389,0.355215,128.439],[23.7088,0.038123,128.25],[35.0097,0.303034,128.133],[45.9415,1.14995,128.089],[56.5042,2.57886,128.118],[66.6979,4.58978,128.219],[76.5225,7.18271,128.394],[85.9781,10.3576,128.64],[95.0647,14.1146,128.96],[103.782,18.4535,129.352],[112.131,23.3744,129.817],[120.11,28.8774,130.355],[127.72,34.9623,130.965],[134.962,41.6292,131.649],[141.834,48.8782,132.404],[148.337,56.7091,133.233],[154.471,65.1221,134.134],[160.236,74.117,135.108],[165.632,83.694,136.155],[170.659,93.853,137.274],[-6.9e-05,1.25431,138.6],[12.0423,0.348464,138.32],[23.7274,0.011119,138.117],[35.0554,0.242275,137.99],[46.0261,1.04193,137.942],[56.6396,2.41009,137.97],[66.8959,4.34675,138.076],[76.795,6.85191,138.259],[86.3369,9.92557,138.519],[95.5215,13.5677,138.856],[104.349,17.7784,139.271],[112.819,22.5576,139.763],[120.932,27.9052,140.332],[128.688,33.8214,140.978],[136.087,40.3061,141.702],[143.128,47.3592,142.503],[149.812,54.9809,143.381],[156.139,63.1711,144.336],[162.109,71.9297,145.368],[167.721,81.2569,146.478],[172.977,91.1526,147.665],[-6.9e-05,1.25431,148.5],[12.0473,0.341686,148.2],[23.7492,-0.015992,147.982],[35.1055,0.181275,147.847],[46.1164,0.933488,147.794],[56.7817,2.24065,147.824],[67.1015,4.10275,147.936],[77.0758,6.5198,148.131],[86.7046,9.49179,148.408],[95.9879,13.0187,148.767],[104.926,17.1006,149.209],[113.518,21.7375,149.733],[121.765,26.9292,150.339],[129.666,32.6759,151.028],[137.222,38.9776,151.799],[144.432,45.8342,152.653],[151.297,53.2458,153.589],[157.816,61.2123,154.608],[163.99,69.7337,155.709],[169.818,78.8101,156.892],[175.3,88.4415,158.158]], + "name": "ffd" + },{ + "vertices": [[-6.9e-05,0.049026,-148.5],[10.4999,0.049026,-148.5],[20.9999,0.049026,-148.5],[31.4999,0.049026,-148.5],[41.9999,0.049026,-148.5],[52.4999,0.049026,-148.5],[62.9999,0.049026,-148.5],[73.4999,0.049026,-148.5],[83.9999,0.049026,-148.5],[94.4999,0.049026,-148.5],[105,0.049026,-148.5],[115.5,0.049026,-148.5],[126,0.049026,-148.5],[136.5,0.049026,-148.5],[147,0.049026,-148.5],[157.5,0.049026,-148.5],[168,0.049026,-148.5],[178.5,0.049026,-148.5],[189,0.049026,-148.5],[199.5,0.049026,-148.5],[210,0.049026,-148.5],[-6.9e-05,0.049026,-138.6],[10.4999,0.049026,-138.6],[20.9999,0.049026,-138.6],[31.4999,0.049026,-138.6],[41.9999,0.049026,-138.6],[52.4999,0.049026,-138.6],[62.9999,0.049026,-138.6],[73.4999,0.049026,-138.6],[83.9999,0.049026,-138.6],[94.4999,0.049026,-138.6],[105,0.049026,-138.6],[115.5,0.049026,-138.6],[126,0.049026,-138.6],[136.5,0.049026,-138.6],[147,0.049026,-138.6],[157.5,0.049026,-138.6],[168,0.049026,-138.6],[178.5,0.049026,-138.6],[189,0.049026,-138.6],[199.5,0.049026,-138.6],[210,0.049026,-138.6],[-6.9e-05,0.049026,-128.7],[10.4999,0.049026,-128.7],[20.9999,0.049026,-128.7],[31.4999,0.049026,-128.7],[41.9999,0.049026,-128.7],[52.4999,0.049026,-128.7],[62.9999,0.049026,-128.7],[73.4999,0.049026,-128.7],[83.9999,0.049026,-128.7],[94.4999,0.049026,-128.7],[105,0.049026,-128.7],[115.5,0.049026,-128.7],[126,0.049026,-128.7],[136.5,0.049026,-128.7],[147,0.049026,-128.7],[157.5,0.049026,-128.7],[168,0.049026,-128.7],[178.5,0.049026,-128.7],[189,0.049026,-128.7],[199.5,0.049026,-128.7],[210,0.049026,-128.7],[-6.9e-05,0.049026,-118.8],[10.4999,0.049026,-118.8],[20.9999,0.049026,-118.8],[31.4999,0.049026,-118.8],[41.9999,0.049026,-118.8],[52.4999,0.049026,-118.8],[62.9999,0.049026,-118.8],[73.4999,0.049026,-118.8],[83.9999,0.049026,-118.8],[94.4999,0.049026,-118.8],[105,0.049026,-118.8],[115.5,0.049026,-118.8],[126,0.049026,-118.8],[136.5,0.049026,-118.8],[147,0.049026,-118.8],[157.5,0.049026,-118.8],[168,0.049026,-118.8],[178.5,0.049026,-118.8],[189,0.049026,-118.8],[199.5,0.049026,-118.8],[210,0.049026,-118.8],[-6.9e-05,0.049026,-108.9],[10.4999,0.049026,-108.9],[20.9999,0.049026,-108.9],[31.4999,0.049026,-108.9],[41.9999,0.049026,-108.9],[52.4999,0.049026,-108.9],[62.9999,0.049026,-108.9],[73.4999,0.049026,-108.9],[83.9999,0.049026,-108.9],[94.4999,0.049026,-108.9],[105,0.049026,-108.9],[115.5,0.049026,-108.9],[126,0.049026,-108.9],[136.5,0.049026,-108.9],[147,0.049026,-108.9],[157.5,0.049026,-108.9],[168,0.049026,-108.9],[178.5,0.049026,-108.9],[189,0.049026,-108.9],[199.5,0.049026,-108.9],[210,0.049026,-108.9],[-6.9e-05,0.049026,-99],[10.4999,0.049026,-99],[20.9999,0.049026,-99],[31.4999,0.049026,-99],[41.9999,0.049026,-99],[52.4999,0.049026,-99],[62.9999,0.049026,-99],[73.4999,0.049026,-99],[83.9999,0.049026,-99],[94.4999,0.049026,-99],[105,0.049026,-99],[115.5,0.049026,-99],[126,0.049026,-99],[136.5,0.049026,-99],[147,0.049026,-99],[157.5,0.049026,-99],[168,0.049026,-99],[178.5,0.049026,-99],[189,0.049026,-99],[199.5,0.049026,-99],[210,0.049026,-99],[-6.9e-05,0.049026,-89.1],[10.4999,0.049026,-89.1],[20.9999,0.049026,-89.1],[31.4999,0.049026,-89.1],[41.9999,0.049026,-89.1],[52.4999,0.049026,-89.1],[62.9999,0.049026,-89.1],[73.4999,0.049026,-89.1],[83.9999,0.049026,-89.1],[94.4999,0.049026,-89.1],[105,0.049026,-89.1],[115.5,0.049026,-89.1],[126,0.049026,-89.1],[136.5,0.049026,-89.1],[147,0.049026,-89.1],[157.5,0.049026,-89.1],[168,0.049026,-89.1],[178.5,0.049026,-89.1],[189,0.049026,-89.1],[199.5,0.049026,-89.1],[210,0.049026,-89.1],[-6.9e-05,0.049026,-79.2],[10.4999,0.049026,-79.2],[20.9999,0.049026,-79.2],[31.4999,0.049026,-79.2],[41.9999,0.049026,-79.2],[52.4999,0.049026,-79.2],[62.9999,0.049026,-79.2],[73.4999,0.049026,-79.2],[83.9999,0.049026,-79.2],[94.4999,0.049026,-79.2],[105,0.049026,-79.2],[115.5,0.049026,-79.2],[126,0.049026,-79.2],[136.5,0.049026,-79.2],[147,0.049026,-79.2],[157.5,0.049026,-79.2],[168,0.049026,-79.2],[178.5,0.049026,-79.2],[189,0.049026,-79.2],[199.5,0.049026,-79.2],[210,0.049026,-79.2],[-6.9e-05,0.049026,-69.3],[10.4999,0.049026,-69.3],[20.9999,0.049026,-69.3],[31.4999,0.049026,-69.3],[41.9999,0.049026,-69.3],[52.4999,0.049026,-69.3],[62.9999,0.049026,-69.3],[73.4999,0.049026,-69.3],[83.9999,0.049026,-69.3],[94.4999,0.049026,-69.3],[105,0.049026,-69.3],[115.5,0.049026,-69.3],[126,0.049026,-69.3],[136.5,0.049026,-69.3],[147,0.049026,-69.3],[157.5,0.049026,-69.3],[168,0.049026,-69.3],[178.5,0.049026,-69.3],[189,0.049026,-69.3],[199.5,0.049026,-69.3],[210,0.049026,-69.3],[-6.9e-05,0.049026,-59.4],[10.4999,0.049026,-59.4],[20.9999,0.049026,-59.4],[31.4999,0.049026,-59.4],[41.9999,0.049026,-59.4],[52.4999,0.049026,-59.4],[62.9999,0.049026,-59.4],[73.4999,0.049026,-59.4],[83.9999,0.049026,-59.4],[94.4999,0.049026,-59.4],[105,0.049026,-59.4],[115.5,0.049026,-59.4],[126,0.049026,-59.4],[136.5,0.049026,-59.4],[147,0.049026,-59.4],[157.5,0.049026,-59.4],[168,0.049026,-59.4],[178.5,0.049026,-59.4],[189,0.049026,-59.4],[199.5,0.049026,-59.4],[210,0.049026,-59.4],[-6.9e-05,0.049026,-49.5],[10.4999,0.049026,-49.5],[20.9999,0.049026,-49.5],[31.4999,0.049026,-49.5],[41.9999,0.049026,-49.5],[52.4999,0.049026,-49.5],[62.9999,0.049026,-49.5],[73.4999,0.049026,-49.5],[83.9999,0.049026,-49.5],[94.4999,0.049026,-49.5],[105,0.049026,-49.5],[115.5,0.049026,-49.5],[126,0.049026,-49.5],[136.5,0.049026,-49.5],[147,0.049026,-49.5],[157.5,0.049026,-49.5],[168,0.049026,-49.5],[178.5,0.049026,-49.5],[189,0.049026,-49.5],[199.5,0.049026,-49.5],[210,0.049026,-49.5],[-6.9e-05,0.049026,-39.6],[10.4999,0.049026,-39.6],[20.9999,0.049026,-39.6],[31.4999,0.049026,-39.6],[41.9999,0.049026,-39.6],[52.4999,0.049026,-39.6],[62.9999,0.049026,-39.6],[73.4999,0.049026,-39.6],[83.9999,0.049026,-39.6],[94.4999,0.049026,-39.6],[105,0.049026,-39.6],[115.5,0.049026,-39.6],[126,0.049026,-39.6],[136.5,0.049026,-39.6],[147,0.049026,-39.6],[157.5,0.049026,-39.6],[168,0.049026,-39.6],[178.5,0.049026,-39.6],[189,0.049026,-39.6],[199.5,0.049026,-39.6],[210,0.049026,-39.6],[-6.9e-05,0.049026,-29.7],[10.4999,0.049026,-29.7],[20.9999,0.049026,-29.7],[31.4999,0.049026,-29.7],[41.9999,0.049026,-29.7],[52.4999,0.049026,-29.7],[62.9999,0.049026,-29.7],[73.4999,0.049026,-29.7],[83.9999,0.049026,-29.7],[94.4999,0.049026,-29.7],[105,0.049026,-29.7],[115.5,0.049026,-29.7],[126,0.049026,-29.7],[136.5,0.049026,-29.7],[147,0.049026,-29.7],[157.5,0.049026,-29.7],[168,0.049026,-29.7],[178.5,0.049026,-29.7],[189,0.049026,-29.7],[199.5,0.049026,-29.7],[210,0.049026,-29.7],[-6.9e-05,0.049026,-19.8],[10.4999,0.049026,-19.8],[20.9999,0.049026,-19.8],[31.4999,0.049026,-19.8],[41.9999,0.049026,-19.8],[52.4999,0.049026,-19.8],[62.9999,0.049026,-19.8],[73.4999,0.049026,-19.8],[83.9999,0.049026,-19.8],[94.4999,0.049026,-19.8],[105,0.049026,-19.8],[115.5,0.049026,-19.8],[126,0.049026,-19.8],[136.5,0.049026,-19.8],[147,0.049026,-19.8],[157.5,0.049026,-19.8],[168,0.049026,-19.8],[178.5,0.049026,-19.8],[189,0.049026,-19.8],[199.5,0.049026,-19.8],[210,0.049026,-19.8],[-6.9e-05,0.049026,-9.9],[10.4999,0.049026,-9.9],[20.9999,0.049026,-9.9],[31.4999,0.049026,-9.9],[41.9999,0.049026,-9.9],[52.4999,0.049026,-9.9],[62.9999,0.049026,-9.9],[73.4999,0.049026,-9.9],[83.9999,0.049026,-9.9],[94.4999,0.049026,-9.9],[105,0.049026,-9.9],[115.5,0.049026,-9.9],[126,0.049026,-9.9],[136.5,0.049026,-9.9],[147,0.049026,-9.9],[157.5,0.049026,-9.9],[168,0.049026,-9.9],[178.5,0.049026,-9.9],[189,0.049026,-9.9],[199.5,0.049026,-9.9],[210,0.049026,-9.9],[-6.9e-05,0.049026,-0],[10.4999,0.049026,-0],[20.9999,0.049026,-0],[31.4999,0.049026,-0],[41.9999,0.049026,-0],[52.4999,0.049026,-0],[62.9999,0.049026,-0],[73.4999,0.049026,-0],[83.9999,0.049026,-0],[94.4999,0.049026,-0],[105,0.049026,-0],[115.5,0.049026,-0],[126,0.049026,-0],[136.5,0.049026,-0],[147,0.049026,-0],[157.5,0.049026,-0],[168,0.049026,-0],[178.5,0.049026,-0],[189,0.049026,-0],[199.5,0.049026,-0],[210,0.049026,-0],[-6.9e-05,0.049026,9.9],[10.4999,0.049026,9.9],[20.9999,0.049026,9.9],[31.4999,0.049026,9.9],[41.9999,0.049026,9.9],[52.4999,0.049026,9.9],[62.9999,0.049026,9.9],[73.4999,0.049026,9.9],[83.9999,0.049026,9.9],[94.4999,0.049026,9.9],[105,0.049026,9.9],[115.5,0.049026,9.9],[126,0.049026,9.9],[136.5,0.049026,9.9],[147,0.049026,9.9],[157.5,0.049026,9.9],[168,0.049026,9.9],[178.5,0.049026,9.9],[189,0.049026,9.9],[199.5,0.049026,9.9],[210,0.049026,9.9],[-6.9e-05,0.049026,19.8],[10.4999,0.049026,19.8],[20.9999,0.049026,19.8],[31.4999,0.049026,19.8],[41.9999,0.049026,19.8],[52.4999,0.049026,19.8],[62.9999,0.049026,19.8],[73.4999,0.049026,19.8],[83.9999,0.049026,19.8],[94.4999,0.049026,19.8],[105,0.049026,19.8],[115.5,0.049026,19.8],[126,0.049026,19.8],[136.5,0.049026,19.8],[147,0.049026,19.8],[157.5,0.049026,19.8],[168,0.049026,19.8],[178.5,0.049026,19.8],[189,0.049026,19.8],[199.5,0.049026,19.8],[210,0.049026,19.8],[-6.9e-05,0.049026,29.7],[10.4999,0.049026,29.7],[20.9999,0.049026,29.7],[31.4999,0.049026,29.7],[41.9999,0.049026,29.7],[52.4999,0.049026,29.7],[62.9999,0.049026,29.7],[73.4999,0.049026,29.7],[83.9999,0.049026,29.7],[94.4999,0.049026,29.7],[105,0.049026,29.7],[115.5,0.049026,29.7],[126,0.049026,29.7],[136.5,0.049026,29.7],[147,0.049026,29.7],[157.5,0.049026,29.7],[168,0.049026,29.7],[178.5,0.049026,29.7],[189,0.049026,29.7],[199.5,0.049026,29.7],[210,0.049026,29.7],[-6.9e-05,0.049026,39.6],[10.4999,0.049026,39.6],[20.9999,0.049026,39.6],[31.4999,0.049026,39.6],[41.9999,0.049026,39.6],[52.4999,0.049026,39.6],[62.9999,0.049026,39.6],[73.4999,0.049026,39.6],[83.9999,0.049026,39.6],[94.4999,0.049026,39.6],[105,0.049026,39.6],[115.5,0.049026,39.6],[126,0.049026,39.6],[136.5,0.049026,39.6],[147,0.049026,39.6],[157.5,0.049026,39.6],[168,0.049026,39.6],[178.5,0.049026,39.6],[189,0.049026,39.6],[199.5,0.049026,39.6],[210,0.049026,39.6],[-6.9e-05,0.049026,49.5],[10.4999,0.049026,49.5],[20.9999,0.049026,49.5],[31.4999,0.049026,49.5],[41.9999,0.049026,49.5],[52.4999,0.049026,49.5],[62.9999,0.049026,49.5],[73.4999,0.049026,49.5],[83.9999,0.049026,49.5],[94.4999,0.049026,49.5],[105,0.049026,49.5],[115.5,0.049026,49.5],[126,0.049026,49.5],[136.5,0.049026,49.5],[147,0.049026,49.5],[157.5,0.049026,49.5],[168,0.049026,49.5],[178.5,0.049026,49.5],[189,0.049026,49.5],[199.5,0.049026,49.5],[210,0.049026,49.5],[-6.9e-05,0.049026,59.4],[10.4999,0.049026,59.4],[20.9999,0.049026,59.4],[31.4999,0.049026,59.4],[41.9999,0.049026,59.4],[52.4999,0.049026,59.4],[62.9999,0.049026,59.4],[73.4999,0.049026,59.4],[83.9999,0.049026,59.4],[94.4999,0.049026,59.4],[105,0.049026,59.4],[115.5,0.049026,59.4],[126,0.049026,59.4],[136.5,0.049026,59.4],[147,0.049026,59.4],[157.5,0.049026,59.4],[168,0.049026,59.4],[178.5,0.049026,59.4],[189,0.049026,59.4],[199.5,0.049026,59.4],[210,0.049026,59.4],[-6.9e-05,0.049026,69.3],[10.4999,0.049026,69.3],[20.9999,0.049026,69.3],[31.4999,0.049026,69.3],[41.9999,0.049026,69.3],[52.4999,0.049026,69.3],[62.9999,0.049026,69.3],[73.4999,0.049026,69.3],[83.9999,0.049026,69.3],[94.4999,0.049026,69.3],[105,0.049026,69.3],[115.5,0.049026,69.3],[126,0.049026,69.3],[136.5,0.049026,69.3],[147,0.049026,69.3],[157.5,0.049026,69.3],[168,0.049026,69.3],[178.5,0.049026,69.3],[189,0.049026,69.3],[199.5,0.049026,69.3],[210,0.049026,69.3],[-6.9e-05,0.049026,79.2],[10.4999,0.049026,79.2],[20.9999,0.049026,79.2],[31.4999,0.049026,79.2],[41.9999,0.049026,79.2],[52.4999,0.049026,79.2],[62.9999,0.049026,79.2],[73.4999,0.049026,79.2],[83.9999,0.049026,79.2],[94.4999,0.049026,79.2],[105,0.049026,79.2],[115.5,0.049026,79.2],[126,0.049026,79.2],[136.5,0.049026,79.2],[147,0.049026,79.2],[157.5,0.049026,79.2],[168,0.049026,79.2],[178.5,0.049026,79.2],[189,0.049026,79.2],[199.5,0.049026,79.2],[210,0.049026,79.2],[-6.9e-05,0.049026,89.1],[10.4999,0.049026,89.1],[20.9999,0.049026,89.1],[31.4999,0.049026,89.1],[41.9999,0.049026,89.1],[52.4999,0.049026,89.1],[62.9999,0.049026,89.1],[73.4999,0.049026,89.1],[83.9999,0.049026,89.1],[94.4999,0.049026,89.1],[105,0.049026,89.1],[115.5,0.049026,89.1],[126,0.049026,89.1],[136.5,0.049026,89.1],[147,0.049026,89.1],[157.5,0.049026,89.1],[168,0.049026,89.1],[178.5,0.049026,89.1],[189,0.049026,89.1],[199.5,0.049026,89.1],[210,0.049026,89.1],[-6.9e-05,0.049026,99],[10.4999,0.049026,99],[20.9999,0.049026,99],[31.4999,0.049026,99],[41.9999,0.049026,99],[52.4999,0.049026,99],[62.9999,0.049026,99],[73.4999,0.049026,99],[83.9999,0.049026,99],[94.4999,0.049026,99],[105,0.049026,99],[115.5,0.049026,99],[126,0.049026,99],[136.5,0.049026,99],[147,0.049026,99],[157.5,0.049026,99],[168,0.049026,99],[178.5,0.049026,99],[189,0.049026,99],[199.5,0.049026,99],[210,0.049026,99],[-6.9e-05,0.049026,108.9],[10.4999,0.049026,108.9],[20.9999,0.049026,108.9],[31.4999,0.049026,108.9],[41.9999,0.049026,108.9],[52.4999,0.049026,108.9],[62.9999,0.049026,108.9],[73.4999,0.049026,108.9],[83.9999,0.049026,108.9],[94.4999,0.049026,108.9],[105,0.049026,108.9],[115.5,0.049026,108.9],[126,0.049026,108.9],[136.5,0.049026,108.9],[147,0.049026,108.9],[157.5,0.049026,108.9],[168,0.049026,108.9],[178.5,0.049026,108.9],[189,0.049026,108.9],[199.5,0.049026,108.9],[210,0.049026,108.9],[-6.9e-05,0.049026,118.8],[10.4999,0.049026,118.8],[20.9999,0.049026,118.8],[31.4999,0.049026,118.8],[41.9999,0.049026,118.8],[52.4999,0.049026,118.8],[62.9999,0.049026,118.8],[73.4999,0.049026,118.8],[83.9999,0.049026,118.8],[94.4999,0.049026,118.8],[105,0.049026,118.8],[115.5,0.049026,118.8],[126,0.049026,118.8],[136.5,0.049026,118.8],[147,0.049026,118.8],[157.5,0.049026,118.8],[168,0.049026,118.8],[178.5,0.049026,118.8],[189,0.049026,118.8],[199.5,0.049026,118.8],[210,0.049026,118.8],[-6.9e-05,0.049026,128.7],[10.4999,0.049026,128.7],[20.9999,0.049026,128.7],[31.4999,0.049026,128.7],[41.9999,0.049026,128.7],[52.4999,0.049026,128.7],[62.9999,0.049026,128.7],[73.4999,0.049026,128.7],[83.9999,0.049026,128.7],[94.4999,0.049026,128.7],[105,0.049026,128.7],[115.5,0.049026,128.7],[126,0.049026,128.7],[136.5,0.049026,128.7],[147,0.049026,128.7],[157.5,0.049026,128.7],[168,0.049026,128.7],[178.5,0.049026,128.7],[189,0.049026,128.7],[199.5,0.049026,128.7],[210,0.049026,128.7],[-6.9e-05,0.049026,138.6],[10.4999,0.049026,138.6],[20.9999,0.049026,138.6],[31.4999,0.049026,138.6],[41.9999,0.049026,138.6],[52.4999,0.049026,138.6],[62.9999,0.049026,138.6],[73.4999,0.049026,138.6],[83.9999,0.049026,138.6],[94.4999,0.049026,138.6],[105,0.049026,138.6],[115.5,0.049026,138.6],[126,0.049026,138.6],[136.5,0.049026,138.6],[147,0.049026,138.6],[157.5,0.049026,138.6],[168,0.049026,138.6],[178.5,0.049026,138.6],[189,0.049026,138.6],[199.5,0.049026,138.6],[210,0.049026,138.6],[-6.9e-05,0.049026,148.5],[10.4999,0.049026,148.5],[20.9999,0.049026,148.5],[31.4999,0.049026,148.5],[41.9999,0.049026,148.5],[52.4999,0.049026,148.5],[62.9999,0.049026,148.5],[73.4999,0.049026,148.5],[83.9999,0.049026,148.5],[94.4999,0.049026,148.5],[105,0.049026,148.5],[115.5,0.049026,148.5],[126,0.049026,148.5],[136.5,0.049026,148.5],[147,0.049026,148.5],[157.5,0.049026,148.5],[168,0.049026,148.5],[178.5,0.049026,148.5],[189,0.049026,148.5],[199.5,0.049026,148.5],[210,0.049026,148.5],[-6.9e-05,-0.050974,-148.5],[10.4999,-0.050974,-148.5],[20.9999,-0.050974,-148.5],[31.4999,-0.050974,-148.5],[41.9999,-0.050974,-148.5],[52.4999,-0.050974,-148.5],[62.9999,-0.050974,-148.5],[73.4999,-0.050974,-148.5],[83.9999,-0.050974,-148.5],[94.4999,-0.050974,-148.5],[105,-0.050974,-148.5],[115.5,-0.050974,-148.5],[126,-0.050974,-148.5],[136.5,-0.050974,-148.5],[147,-0.050974,-148.5],[157.5,-0.050974,-148.5],[168,-0.050974,-148.5],[178.5,-0.050974,-148.5],[189,-0.050974,-148.5],[199.5,-0.050974,-148.5],[210,-0.050974,-148.5],[-6.9e-05,-0.050974,-138.6],[10.4999,-0.050974,-138.6],[20.9999,-0.050974,-138.6],[31.4999,-0.050974,-138.6],[41.9999,-0.050974,-138.6],[52.4999,-0.050974,-138.6],[62.9999,-0.050974,-138.6],[73.4999,-0.050974,-138.6],[83.9999,-0.050974,-138.6],[94.4999,-0.050974,-138.6],[105,-0.050974,-138.6],[115.5,-0.050974,-138.6],[126,-0.050974,-138.6],[136.5,-0.050974,-138.6],[147,-0.050974,-138.6],[157.5,-0.050974,-138.6],[168,-0.050974,-138.6],[178.5,-0.050974,-138.6],[189,-0.050974,-138.6],[199.5,-0.050974,-138.6],[210,-0.050974,-138.6],[-6.9e-05,-0.050974,-128.7],[10.4999,-0.050974,-128.7],[20.9999,-0.050974,-128.7],[31.4999,-0.050974,-128.7],[41.9999,-0.050974,-128.7],[52.4999,-0.050974,-128.7],[62.9999,-0.050974,-128.7],[73.4999,-0.050974,-128.7],[83.9999,-0.050974,-128.7],[94.4999,-0.050974,-128.7],[105,-0.050974,-128.7],[115.5,-0.050974,-128.7],[126,-0.050974,-128.7],[136.5,-0.050974,-128.7],[147,-0.050974,-128.7],[157.5,-0.050974,-128.7],[168,-0.050974,-128.7],[178.5,-0.050974,-128.7],[189,-0.050974,-128.7],[199.5,-0.050974,-128.7],[210,-0.050974,-128.7],[-6.9e-05,-0.050974,-118.8],[10.4999,-0.050974,-118.8],[20.9999,-0.050974,-118.8],[31.4999,-0.050974,-118.8],[41.9999,-0.050974,-118.8],[52.4999,-0.050974,-118.8],[62.9999,-0.050974,-118.8],[73.4999,-0.050974,-118.8],[83.9999,-0.050974,-118.8],[94.4999,-0.050974,-118.8],[105,-0.050974,-118.8],[115.5,-0.050974,-118.8],[126,-0.050974,-118.8],[136.5,-0.050974,-118.8],[147,-0.050974,-118.8],[157.5,-0.050974,-118.8],[168,-0.050974,-118.8],[178.5,-0.050974,-118.8],[189,-0.050974,-118.8],[199.5,-0.050974,-118.8],[210,-0.050974,-118.8],[-6.9e-05,-0.050974,-108.9],[10.4999,-0.050974,-108.9],[20.9999,-0.050974,-108.9],[31.4999,-0.050974,-108.9],[41.9999,-0.050974,-108.9],[52.4999,-0.050974,-108.9],[62.9999,-0.050974,-108.9],[73.4999,-0.050974,-108.9],[83.9999,-0.050974,-108.9],[94.4999,-0.050974,-108.9],[105,-0.050974,-108.9],[115.5,-0.050974,-108.9],[126,-0.050974,-108.9],[136.5,-0.050974,-108.9],[147,-0.050974,-108.9],[157.5,-0.050974,-108.9],[168,-0.050974,-108.9],[178.5,-0.050974,-108.9],[189,-0.050974,-108.9],[199.5,-0.050974,-108.9],[210,-0.050974,-108.9],[-6.9e-05,-0.050974,-99],[10.4999,-0.050974,-99],[20.9999,-0.050974,-99],[31.4999,-0.050974,-99],[41.9999,-0.050974,-99],[52.4999,-0.050974,-99],[62.9999,-0.050974,-99],[73.4999,-0.050974,-99],[83.9999,-0.050974,-99],[94.4999,-0.050974,-99],[105,-0.050974,-99],[115.5,-0.050974,-99],[126,-0.050974,-99],[136.5,-0.050974,-99],[147,-0.050974,-99],[157.5,-0.050974,-99],[168,-0.050974,-99],[178.5,-0.050974,-99],[189,-0.050974,-99],[199.5,-0.050974,-99],[210,-0.050974,-99],[-6.9e-05,-0.050974,-89.1],[10.4999,-0.050974,-89.1],[20.9999,-0.050974,-89.1],[31.4999,-0.050974,-89.1],[41.9999,-0.050974,-89.1],[52.4999,-0.050974,-89.1],[62.9999,-0.050974,-89.1],[73.4999,-0.050974,-89.1],[83.9999,-0.050974,-89.1],[94.4999,-0.050974,-89.1],[105,-0.050974,-89.1],[115.5,-0.050974,-89.1],[126,-0.050974,-89.1],[136.5,-0.050974,-89.1],[147,-0.050974,-89.1],[157.5,-0.050974,-89.1],[168,-0.050974,-89.1],[178.5,-0.050974,-89.1],[189,-0.050974,-89.1],[199.5,-0.050974,-89.1],[210,-0.050974,-89.1],[-6.9e-05,-0.050974,-79.2],[10.4999,-0.050974,-79.2],[20.9999,-0.050974,-79.2],[31.4999,-0.050974,-79.2],[41.9999,-0.050974,-79.2],[52.4999,-0.050974,-79.2],[62.9999,-0.050974,-79.2],[73.4999,-0.050974,-79.2],[83.9999,-0.050974,-79.2],[94.4999,-0.050974,-79.2],[105,-0.050974,-79.2],[115.5,-0.050974,-79.2],[126,-0.050974,-79.2],[136.5,-0.050974,-79.2],[147,-0.050974,-79.2],[157.5,-0.050974,-79.2],[168,-0.050974,-79.2],[178.5,-0.050974,-79.2],[189,-0.050974,-79.2],[199.5,-0.050974,-79.2],[210,-0.050974,-79.2],[-6.9e-05,-0.050974,-69.3],[10.4999,-0.050974,-69.3],[20.9999,-0.050974,-69.3],[31.4999,-0.050974,-69.3],[41.9999,-0.050974,-69.3],[52.4999,-0.050974,-69.3],[62.9999,-0.050974,-69.3],[73.4999,-0.050974,-69.3],[83.9999,-0.050974,-69.3],[94.4999,-0.050974,-69.3],[105,-0.050974,-69.3],[115.5,-0.050974,-69.3],[126,-0.050974,-69.3],[136.5,-0.050974,-69.3],[147,-0.050974,-69.3],[157.5,-0.050974,-69.3],[168,-0.050974,-69.3],[178.5,-0.050974,-69.3],[189,-0.050974,-69.3],[199.5,-0.050974,-69.3],[210,-0.050974,-69.3],[-6.9e-05,-0.050974,-59.4],[10.4999,-0.050974,-59.4],[20.9999,-0.050974,-59.4],[31.4999,-0.050974,-59.4],[41.9999,-0.050974,-59.4],[52.4999,-0.050974,-59.4],[62.9999,-0.050974,-59.4],[73.4999,-0.050974,-59.4],[83.9999,-0.050974,-59.4],[94.4999,-0.050974,-59.4],[105,-0.050974,-59.4],[115.5,-0.050974,-59.4],[126,-0.050974,-59.4],[136.5,-0.050974,-59.4],[147,-0.050974,-59.4],[157.5,-0.050974,-59.4],[168,-0.050974,-59.4],[178.5,-0.050974,-59.4],[189,-0.050974,-59.4],[199.5,-0.050974,-59.4],[210,-0.050974,-59.4],[-6.9e-05,-0.050974,-49.5],[10.4999,-0.050974,-49.5],[20.9999,-0.050974,-49.5],[31.4999,-0.050974,-49.5],[41.9999,-0.050974,-49.5],[52.4999,-0.050974,-49.5],[62.9999,-0.050974,-49.5],[73.4999,-0.050974,-49.5],[83.9999,-0.050974,-49.5],[94.4999,-0.050974,-49.5],[105,-0.050974,-49.5],[115.5,-0.050974,-49.5],[126,-0.050974,-49.5],[136.5,-0.050974,-49.5],[147,-0.050974,-49.5],[157.5,-0.050974,-49.5],[168,-0.050974,-49.5],[178.5,-0.050974,-49.5],[189,-0.050974,-49.5],[199.5,-0.050974,-49.5],[210,-0.050974,-49.5],[-6.9e-05,-0.050974,-39.6],[10.4999,-0.050974,-39.6],[20.9999,-0.050974,-39.6],[31.4999,-0.050974,-39.6],[41.9999,-0.050974,-39.6],[52.4999,-0.050974,-39.6],[62.9999,-0.050974,-39.6],[73.4999,-0.050974,-39.6],[83.9999,-0.050974,-39.6],[94.4999,-0.050974,-39.6],[105,-0.050974,-39.6],[115.5,-0.050974,-39.6],[126,-0.050974,-39.6],[136.5,-0.050974,-39.6],[147,-0.050974,-39.6],[157.5,-0.050974,-39.6],[168,-0.050974,-39.6],[178.5,-0.050974,-39.6],[189,-0.050974,-39.6],[199.5,-0.050974,-39.6],[210,-0.050974,-39.6],[-6.9e-05,-0.050974,-29.7],[10.4999,-0.050974,-29.7],[20.9999,-0.050974,-29.7],[31.4999,-0.050974,-29.7],[41.9999,-0.050974,-29.7],[52.4999,-0.050974,-29.7],[62.9999,-0.050974,-29.7],[73.4999,-0.050974,-29.7],[83.9999,-0.050974,-29.7],[94.4999,-0.050974,-29.7],[105,-0.050974,-29.7],[115.5,-0.050974,-29.7],[126,-0.050974,-29.7],[136.5,-0.050974,-29.7],[147,-0.050974,-29.7],[157.5,-0.050974,-29.7],[168,-0.050974,-29.7],[178.5,-0.050974,-29.7],[189,-0.050974,-29.7],[199.5,-0.050974,-29.7],[210,-0.050974,-29.7],[-6.9e-05,-0.050974,-19.8],[10.4999,-0.050974,-19.8],[20.9999,-0.050974,-19.8],[31.4999,-0.050974,-19.8],[41.9999,-0.050974,-19.8],[52.4999,-0.050974,-19.8],[62.9999,-0.050974,-19.8],[73.4999,-0.050974,-19.8],[83.9999,-0.050974,-19.8],[94.4999,-0.050974,-19.8],[105,-0.050974,-19.8],[115.5,-0.050974,-19.8],[126,-0.050974,-19.8],[136.5,-0.050974,-19.8],[147,-0.050974,-19.8],[157.5,-0.050974,-19.8],[168,-0.050974,-19.8],[178.5,-0.050974,-19.8],[189,-0.050974,-19.8],[199.5,-0.050974,-19.8],[210,-0.050974,-19.8],[-6.9e-05,-0.050974,-9.9],[10.4999,-0.050974,-9.9],[20.9999,-0.050974,-9.9],[31.4999,-0.050974,-9.9],[41.9999,-0.050974,-9.9],[52.4999,-0.050974,-9.9],[62.9999,-0.050974,-9.9],[73.4999,-0.050974,-9.9],[83.9999,-0.050974,-9.9],[94.4999,-0.050974,-9.9],[105,-0.050974,-9.9],[115.5,-0.050974,-9.9],[126,-0.050974,-9.9],[136.5,-0.050974,-9.9],[147,-0.050974,-9.9],[157.5,-0.050974,-9.9],[168,-0.050974,-9.9],[178.5,-0.050974,-9.9],[189,-0.050974,-9.9],[199.5,-0.050974,-9.9],[210,-0.050974,-9.9],[-6.9e-05,-0.050974,-0],[10.4999,-0.050974,-0],[20.9999,-0.050974,-0],[31.4999,-0.050974,-0],[41.9999,-0.050974,-0],[52.4999,-0.050974,-0],[62.9999,-0.050974,-0],[73.4999,-0.050974,-0],[83.9999,-0.050974,-0],[94.4999,-0.050974,-0],[105,-0.050974,-0],[115.5,-0.050974,-0],[126,-0.050974,-0],[136.5,-0.050974,-0],[147,-0.050974,-0],[157.5,-0.050974,-0],[168,-0.050974,-0],[178.5,-0.050974,-0],[189,-0.050974,-0],[199.5,-0.050974,-0],[210,-0.050974,-0],[-6.9e-05,-0.050974,9.9],[10.4999,-0.050974,9.9],[20.9999,-0.050974,9.9],[31.4999,-0.050974,9.9],[41.9999,-0.050974,9.9],[52.4999,-0.050974,9.9],[62.9999,-0.050974,9.9],[73.4999,-0.050974,9.9],[83.9999,-0.050974,9.9],[94.4999,-0.050974,9.9],[105,-0.050974,9.9],[115.5,-0.050974,9.9],[126,-0.050974,9.9],[136.5,-0.050974,9.9],[147,-0.050974,9.9],[157.5,-0.050974,9.9],[168,-0.050974,9.9],[178.5,-0.050974,9.9],[189,-0.050974,9.9],[199.5,-0.050974,9.9],[210,-0.050974,9.9],[-6.9e-05,-0.050974,19.8],[10.4999,-0.050974,19.8],[20.9999,-0.050974,19.8],[31.4999,-0.050974,19.8],[41.9999,-0.050974,19.8],[52.4999,-0.050974,19.8],[62.9999,-0.050974,19.8],[73.4999,-0.050974,19.8],[83.9999,-0.050974,19.8],[94.4999,-0.050974,19.8],[105,-0.050974,19.8],[115.5,-0.050974,19.8],[126,-0.050974,19.8],[136.5,-0.050974,19.8],[147,-0.050974,19.8],[157.5,-0.050974,19.8],[168,-0.050974,19.8],[178.5,-0.050974,19.8],[189,-0.050974,19.8],[199.5,-0.050974,19.8],[210,-0.050974,19.8],[-6.9e-05,-0.050974,29.7],[10.4999,-0.050974,29.7],[20.9999,-0.050974,29.7],[31.4999,-0.050974,29.7],[41.9999,-0.050974,29.7],[52.4999,-0.050974,29.7],[62.9999,-0.050974,29.7],[73.4999,-0.050974,29.7],[83.9999,-0.050974,29.7],[94.4999,-0.050974,29.7],[105,-0.050974,29.7],[115.5,-0.050974,29.7],[126,-0.050974,29.7],[136.5,-0.050974,29.7],[147,-0.050974,29.7],[157.5,-0.050974,29.7],[168,-0.050974,29.7],[178.5,-0.050974,29.7],[189,-0.050974,29.7],[199.5,-0.050974,29.7],[210,-0.050974,29.7],[-6.9e-05,-0.050974,39.6],[10.4999,-0.050974,39.6],[20.9999,-0.050974,39.6],[31.4999,-0.050974,39.6],[41.9999,-0.050974,39.6],[52.4999,-0.050974,39.6],[62.9999,-0.050974,39.6],[73.4999,-0.050974,39.6],[83.9999,-0.050974,39.6],[94.4999,-0.050974,39.6],[105,-0.050974,39.6],[115.5,-0.050974,39.6],[126,-0.050974,39.6],[136.5,-0.050974,39.6],[147,-0.050974,39.6],[157.5,-0.050974,39.6],[168,-0.050974,39.6],[178.5,-0.050974,39.6],[189,-0.050974,39.6],[199.5,-0.050974,39.6],[210,-0.050974,39.6],[-6.9e-05,-0.050974,49.5],[10.4999,-0.050974,49.5],[20.9999,-0.050974,49.5],[31.4999,-0.050974,49.5],[41.9999,-0.050974,49.5],[52.4999,-0.050974,49.5],[62.9999,-0.050974,49.5],[73.4999,-0.050974,49.5],[83.9999,-0.050974,49.5],[94.4999,-0.050974,49.5],[105,-0.050974,49.5],[115.5,-0.050974,49.5],[126,-0.050974,49.5],[136.5,-0.050974,49.5],[147,-0.050974,49.5],[157.5,-0.050974,49.5],[168,-0.050974,49.5],[178.5,-0.050974,49.5],[189,-0.050974,49.5],[199.5,-0.050974,49.5],[210,-0.050974,49.5],[-6.9e-05,-0.050974,59.4],[10.4999,-0.050974,59.4],[20.9999,-0.050974,59.4],[31.4999,-0.050974,59.4],[41.9999,-0.050974,59.4],[52.4999,-0.050974,59.4],[62.9999,-0.050974,59.4],[73.4999,-0.050974,59.4],[83.9999,-0.050974,59.4],[94.4999,-0.050974,59.4],[105,-0.050974,59.4],[115.5,-0.050974,59.4],[126,-0.050974,59.4],[136.5,-0.050974,59.4],[147,-0.050974,59.4],[157.5,-0.050974,59.4],[168,-0.050974,59.4],[178.5,-0.050974,59.4],[189,-0.050974,59.4],[199.5,-0.050974,59.4],[210,-0.050974,59.4],[-6.9e-05,-0.050974,69.3],[10.4999,-0.050974,69.3],[20.9999,-0.050974,69.3],[31.4999,-0.050974,69.3],[41.9999,-0.050974,69.3],[52.4999,-0.050974,69.3],[62.9999,-0.050974,69.3],[73.4999,-0.050974,69.3],[83.9999,-0.050974,69.3],[94.4999,-0.050974,69.3],[105,-0.050974,69.3],[115.5,-0.050974,69.3],[126,-0.050974,69.3],[136.5,-0.050974,69.3],[147,-0.050974,69.3],[157.5,-0.050974,69.3],[168,-0.050974,69.3],[178.5,-0.050974,69.3],[189,-0.050974,69.3],[199.5,-0.050974,69.3],[210,-0.050974,69.3],[-6.9e-05,-0.050974,79.2],[10.4999,-0.050974,79.2],[20.9999,-0.050974,79.2],[31.4999,-0.050974,79.2],[41.9999,-0.050974,79.2],[52.4999,-0.050974,79.2],[62.9999,-0.050974,79.2],[73.4999,-0.050974,79.2],[83.9999,-0.050974,79.2],[94.4999,-0.050974,79.2],[105,-0.050974,79.2],[115.5,-0.050974,79.2],[126,-0.050974,79.2],[136.5,-0.050974,79.2],[147,-0.050974,79.2],[157.5,-0.050974,79.2],[168,-0.050974,79.2],[178.5,-0.050974,79.2],[189,-0.050974,79.2],[199.5,-0.050974,79.2],[210,-0.050974,79.2],[-6.9e-05,-0.050974,89.1],[10.4999,-0.050974,89.1],[20.9999,-0.050974,89.1],[31.4999,-0.050974,89.1],[41.9999,-0.050974,89.1],[52.4999,-0.050974,89.1],[62.9999,-0.050974,89.1],[73.4999,-0.050974,89.1],[83.9999,-0.050974,89.1],[94.4999,-0.050974,89.1],[105,-0.050974,89.1],[115.5,-0.050974,89.1],[126,-0.050974,89.1],[136.5,-0.050974,89.1],[147,-0.050974,89.1],[157.5,-0.050974,89.1],[168,-0.050974,89.1],[178.5,-0.050974,89.1],[189,-0.050974,89.1],[199.5,-0.050974,89.1],[210,-0.050974,89.1],[-6.9e-05,-0.050974,99],[10.4999,-0.050974,99],[20.9999,-0.050974,99],[31.4999,-0.050974,99],[41.9999,-0.050974,99],[52.4999,-0.050974,99],[62.9999,-0.050974,99],[73.4999,-0.050974,99],[83.9999,-0.050974,99],[94.4999,-0.050974,99],[105,-0.050974,99],[115.5,-0.050974,99],[126,-0.050974,99],[136.5,-0.050974,99],[147,-0.050974,99],[157.5,-0.050974,99],[168,-0.050974,99],[178.5,-0.050974,99],[189,-0.050974,99],[199.5,-0.050974,99],[210,-0.050974,99],[-6.9e-05,-0.050974,108.9],[10.4999,-0.050974,108.9],[20.9999,-0.050974,108.9],[31.4999,-0.050974,108.9],[41.9999,-0.050974,108.9],[52.4999,-0.050974,108.9],[62.9999,-0.050974,108.9],[73.4999,-0.050974,108.9],[83.9999,-0.050974,108.9],[94.4999,-0.050974,108.9],[105,-0.050974,108.9],[115.5,-0.050974,108.9],[126,-0.050974,108.9],[136.5,-0.050974,108.9],[147,-0.050974,108.9],[157.5,-0.050974,108.9],[168,-0.050974,108.9],[178.5,-0.050974,108.9],[189,-0.050974,108.9],[199.5,-0.050974,108.9],[210,-0.050974,108.9],[-6.9e-05,-0.050974,118.8],[10.4999,-0.050974,118.8],[20.9999,-0.050974,118.8],[31.4999,-0.050974,118.8],[41.9999,-0.050974,118.8],[52.4999,-0.050974,118.8],[62.9999,-0.050974,118.8],[73.4999,-0.050974,118.8],[83.9999,-0.050974,118.8],[94.4999,-0.050974,118.8],[105,-0.050974,118.8],[115.5,-0.050974,118.8],[126,-0.050974,118.8],[136.5,-0.050974,118.8],[147,-0.050974,118.8],[157.5,-0.050974,118.8],[168,-0.050974,118.8],[178.5,-0.050974,118.8],[189,-0.050974,118.8],[199.5,-0.050974,118.8],[210,-0.050974,118.8],[-6.9e-05,-0.050974,128.7],[10.4999,-0.050974,128.7],[20.9999,-0.050974,128.7],[31.4999,-0.050974,128.7],[41.9999,-0.050974,128.7],[52.4999,-0.050974,128.7],[62.9999,-0.050974,128.7],[73.4999,-0.050974,128.7],[83.9999,-0.050974,128.7],[94.4999,-0.050974,128.7],[105,-0.050974,128.7],[115.5,-0.050974,128.7],[126,-0.050974,128.7],[136.5,-0.050974,128.7],[147,-0.050974,128.7],[157.5,-0.050974,128.7],[168,-0.050974,128.7],[178.5,-0.050974,128.7],[189,-0.050974,128.7],[199.5,-0.050974,128.7],[210,-0.050974,128.7],[-6.9e-05,-0.050974,138.6],[10.4999,-0.050974,138.6],[20.9999,-0.050974,138.6],[31.4999,-0.050974,138.6],[41.9999,-0.050974,138.6],[52.4999,-0.050974,138.6],[62.9999,-0.050974,138.6],[73.4999,-0.050974,138.6],[83.9999,-0.050974,138.6],[94.4999,-0.050974,138.6],[105,-0.050974,138.6],[115.5,-0.050974,138.6],[126,-0.050974,138.6],[136.5,-0.050974,138.6],[147,-0.050974,138.6],[157.5,-0.050974,138.6],[168,-0.050974,138.6],[178.5,-0.050974,138.6],[189,-0.050974,138.6],[199.5,-0.050974,138.6],[210,-0.050974,138.6],[-6.9e-05,-0.050974,148.5],[10.4999,-0.050974,148.5],[20.9999,-0.050974,148.5],[31.4999,-0.050974,148.5],[41.9999,-0.050974,148.5],[52.4999,-0.050974,148.5],[62.9999,-0.050974,148.5],[73.4999,-0.050974,148.5],[83.9999,-0.050974,148.5],[94.4999,-0.050974,148.5],[105,-0.050974,148.5],[115.5,-0.050974,148.5],[126,-0.050974,148.5],[136.5,-0.050974,148.5],[147,-0.050974,148.5],[157.5,-0.050974,148.5],[168,-0.050974,148.5],[178.5,-0.050974,148.5],[189,-0.050974,148.5],[199.5,-0.050974,148.5],[210,-0.050974,148.5]], + "name": "Basis.001" + },{ + "vertices": [[-6.9e-05,0.049026,-148.5],[10.4999,0.049026,-148.5],[20.9999,0.049026,-148.5],[31.4999,0.049026,-148.5],[41.9999,0.049026,-148.5],[52.4999,0.049026,-148.5],[62.9999,0.049026,-148.5],[73.4999,0.049026,-148.5],[83.9999,0.049026,-148.5],[94.4999,0.049026,-148.5],[105,0.049026,-148.5],[115.5,0.049026,-148.5],[126,0.049026,-148.5],[136.5,0.049026,-148.5],[147,0.049026,-148.5],[157.5,0.049026,-148.5],[168,0.049026,-148.5],[178.5,0.049026,-148.5],[189,0.049026,-148.5],[199.5,0.049026,-148.5],[210,0.049026,-148.5],[-6.9e-05,0.049026,-138.6],[10.4999,0.049026,-138.6],[20.9999,0.049026,-138.6],[31.4999,0.049026,-138.6],[41.9999,0.049026,-138.6],[52.4999,0.049026,-138.6],[62.9999,0.049026,-138.6],[73.4999,0.049026,-138.6],[83.9999,0.049026,-138.6],[94.4999,0.049026,-138.6],[105,0.049026,-138.6],[115.5,0.049026,-138.6],[126,0.049026,-138.6],[136.5,0.049026,-138.6],[147,0.049026,-138.6],[157.5,0.049026,-138.6],[168,0.049026,-138.6],[178.5,0.049026,-138.6],[189,0.049026,-138.6],[199.5,0.049026,-138.6],[210,0.049026,-138.6],[-6.9e-05,0.049026,-128.7],[10.4999,0.049026,-128.7],[20.9999,0.049026,-128.7],[31.4999,0.049026,-128.7],[41.9999,0.049026,-128.7],[52.4999,0.049026,-128.7],[62.9999,0.049026,-128.7],[73.4999,0.049026,-128.7],[83.9999,0.049026,-128.7],[94.4999,0.049026,-128.7],[105,0.049026,-128.7],[115.5,0.049026,-128.7],[126,0.049026,-128.7],[136.5,0.049026,-128.7],[147,0.049026,-128.7],[157.5,0.049026,-128.7],[168,0.049026,-128.7],[178.5,0.049026,-128.7],[189,0.049026,-128.7],[199.5,0.049026,-128.7],[210,0.049026,-128.7],[-6.9e-05,0.049026,-118.8],[10.4999,0.049026,-118.8],[20.9999,0.049026,-118.8],[31.4999,0.049026,-118.8],[41.9999,0.049026,-118.8],[52.4999,0.049026,-118.8],[62.9999,0.049026,-118.8],[73.4999,0.049026,-118.8],[83.9999,0.049026,-118.8],[94.4999,0.049026,-118.8],[105,0.049026,-118.8],[115.5,0.049026,-118.8],[126,0.049026,-118.8],[136.5,0.049026,-118.8],[147,0.049026,-118.8],[157.5,0.049026,-118.8],[168,0.049026,-118.8],[178.5,0.049026,-118.8],[189,0.049026,-118.8],[199.5,0.049026,-118.8],[210,0.049026,-118.8],[-6.9e-05,0.049026,-108.9],[10.4999,0.049026,-108.9],[20.9999,0.049026,-108.9],[31.4999,0.049026,-108.9],[41.9999,0.049026,-108.9],[52.4999,0.049026,-108.9],[62.9999,0.049026,-108.9],[73.4999,0.049026,-108.9],[83.9999,0.049026,-108.9],[94.4999,0.049026,-108.9],[105,0.049026,-108.9],[115.5,0.049026,-108.9],[126,0.049026,-108.9],[136.5,0.049026,-108.9],[147,0.049026,-108.9],[157.5,0.049026,-108.9],[168,0.049026,-108.9],[178.5,0.049026,-108.9],[189,0.049026,-108.9],[199.5,0.049026,-108.9],[210,0.049026,-108.9],[-6.9e-05,0.049026,-99],[10.4999,0.049026,-99],[20.9999,0.049026,-99],[31.4999,0.049026,-99],[41.9999,0.049026,-99],[52.4999,0.049026,-99],[62.9999,0.049026,-99],[73.4999,0.049026,-99],[83.9999,0.049026,-99],[94.4999,0.049026,-99],[105,0.049026,-99],[115.5,0.049026,-99],[126,0.049026,-99],[136.5,0.049026,-99],[147,0.049026,-99],[157.5,0.049026,-99],[168,0.049026,-99],[178.5,0.049026,-99],[189,0.049026,-99],[199.5,0.049026,-99],[210,0.049026,-99],[-6.9e-05,0.049026,-89.1],[10.4999,0.049026,-89.1],[20.9999,0.049026,-89.1],[31.4999,0.049026,-89.1],[41.9999,0.049026,-89.1],[52.4999,0.049026,-89.1],[62.9999,0.049026,-89.1],[73.4999,0.049026,-89.1],[83.9999,0.049026,-89.1],[94.4999,0.049026,-89.1],[105,0.049026,-89.1],[115.5,0.049026,-89.1],[126,0.049026,-89.1],[136.5,0.049026,-89.1],[147,0.049026,-89.1],[157.5,0.049026,-89.1],[168,0.049026,-89.1],[178.5,0.049026,-89.1],[189,0.049026,-89.1],[199.5,0.049026,-89.1],[210,0.049026,-89.1],[-6.9e-05,0.049026,-79.2],[10.4999,0.049026,-79.2],[20.9999,0.049026,-79.2],[31.4999,0.049026,-79.2],[41.9999,0.049026,-79.2],[52.4999,0.049026,-79.2],[62.9999,0.049026,-79.2],[73.4999,0.049026,-79.2],[83.9999,0.049026,-79.2],[94.4999,0.049026,-79.2],[105,0.049026,-79.2],[115.5,0.049026,-79.2],[126,0.049026,-79.2],[136.5,0.049026,-79.2],[147,0.049026,-79.2],[157.5,0.049026,-79.2],[168,0.049026,-79.2],[178.5,0.049026,-79.2],[189,0.049026,-79.2],[199.5,0.049026,-79.2],[210,0.049026,-79.2],[-6.9e-05,0.049026,-69.3],[10.4999,0.049026,-69.3],[20.9999,0.049026,-69.3],[31.4999,0.049026,-69.3],[41.9999,0.049026,-69.3],[52.4999,0.049026,-69.3],[62.9999,0.049026,-69.3],[73.4999,0.049026,-69.3],[83.9999,0.049026,-69.3],[94.4999,0.049026,-69.3],[105,0.049026,-69.3],[115.5,0.049026,-69.3],[126,0.049026,-69.3],[136.5,0.049026,-69.3],[147,0.049026,-69.3],[157.5,0.049026,-69.3],[168,0.049026,-69.3],[178.5,0.049026,-69.3],[189,0.049026,-69.3],[199.5,0.049026,-69.3],[210,0.049026,-69.3],[-6.9e-05,0.049026,-59.4],[10.4999,0.049026,-59.4],[20.9999,0.049026,-59.4],[31.4999,0.049026,-59.4],[41.9999,0.049026,-59.4],[52.4999,0.049026,-59.4],[62.9999,0.049026,-59.4],[73.4999,0.049026,-59.4],[83.9999,0.049026,-59.4],[94.4999,0.049026,-59.4],[105,0.049026,-59.4],[115.5,0.049026,-59.4],[126,0.049026,-59.4],[136.5,0.049026,-59.4],[147,0.049026,-59.4],[157.5,0.049026,-59.4],[168,0.049026,-59.4],[178.5,0.049026,-59.4],[189,0.049026,-59.4],[199.5,0.049026,-59.4],[210,0.049026,-59.4],[-6.9e-05,0.049026,-49.5],[10.4999,0.049026,-49.5],[20.9999,0.049026,-49.5],[31.4999,0.049026,-49.5],[41.9999,0.049026,-49.5],[52.4999,0.049026,-49.5],[62.9999,0.049026,-49.5],[73.4999,0.049026,-49.5],[83.9999,0.049026,-49.5],[94.4999,0.049026,-49.5],[105,0.049026,-49.5],[115.5,0.049026,-49.5],[126,0.049026,-49.5],[136.5,0.049026,-49.5],[147,0.049026,-49.5],[157.5,0.049026,-49.5],[168,0.049026,-49.5],[178.5,0.049026,-49.5],[189,0.049026,-49.5],[199.5,0.049026,-49.5],[210,0.049026,-49.5],[-6.9e-05,0.049026,-39.6],[10.4999,0.049026,-39.6],[20.9999,0.049026,-39.6],[31.4999,0.049026,-39.6],[41.9999,0.049026,-39.6],[52.4999,0.049026,-39.6],[62.9999,0.049026,-39.6],[73.4999,0.049026,-39.6],[83.9999,0.049026,-39.6],[94.4999,0.049026,-39.6],[105,0.049026,-39.6],[115.5,0.049026,-39.6],[126,0.049026,-39.6],[136.5,0.049026,-39.6],[147,0.049026,-39.6],[157.5,0.049026,-39.6],[168,0.049026,-39.6],[178.5,0.049026,-39.6],[189,0.049026,-39.6],[199.5,0.049026,-39.6],[210,0.049026,-39.6],[-6.9e-05,0.049026,-29.7],[10.4999,0.049026,-29.7],[20.9999,0.049026,-29.7],[31.4999,0.049026,-29.7],[41.9999,0.049026,-29.7],[52.4999,0.049026,-29.7],[62.9999,0.049026,-29.7],[73.4999,0.049026,-29.7],[83.9999,0.049026,-29.7],[94.4999,0.049026,-29.7],[105,0.049026,-29.7],[115.5,0.049026,-29.7],[126,0.049026,-29.7],[136.5,0.049026,-29.7],[147,0.049026,-29.7],[157.5,0.049026,-29.7],[168,0.049026,-29.7],[178.5,0.049026,-29.7],[189,0.049026,-29.7],[199.5,0.049026,-29.7],[210,0.049026,-29.7],[-6.9e-05,0.049026,-19.8],[10.4999,0.049026,-19.8],[20.9999,0.049026,-19.8],[31.4999,0.049026,-19.8],[41.9999,0.049026,-19.8],[52.4999,0.049026,-19.8],[62.9999,0.049026,-19.8],[73.4999,0.049026,-19.8],[83.9999,0.049026,-19.8],[94.4999,0.049026,-19.8],[105,0.049026,-19.8],[115.5,0.049026,-19.8],[126,0.049026,-19.8],[136.5,0.049026,-19.8],[147,0.049026,-19.8],[157.5,0.049026,-19.8],[168,0.049026,-19.8],[178.5,0.049026,-19.8],[189,0.049026,-19.8],[199.5,0.049026,-19.8],[210,0.049026,-19.8],[-6.9e-05,0.049026,-9.9],[10.4999,0.049026,-9.9],[20.9999,0.049026,-9.9],[31.4999,0.049026,-9.9],[41.9999,0.049026,-9.9],[52.4999,0.049026,-9.9],[62.9999,0.049026,-9.9],[73.4999,0.049026,-9.9],[83.9999,0.049026,-9.9],[94.4999,0.049026,-9.9],[105,0.049026,-9.9],[115.5,0.049026,-9.9],[126,0.049026,-9.9],[136.5,0.049026,-9.9],[147,0.049026,-9.9],[157.5,0.049026,-9.9],[168,0.049026,-9.9],[178.5,0.049026,-9.9],[189,0.049026,-9.9],[199.5,0.049026,-9.9],[210,0.049026,-9.9],[-6.9e-05,0.049026,-0],[10.4999,0.049026,-0],[20.9999,0.049026,-0],[31.4999,0.049026,-0],[41.9999,0.049026,-0],[52.4999,0.049026,-0],[62.9999,0.049026,-0],[73.4999,0.049026,-0],[83.9999,0.049026,-0],[94.4999,0.049026,-0],[105,0.049026,-0],[115.5,0.049026,-0],[126,0.049026,-0],[136.5,0.049026,-0],[147,0.049026,-0],[157.5,0.049026,-0],[168,0.049026,-0],[178.5,0.049026,-0],[189,0.049026,-0],[199.5,0.049026,-0],[210,0.049026,-0],[-6.9e-05,0.049026,9.9],[10.4999,0.049026,9.9],[20.9999,0.049026,9.9],[31.4999,0.049026,9.9],[41.9999,0.049026,9.9],[52.4999,0.049026,9.9],[62.9999,0.049026,9.9],[73.4999,0.049026,9.9],[83.9999,0.049026,9.9],[94.4999,0.049026,9.9],[105,0.049026,9.9],[115.5,0.049026,9.9],[126,0.049026,9.9],[136.5,0.049026,9.9],[147,0.049026,9.9],[157.5,0.049026,9.9],[168,0.049026,9.9],[178.5,0.049026,9.9],[189,0.049026,9.9],[199.5,0.049026,9.9],[210,0.049026,9.9],[-6.9e-05,0.049026,19.8],[10.4999,0.049026,19.8],[20.9999,0.049026,19.8],[31.4999,0.049026,19.8],[41.9999,0.049026,19.8],[52.4999,0.049026,19.8],[62.9999,0.049026,19.8],[73.4999,0.049026,19.8],[83.9999,0.049026,19.8],[94.4999,0.049026,19.8],[105,0.049026,19.8],[115.5,0.049026,19.8],[126,0.049026,19.8],[136.5,0.049026,19.8],[147,0.049026,19.8],[157.5,0.049026,19.8],[168,0.049026,19.8],[178.5,0.049026,19.8],[189,0.049026,19.8],[199.5,0.049026,19.8],[210,0.049026,19.8],[-6.9e-05,0.049026,29.7],[10.4999,0.049026,29.7],[20.9999,0.049026,29.7],[31.4999,0.049026,29.7],[41.9999,0.049026,29.7],[52.4999,0.049026,29.7],[62.9999,0.049026,29.7],[73.4999,0.049026,29.7],[83.9999,0.049026,29.7],[94.4999,0.049026,29.7],[105,0.049026,29.7],[115.5,0.049026,29.7],[126,0.049026,29.7],[136.5,0.049026,29.7],[147,0.049026,29.7],[157.5,0.049026,29.7],[168,0.049026,29.7],[178.5,0.049026,29.7],[189,0.049026,29.7],[199.5,0.049026,29.7],[210,0.049026,29.7],[-6.9e-05,0.049026,39.6],[10.4999,0.049026,39.6],[20.9999,0.049026,39.6],[31.4999,0.049026,39.6],[41.9999,0.049026,39.6],[52.4999,0.049026,39.6],[62.9999,0.049026,39.6],[73.4999,0.049026,39.6],[83.9999,0.049026,39.6],[94.4999,0.049026,39.6],[105,0.049026,39.6],[115.5,0.049026,39.6],[126,0.049026,39.6],[136.5,0.049026,39.6],[147,0.049026,39.6],[157.5,0.049026,39.6],[168,0.049026,39.6],[178.5,0.049026,39.6],[189,0.049026,39.6],[199.5,0.049026,39.6],[210,0.049026,39.6],[-6.9e-05,0.049026,49.5],[10.4999,0.049026,49.5],[20.9999,0.049026,49.5],[31.4999,0.049026,49.5],[41.9999,0.049026,49.5],[52.4999,0.049026,49.5],[62.9999,0.049026,49.5],[73.4999,0.049026,49.5],[83.9999,0.049026,49.5],[94.4999,0.049026,49.5],[105,0.049026,49.5],[115.5,0.049026,49.5],[126,0.049026,49.5],[136.5,0.049026,49.5],[147,0.049026,49.5],[157.5,0.049026,49.5],[168,0.049026,49.5],[178.5,0.049026,49.5],[189,0.049026,49.5],[199.5,0.049026,49.5],[210,0.049026,49.5],[-6.9e-05,0.049026,59.4],[10.4999,0.049026,59.4],[20.9999,0.049026,59.4],[31.4999,0.049026,59.4],[41.9999,0.049026,59.4],[52.4999,0.049026,59.4],[62.9999,0.049026,59.4],[73.4999,0.049026,59.4],[83.9999,0.049026,59.4],[94.4999,0.049026,59.4],[105,0.049026,59.4],[115.5,0.049026,59.4],[126,0.049026,59.4],[136.5,0.049026,59.4],[147,0.049026,59.4],[157.5,0.049026,59.4],[168,0.049026,59.4],[178.5,0.049026,59.4],[189,0.049026,59.4],[199.5,0.049026,59.4],[210,0.049026,59.4],[-6.9e-05,0.049026,69.3],[10.4999,0.049026,69.3],[20.9999,0.049026,69.3],[31.4999,0.049026,69.3],[41.9999,0.049026,69.3],[52.4999,0.049026,69.3],[62.9999,0.049026,69.3],[73.4999,0.049026,69.3],[83.9999,0.049026,69.3],[94.4999,0.049026,69.3],[105,0.049026,69.3],[115.5,0.049026,69.3],[126,0.049026,69.3],[136.5,0.049026,69.3],[147,0.049026,69.3],[157.5,0.049026,69.3],[168,0.049026,69.3],[178.5,0.049026,69.3],[189,0.049026,69.3],[199.5,0.049026,69.3],[210,0.049026,69.3],[-6.9e-05,0.049026,79.2],[10.4999,0.049026,79.2],[20.9999,0.049026,79.2],[31.4999,0.049026,79.2],[41.9999,0.049026,79.2],[52.4999,0.049026,79.2],[62.9999,0.049026,79.2],[73.4999,0.049026,79.2],[83.9999,0.049026,79.2],[94.4999,0.049026,79.2],[105,0.049026,79.2],[115.5,0.049026,79.2],[126,0.049026,79.2],[136.5,0.049026,79.2],[147,0.049026,79.2],[157.5,0.049026,79.2],[168,0.049026,79.2],[178.5,0.049026,79.2],[189,0.049026,79.2],[199.5,0.049026,79.2],[210,0.049026,79.2],[-6.9e-05,0.049026,89.1],[10.4999,0.049026,89.1],[20.9999,0.049026,89.1],[31.4999,0.049026,89.1],[41.9999,0.049026,89.1],[52.4999,0.049026,89.1],[62.9999,0.049026,89.1],[73.4999,0.049026,89.1],[83.9999,0.049026,89.1],[94.4999,0.049026,89.1],[105,0.049026,89.1],[115.5,0.049026,89.1],[126,0.049026,89.1],[136.5,0.049026,89.1],[147,0.049026,89.1],[157.5,0.049026,89.1],[168,0.049026,89.1],[178.5,0.049026,89.1],[189,0.049026,89.1],[199.5,0.049026,89.1],[210,0.049026,89.1],[-6.9e-05,0.049026,99],[10.4999,0.049026,99],[20.9999,0.049026,99],[31.4999,0.049026,99],[41.9999,0.049026,99],[52.4999,0.049026,99],[62.9999,0.049026,99],[73.4999,0.049026,99],[83.9999,0.049026,99],[94.4999,0.049026,99],[105,0.049026,99],[115.5,0.049026,99],[126,0.049026,99],[136.5,0.049026,99],[147,0.049026,99],[157.5,0.049026,99],[168,0.049026,99],[178.5,0.049026,99],[189,0.049026,99],[199.5,0.049026,99],[210,0.049026,99],[-6.9e-05,0.049026,108.9],[10.4999,0.049026,108.9],[20.9999,0.049026,108.9],[31.4999,0.049026,108.9],[41.9999,0.049026,108.9],[52.4999,0.049026,108.9],[62.9999,0.049026,108.9],[73.4999,0.049026,108.9],[83.9999,0.049026,108.9],[94.4999,0.049026,108.9],[105,0.049026,108.9],[115.5,0.049026,108.9],[126,0.049026,108.9],[136.5,0.049026,108.9],[147,0.049026,108.9],[157.5,0.049026,108.9],[168,0.049026,108.9],[178.5,0.049026,108.9],[189,0.049026,108.9],[199.5,0.049026,108.9],[210,0.049026,108.9],[-6.9e-05,0.049026,118.8],[10.4999,0.049026,118.8],[20.9999,0.049026,118.8],[31.4999,0.049026,118.8],[41.9999,0.049026,118.8],[52.4999,0.049026,118.8],[62.9999,0.049026,118.8],[73.4999,0.049026,118.8],[83.9999,0.049026,118.8],[94.4999,0.049026,118.8],[105,0.049026,118.8],[115.5,0.049026,118.8],[126,0.049026,118.8],[136.5,0.049026,118.8],[147,0.049026,118.8],[157.5,0.049026,118.8],[168,0.049026,118.8],[178.5,0.049026,118.8],[189,0.049026,118.8],[199.5,0.049026,118.8],[210,0.049026,118.8],[-6.9e-05,0.049026,128.7],[10.4999,0.049026,128.7],[20.9999,0.049026,128.7],[31.4999,0.049026,128.7],[41.9999,0.049026,128.7],[52.4999,0.049026,128.7],[62.9999,0.049026,128.7],[73.4999,0.049026,128.7],[83.9999,0.049026,128.7],[94.4999,0.049026,128.7],[105,0.049026,128.7],[115.5,0.049026,128.7],[126,0.049026,128.7],[136.5,0.049026,128.7],[147,0.049026,128.7],[157.5,0.049026,128.7],[168,0.049026,128.7],[178.5,0.049026,128.7],[189,0.049026,128.7],[199.5,0.049026,128.7],[210,0.049026,128.7],[-6.9e-05,0.049026,138.6],[10.4999,0.049026,138.6],[20.9999,0.049026,138.6],[31.4999,0.049026,138.6],[41.9999,0.049026,138.6],[52.4999,0.049026,138.6],[62.9999,0.049026,138.6],[73.4999,0.049026,138.6],[83.9999,0.049026,138.6],[94.4999,0.049026,138.6],[105,0.049026,138.6],[115.5,0.049026,138.6],[126,0.049026,138.6],[136.5,0.049026,138.6],[147,0.049026,138.6],[157.5,0.049026,138.6],[168,0.049026,138.6],[178.5,0.049026,138.6],[189,0.049026,138.6],[199.5,0.049026,138.6],[210,0.049026,138.6],[-6.9e-05,0.049026,148.5],[10.4999,0.049026,148.5],[20.9999,0.049026,148.5],[31.4999,0.049026,148.5],[41.9999,0.049026,148.5],[52.4999,0.049026,148.5],[62.9999,0.049026,148.5],[73.4999,0.049026,148.5],[83.9999,0.049026,148.5],[94.4999,0.049026,148.5],[105,0.049026,148.5],[115.5,0.049026,148.5],[126,0.049026,148.5],[136.5,0.049026,148.5],[147,0.049026,148.5],[157.5,0.049026,148.5],[168,0.049026,148.5],[178.5,0.049026,148.5],[189,0.049026,148.5],[199.5,0.049026,148.5],[210,0.049026,148.5],[-6.9e-05,-0.050974,-148.5],[10.4999,-0.050974,-148.5],[20.9999,-0.050974,-148.5],[31.4999,-0.050974,-148.5],[41.9999,-0.050974,-148.5],[52.4999,-0.050974,-148.5],[62.9999,-0.050974,-148.5],[73.4999,-0.050974,-148.5],[83.9999,-0.050974,-148.5],[94.4999,-0.050974,-148.5],[105,-0.050974,-148.5],[115.5,-0.050974,-148.5],[126,-0.050974,-148.5],[136.5,-0.050974,-148.5],[147,-0.050974,-148.5],[157.5,-0.050974,-148.5],[168,-0.050974,-148.5],[178.5,-0.050974,-148.5],[189,-0.050974,-148.5],[199.5,-0.050974,-148.5],[210,-0.050974,-148.5],[-6.9e-05,-0.050974,-138.6],[10.4999,-0.050974,-138.6],[20.9999,-0.050974,-138.6],[31.4999,-0.050974,-138.6],[41.9999,-0.050974,-138.6],[52.4999,-0.050974,-138.6],[62.9999,-0.050974,-138.6],[73.4999,-0.050974,-138.6],[83.9999,-0.050974,-138.6],[94.4999,-0.050974,-138.6],[105,-0.050974,-138.6],[115.5,-0.050974,-138.6],[126,-0.050974,-138.6],[136.5,-0.050974,-138.6],[147,-0.050974,-138.6],[157.5,-0.050974,-138.6],[168,-0.050974,-138.6],[178.5,-0.050974,-138.6],[189,-0.050974,-138.6],[199.5,-0.050974,-138.6],[210,-0.050974,-138.6],[-6.9e-05,-0.050974,-128.7],[10.4999,-0.050974,-128.7],[20.9999,-0.050974,-128.7],[31.4999,-0.050974,-128.7],[41.9999,-0.050974,-128.7],[52.4999,-0.050974,-128.7],[62.9999,-0.050974,-128.7],[73.4999,-0.050974,-128.7],[83.9999,-0.050974,-128.7],[94.4999,-0.050974,-128.7],[105,-0.050974,-128.7],[115.5,-0.050974,-128.7],[126,-0.050974,-128.7],[136.5,-0.050974,-128.7],[147,-0.050974,-128.7],[157.5,-0.050974,-128.7],[168,-0.050974,-128.7],[178.5,-0.050974,-128.7],[189,-0.050974,-128.7],[199.5,-0.050974,-128.7],[210,-0.050974,-128.7],[-6.9e-05,-0.050974,-118.8],[10.4999,-0.050974,-118.8],[20.9999,-0.050974,-118.8],[31.4999,-0.050974,-118.8],[41.9999,-0.050974,-118.8],[52.4999,-0.050974,-118.8],[62.9999,-0.050974,-118.8],[73.4999,-0.050974,-118.8],[83.9999,-0.050974,-118.8],[94.4999,-0.050974,-118.8],[105,-0.050974,-118.8],[115.5,-0.050974,-118.8],[126,-0.050974,-118.8],[136.5,-0.050974,-118.8],[147,-0.050974,-118.8],[157.5,-0.050974,-118.8],[168,-0.050974,-118.8],[178.5,-0.050974,-118.8],[189,-0.050974,-118.8],[199.5,-0.050974,-118.8],[210,-0.050974,-118.8],[-6.9e-05,-0.050974,-108.9],[10.4999,-0.050974,-108.9],[20.9999,-0.050974,-108.9],[31.4999,-0.050974,-108.9],[41.9999,-0.050974,-108.9],[52.4999,-0.050974,-108.9],[62.9999,-0.050974,-108.9],[73.4999,-0.050974,-108.9],[83.9999,-0.050974,-108.9],[94.4999,-0.050974,-108.9],[105,-0.050974,-108.9],[115.5,-0.050974,-108.9],[126,-0.050974,-108.9],[136.5,-0.050974,-108.9],[147,-0.050974,-108.9],[157.5,-0.050974,-108.9],[168,-0.050974,-108.9],[178.5,-0.050974,-108.9],[189,-0.050974,-108.9],[199.5,-0.050974,-108.9],[210,-0.050974,-108.9],[-6.9e-05,-0.050974,-99],[10.4999,-0.050974,-99],[20.9999,-0.050974,-99],[31.4999,-0.050974,-99],[41.9999,-0.050974,-99],[52.4999,-0.050974,-99],[62.9999,-0.050974,-99],[73.4999,-0.050974,-99],[83.9999,-0.050974,-99],[94.4999,-0.050974,-99],[105,-0.050974,-99],[115.5,-0.050974,-99],[126,-0.050974,-99],[136.5,-0.050974,-99],[147,-0.050974,-99],[157.5,-0.050974,-99],[168,-0.050974,-99],[178.5,-0.050974,-99],[189,-0.050974,-99],[199.5,-0.050974,-99],[210,-0.050974,-99],[-6.9e-05,-0.050974,-89.1],[10.4999,-0.050974,-89.1],[20.9999,-0.050974,-89.1],[31.4999,-0.050974,-89.1],[41.9999,-0.050974,-89.1],[52.4999,-0.050974,-89.1],[62.9999,-0.050974,-89.1],[73.4999,-0.050974,-89.1],[83.9999,-0.050974,-89.1],[94.4999,-0.050974,-89.1],[105,-0.050974,-89.1],[115.5,-0.050974,-89.1],[126,-0.050974,-89.1],[136.5,-0.050974,-89.1],[147,-0.050974,-89.1],[157.5,-0.050974,-89.1],[168,-0.050974,-89.1],[178.5,-0.050974,-89.1],[189,-0.050974,-89.1],[199.5,-0.050974,-89.1],[210,-0.050974,-89.1],[-6.9e-05,-0.050974,-79.2],[10.4999,-0.050974,-79.2],[20.9999,-0.050974,-79.2],[31.4999,-0.050974,-79.2],[41.9999,-0.050974,-79.2],[52.4999,-0.050974,-79.2],[62.9999,-0.050974,-79.2],[73.4999,-0.050974,-79.2],[83.9999,-0.050974,-79.2],[94.4999,-0.050974,-79.2],[105,-0.050974,-79.2],[115.5,-0.050974,-79.2],[126,-0.050974,-79.2],[136.5,-0.050974,-79.2],[147,-0.050974,-79.2],[157.5,-0.050974,-79.2],[168,-0.050974,-79.2],[178.5,-0.050974,-79.2],[189,-0.050974,-79.2],[199.5,-0.050974,-79.2],[210,-0.050974,-79.2],[-6.9e-05,-0.050974,-69.3],[10.4999,-0.050974,-69.3],[20.9999,-0.050974,-69.3],[31.4999,-0.050974,-69.3],[41.9999,-0.050974,-69.3],[52.4999,-0.050974,-69.3],[62.9999,-0.050974,-69.3],[73.4999,-0.050974,-69.3],[83.9999,-0.050974,-69.3],[94.4999,-0.050974,-69.3],[105,-0.050974,-69.3],[115.5,-0.050974,-69.3],[126,-0.050974,-69.3],[136.5,-0.050974,-69.3],[147,-0.050974,-69.3],[157.5,-0.050974,-69.3],[168,-0.050974,-69.3],[178.5,-0.050974,-69.3],[189,-0.050974,-69.3],[199.5,-0.050974,-69.3],[210,-0.050974,-69.3],[-6.9e-05,-0.050974,-59.4],[10.4999,-0.050974,-59.4],[20.9999,-0.050974,-59.4],[31.4999,-0.050974,-59.4],[41.9999,-0.050974,-59.4],[52.4999,-0.050974,-59.4],[62.9999,-0.050974,-59.4],[73.4999,-0.050974,-59.4],[83.9999,-0.050974,-59.4],[94.4999,-0.050974,-59.4],[105,-0.050974,-59.4],[115.5,-0.050974,-59.4],[126,-0.050974,-59.4],[136.5,-0.050974,-59.4],[147,-0.050974,-59.4],[157.5,-0.050974,-59.4],[168,-0.050974,-59.4],[178.5,-0.050974,-59.4],[189,-0.050974,-59.4],[199.5,-0.050974,-59.4],[210,-0.050974,-59.4],[-6.9e-05,-0.050974,-49.5],[10.4999,-0.050974,-49.5],[20.9999,-0.050974,-49.5],[31.4999,-0.050974,-49.5],[41.9999,-0.050974,-49.5],[52.4999,-0.050974,-49.5],[62.9999,-0.050974,-49.5],[73.4999,-0.050974,-49.5],[83.9999,-0.050974,-49.5],[94.4999,-0.050974,-49.5],[105,-0.050974,-49.5],[115.5,-0.050974,-49.5],[126,-0.050974,-49.5],[136.5,-0.050974,-49.5],[147,-0.050974,-49.5],[157.5,-0.050974,-49.5],[168,-0.050974,-49.5],[178.5,-0.050974,-49.5],[189,-0.050974,-49.5],[199.5,-0.050974,-49.5],[210,-0.050974,-49.5],[-6.9e-05,-0.050974,-39.6],[10.4999,-0.050974,-39.6],[20.9999,-0.050974,-39.6],[31.4999,-0.050974,-39.6],[41.9999,-0.050974,-39.6],[52.4999,-0.050974,-39.6],[62.9999,-0.050974,-39.6],[73.4999,-0.050974,-39.6],[83.9999,-0.050974,-39.6],[94.4999,-0.050974,-39.6],[105,-0.050974,-39.6],[115.5,-0.050974,-39.6],[126,-0.050974,-39.6],[136.5,-0.050974,-39.6],[147,-0.050974,-39.6],[157.5,-0.050974,-39.6],[168,-0.050974,-39.6],[178.5,-0.050974,-39.6],[189,-0.050974,-39.6],[199.5,-0.050974,-39.6],[210,-0.050974,-39.6],[-6.9e-05,-0.050974,-29.7],[10.4999,-0.050974,-29.7],[20.9999,-0.050974,-29.7],[31.4999,-0.050974,-29.7],[41.9999,-0.050974,-29.7],[52.4999,-0.050974,-29.7],[62.9999,-0.050974,-29.7],[73.4999,-0.050974,-29.7],[83.9999,-0.050974,-29.7],[94.4999,-0.050974,-29.7],[105,-0.050974,-29.7],[115.5,-0.050974,-29.7],[126,-0.050974,-29.7],[136.5,-0.050974,-29.7],[147,-0.050974,-29.7],[157.5,-0.050974,-29.7],[168,-0.050974,-29.7],[178.5,-0.050974,-29.7],[189,-0.050974,-29.7],[199.5,-0.050974,-29.7],[210,-0.050974,-29.7],[-6.9e-05,-0.050974,-19.8],[10.4999,-0.050974,-19.8],[20.9999,-0.050974,-19.8],[31.4999,-0.050974,-19.8],[41.9999,-0.050974,-19.8],[52.4999,-0.050974,-19.8],[62.9999,-0.050974,-19.8],[73.4999,-0.050974,-19.8],[83.9999,-0.050974,-19.8],[94.4999,-0.050974,-19.8],[105,-0.050974,-19.8],[115.5,-0.050974,-19.8],[126,-0.050974,-19.8],[136.5,-0.050974,-19.8],[147,-0.050974,-19.8],[157.5,-0.050974,-19.8],[168,-0.050974,-19.8],[178.5,-0.050974,-19.8],[189,-0.050974,-19.8],[199.5,-0.050974,-19.8],[210,-0.050974,-19.8],[-6.9e-05,-0.050974,-9.9],[10.4999,-0.050974,-9.9],[20.9999,-0.050974,-9.9],[31.4999,-0.050974,-9.9],[41.9999,-0.050974,-9.9],[52.4999,-0.050974,-9.9],[62.9999,-0.050974,-9.9],[73.4999,-0.050974,-9.9],[83.9999,-0.050974,-9.9],[94.4999,-0.050974,-9.9],[105,-0.050974,-9.9],[115.5,-0.050974,-9.9],[126,-0.050974,-9.9],[136.5,-0.050974,-9.9],[147,-0.050974,-9.9],[157.5,-0.050974,-9.9],[168,-0.050974,-9.9],[178.5,-0.050974,-9.9],[189,-0.050974,-9.9],[199.5,-0.050974,-9.9],[210,-0.050974,-9.9],[-6.9e-05,-0.050974,-0],[10.4999,-0.050974,-0],[20.9999,-0.050974,-0],[31.4999,-0.050974,-0],[41.9999,-0.050974,-0],[52.4999,-0.050974,-0],[62.9999,-0.050974,-0],[73.4999,-0.050974,-0],[83.9999,-0.050974,-0],[94.4999,-0.050974,-0],[105,-0.050974,-0],[115.5,-0.050974,-0],[126,-0.050974,-0],[136.5,-0.050974,-0],[147,-0.050974,-0],[157.5,-0.050974,-0],[168,-0.050974,-0],[178.5,-0.050974,-0],[189,-0.050974,-0],[199.5,-0.050974,-0],[210,-0.050974,-0],[-6.9e-05,-0.050974,9.9],[10.4999,-0.050974,9.9],[20.9999,-0.050974,9.9],[31.4999,-0.050974,9.9],[41.9999,-0.050974,9.9],[52.4999,-0.050974,9.9],[62.9999,-0.050974,9.9],[73.4999,-0.050974,9.9],[83.9999,-0.050974,9.9],[94.4999,-0.050974,9.9],[105,-0.050974,9.9],[115.5,-0.050974,9.9],[126,-0.050974,9.9],[136.5,-0.050974,9.9],[147,-0.050974,9.9],[157.5,-0.050974,9.9],[168,-0.050974,9.9],[178.5,-0.050974,9.9],[189,-0.050974,9.9],[199.5,-0.050974,9.9],[210,-0.050974,9.9],[-6.9e-05,-0.050974,19.8],[10.4999,-0.050974,19.8],[20.9999,-0.050974,19.8],[31.4999,-0.050974,19.8],[41.9999,-0.050974,19.8],[52.4999,-0.050974,19.8],[62.9999,-0.050974,19.8],[73.4999,-0.050974,19.8],[83.9999,-0.050974,19.8],[94.4999,-0.050974,19.8],[105,-0.050974,19.8],[115.5,-0.050974,19.8],[126,-0.050974,19.8],[136.5,-0.050974,19.8],[147,-0.050974,19.8],[157.5,-0.050974,19.8],[168,-0.050974,19.8],[178.5,-0.050974,19.8],[189,-0.050974,19.8],[199.5,-0.050974,19.8],[210,-0.050974,19.8],[-6.9e-05,-0.050974,29.7],[10.4999,-0.050974,29.7],[20.9999,-0.050974,29.7],[31.4999,-0.050974,29.7],[41.9999,-0.050974,29.7],[52.4999,-0.050974,29.7],[62.9999,-0.050974,29.7],[73.4999,-0.050974,29.7],[83.9999,-0.050974,29.7],[94.4999,-0.050974,29.7],[105,-0.050974,29.7],[115.5,-0.050974,29.7],[126,-0.050974,29.7],[136.5,-0.050974,29.7],[147,-0.050974,29.7],[157.5,-0.050974,29.7],[168,-0.050974,29.7],[178.5,-0.050974,29.7],[189,-0.050974,29.7],[199.5,-0.050974,29.7],[210,-0.050974,29.7],[-6.9e-05,-0.050974,39.6],[10.4999,-0.050974,39.6],[20.9999,-0.050974,39.6],[31.4999,-0.050974,39.6],[41.9999,-0.050974,39.6],[52.4999,-0.050974,39.6],[62.9999,-0.050974,39.6],[73.4999,-0.050974,39.6],[83.9999,-0.050974,39.6],[94.4999,-0.050974,39.6],[105,-0.050974,39.6],[115.5,-0.050974,39.6],[126,-0.050974,39.6],[136.5,-0.050974,39.6],[147,-0.050974,39.6],[157.5,-0.050974,39.6],[168,-0.050974,39.6],[178.5,-0.050974,39.6],[189,-0.050974,39.6],[199.5,-0.050974,39.6],[210,-0.050974,39.6],[-6.9e-05,-0.050974,49.5],[10.4999,-0.050974,49.5],[20.9999,-0.050974,49.5],[31.4999,-0.050974,49.5],[41.9999,-0.050974,49.5],[52.4999,-0.050974,49.5],[62.9999,-0.050974,49.5],[73.4999,-0.050974,49.5],[83.9999,-0.050974,49.5],[94.4999,-0.050974,49.5],[105,-0.050974,49.5],[115.5,-0.050974,49.5],[126,-0.050974,49.5],[136.5,-0.050974,49.5],[147,-0.050974,49.5],[157.5,-0.050974,49.5],[168,-0.050974,49.5],[178.5,-0.050974,49.5],[189,-0.050974,49.5],[199.5,-0.050974,49.5],[210,-0.050974,49.5],[-6.9e-05,-0.050974,59.4],[10.4999,-0.050974,59.4],[20.9999,-0.050974,59.4],[31.4999,-0.050974,59.4],[41.9999,-0.050974,59.4],[52.4999,-0.050974,59.4],[62.9999,-0.050974,59.4],[73.4999,-0.050974,59.4],[83.9999,-0.050974,59.4],[94.4999,-0.050974,59.4],[105,-0.050974,59.4],[115.5,-0.050974,59.4],[126,-0.050974,59.4],[136.5,-0.050974,59.4],[147,-0.050974,59.4],[157.5,-0.050974,59.4],[168,-0.050974,59.4],[178.5,-0.050974,59.4],[189,-0.050974,59.4],[199.5,-0.050974,59.4],[210,-0.050974,59.4],[-6.9e-05,-0.050974,69.3],[10.4999,-0.050974,69.3],[20.9999,-0.050974,69.3],[31.4999,-0.050974,69.3],[41.9999,-0.050974,69.3],[52.4999,-0.050974,69.3],[62.9999,-0.050974,69.3],[73.4999,-0.050974,69.3],[83.9999,-0.050974,69.3],[94.4999,-0.050974,69.3],[105,-0.050974,69.3],[115.5,-0.050974,69.3],[126,-0.050974,69.3],[136.5,-0.050974,69.3],[147,-0.050974,69.3],[157.5,-0.050974,69.3],[168,-0.050974,69.3],[178.5,-0.050974,69.3],[189,-0.050974,69.3],[199.5,-0.050974,69.3],[210,-0.050974,69.3],[-6.9e-05,-0.050974,79.2],[10.4999,-0.050974,79.2],[20.9999,-0.050974,79.2],[31.4999,-0.050974,79.2],[41.9999,-0.050974,79.2],[52.4999,-0.050974,79.2],[62.9999,-0.050974,79.2],[73.4999,-0.050974,79.2],[83.9999,-0.050974,79.2],[94.4999,-0.050974,79.2],[105,-0.050974,79.2],[115.5,-0.050974,79.2],[126,-0.050974,79.2],[136.5,-0.050974,79.2],[147,-0.050974,79.2],[157.5,-0.050974,79.2],[168,-0.050974,79.2],[178.5,-0.050974,79.2],[189,-0.050974,79.2],[199.5,-0.050974,79.2],[210,-0.050974,79.2],[-6.9e-05,-0.050974,89.1],[10.4999,-0.050974,89.1],[20.9999,-0.050974,89.1],[31.4999,-0.050974,89.1],[41.9999,-0.050974,89.1],[52.4999,-0.050974,89.1],[62.9999,-0.050974,89.1],[73.4999,-0.050974,89.1],[83.9999,-0.050974,89.1],[94.4999,-0.050974,89.1],[105,-0.050974,89.1],[115.5,-0.050974,89.1],[126,-0.050974,89.1],[136.5,-0.050974,89.1],[147,-0.050974,89.1],[157.5,-0.050974,89.1],[168,-0.050974,89.1],[178.5,-0.050974,89.1],[189,-0.050974,89.1],[199.5,-0.050974,89.1],[210,-0.050974,89.1],[-6.9e-05,-0.050974,99],[10.4999,-0.050974,99],[20.9999,-0.050974,99],[31.4999,-0.050974,99],[41.9999,-0.050974,99],[52.4999,-0.050974,99],[62.9999,-0.050974,99],[73.4999,-0.050974,99],[83.9999,-0.050974,99],[94.4999,-0.050974,99],[105,-0.050974,99],[115.5,-0.050974,99],[126,-0.050974,99],[136.5,-0.050974,99],[147,-0.050974,99],[157.5,-0.050974,99],[168,-0.050974,99],[178.5,-0.050974,99],[189,-0.050974,99],[199.5,-0.050974,99],[210,-0.050974,99],[-6.9e-05,-0.050974,108.9],[10.4999,-0.050974,108.9],[20.9999,-0.050974,108.9],[31.4999,-0.050974,108.9],[41.9999,-0.050974,108.9],[52.4999,-0.050974,108.9],[62.9999,-0.050974,108.9],[73.4999,-0.050974,108.9],[83.9999,-0.050974,108.9],[94.4999,-0.050974,108.9],[105,-0.050974,108.9],[115.5,-0.050974,108.9],[126,-0.050974,108.9],[136.5,-0.050974,108.9],[147,-0.050974,108.9],[157.5,-0.050974,108.9],[168,-0.050974,108.9],[178.5,-0.050974,108.9],[189,-0.050974,108.9],[199.5,-0.050974,108.9],[210,-0.050974,108.9],[-6.9e-05,-0.050974,118.8],[10.4999,-0.050974,118.8],[20.9999,-0.050974,118.8],[31.4999,-0.050974,118.8],[41.9999,-0.050974,118.8],[52.4999,-0.050974,118.8],[62.9999,-0.050974,118.8],[73.4999,-0.050974,118.8],[83.9999,-0.050974,118.8],[94.4999,-0.050974,118.8],[105,-0.050974,118.8],[115.5,-0.050974,118.8],[126,-0.050974,118.8],[136.5,-0.050974,118.8],[147,-0.050974,118.8],[157.5,-0.050974,118.8],[168,-0.050974,118.8],[178.5,-0.050974,118.8],[189,-0.050974,118.8],[199.5,-0.050974,118.8],[210,-0.050974,118.8],[-6.9e-05,-0.050974,128.7],[10.4999,-0.050974,128.7],[20.9999,-0.050974,128.7],[31.4999,-0.050974,128.7],[41.9999,-0.050974,128.7],[52.4999,-0.050974,128.7],[62.9999,-0.050974,128.7],[73.4999,-0.050974,128.7],[83.9999,-0.050974,128.7],[94.4999,-0.050974,128.7],[105,-0.050974,128.7],[115.5,-0.050974,128.7],[126,-0.050974,128.7],[136.5,-0.050974,128.7],[147,-0.050974,128.7],[157.5,-0.050974,128.7],[168,-0.050974,128.7],[178.5,-0.050974,128.7],[189,-0.050974,128.7],[199.5,-0.050974,128.7],[210,-0.050974,128.7],[-6.9e-05,-0.050974,138.6],[10.4999,-0.050974,138.6],[20.9999,-0.050974,138.6],[31.4999,-0.050974,138.6],[41.9999,-0.050974,138.6],[52.4999,-0.050974,138.6],[62.9999,-0.050974,138.6],[73.4999,-0.050974,138.6],[83.9999,-0.050974,138.6],[94.4999,-0.050974,138.6],[105,-0.050974,138.6],[115.5,-0.050974,138.6],[126,-0.050974,138.6],[136.5,-0.050974,138.6],[147,-0.050974,138.6],[157.5,-0.050974,138.6],[168,-0.050974,138.6],[178.5,-0.050974,138.6],[189,-0.050974,138.6],[199.5,-0.050974,138.6],[210,-0.050974,138.6],[-6.9e-05,-0.050974,148.5],[10.4999,-0.050974,148.5],[20.9999,-0.050974,148.5],[31.4999,-0.050974,148.5],[41.9999,-0.050974,148.5],[52.4999,-0.050974,148.5],[62.9999,-0.050974,148.5],[73.4999,-0.050974,148.5],[83.9999,-0.050974,148.5],[94.4999,-0.050974,148.5],[105,-0.050974,148.5],[115.5,-0.050974,148.5],[126,-0.050974,148.5],[136.5,-0.050974,148.5],[147,-0.050974,148.5],[157.5,-0.050974,148.5],[168,-0.050974,148.5],[178.5,-0.050974,148.5],[189,-0.050974,148.5],[199.5,-0.050974,148.5],[210,-0.050974,148.5]], + "name": "ffd.001" + }], + "skinIndices": [], + "faces": [42,0,21,22,0,0,1,2,0,1,2,42,22,1,0,0,2,3,0,2,3,0,42,1,22,23,0,3,2,4,3,2,2,42,23,2,1,0,4,5,3,2,3,3,42,2,23,24,0,5,4,6,3,2,2,42,24,3,2,0,6,7,5,2,3,3,42,3,24,25,0,7,6,8,3,2,2,42,25,4,3,0,8,9,7,2,3,3,42,4,25,26,0,9,8,10,3,2,4,42,26,5,4,0,10,11,9,4,3,3,42,5,26,27,0,11,10,12,3,4,2,42,27,6,5,0,12,13,11,2,3,3,42,6,27,28,0,13,12,14,3,2,2,42,28,7,6,0,14,15,13,2,3,3,42,7,28,29,0,15,14,16,3,2,2,42,29,8,7,0,16,17,15,2,3,3,42,8,29,30,0,17,16,18,3,2,2,42,30,9,8,0,18,19,17,2,3,3,42,9,30,31,0,19,18,20,3,2,2,42,31,10,9,0,20,21,19,2,3,3,42,10,31,32,0,21,20,22,3,2,2,42,32,11,10,0,22,23,21,2,3,3,42,11,32,33,0,23,22,24,3,2,2,42,33,12,11,0,24,25,23,2,3,3,42,12,33,34,0,25,24,26,3,2,2,42,34,13,12,0,26,27,25,2,3,3,42,13,34,35,0,27,26,28,3,2,2,42,35,14,13,0,28,29,27,2,3,3,42,14,35,36,0,29,28,30,3,2,2,42,36,15,14,0,30,31,29,2,3,3,42,15,36,37,0,31,30,32,3,2,2,42,37,16,15,0,32,33,31,2,3,3,42,16,37,38,0,33,32,34,3,2,2,42,38,17,16,0,34,35,33,2,3,3,42,17,38,39,0,35,34,36,3,2,2,42,39,18,17,0,36,37,35,2,3,3,42,18,39,40,0,37,36,38,3,2,2,42,40,19,18,0,38,39,37,2,3,3,42,19,40,41,0,39,38,40,3,2,5,42,41,20,19,0,40,41,39,5,6,3,42,21,42,43,0,1,42,43,1,1,4,42,43,22,21,0,43,2,1,4,2,1,42,22,43,44,0,2,43,44,2,4,4,42,44,23,22,0,44,4,2,4,2,2,42,23,44,45,0,4,44,45,2,4,4,42,45,24,23,0,45,6,4,4,2,2,42,24,45,46,0,6,45,46,2,4,4,42,46,25,24,0,46,8,6,4,2,2,42,25,46,47,0,8,46,47,2,4,4,42,47,26,25,0,47,10,8,4,4,2,42,26,47,48,0,10,47,48,4,4,2,42,48,27,26,0,48,12,10,2,2,4,42,27,48,49,0,12,48,49,2,2,2,42,49,28,27,0,49,14,12,2,2,2,42,28,49,50,0,14,49,50,2,2,2,42,50,29,28,0,50,16,14,2,2,2,42,29,50,51,0,16,50,51,2,2,4,42,51,30,29,0,51,18,16,4,2,2,42,30,51,52,0,18,51,52,2,4,4,42,52,31,30,0,52,20,18,4,2,2,42,31,52,53,0,20,52,53,2,4,2,42,53,32,31,0,53,22,20,2,2,2,42,32,53,54,0,22,53,54,2,2,2,42,54,33,32,0,54,24,22,2,2,2,42,33,54,55,0,24,54,55,2,2,2,42,55,34,33,0,55,26,24,2,2,2,42,34,55,56,0,26,55,56,2,2,2,42,56,35,34,0,56,28,26,2,2,2,42,35,56,57,0,28,56,57,2,2,2,42,57,36,35,0,57,30,28,2,2,2,42,36,57,58,0,30,57,58,2,2,2,42,58,37,36,0,58,32,30,2,2,2,42,37,58,59,0,32,58,59,2,2,2,42,59,38,37,0,59,34,32,2,2,2,42,38,59,60,0,34,59,60,2,2,2,42,60,39,38,0,60,36,34,2,2,2,42,39,60,61,0,36,60,61,2,2,2,42,61,40,39,0,61,38,36,2,2,2,42,40,61,62,0,38,61,62,2,2,5,42,62,41,40,0,62,40,38,5,5,2,42,42,63,64,0,42,63,64,1,1,4,42,64,43,42,0,64,43,42,4,4,1,42,43,64,65,0,43,64,65,4,4,4,42,65,44,43,0,65,44,43,4,4,4,42,44,65,66,0,44,65,66,4,4,4,42,66,45,44,0,66,45,44,4,4,4,42,45,66,67,0,45,66,67,4,4,4,42,67,46,45,0,67,46,45,4,4,4,42,46,67,68,0,46,67,68,4,4,4,42,68,47,46,0,68,47,46,4,4,4,42,47,68,69,0,47,68,69,4,4,4,42,69,48,47,0,69,48,47,4,2,4,42,48,69,70,0,48,69,70,2,4,4,42,70,49,48,0,70,49,48,4,2,2,42,49,70,71,0,49,70,71,2,4,4,42,71,50,49,0,71,50,49,4,2,2,42,50,71,72,0,50,71,72,2,4,4,42,72,51,50,0,72,51,50,4,4,2,42,51,72,73,0,51,72,73,4,4,4,42,73,52,51,0,73,52,51,4,4,4,42,52,73,74,0,52,73,74,4,4,2,42,74,53,52,0,74,53,52,2,2,4,42,53,74,75,0,53,74,75,2,2,2,42,75,54,53,0,75,54,53,2,2,2,42,54,75,76,0,54,75,76,2,2,4,42,76,55,54,0,76,55,54,4,2,2,42,55,76,77,0,55,76,77,2,4,2,42,77,56,55,0,77,56,55,2,2,2,42,56,77,78,0,56,77,78,2,2,2,42,78,57,56,0,78,57,56,2,2,2,42,57,78,79,0,57,78,79,2,2,2,42,79,58,57,0,79,58,57,2,2,2,42,58,79,80,0,58,79,80,2,2,2,42,80,59,58,0,80,59,58,2,2,2,42,59,80,81,0,59,80,81,2,2,2,42,81,60,59,0,81,60,59,2,2,2,42,60,81,82,0,60,81,82,2,2,2,42,82,61,60,0,82,61,60,2,2,2,42,61,82,83,0,61,82,83,2,2,5,42,83,62,61,0,83,62,61,5,5,2,42,63,84,85,0,63,84,85,1,1,4,42,85,64,63,0,85,64,63,4,4,1,42,64,85,86,0,64,85,86,4,4,4,42,86,65,64,0,86,65,64,4,4,4,42,65,86,87,0,65,86,87,4,4,4,42,87,66,65,0,87,66,65,4,4,4,42,66,87,88,0,66,87,88,4,4,4,42,88,67,66,0,88,67,66,4,4,4,42,67,88,89,0,67,88,89,4,4,4,42,89,68,67,0,89,68,67,4,4,4,42,68,89,90,0,68,89,90,4,4,4,42,90,69,68,0,90,69,68,4,4,4,42,69,90,91,0,69,90,91,4,4,4,42,91,70,69,0,91,70,69,4,4,4,42,70,91,92,0,70,91,92,4,4,4,42,92,71,70,0,92,71,70,4,4,4,42,71,92,93,0,71,92,93,4,4,4,42,93,72,71,0,93,72,71,4,4,4,42,72,93,94,0,72,93,94,4,4,4,42,94,73,72,0,94,73,72,4,4,4,42,73,94,95,0,73,94,95,4,4,2,42,95,74,73,0,95,74,73,2,2,4,42,74,95,96,0,74,95,96,2,2,2,42,96,75,74,0,96,75,74,2,2,2,42,75,96,97,0,75,96,97,2,2,4,42,97,76,75,0,97,76,75,4,4,2,42,76,97,98,0,76,97,98,4,4,2,42,98,77,76,0,98,77,76,2,2,4,42,77,98,99,0,77,98,99,2,2,2,42,99,78,77,0,99,78,77,2,2,2,42,78,99,100,0,78,99,100,2,2,2,42,100,79,78,0,100,79,78,2,2,2,42,79,100,101,0,79,100,101,2,2,2,42,101,80,79,0,101,80,79,2,2,2,42,80,101,102,0,80,101,102,2,2,2,42,102,81,80,0,102,81,80,2,2,2,42,81,102,103,0,81,102,103,2,2,2,42,103,82,81,0,103,82,81,2,2,2,42,82,103,104,0,82,103,104,2,2,5,42,104,83,82,0,104,83,82,5,5,2,42,84,105,106,0,84,105,106,1,1,4,42,106,85,84,0,106,85,84,4,4,1,42,85,106,107,0,85,106,107,4,4,4,42,107,86,85,0,107,86,85,4,4,4,42,86,107,108,0,86,107,108,4,4,4,42,108,87,86,0,108,87,86,4,4,4,42,87,108,109,0,87,108,109,4,4,4,42,109,88,87,0,109,88,87,4,4,4,42,88,109,110,0,88,109,110,4,4,4,42,110,89,88,0,110,89,88,4,4,4,42,89,110,111,0,89,110,111,4,4,4,42,111,90,89,0,111,90,89,4,4,4,42,90,111,112,0,90,111,112,4,4,4,42,112,91,90,0,112,91,90,4,4,4,42,91,112,113,0,91,112,113,4,4,4,42,113,92,91,0,113,92,91,4,4,4,42,92,113,114,0,92,113,114,4,4,4,42,114,93,92,0,114,93,92,4,4,4,42,93,114,115,0,93,114,115,4,4,4,42,115,94,93,0,115,94,93,4,4,4,42,94,115,116,0,94,115,116,4,4,2,42,116,95,94,0,116,95,94,2,2,4,42,95,116,117,0,95,116,117,2,2,2,42,117,96,95,0,117,96,95,2,2,2,42,96,117,118,0,96,117,118,2,2,4,42,118,97,96,0,118,97,96,4,4,2,42,97,118,119,0,97,118,119,4,4,2,42,119,98,97,0,119,98,97,2,2,4,42,98,119,120,0,98,119,120,2,2,2,42,120,99,98,0,120,99,98,2,2,2,42,99,120,121,0,99,120,121,2,2,2,42,121,100,99,0,121,100,99,2,2,2,42,100,121,122,0,100,121,122,2,2,2,42,122,101,100,0,122,101,100,2,2,2,42,101,122,123,0,101,122,123,2,2,2,42,123,102,101,0,123,102,101,2,2,2,42,102,123,124,0,102,123,124,2,2,2,42,124,103,102,0,124,103,102,2,2,2,42,103,124,125,0,103,124,125,2,2,5,42,125,104,103,0,125,104,103,5,5,2,42,105,126,127,0,105,126,127,1,1,4,42,127,106,105,0,127,106,105,4,4,1,42,106,127,128,0,106,127,128,4,4,4,42,128,107,106,0,128,107,106,4,4,4,42,107,128,129,0,107,128,129,4,4,4,42,129,108,107,0,129,108,107,4,4,4,42,108,129,130,0,108,129,130,4,4,4,42,130,109,108,0,130,109,108,4,4,4,42,109,130,131,0,109,130,131,4,4,4,42,131,110,109,0,131,110,109,4,4,4,42,110,131,132,0,110,131,132,4,4,4,42,132,111,110,0,132,111,110,4,4,4,42,111,132,133,0,111,132,133,4,4,4,42,133,112,111,0,133,112,111,4,4,4,42,112,133,134,0,112,133,134,4,4,4,42,134,113,112,0,134,113,112,4,4,4,42,113,134,135,0,113,134,135,4,4,4,42,135,114,113,0,135,114,113,4,4,4,42,114,135,136,0,114,135,136,4,4,4,42,136,115,114,0,136,115,114,4,4,4,42,115,136,137,0,115,136,137,4,4,2,42,137,116,115,0,137,116,115,2,2,4,42,116,137,138,0,116,137,138,2,2,2,42,138,117,116,0,138,117,116,2,2,2,42,117,138,139,0,117,138,139,2,2,4,42,139,118,117,0,139,118,117,4,4,2,42,118,139,140,0,118,139,140,4,4,2,42,140,119,118,0,140,119,118,2,2,4,42,119,140,141,0,119,140,141,2,2,2,42,141,120,119,0,141,120,119,2,2,2,42,120,141,142,0,120,141,142,2,2,2,42,142,121,120,0,142,121,120,2,2,2,42,121,142,143,0,121,142,143,2,2,2,42,143,122,121,0,143,122,121,2,2,2,42,122,143,144,0,122,143,144,2,2,2,42,144,123,122,0,144,123,122,2,2,2,42,123,144,145,0,123,144,145,2,2,2,42,145,124,123,0,145,124,123,2,2,2,42,124,145,146,0,124,145,146,2,2,5,42,146,125,124,0,146,125,124,5,5,2,42,126,147,148,0,126,147,148,1,1,4,42,148,127,126,0,148,127,126,4,4,1,42,127,148,149,0,127,148,149,4,4,4,42,149,128,127,0,149,128,127,4,4,4,42,128,149,150,0,128,149,150,4,4,4,42,150,129,128,0,150,129,128,4,4,4,42,129,150,151,0,129,150,151,4,4,4,42,151,130,129,0,151,130,129,4,4,4,42,130,151,152,0,130,151,152,4,4,4,42,152,131,130,0,152,131,130,4,4,4,42,131,152,153,0,131,152,153,4,4,4,42,153,132,131,0,153,132,131,4,4,4,42,132,153,154,0,132,153,154,4,4,4,42,154,133,132,0,154,133,132,4,4,4,42,133,154,155,0,133,154,155,4,4,4,42,155,134,133,0,155,134,133,4,4,4,42,134,155,156,0,134,155,156,4,4,4,42,156,135,134,0,156,135,134,4,4,4,42,135,156,157,0,135,156,157,4,4,4,42,157,136,135,0,157,136,135,4,4,4,42,136,157,158,0,136,157,158,4,4,2,42,158,137,136,0,158,137,136,2,2,4,42,137,158,159,0,137,158,159,2,2,2,42,159,138,137,0,159,138,137,2,2,2,42,138,159,160,0,138,159,160,2,2,4,42,160,139,138,0,160,139,138,4,4,2,42,139,160,161,0,139,160,161,4,4,2,42,161,140,139,0,161,140,139,2,2,4,42,140,161,162,0,140,161,162,2,2,2,42,162,141,140,0,162,141,140,2,2,2,42,141,162,163,0,141,162,163,2,2,2,42,163,142,141,0,163,142,141,2,2,2,42,142,163,164,0,142,163,164,2,2,2,42,164,143,142,0,164,143,142,2,2,2,42,143,164,165,0,143,164,165,2,2,2,42,165,144,143,0,165,144,143,2,2,2,42,144,165,166,0,144,165,166,2,2,2,42,166,145,144,0,166,145,144,2,2,2,42,145,166,167,0,145,166,167,2,2,5,42,167,146,145,0,167,146,145,5,5,2,42,147,168,169,0,147,168,169,1,1,4,42,169,148,147,0,169,148,147,4,4,1,42,148,169,170,0,148,169,170,4,4,4,42,170,149,148,0,170,149,148,4,4,4,42,149,170,171,0,149,170,171,4,4,4,42,171,150,149,0,171,150,149,4,4,4,42,150,171,172,0,150,171,172,4,4,4,42,172,151,150,0,172,151,150,4,4,4,42,151,172,173,0,151,172,173,4,4,4,42,173,152,151,0,173,152,151,4,4,4,42,152,173,174,0,152,173,174,4,4,4,42,174,153,152,0,174,153,152,4,4,4,42,153,174,175,0,153,174,175,4,4,4,42,175,154,153,0,175,154,153,4,4,4,42,154,175,176,0,154,175,176,4,4,4,42,176,155,154,0,176,155,154,4,4,4,42,155,176,177,0,155,176,177,4,4,4,42,177,156,155,0,177,156,155,4,4,4,42,156,177,178,0,156,177,178,4,4,4,42,178,157,156,0,178,157,156,4,4,4,42,157,178,179,0,157,178,179,4,4,2,42,179,158,157,0,179,158,157,2,2,4,42,158,179,180,0,158,179,180,2,2,2,42,180,159,158,0,180,159,158,2,2,2,42,159,180,181,0,159,180,181,2,2,4,42,181,160,159,0,181,160,159,4,4,2,42,160,181,182,0,160,181,182,4,4,2,42,182,161,160,0,182,161,160,2,2,4,42,161,182,183,0,161,182,183,2,2,2,42,183,162,161,0,183,162,161,2,2,2,42,162,183,184,0,162,183,184,2,2,2,42,184,163,162,0,184,163,162,2,2,2,42,163,184,185,0,163,184,185,2,2,2,42,185,164,163,0,185,164,163,2,2,2,42,164,185,186,0,164,185,186,2,2,2,42,186,165,164,0,186,165,164,2,2,2,42,165,186,187,0,165,186,187,2,2,2,42,187,166,165,0,187,166,165,2,2,2,42,166,187,188,0,166,187,188,2,2,5,42,188,167,166,0,188,167,166,5,5,2,42,168,189,190,0,168,189,190,1,1,4,42,190,169,168,0,190,169,168,4,4,1,42,169,190,191,0,169,190,191,4,4,4,42,191,170,169,0,191,170,169,4,4,4,42,170,191,192,0,170,191,192,4,4,4,42,192,171,170,0,192,171,170,4,4,4,42,171,192,193,0,171,192,193,4,4,4,42,193,172,171,0,193,172,171,4,4,4,42,172,193,194,0,172,193,194,4,4,4,42,194,173,172,0,194,173,172,4,4,4,42,173,194,195,0,173,194,195,4,4,4,42,195,174,173,0,195,174,173,4,4,4,42,174,195,196,0,174,195,196,4,4,4,42,196,175,174,0,196,175,174,4,4,4,42,175,196,197,0,175,196,197,4,4,4,42,197,176,175,0,197,176,175,4,4,4,42,176,197,198,0,176,197,198,4,4,4,42,198,177,176,0,198,177,176,4,4,4,42,177,198,199,0,177,198,199,4,4,4,42,199,178,177,0,199,178,177,4,4,4,42,178,199,200,0,178,199,200,4,4,2,42,200,179,178,0,200,179,178,2,2,4,42,179,200,201,0,179,200,201,2,2,2,42,201,180,179,0,201,180,179,2,2,2,42,180,201,202,0,180,201,202,2,2,4,42,202,181,180,0,202,181,180,4,4,2,42,181,202,203,0,181,202,203,4,4,2,42,203,182,181,0,203,182,181,2,2,4,42,182,203,204,0,182,203,204,2,2,2,42,204,183,182,0,204,183,182,2,2,2,42,183,204,205,0,183,204,205,2,2,2,42,205,184,183,0,205,184,183,2,2,2,42,184,205,206,0,184,205,206,2,2,2,42,206,185,184,0,206,185,184,2,2,2,42,185,206,207,0,185,206,207,2,2,2,42,207,186,185,0,207,186,185,2,2,2,42,186,207,208,0,186,207,208,2,2,2,42,208,187,186,0,208,187,186,2,2,2,42,187,208,209,0,187,208,209,2,2,5,42,209,188,187,0,209,188,187,5,5,2,42,189,210,211,0,189,210,211,1,1,4,42,211,190,189,0,211,190,189,4,4,1,42,190,211,212,0,190,211,212,4,4,4,42,212,191,190,0,212,191,190,4,4,4,42,191,212,213,0,191,212,213,4,4,4,42,213,192,191,0,213,192,191,4,4,4,42,192,213,214,0,192,213,214,4,4,4,42,214,193,192,0,214,193,192,4,4,4,42,193,214,215,0,193,214,215,4,4,4,42,215,194,193,0,215,194,193,4,4,4,42,194,215,216,0,194,215,216,4,4,4,42,216,195,194,0,216,195,194,4,4,4,42,195,216,217,0,195,216,217,4,4,4,42,217,196,195,0,217,196,195,4,4,4,42,196,217,218,0,196,217,218,4,4,4,42,218,197,196,0,218,197,196,4,4,4,42,197,218,219,0,197,218,219,4,4,4,42,219,198,197,0,219,198,197,4,4,4,42,198,219,220,0,198,219,220,4,4,4,42,220,199,198,0,220,199,198,4,4,4,42,199,220,221,0,199,220,221,4,4,2,42,221,200,199,0,221,200,199,2,2,4,42,200,221,222,0,200,221,222,2,2,2,42,222,201,200,0,222,201,200,2,2,2,42,201,222,223,0,201,222,223,2,2,4,42,223,202,201,0,223,202,201,4,4,2,42,202,223,224,0,202,223,224,4,4,2,42,224,203,202,0,224,203,202,2,2,4,42,203,224,225,0,203,224,225,2,2,2,42,225,204,203,0,225,204,203,2,2,2,42,204,225,226,0,204,225,226,2,2,2,42,226,205,204,0,226,205,204,2,2,2,42,205,226,227,0,205,226,227,2,2,2,42,227,206,205,0,227,206,205,2,2,2,42,206,227,228,0,206,227,228,2,2,2,42,228,207,206,0,228,207,206,2,2,2,42,207,228,229,0,207,228,229,2,2,2,42,229,208,207,0,229,208,207,2,2,2,42,208,229,230,0,208,229,230,2,2,5,42,230,209,208,0,230,209,208,5,5,2,42,210,231,232,0,210,231,232,1,1,4,42,232,211,210,0,232,211,210,4,4,1,42,211,232,233,0,211,232,233,4,4,4,42,233,212,211,0,233,212,211,4,4,4,42,212,233,234,0,212,233,234,4,4,4,42,234,213,212,0,234,213,212,4,4,4,42,213,234,235,0,213,234,235,4,4,4,42,235,214,213,0,235,214,213,4,4,4,42,214,235,236,0,214,235,236,4,4,4,42,236,215,214,0,236,215,214,4,4,4,42,215,236,237,0,215,236,237,4,4,4,42,237,216,215,0,237,216,215,4,4,4,42,216,237,238,0,216,237,238,4,4,4,42,238,217,216,0,238,217,216,4,4,4,42,217,238,239,0,217,238,239,4,4,4,42,239,218,217,0,239,218,217,4,4,4,42,218,239,240,0,218,239,240,4,4,4,42,240,219,218,0,240,219,218,4,4,4,42,219,240,241,0,219,240,241,4,4,4,42,241,220,219,0,241,220,219,4,4,4,42,220,241,242,0,220,241,242,4,4,2,42,242,221,220,0,242,221,220,2,2,4,42,221,242,243,0,221,242,243,2,2,2,42,243,222,221,0,243,222,221,2,2,2,42,222,243,244,0,222,243,244,2,2,4,42,244,223,222,0,244,223,222,4,4,2,42,223,244,245,0,223,244,245,4,4,2,42,245,224,223,0,245,224,223,2,2,4,42,224,245,246,0,224,245,246,2,2,2,42,246,225,224,0,246,225,224,2,2,2,42,225,246,247,0,225,246,247,2,2,2,42,247,226,225,0,247,226,225,2,2,2,42,226,247,248,0,226,247,248,2,2,2,42,248,227,226,0,248,227,226,2,2,2,42,227,248,249,0,227,248,249,2,2,2,42,249,228,227,0,249,228,227,2,2,2,42,228,249,250,0,228,249,250,2,2,2,42,250,229,228,0,250,229,228,2,2,2,42,229,250,251,0,229,250,251,2,2,5,42,251,230,229,0,251,230,229,5,5,2,42,231,252,253,0,231,252,253,1,1,4,42,253,232,231,0,253,232,231,4,4,1,42,232,253,254,0,232,253,254,4,4,4,42,254,233,232,0,254,233,232,4,4,4,42,233,254,255,0,233,254,255,4,4,4,42,255,234,233,0,255,234,233,4,4,4,42,234,255,256,0,234,255,256,4,4,4,42,256,235,234,0,256,235,234,4,4,4,42,235,256,257,0,235,256,257,4,4,4,42,257,236,235,0,257,236,235,4,4,4,42,236,257,258,0,236,257,258,4,4,4,42,258,237,236,0,258,237,236,4,4,4,42,237,258,259,0,237,258,259,4,4,4,42,259,238,237,0,259,238,237,4,4,4,42,238,259,260,0,238,259,260,4,4,4,42,260,239,238,0,260,239,238,4,4,4,42,239,260,261,0,239,260,261,4,4,4,42,261,240,239,0,261,240,239,4,4,4,42,240,261,262,0,240,261,262,4,4,4,42,262,241,240,0,262,241,240,4,4,4,42,241,262,263,0,241,262,263,4,4,4,42,263,242,241,0,263,242,241,4,2,4,42,242,263,264,0,242,263,264,2,4,4,42,264,243,242,0,264,243,242,4,2,2,42,243,264,265,0,243,264,265,2,4,2,42,265,244,243,0,265,244,243,2,4,2,42,244,265,266,0,244,265,266,4,2,4,42,266,245,244,0,266,245,244,4,2,4,42,245,266,267,0,245,266,267,2,4,4,42,267,246,245,0,267,246,245,4,2,2,42,246,267,268,0,246,267,268,2,4,4,42,268,247,246,0,268,247,246,4,2,2,42,247,268,269,0,247,268,269,2,4,4,42,269,248,247,0,269,248,247,4,2,2,42,248,269,270,0,248,269,270,2,4,4,42,270,249,248,0,270,249,248,4,2,2,42,249,270,271,0,249,270,271,2,4,4,42,271,250,249,0,271,250,249,4,2,2,42,250,271,272,0,250,271,272,2,4,5,42,272,251,250,0,272,251,250,5,5,2,42,252,273,274,0,252,273,274,1,1,4,42,274,253,252,0,274,253,252,4,4,1,42,253,274,275,0,253,274,275,4,4,4,42,275,254,253,0,275,254,253,4,4,4,42,254,275,276,0,254,275,276,4,4,4,42,276,255,254,0,276,255,254,4,4,4,42,255,276,277,0,255,276,277,4,4,4,42,277,256,255,0,277,256,255,4,4,4,42,256,277,278,0,256,277,278,4,4,4,42,278,257,256,0,278,257,256,4,4,4,42,257,278,279,0,257,278,279,4,4,4,42,279,258,257,0,279,258,257,4,4,4,42,258,279,280,0,258,279,280,4,4,4,42,280,259,258,0,280,259,258,4,4,4,42,259,280,281,0,259,280,281,4,4,4,42,281,260,259,0,281,260,259,4,4,4,42,260,281,282,0,260,281,282,4,4,4,42,282,261,260,0,282,261,260,4,4,4,42,261,282,283,0,261,282,283,4,4,4,42,283,262,261,0,283,262,261,4,4,4,42,262,283,284,0,262,283,284,4,4,4,42,284,263,262,0,284,263,262,4,4,4,42,263,284,285,0,263,284,285,4,4,4,42,285,264,263,0,285,264,263,4,4,4,42,264,285,286,0,264,285,286,4,4,2,42,286,265,264,0,286,265,264,2,2,4,42,265,286,287,0,265,286,287,2,2,4,42,287,266,265,0,287,266,265,4,4,2,42,266,287,288,0,266,287,288,4,4,4,42,288,267,266,0,288,267,266,4,4,4,42,267,288,289,0,267,288,289,4,4,4,42,289,268,267,0,289,268,267,4,4,4,42,268,289,290,0,268,289,290,4,4,4,42,290,269,268,0,290,269,268,4,4,4,42,269,290,291,0,269,290,291,4,4,4,42,291,270,269,0,291,270,269,4,4,4,42,270,291,292,0,270,291,292,4,4,4,42,292,271,270,0,292,271,270,4,4,4,42,271,292,293,0,271,292,293,4,4,5,42,293,272,271,0,293,272,271,5,5,4,42,273,294,295,0,273,294,295,1,1,4,42,295,274,273,0,295,274,273,4,4,1,42,274,295,296,0,274,295,296,4,4,4,42,296,275,274,0,296,275,274,4,4,4,42,275,296,297,0,275,296,297,4,4,4,42,297,276,275,0,297,276,275,4,4,4,42,276,297,298,0,276,297,298,4,4,4,42,298,277,276,0,298,277,276,4,4,4,42,277,298,299,0,277,298,299,4,4,4,42,299,278,277,0,299,278,277,4,4,4,42,278,299,300,0,278,299,300,4,4,4,42,300,279,278,0,300,279,278,4,4,4,42,279,300,301,0,279,300,301,4,4,4,42,301,280,279,0,301,280,279,4,4,4,42,280,301,302,0,280,301,302,4,4,4,42,302,281,280,0,302,281,280,4,4,4,42,281,302,303,0,281,302,303,4,4,4,42,303,282,281,0,303,282,281,4,4,4,42,282,303,304,0,282,303,304,4,4,4,42,304,283,282,0,304,283,282,4,4,4,42,283,304,305,0,283,304,305,4,4,4,42,305,284,283,0,305,284,283,4,4,4,42,284,305,306,0,284,305,306,4,4,4,42,306,285,284,0,306,285,284,4,4,4,42,285,306,307,0,285,306,307,4,4,2,42,307,286,285,0,307,286,285,2,2,4,42,286,307,308,0,286,307,308,2,2,4,42,308,287,286,0,308,287,286,4,4,2,42,287,308,309,0,287,308,309,4,4,4,42,309,288,287,0,309,288,287,4,4,4,42,288,309,310,0,288,309,310,4,4,4,42,310,289,288,0,310,289,288,4,4,4,42,289,310,311,0,289,310,311,4,4,4,42,311,290,289,0,311,290,289,4,4,4,42,290,311,312,0,290,311,312,4,4,4,42,312,291,290,0,312,291,290,4,4,4,42,291,312,313,0,291,312,313,4,4,4,42,313,292,291,0,313,292,291,4,4,4,42,292,313,314,0,292,313,314,4,4,5,42,314,293,292,0,314,293,292,5,5,4,42,294,315,316,0,294,315,316,1,1,4,42,316,295,294,0,316,295,294,4,4,1,42,295,316,317,0,295,316,317,4,4,4,42,317,296,295,0,317,296,295,4,4,4,42,296,317,318,0,296,317,318,4,4,4,42,318,297,296,0,318,297,296,4,4,4,42,297,318,319,0,297,318,319,4,4,4,42,319,298,297,0,319,298,297,4,4,4,42,298,319,320,0,298,319,320,4,4,4,42,320,299,298,0,320,299,298,4,4,4,42,299,320,321,0,299,320,321,4,4,4,42,321,300,299,0,321,300,299,4,4,4,42,300,321,322,0,300,321,322,4,4,4,42,322,301,300,0,322,301,300,4,4,4,42,301,322,323,0,301,322,323,4,4,4,42,323,302,301,0,323,302,301,4,4,4,42,302,323,324,0,302,323,324,4,4,4,42,324,303,302,0,324,303,302,4,4,4,42,303,324,325,0,303,324,325,4,4,4,42,325,304,303,0,325,304,303,4,4,4,42,304,325,326,0,304,325,326,4,4,4,42,326,305,304,0,326,305,304,4,4,4,42,305,326,327,0,305,326,327,4,4,4,42,327,306,305,0,327,306,305,4,4,4,42,306,327,328,0,306,327,328,4,4,2,42,328,307,306,0,328,307,306,2,2,4,42,307,328,329,0,307,328,329,2,2,4,42,329,308,307,0,329,308,307,4,4,2,42,308,329,330,0,308,329,330,4,4,4,42,330,309,308,0,330,309,308,4,4,4,42,309,330,331,0,309,330,331,4,4,4,42,331,310,309,0,331,310,309,4,4,4,42,310,331,332,0,310,331,332,4,4,4,42,332,311,310,0,332,311,310,4,4,4,42,311,332,333,0,311,332,333,4,4,4,42,333,312,311,0,333,312,311,4,4,4,42,312,333,334,0,312,333,334,4,4,4,42,334,313,312,0,334,313,312,4,4,4,42,313,334,335,0,313,334,335,4,4,5,42,335,314,313,0,335,314,313,5,5,4,42,315,336,337,0,315,336,337,1,1,4,42,337,316,315,0,337,316,315,4,4,1,42,316,337,338,0,316,337,338,4,4,4,42,338,317,316,0,338,317,316,4,4,4,42,317,338,339,0,317,338,339,4,4,4,42,339,318,317,0,339,318,317,4,4,4,42,318,339,340,0,318,339,340,4,4,4,42,340,319,318,0,340,319,318,4,4,4,42,319,340,341,0,319,340,341,4,4,4,42,341,320,319,0,341,320,319,4,4,4,42,320,341,342,0,320,341,342,4,4,4,42,342,321,320,0,342,321,320,4,4,4,42,321,342,343,0,321,342,343,4,4,4,42,343,322,321,0,343,322,321,4,4,4,42,322,343,344,0,322,343,344,4,4,4,42,344,323,322,0,344,323,322,4,4,4,42,323,344,345,0,323,344,345,4,4,4,42,345,324,323,0,345,324,323,4,4,4,42,324,345,346,0,324,345,346,4,4,4,42,346,325,324,0,346,325,324,4,4,4,42,325,346,347,0,325,346,347,4,4,4,42,347,326,325,0,347,326,325,4,4,4,42,326,347,348,0,326,347,348,4,4,4,42,348,327,326,0,348,327,326,4,4,4,42,327,348,349,0,327,348,349,4,4,2,42,349,328,327,0,349,328,327,2,2,4,42,328,349,350,0,328,349,350,2,2,4,42,350,329,328,0,350,329,328,4,4,2,42,329,350,351,0,329,350,351,4,4,4,42,351,330,329,0,351,330,329,4,4,4,42,330,351,352,0,330,351,352,4,4,4,42,352,331,330,0,352,331,330,4,4,4,42,331,352,353,0,331,352,353,4,4,4,42,353,332,331,0,353,332,331,4,4,4,42,332,353,354,0,332,353,354,4,4,4,42,354,333,332,0,354,333,332,4,4,4,42,333,354,355,0,333,354,355,4,4,4,42,355,334,333,0,355,334,333,4,4,4,42,334,355,356,0,334,355,356,4,4,5,42,356,335,334,0,356,335,334,5,5,4,42,336,357,358,0,336,357,358,1,1,4,42,358,337,336,0,358,337,336,4,4,1,42,337,358,359,0,337,358,359,4,4,4,42,359,338,337,0,359,338,337,4,4,4,42,338,359,360,0,338,359,360,4,4,4,42,360,339,338,0,360,339,338,4,4,4,42,339,360,361,0,339,360,361,4,4,4,42,361,340,339,0,361,340,339,4,4,4,42,340,361,362,0,340,361,362,4,4,4,42,362,341,340,0,362,341,340,4,4,4,42,341,362,363,0,341,362,363,4,4,4,42,363,342,341,0,363,342,341,4,4,4,42,342,363,364,0,342,363,364,4,4,4,42,364,343,342,0,364,343,342,4,4,4,42,343,364,365,0,343,364,365,4,4,4,42,365,344,343,0,365,344,343,4,4,4,42,344,365,366,0,344,365,366,4,4,4,42,366,345,344,0,366,345,344,4,4,4,42,345,366,367,0,345,366,367,4,4,4,42,367,346,345,0,367,346,345,4,4,4,42,346,367,368,0,346,367,368,4,4,4,42,368,347,346,0,368,347,346,4,4,4,42,347,368,369,0,347,368,369,4,4,4,42,369,348,347,0,369,348,347,4,4,4,42,348,369,370,0,348,369,370,4,4,2,42,370,349,348,0,370,349,348,2,2,4,42,349,370,371,0,349,370,371,2,2,4,42,371,350,349,0,371,350,349,4,4,2,42,350,371,372,0,350,371,372,4,4,4,42,372,351,350,0,372,351,350,4,4,4,42,351,372,373,0,351,372,373,4,4,4,42,373,352,351,0,373,352,351,4,4,4,42,352,373,374,0,352,373,374,4,4,4,42,374,353,352,0,374,353,352,4,4,4,42,353,374,375,0,353,374,375,4,4,4,42,375,354,353,0,375,354,353,4,4,4,42,354,375,376,0,354,375,376,4,4,4,42,376,355,354,0,376,355,354,4,4,4,42,355,376,377,0,355,376,377,4,4,5,42,377,356,355,0,377,356,355,5,5,4,42,357,378,379,0,357,378,379,1,1,4,42,379,358,357,0,379,358,357,4,4,1,42,358,379,380,0,358,379,380,4,4,4,42,380,359,358,0,380,359,358,4,4,4,42,359,380,381,0,359,380,381,4,4,4,42,381,360,359,0,381,360,359,4,4,4,42,360,381,382,0,360,381,382,4,4,4,42,382,361,360,0,382,361,360,4,4,4,42,361,382,383,0,361,382,383,4,4,4,42,383,362,361,0,383,362,361,4,4,4,42,362,383,384,0,362,383,384,4,4,4,42,384,363,362,0,384,363,362,4,4,4,42,363,384,385,0,363,384,385,4,4,4,42,385,364,363,0,385,364,363,4,4,4,42,364,385,386,0,364,385,386,4,4,4,42,386,365,364,0,386,365,364,4,4,4,42,365,386,387,0,365,386,387,4,4,4,42,387,366,365,0,387,366,365,4,4,4,42,366,387,388,0,366,387,388,4,4,4,42,388,367,366,0,388,367,366,4,4,4,42,367,388,389,0,367,388,389,4,4,4,42,389,368,367,0,389,368,367,4,4,4,42,368,389,390,0,368,389,390,4,4,4,42,390,369,368,0,390,369,368,4,4,4,42,369,390,391,0,369,390,391,4,4,2,42,391,370,369,0,391,370,369,2,2,4,42,370,391,392,0,370,391,392,2,2,4,42,392,371,370,0,392,371,370,4,4,2,42,371,392,393,0,371,392,393,4,4,4,42,393,372,371,0,393,372,371,4,4,4,42,372,393,394,0,372,393,394,4,4,4,42,394,373,372,0,394,373,372,4,4,4,42,373,394,395,0,373,394,395,4,4,4,42,395,374,373,0,395,374,373,4,4,4,42,374,395,396,0,374,395,396,4,4,4,42,396,375,374,0,396,375,374,4,4,4,42,375,396,397,0,375,396,397,4,4,4,42,397,376,375,0,397,376,375,4,4,4,42,376,397,398,0,376,397,398,4,4,5,42,398,377,376,0,398,377,376,5,5,4,42,378,399,400,0,378,399,400,1,1,4,42,400,379,378,0,400,379,378,4,4,1,42,379,400,401,0,379,400,401,4,4,4,42,401,380,379,0,401,380,379,4,4,4,42,380,401,402,0,380,401,402,4,4,4,42,402,381,380,0,402,381,380,4,4,4,42,381,402,403,0,381,402,403,4,4,4,42,403,382,381,0,403,382,381,4,4,4,42,382,403,404,0,382,403,404,4,4,4,42,404,383,382,0,404,383,382,4,4,4,42,383,404,405,0,383,404,405,4,4,4,42,405,384,383,0,405,384,383,4,4,4,42,384,405,406,0,384,405,406,4,4,4,42,406,385,384,0,406,385,384,4,4,4,42,385,406,407,0,385,406,407,4,4,4,42,407,386,385,0,407,386,385,4,4,4,42,386,407,408,0,386,407,408,4,4,4,42,408,387,386,0,408,387,386,4,4,4,42,387,408,409,0,387,408,409,4,4,4,42,409,388,387,0,409,388,387,4,4,4,42,388,409,410,0,388,409,410,4,4,4,42,410,389,388,0,410,389,388,4,4,4,42,389,410,411,0,389,410,411,4,4,4,42,411,390,389,0,411,390,389,4,4,4,42,390,411,412,0,390,411,412,4,4,2,42,412,391,390,0,412,391,390,2,2,4,42,391,412,413,0,391,412,413,2,2,4,42,413,392,391,0,413,392,391,4,4,2,42,392,413,414,0,392,413,414,4,4,4,42,414,393,392,0,414,393,392,4,4,4,42,393,414,415,0,393,414,415,4,4,4,42,415,394,393,0,415,394,393,4,4,4,42,394,415,416,0,394,415,416,4,4,4,42,416,395,394,0,416,395,394,4,4,4,42,395,416,417,0,395,416,417,4,4,4,42,417,396,395,0,417,396,395,4,4,4,42,396,417,418,0,396,417,418,4,4,4,42,418,397,396,0,418,397,396,4,4,4,42,397,418,419,0,397,418,419,4,4,5,42,419,398,397,0,419,398,397,5,5,4,42,399,420,421,0,399,420,421,1,1,4,42,421,400,399,0,421,400,399,4,4,1,42,400,421,422,0,400,421,422,4,4,4,42,422,401,400,0,422,401,400,4,4,4,42,401,422,423,0,401,422,423,4,4,4,42,423,402,401,0,423,402,401,4,4,4,42,402,423,424,0,402,423,424,4,4,4,42,424,403,402,0,424,403,402,4,4,4,42,403,424,425,0,403,424,425,4,4,4,42,425,404,403,0,425,404,403,4,4,4,42,404,425,426,0,404,425,426,4,4,4,42,426,405,404,0,426,405,404,4,4,4,42,405,426,427,0,405,426,427,4,4,4,42,427,406,405,0,427,406,405,4,4,4,42,406,427,428,0,406,427,428,4,4,4,42,428,407,406,0,428,407,406,4,4,4,42,407,428,429,0,407,428,429,4,4,4,42,429,408,407,0,429,408,407,4,4,4,42,408,429,430,0,408,429,430,4,4,4,42,430,409,408,0,430,409,408,4,4,4,42,409,430,431,0,409,430,431,4,4,2,42,431,410,409,0,431,410,409,2,4,4,42,410,431,432,0,410,431,432,4,2,2,42,432,411,410,0,432,411,410,2,4,4,42,411,432,433,0,411,432,433,4,2,4,42,433,412,411,0,433,412,411,4,2,4,42,412,433,434,0,412,433,434,2,4,2,42,434,413,412,0,434,413,412,2,4,2,42,413,434,435,0,413,434,435,4,2,2,42,435,414,413,0,435,414,413,2,4,4,42,414,435,436,0,414,435,436,4,2,2,42,436,415,414,0,436,415,414,2,4,4,42,415,436,437,0,415,436,437,4,2,2,42,437,416,415,0,437,416,415,2,4,4,42,416,437,438,0,416,437,438,4,2,2,42,438,417,416,0,438,417,416,2,4,4,42,417,438,439,0,417,438,439,4,2,2,42,439,418,417,0,439,418,417,2,4,4,42,418,439,440,0,418,439,440,4,2,5,42,440,419,418,0,440,419,418,5,5,4,42,420,441,442,0,420,441,442,1,1,4,42,442,421,420,0,442,421,420,4,4,1,42,421,442,443,0,421,442,443,4,4,4,42,443,422,421,0,443,422,421,4,4,4,42,422,443,444,0,422,443,444,4,4,4,42,444,423,422,0,444,423,422,4,4,4,42,423,444,445,0,423,444,445,4,4,4,42,445,424,423,0,445,424,423,4,4,4,42,424,445,446,0,424,445,446,4,4,4,42,446,425,424,0,446,425,424,4,4,4,42,425,446,447,0,425,446,447,4,4,4,42,447,426,425,0,447,426,425,4,4,4,42,426,447,448,0,426,447,448,4,4,4,42,448,427,426,0,448,427,426,4,4,4,42,427,448,449,0,427,448,449,4,4,4,42,449,428,427,0,449,428,427,4,4,4,42,428,449,450,0,428,449,450,4,4,4,42,450,429,428,0,450,429,428,4,4,4,42,429,450,451,0,429,450,451,4,4,4,42,451,430,429,0,451,430,429,4,4,4,42,430,451,452,0,430,451,452,4,4,2,42,452,431,430,0,452,431,430,2,2,4,42,431,452,453,0,431,452,453,2,2,2,42,453,432,431,0,453,432,431,2,2,2,42,432,453,454,0,432,453,454,2,2,4,42,454,433,432,0,454,433,432,4,4,2,42,433,454,455,0,433,454,455,4,4,2,42,455,434,433,0,455,434,433,2,2,4,42,434,455,456,0,434,455,456,2,2,2,42,456,435,434,0,456,435,434,2,2,2,42,435,456,457,0,435,456,457,2,2,2,42,457,436,435,0,457,436,435,2,2,2,42,436,457,458,0,436,457,458,2,2,2,42,458,437,436,0,458,437,436,2,2,2,42,437,458,459,0,437,458,459,2,2,2,42,459,438,437,0,459,438,437,2,2,2,42,438,459,460,0,438,459,460,2,2,2,42,460,439,438,0,460,439,438,2,2,2,42,439,460,461,0,439,460,461,2,2,5,42,461,440,439,0,461,440,439,5,5,2,42,441,462,463,0,441,462,463,1,1,4,42,463,442,441,0,463,442,441,4,4,1,42,442,463,464,0,442,463,464,4,4,4,42,464,443,442,0,464,443,442,4,4,4,42,443,464,465,0,443,464,465,4,4,4,42,465,444,443,0,465,444,443,4,4,4,42,444,465,466,0,444,465,466,4,4,4,42,466,445,444,0,466,445,444,4,4,4,42,445,466,467,0,445,466,467,4,4,4,42,467,446,445,0,467,446,445,4,4,4,42,446,467,468,0,446,467,468,4,4,4,42,468,447,446,0,468,447,446,4,4,4,42,447,468,469,0,447,468,469,4,4,4,42,469,448,447,0,469,448,447,4,4,4,42,448,469,470,0,448,469,470,4,4,4,42,470,449,448,0,470,449,448,4,4,4,42,449,470,471,0,449,470,471,4,4,4,42,471,450,449,0,471,450,449,4,4,4,42,450,471,472,0,450,471,472,4,4,4,42,472,451,450,0,472,451,450,4,4,4,42,451,472,473,0,451,472,473,4,4,2,42,473,452,451,0,473,452,451,2,2,4,42,452,473,474,0,452,473,474,2,2,2,42,474,453,452,0,474,453,452,2,2,2,42,453,474,475,0,453,474,475,2,2,4,42,475,454,453,0,475,454,453,4,4,2,42,454,475,476,0,454,475,476,4,4,2,42,476,455,454,0,476,455,454,2,2,4,42,455,476,477,0,455,476,477,2,2,2,42,477,456,455,0,477,456,455,2,2,2,42,456,477,478,0,456,477,478,2,2,2,42,478,457,456,0,478,457,456,2,2,2,42,457,478,479,0,457,478,479,2,2,2,42,479,458,457,0,479,458,457,2,2,2,42,458,479,480,0,458,479,480,2,2,2,42,480,459,458,0,480,459,458,2,2,2,42,459,480,481,0,459,480,481,2,2,2,42,481,460,459,0,481,460,459,2,2,2,42,460,481,482,0,460,481,482,2,2,5,42,482,461,460,0,482,461,460,5,5,2,42,462,483,484,0,462,483,484,1,1,4,42,484,463,462,0,484,463,462,4,4,1,42,463,484,485,0,463,484,485,4,4,4,42,485,464,463,0,485,464,463,4,4,4,42,464,485,486,0,464,485,486,4,4,4,42,486,465,464,0,486,465,464,4,4,4,42,465,486,487,0,465,486,487,4,4,4,42,487,466,465,0,487,466,465,4,4,4,42,466,487,488,0,466,487,488,4,4,4,42,488,467,466,0,488,467,466,4,4,4,42,467,488,489,0,467,488,489,4,4,4,42,489,468,467,0,489,468,467,4,4,4,42,468,489,490,0,468,489,490,4,4,4,42,490,469,468,0,490,469,468,4,4,4,42,469,490,491,0,469,490,491,4,4,4,42,491,470,469,0,491,470,469,4,4,4,42,470,491,492,0,470,491,492,4,4,4,42,492,471,470,0,492,471,470,4,4,4,42,471,492,493,0,471,492,493,4,4,4,42,493,472,471,0,493,472,471,4,4,4,42,472,493,494,0,472,493,494,4,4,2,42,494,473,472,0,494,473,472,2,2,4,42,473,494,495,0,473,494,495,2,2,2,42,495,474,473,0,495,474,473,2,2,2,42,474,495,496,0,474,495,496,2,2,4,42,496,475,474,0,496,475,474,4,4,2,42,475,496,497,0,475,496,497,4,4,2,42,497,476,475,0,497,476,475,2,2,4,42,476,497,498,0,476,497,498,2,2,2,42,498,477,476,0,498,477,476,2,2,2,42,477,498,499,0,477,498,499,2,2,2,42,499,478,477,0,499,478,477,2,2,2,42,478,499,500,0,478,499,500,2,2,2,42,500,479,478,0,500,479,478,2,2,2,42,479,500,501,0,479,500,501,2,2,2,42,501,480,479,0,501,480,479,2,2,2,42,480,501,502,0,480,501,502,2,2,2,42,502,481,480,0,502,481,480,2,2,2,42,481,502,503,0,481,502,503,2,2,5,42,503,482,481,0,503,482,481,5,5,2,42,483,504,505,0,483,504,505,1,1,4,42,505,484,483,0,505,484,483,4,4,1,42,484,505,506,0,484,505,506,4,4,4,42,506,485,484,0,506,485,484,4,4,4,42,485,506,507,0,485,506,507,4,4,4,42,507,486,485,0,507,486,485,4,4,4,42,486,507,508,0,486,507,508,4,4,4,42,508,487,486,0,508,487,486,4,4,4,42,487,508,509,0,487,508,509,4,4,4,42,509,488,487,0,509,488,487,4,4,4,42,488,509,510,0,488,509,510,4,4,4,42,510,489,488,0,510,489,488,4,4,4,42,489,510,511,0,489,510,511,4,4,4,42,511,490,489,0,511,490,489,4,4,4,42,490,511,512,0,490,511,512,4,4,4,42,512,491,490,0,512,491,490,4,4,4,42,491,512,513,0,491,512,513,4,4,4,42,513,492,491,0,513,492,491,4,4,4,42,492,513,514,0,492,513,514,4,4,4,42,514,493,492,0,514,493,492,4,4,4,42,493,514,515,0,493,514,515,4,4,2,42,515,494,493,0,515,494,493,2,2,4,42,494,515,516,0,494,515,516,2,2,2,42,516,495,494,0,516,495,494,2,2,2,42,495,516,517,0,495,516,517,2,2,4,42,517,496,495,0,517,496,495,4,4,2,42,496,517,518,0,496,517,518,4,4,2,42,518,497,496,0,518,497,496,2,2,4,42,497,518,519,0,497,518,519,2,2,2,42,519,498,497,0,519,498,497,2,2,2,42,498,519,520,0,498,519,520,2,2,2,42,520,499,498,0,520,499,498,2,2,2,42,499,520,521,0,499,520,521,2,2,2,42,521,500,499,0,521,500,499,2,2,2,42,500,521,522,0,500,521,522,2,2,2,42,522,501,500,0,522,501,500,2,2,2,42,501,522,523,0,501,522,523,2,2,2,42,523,502,501,0,523,502,501,2,2,2,42,502,523,524,0,502,523,524,2,2,5,42,524,503,502,0,524,503,502,5,5,2,42,504,525,526,0,504,525,526,1,1,4,42,526,505,504,0,526,505,504,4,4,1,42,505,526,527,0,505,526,527,4,4,4,42,527,506,505,0,527,506,505,4,4,4,42,506,527,528,0,506,527,528,4,4,4,42,528,507,506,0,528,507,506,4,4,4,42,507,528,529,0,507,528,529,4,4,4,42,529,508,507,0,529,508,507,4,4,4,42,508,529,530,0,508,529,530,4,4,4,42,530,509,508,0,530,509,508,4,4,4,42,509,530,531,0,509,530,531,4,4,4,42,531,510,509,0,531,510,509,4,4,4,42,510,531,532,0,510,531,532,4,4,4,42,532,511,510,0,532,511,510,4,4,4,42,511,532,533,0,511,532,533,4,4,4,42,533,512,511,0,533,512,511,4,4,4,42,512,533,534,0,512,533,534,4,4,4,42,534,513,512,0,534,513,512,4,4,4,42,513,534,535,0,513,534,535,4,4,4,42,535,514,513,0,535,514,513,4,4,4,42,514,535,536,0,514,535,536,4,4,2,42,536,515,514,0,536,515,514,2,2,4,42,515,536,537,0,515,536,537,2,2,2,42,537,516,515,0,537,516,515,2,2,2,42,516,537,538,0,516,537,538,2,2,4,42,538,517,516,0,538,517,516,4,4,2,42,517,538,539,0,517,538,539,4,4,2,42,539,518,517,0,539,518,517,2,2,4,42,518,539,540,0,518,539,540,2,2,2,42,540,519,518,0,540,519,518,2,2,2,42,519,540,541,0,519,540,541,2,2,2,42,541,520,519,0,541,520,519,2,2,2,42,520,541,542,0,520,541,542,2,2,2,42,542,521,520,0,542,521,520,2,2,2,42,521,542,543,0,521,542,543,2,2,2,42,543,522,521,0,543,522,521,2,2,2,42,522,543,544,0,522,543,544,2,2,2,42,544,523,522,0,544,523,522,2,2,2,42,523,544,545,0,523,544,545,2,2,5,42,545,524,523,0,545,524,523,5,5,2,42,525,546,547,0,525,546,547,1,1,4,42,547,526,525,0,547,526,525,4,4,1,42,526,547,548,0,526,547,548,4,4,4,42,548,527,526,0,548,527,526,4,4,4,42,527,548,549,0,527,548,549,4,4,4,42,549,528,527,0,549,528,527,4,4,4,42,528,549,550,0,528,549,550,4,4,4,42,550,529,528,0,550,529,528,4,4,4,42,529,550,551,0,529,550,551,4,4,4,42,551,530,529,0,551,530,529,4,4,4,42,530,551,552,0,530,551,552,4,4,4,42,552,531,530,0,552,531,530,4,4,4,42,531,552,553,0,531,552,553,4,4,4,42,553,532,531,0,553,532,531,4,4,4,42,532,553,554,0,532,553,554,4,4,4,42,554,533,532,0,554,533,532,4,4,4,42,533,554,555,0,533,554,555,4,4,4,42,555,534,533,0,555,534,533,4,4,4,42,534,555,556,0,534,555,556,4,4,4,42,556,535,534,0,556,535,534,4,4,4,42,535,556,557,0,535,556,557,4,4,2,42,557,536,535,0,557,536,535,2,2,4,42,536,557,558,0,536,557,558,2,2,2,42,558,537,536,0,558,537,536,2,2,2,42,537,558,559,0,537,558,559,2,2,4,42,559,538,537,0,559,538,537,4,4,2,42,538,559,560,0,538,559,560,4,4,2,42,560,539,538,0,560,539,538,2,2,4,42,539,560,561,0,539,560,561,2,2,2,42,561,540,539,0,561,540,539,2,2,2,42,540,561,562,0,540,561,562,2,2,2,42,562,541,540,0,562,541,540,2,2,2,42,541,562,563,0,541,562,563,2,2,2,42,563,542,541,0,563,542,541,2,2,2,42,542,563,564,0,542,563,564,2,2,2,42,564,543,542,0,564,543,542,2,2,2,42,543,564,565,0,543,564,565,2,2,2,42,565,544,543,0,565,544,543,2,2,2,42,544,565,566,0,544,565,566,2,2,5,42,566,545,544,0,566,545,544,5,5,2,42,546,567,568,0,546,567,568,1,1,4,42,568,547,546,0,568,547,546,4,4,1,42,547,568,569,0,547,568,569,4,4,4,42,569,548,547,0,569,548,547,4,4,4,42,548,569,570,0,548,569,570,4,4,4,42,570,549,548,0,570,549,548,4,4,4,42,549,570,571,0,549,570,571,4,4,4,42,571,550,549,0,571,550,549,4,4,4,42,550,571,572,0,550,571,572,4,4,4,42,572,551,550,0,572,551,550,4,4,4,42,551,572,573,0,551,572,573,4,4,4,42,573,552,551,0,573,552,551,4,4,4,42,552,573,574,0,552,573,574,4,4,4,42,574,553,552,0,574,553,552,4,4,4,42,553,574,575,0,553,574,575,4,4,4,42,575,554,553,0,575,554,553,4,4,4,42,554,575,576,0,554,575,576,4,4,4,42,576,555,554,0,576,555,554,4,4,4,42,555,576,577,0,555,576,577,4,4,4,42,577,556,555,0,577,556,555,4,4,4,42,556,577,578,0,556,577,578,4,4,2,42,578,557,556,0,578,557,556,2,2,4,42,557,578,579,0,557,578,579,2,2,2,42,579,558,557,0,579,558,557,2,2,2,42,558,579,580,0,558,579,580,2,2,4,42,580,559,558,0,580,559,558,4,4,2,42,559,580,581,0,559,580,581,4,4,2,42,581,560,559,0,581,560,559,2,2,4,42,560,581,582,0,560,581,582,2,2,2,42,582,561,560,0,582,561,560,2,2,2,42,561,582,583,0,561,582,583,2,2,2,42,583,562,561,0,583,562,561,2,2,2,42,562,583,584,0,562,583,584,2,2,2,42,584,563,562,0,584,563,562,2,2,2,42,563,584,585,0,563,584,585,2,2,2,42,585,564,563,0,585,564,563,2,2,2,42,564,585,586,0,564,585,586,2,2,2,42,586,565,564,0,586,565,564,2,2,2,42,565,586,587,0,565,586,587,2,2,5,42,587,566,565,0,587,566,565,5,5,2,42,567,588,589,0,567,588,589,1,1,4,42,589,568,567,0,589,568,567,4,4,1,42,568,589,590,0,568,589,590,4,4,4,42,590,569,568,0,590,569,568,4,4,4,42,569,590,591,0,569,590,591,4,4,4,42,591,570,569,0,591,570,569,4,4,4,42,570,591,592,0,570,591,592,4,4,4,42,592,571,570,0,592,571,570,4,4,4,42,571,592,593,0,571,592,593,4,4,4,42,593,572,571,0,593,572,571,4,4,4,42,572,593,594,0,572,593,594,4,4,4,42,594,573,572,0,594,573,572,4,4,4,42,573,594,595,0,573,594,595,4,4,4,42,595,574,573,0,595,574,573,4,4,4,42,574,595,596,0,574,595,596,4,4,4,42,596,575,574,0,596,575,574,4,4,4,42,575,596,597,0,575,596,597,4,4,4,42,597,576,575,0,597,576,575,4,4,4,42,576,597,598,0,576,597,598,4,4,4,42,598,577,576,0,598,577,576,4,4,4,42,577,598,599,0,577,598,599,4,4,2,42,599,578,577,0,599,578,577,2,2,4,42,578,599,600,0,578,599,600,2,2,2,42,600,579,578,0,600,579,578,2,2,2,42,579,600,601,0,579,600,601,2,2,4,42,601,580,579,0,601,580,579,4,4,2,42,580,601,602,0,580,601,602,4,4,2,42,602,581,580,0,602,581,580,2,2,4,42,581,602,603,0,581,602,603,2,2,2,42,603,582,581,0,603,582,581,2,2,2,42,582,603,604,0,582,603,604,2,2,2,42,604,583,582,0,604,583,582,2,2,2,42,583,604,605,0,583,604,605,2,2,2,42,605,584,583,0,605,584,583,2,2,2,42,584,605,606,0,584,605,606,2,2,2,42,606,585,584,0,606,585,584,2,2,2,42,585,606,607,0,585,606,607,2,2,2,42,607,586,585,0,607,586,585,2,2,2,42,586,607,608,0,586,607,608,2,2,5,42,608,587,586,0,608,587,586,5,5,2,42,588,609,610,0,588,609,610,1,1,2,42,610,589,588,0,610,589,588,2,4,1,42,589,610,611,0,589,610,611,4,2,2,42,611,590,589,0,611,590,589,2,4,4,42,590,611,612,0,590,611,612,4,2,2,42,612,591,590,0,612,591,590,2,4,4,42,591,612,613,0,591,612,613,4,2,2,42,613,592,591,0,613,592,591,2,4,4,42,592,613,614,0,592,613,614,4,2,4,42,614,593,592,0,614,593,592,4,4,4,42,593,614,615,0,593,614,615,4,4,2,42,615,594,593,0,615,594,593,2,4,4,42,594,615,616,0,594,615,616,4,2,2,42,616,595,594,0,616,595,594,2,4,4,42,595,616,617,0,595,616,617,4,2,2,42,617,596,595,0,617,596,595,2,4,4,42,596,617,618,0,596,617,618,4,2,2,42,618,597,596,0,618,597,596,2,4,4,42,597,618,619,0,597,618,619,4,2,2,42,619,598,597,0,619,598,597,2,4,4,42,598,619,620,0,598,619,620,4,2,2,42,620,599,598,0,620,599,598,2,2,4,42,599,620,621,0,599,620,621,2,2,2,42,621,600,599,0,621,600,599,2,2,2,42,600,621,622,0,600,621,622,2,2,2,42,622,601,600,0,622,601,600,2,4,2,42,601,622,623,0,601,622,623,4,2,2,42,623,602,601,0,623,602,601,2,2,4,42,602,623,624,0,602,623,624,2,2,2,42,624,603,602,0,624,603,602,2,2,2,42,603,624,625,0,603,624,625,2,2,2,42,625,604,603,0,625,604,603,2,2,2,42,604,625,626,0,604,625,626,2,2,2,42,626,605,604,0,626,605,604,2,2,2,42,605,626,627,0,605,626,627,2,2,2,42,627,606,605,0,627,606,605,2,2,2,42,606,627,628,0,606,627,628,2,2,2,42,628,607,606,0,628,607,606,2,2,2,42,607,628,629,0,607,628,629,2,2,5,42,629,608,607,0,629,608,607,5,5,2,42,609,630,631,0,609,630,631,1,7,8,42,631,610,609,0,631,610,609,8,2,1,42,610,631,632,0,610,631,632,2,8,8,42,632,611,610,0,632,611,610,8,2,2,42,611,632,633,0,611,632,633,2,8,8,42,633,612,611,0,633,612,611,8,2,2,42,612,633,634,0,612,633,634,2,8,8,42,634,613,612,0,634,613,612,8,2,2,42,613,634,635,0,613,634,635,2,8,8,42,635,614,613,0,635,614,613,8,4,2,42,614,635,636,0,614,635,636,4,8,8,42,636,615,614,0,636,615,614,8,2,4,42,615,636,637,0,615,636,637,2,8,8,42,637,616,615,0,637,616,615,8,2,2,42,616,637,638,0,616,637,638,2,8,8,42,638,617,616,0,638,617,616,8,2,2,42,617,638,639,0,617,638,639,2,8,8,42,639,618,617,0,639,618,617,8,2,2,42,618,639,640,0,618,639,640,2,8,8,42,640,619,618,0,640,619,618,8,2,2,42,619,640,641,0,619,640,641,2,8,8,42,641,620,619,0,641,620,619,8,2,2,42,620,641,642,0,620,641,642,2,8,8,42,642,621,620,0,642,621,620,8,2,2,42,621,642,643,0,621,642,643,2,8,8,42,643,622,621,0,643,622,621,8,2,2,42,622,643,644,0,622,643,644,2,8,8,42,644,623,622,0,644,623,622,8,2,2,42,623,644,645,0,623,644,645,2,8,8,42,645,624,623,0,645,624,623,8,2,2,42,624,645,646,0,624,645,646,2,8,8,42,646,625,624,0,646,625,624,8,2,2,42,625,646,647,0,625,646,647,2,8,8,42,647,626,625,0,647,626,625,8,2,2,42,626,647,648,0,626,647,648,2,8,8,42,648,627,626,0,648,627,626,8,2,2,42,627,648,649,0,627,648,649,2,8,8,42,649,628,627,0,649,628,627,8,2,2,42,628,649,650,0,628,649,650,2,8,9,42,650,629,628,0,650,629,628,9,5,2,42,651,652,673,1,41,39,38,10,11,12,42,673,672,651,1,38,40,41,12,13,10,42,652,653,674,1,39,37,36,11,11,12,42,674,673,652,1,36,38,39,12,12,11,42,653,654,675,1,37,35,34,11,11,12,42,675,674,653,1,34,36,37,12,12,11,42,654,655,676,1,35,33,32,11,11,12,42,676,675,654,1,32,34,35,12,12,11,42,655,656,677,1,33,31,30,11,11,14,42,677,676,655,1,30,32,33,14,12,11,42,656,657,678,1,31,29,28,11,11,12,42,678,677,656,1,28,30,31,12,14,11,42,657,658,679,1,29,27,26,11,11,12,42,679,678,657,1,26,28,29,12,12,11,42,658,659,680,1,27,25,24,11,11,12,42,680,679,658,1,24,26,27,12,12,11,42,659,660,681,1,25,23,22,11,11,12,42,681,680,659,1,22,24,25,12,12,11,42,660,661,682,1,23,21,20,11,11,12,42,682,681,660,1,20,22,23,12,12,11,42,661,662,683,1,21,19,18,11,11,12,42,683,682,661,1,18,20,21,12,12,11,42,662,663,684,1,19,17,16,11,11,12,42,684,683,662,1,16,18,19,12,12,11,42,663,664,685,1,17,15,14,11,11,12,42,685,684,663,1,14,16,17,12,12,11,42,664,665,686,1,15,13,12,11,11,12,42,686,685,664,1,12,14,15,12,12,11,42,665,666,687,1,13,11,10,11,11,12,42,687,686,665,1,10,12,13,12,12,11,42,666,667,688,1,11,9,8,11,11,12,42,688,687,666,1,8,10,11,12,12,11,42,667,668,689,1,9,7,6,11,11,12,42,689,688,667,1,6,8,9,12,12,11,42,668,669,690,1,7,5,4,11,11,12,42,690,689,668,1,4,6,7,12,12,11,42,669,670,691,1,5,3,2,11,11,12,42,691,690,669,1,2,4,5,12,12,11,42,670,671,692,1,3,0,1,11,15,16,42,692,691,670,1,1,2,3,16,12,11,42,672,673,694,1,40,38,61,13,12,14,42,694,693,672,1,61,62,40,14,13,13,42,673,674,695,1,38,36,60,12,12,14,42,695,694,673,1,60,61,38,14,14,12,42,674,675,696,1,36,34,59,12,12,14,42,696,695,674,1,59,60,36,14,14,12,42,675,676,697,1,34,32,58,12,12,14,42,697,696,675,1,58,59,34,14,14,12,42,676,677,698,1,32,30,57,12,14,14,42,698,697,676,1,57,58,32,14,14,12,42,677,678,699,1,30,28,56,14,12,12,42,699,698,677,1,56,57,30,12,14,14,42,678,679,700,1,28,26,55,12,12,12,42,700,699,678,1,55,56,28,12,12,12,42,679,680,701,1,26,24,54,12,12,12,42,701,700,679,1,54,55,26,12,12,12,42,680,681,702,1,24,22,53,12,12,14,42,702,701,680,1,53,54,24,14,12,12,42,681,682,703,1,22,20,52,12,12,14,42,703,702,681,1,52,53,22,14,14,12,42,682,683,704,1,20,18,51,12,12,12,42,704,703,682,1,51,52,20,12,14,12,42,683,684,705,1,18,16,50,12,12,12,42,705,704,683,1,50,51,18,12,12,12,42,684,685,706,1,16,14,49,12,12,12,42,706,705,684,1,49,50,16,12,12,12,42,685,686,707,1,14,12,48,12,12,12,42,707,706,685,1,48,49,14,12,12,12,42,686,687,708,1,12,10,47,12,12,12,42,708,707,686,1,47,48,12,12,12,12,42,687,688,709,1,10,8,46,12,12,12,42,709,708,687,1,46,47,10,12,12,12,42,688,689,710,1,8,6,45,12,12,12,42,710,709,688,1,45,46,8,12,12,12,42,689,690,711,1,6,4,44,12,12,12,42,711,710,689,1,44,45,6,12,12,12,42,690,691,712,1,4,2,43,12,12,12,42,712,711,690,1,43,44,4,12,12,12,42,691,692,713,1,2,1,42,12,16,16,42,713,712,691,1,42,43,2,16,12,12,42,693,694,715,1,62,61,82,13,14,14,42,715,714,693,1,82,83,62,14,13,13,42,694,695,716,1,61,60,81,14,14,14,42,716,715,694,1,81,82,61,14,14,14,42,695,696,717,1,60,59,80,14,14,14,42,717,716,695,1,80,81,60,14,14,14,42,696,697,718,1,59,58,79,14,14,14,42,718,717,696,1,79,80,59,14,14,14,42,697,698,719,1,58,57,78,14,14,14,42,719,718,697,1,78,79,58,14,14,14,42,698,699,720,1,57,56,77,14,12,14,42,720,719,698,1,77,78,57,14,14,14,42,699,700,721,1,56,55,76,12,12,14,42,721,720,699,1,76,77,56,14,14,12,42,700,701,722,1,55,54,75,12,12,14,42,722,721,700,1,75,76,55,14,14,12,42,701,702,723,1,54,53,74,12,14,14,42,723,722,701,1,74,75,54,14,14,12,42,702,703,724,1,53,52,73,14,14,14,42,724,723,702,1,73,74,53,14,14,14,42,703,704,725,1,52,51,72,14,12,12,42,725,724,703,1,72,73,52,12,14,14,42,704,705,726,1,51,50,71,12,12,12,42,726,725,704,1,71,72,51,12,12,12,42,705,706,727,1,50,49,70,12,12,14,42,727,726,705,1,70,71,50,14,12,12,42,706,707,728,1,49,48,69,12,12,12,42,728,727,706,1,69,70,49,12,14,12,42,707,708,729,1,48,47,68,12,12,12,42,729,728,707,1,68,69,48,12,12,12,42,708,709,730,1,47,46,67,12,12,12,42,730,729,708,1,67,68,47,12,12,12,42,709,710,731,1,46,45,66,12,12,12,42,731,730,709,1,66,67,46,12,12,12,42,710,711,732,1,45,44,65,12,12,12,42,732,731,710,1,65,66,45,12,12,12,42,711,712,733,1,44,43,64,12,12,12,42,733,732,711,1,64,65,44,12,12,12,42,712,713,734,1,43,42,63,12,16,16,42,734,733,712,1,63,64,43,16,12,12,42,714,715,736,1,83,82,103,13,14,14,42,736,735,714,1,103,104,83,14,13,13,42,715,716,737,1,82,81,102,14,14,14,42,737,736,715,1,102,103,82,14,14,14,42,716,717,738,1,81,80,101,14,14,14,42,738,737,716,1,101,102,81,14,14,14,42,717,718,739,1,80,79,100,14,14,14,42,739,738,717,1,100,101,80,14,14,14,42,718,719,740,1,79,78,99,14,14,14,42,740,739,718,1,99,100,79,14,14,14,42,719,720,741,1,78,77,98,14,14,14,42,741,740,719,1,98,99,78,14,14,14,42,720,721,742,1,77,76,97,14,14,14,42,742,741,720,1,97,98,77,14,14,14,42,721,722,743,1,76,75,96,14,14,14,42,743,742,721,1,96,97,76,14,14,14,42,722,723,744,1,75,74,95,14,14,14,42,744,743,722,1,95,96,75,14,14,14,42,723,724,745,1,74,73,94,14,14,14,42,745,744,723,1,94,95,74,14,14,14,42,724,725,746,1,73,72,93,14,12,12,42,746,745,724,1,93,94,73,12,14,14,42,725,726,747,1,72,71,92,12,12,12,42,747,746,725,1,92,93,72,12,12,12,42,726,727,748,1,71,70,91,12,14,14,42,748,747,726,1,91,92,71,14,12,12,42,727,728,749,1,70,69,90,14,12,12,42,749,748,727,1,90,91,70,12,14,14,42,728,729,750,1,69,68,89,12,12,12,42,750,749,728,1,89,90,69,12,12,12,42,729,730,751,1,68,67,88,12,12,12,42,751,750,729,1,88,89,68,12,12,12,42,730,731,752,1,67,66,87,12,12,12,42,752,751,730,1,87,88,67,12,12,12,42,731,732,753,1,66,65,86,12,12,12,42,753,752,731,1,86,87,66,12,12,12,42,732,733,754,1,65,64,85,12,12,12,42,754,753,732,1,85,86,65,12,12,12,42,733,734,755,1,64,63,84,12,16,16,42,755,754,733,1,84,85,64,16,12,12,42,735,736,757,1,104,103,124,13,14,14,42,757,756,735,1,124,125,104,14,13,13,42,736,737,758,1,103,102,123,14,14,14,42,758,757,736,1,123,124,103,14,14,14,42,737,738,759,1,102,101,122,14,14,14,42,759,758,737,1,122,123,102,14,14,14,42,738,739,760,1,101,100,121,14,14,14,42,760,759,738,1,121,122,101,14,14,14,42,739,740,761,1,100,99,120,14,14,14,42,761,760,739,1,120,121,100,14,14,14,42,740,741,762,1,99,98,119,14,14,14,42,762,761,740,1,119,120,99,14,14,14,42,741,742,763,1,98,97,118,14,14,14,42,763,762,741,1,118,119,98,14,14,14,42,742,743,764,1,97,96,117,14,14,14,42,764,763,742,1,117,118,97,14,14,14,42,743,744,765,1,96,95,116,14,14,14,42,765,764,743,1,116,117,96,14,14,14,42,744,745,766,1,95,94,115,14,14,14,42,766,765,744,1,115,116,95,14,14,14,42,745,746,767,1,94,93,114,14,12,12,42,767,766,745,1,114,115,94,12,14,14,42,746,747,768,1,93,92,113,12,12,12,42,768,767,746,1,113,114,93,12,12,12,42,747,748,769,1,92,91,112,12,14,14,42,769,768,747,1,112,113,92,14,12,12,42,748,749,770,1,91,90,111,14,12,12,42,770,769,748,1,111,112,91,12,14,14,42,749,750,771,1,90,89,110,12,12,12,42,771,770,749,1,110,111,90,12,12,12,42,750,751,772,1,89,88,109,12,12,12,42,772,771,750,1,109,110,89,12,12,12,42,751,752,773,1,88,87,108,12,12,12,42,773,772,751,1,108,109,88,12,12,12,42,752,753,774,1,87,86,107,12,12,12,42,774,773,752,1,107,108,87,12,12,12,42,753,754,775,1,86,85,106,12,12,12,42,775,774,753,1,106,107,86,12,12,12,42,754,755,776,1,85,84,105,12,16,16,42,776,775,754,1,105,106,85,16,12,12,42,756,757,778,1,125,124,145,13,14,14,42,778,777,756,1,145,146,125,14,13,13,42,757,758,779,1,124,123,144,14,14,14,42,779,778,757,1,144,145,124,14,14,14,42,758,759,780,1,123,122,143,14,14,14,42,780,779,758,1,143,144,123,14,14,14,42,759,760,781,1,122,121,142,14,14,14,42,781,780,759,1,142,143,122,14,14,14,42,760,761,782,1,121,120,141,14,14,14,42,782,781,760,1,141,142,121,14,14,14,42,761,762,783,1,120,119,140,14,14,14,42,783,782,761,1,140,141,120,14,14,14,42,762,763,784,1,119,118,139,14,14,14,42,784,783,762,1,139,140,119,14,14,14,42,763,764,785,1,118,117,138,14,14,14,42,785,784,763,1,138,139,118,14,14,14,42,764,765,786,1,117,116,137,14,14,14,42,786,785,764,1,137,138,117,14,14,14,42,765,766,787,1,116,115,136,14,14,14,42,787,786,765,1,136,137,116,14,14,14,42,766,767,788,1,115,114,135,14,12,12,42,788,787,766,1,135,136,115,12,14,14,42,767,768,789,1,114,113,134,12,12,12,42,789,788,767,1,134,135,114,12,12,12,42,768,769,790,1,113,112,133,12,14,14,42,790,789,768,1,133,134,113,14,12,12,42,769,770,791,1,112,111,132,14,12,12,42,791,790,769,1,132,133,112,12,14,14,42,770,771,792,1,111,110,131,12,12,12,42,792,791,770,1,131,132,111,12,12,12,42,771,772,793,1,110,109,130,12,12,12,42,793,792,771,1,130,131,110,12,12,12,42,772,773,794,1,109,108,129,12,12,12,42,794,793,772,1,129,130,109,12,12,12,42,773,774,795,1,108,107,128,12,12,12,42,795,794,773,1,128,129,108,12,12,12,42,774,775,796,1,107,106,127,12,12,12,42,796,795,774,1,127,128,107,12,12,12,42,775,776,797,1,106,105,126,12,16,16,42,797,796,775,1,126,127,106,16,12,12,42,777,778,799,1,146,145,166,13,14,14,42,799,798,777,1,166,167,146,14,13,13,42,778,779,800,1,145,144,165,14,14,14,42,800,799,778,1,165,166,145,14,14,14,42,779,780,801,1,144,143,164,14,14,14,42,801,800,779,1,164,165,144,14,14,14,42,780,781,802,1,143,142,163,14,14,14,42,802,801,780,1,163,164,143,14,14,14,42,781,782,803,1,142,141,162,14,14,14,42,803,802,781,1,162,163,142,14,14,14,42,782,783,804,1,141,140,161,14,14,14,42,804,803,782,1,161,162,141,14,14,14,42,783,784,805,1,140,139,160,14,14,14,42,805,804,783,1,160,161,140,14,14,14,42,784,785,806,1,139,138,159,14,14,14,42,806,805,784,1,159,160,139,14,14,14,42,785,786,807,1,138,137,158,14,14,14,42,807,806,785,1,158,159,138,14,14,14,42,786,787,808,1,137,136,157,14,14,14,42,808,807,786,1,157,158,137,14,14,14,42,787,788,809,1,136,135,156,14,12,12,42,809,808,787,1,156,157,136,12,14,14,42,788,789,810,1,135,134,155,12,12,12,42,810,809,788,1,155,156,135,12,12,12,42,789,790,811,1,134,133,154,12,14,14,42,811,810,789,1,154,155,134,14,12,12,42,790,791,812,1,133,132,153,14,12,12,42,812,811,790,1,153,154,133,12,14,14,42,791,792,813,1,132,131,152,12,12,12,42,813,812,791,1,152,153,132,12,12,12,42,792,793,814,1,131,130,151,12,12,12,42,814,813,792,1,151,152,131,12,12,12,42,793,794,815,1,130,129,150,12,12,12,42,815,814,793,1,150,151,130,12,12,12,42,794,795,816,1,129,128,149,12,12,12,42,816,815,794,1,149,150,129,12,12,12,42,795,796,817,1,128,127,148,12,12,12,42,817,816,795,1,148,149,128,12,12,12,42,796,797,818,1,127,126,147,12,16,16,42,818,817,796,1,147,148,127,16,12,12,42,798,799,820,1,167,166,187,13,14,14,42,820,819,798,1,187,188,167,14,13,13,42,799,800,821,1,166,165,186,14,14,14,42,821,820,799,1,186,187,166,14,14,14,42,800,801,822,1,165,164,185,14,14,14,42,822,821,800,1,185,186,165,14,14,14,42,801,802,823,1,164,163,184,14,14,14,42,823,822,801,1,184,185,164,14,14,14,42,802,803,824,1,163,162,183,14,14,14,42,824,823,802,1,183,184,163,14,14,14,42,803,804,825,1,162,161,182,14,14,14,42,825,824,803,1,182,183,162,14,14,14,42,804,805,826,1,161,160,181,14,14,14,42,826,825,804,1,181,182,161,14,14,14,42,805,806,827,1,160,159,180,14,14,14,42,827,826,805,1,180,181,160,14,14,14,42,806,807,828,1,159,158,179,14,14,14,42,828,827,806,1,179,180,159,14,14,14,42,807,808,829,1,158,157,178,14,14,14,42,829,828,807,1,178,179,158,14,14,14,42,808,809,830,1,157,156,177,14,12,12,42,830,829,808,1,177,178,157,12,14,14,42,809,810,831,1,156,155,176,12,12,12,42,831,830,809,1,176,177,156,12,12,12,42,810,811,832,1,155,154,175,12,14,14,42,832,831,810,1,175,176,155,14,12,12,42,811,812,833,1,154,153,174,14,12,12,42,833,832,811,1,174,175,154,12,14,14,42,812,813,834,1,153,152,173,12,12,12,42,834,833,812,1,173,174,153,12,12,12,42,813,814,835,1,152,151,172,12,12,12,42,835,834,813,1,172,173,152,12,12,12,42,814,815,836,1,151,150,171,12,12,12,42,836,835,814,1,171,172,151,12,12,12,42,815,816,837,1,150,149,170,12,12,12,42,837,836,815,1,170,171,150,12,12,12,42,816,817,838,1,149,148,169,12,12,12,42,838,837,816,1,169,170,149,12,12,12,42,817,818,839,1,148,147,168,12,16,16,42,839,838,817,1,168,169,148,16,12,12,42,819,820,841,1,188,187,208,13,14,14,42,841,840,819,1,208,209,188,14,13,13,42,820,821,842,1,187,186,207,14,14,14,42,842,841,820,1,207,208,187,14,14,14,42,821,822,843,1,186,185,206,14,14,14,42,843,842,821,1,206,207,186,14,14,14,42,822,823,844,1,185,184,205,14,14,14,42,844,843,822,1,205,206,185,14,14,14,42,823,824,845,1,184,183,204,14,14,14,42,845,844,823,1,204,205,184,14,14,14,42,824,825,846,1,183,182,203,14,14,14,42,846,845,824,1,203,204,183,14,14,14,42,825,826,847,1,182,181,202,14,14,14,42,847,846,825,1,202,203,182,14,14,14,42,826,827,848,1,181,180,201,14,14,14,42,848,847,826,1,201,202,181,14,14,14,42,827,828,849,1,180,179,200,14,14,14,42,849,848,827,1,200,201,180,14,14,14,42,828,829,850,1,179,178,199,14,14,14,42,850,849,828,1,199,200,179,14,14,14,42,829,830,851,1,178,177,198,14,12,12,42,851,850,829,1,198,199,178,12,14,14,42,830,831,852,1,177,176,197,12,12,12,42,852,851,830,1,197,198,177,12,12,12,42,831,832,853,1,176,175,196,12,14,14,42,853,852,831,1,196,197,176,14,12,12,42,832,833,854,1,175,174,195,14,12,12,42,854,853,832,1,195,196,175,12,14,14,42,833,834,855,1,174,173,194,12,12,12,42,855,854,833,1,194,195,174,12,12,12,42,834,835,856,1,173,172,193,12,12,12,42,856,855,834,1,193,194,173,12,12,12,42,835,836,857,1,172,171,192,12,12,12,42,857,856,835,1,192,193,172,12,12,12,42,836,837,858,1,171,170,191,12,12,12,42,858,857,836,1,191,192,171,12,12,12,42,837,838,859,1,170,169,190,12,12,12,42,859,858,837,1,190,191,170,12,12,12,42,838,839,860,1,169,168,189,12,16,16,42,860,859,838,1,189,190,169,16,12,12,42,840,841,862,1,209,208,229,13,14,14,42,862,861,840,1,229,230,209,14,13,13,42,841,842,863,1,208,207,228,14,14,14,42,863,862,841,1,228,229,208,14,14,14,42,842,843,864,1,207,206,227,14,14,14,42,864,863,842,1,227,228,207,14,14,14,42,843,844,865,1,206,205,226,14,14,14,42,865,864,843,1,226,227,206,14,14,14,42,844,845,866,1,205,204,225,14,14,14,42,866,865,844,1,225,226,205,14,14,14,42,845,846,867,1,204,203,224,14,14,14,42,867,866,845,1,224,225,204,14,14,14,42,846,847,868,1,203,202,223,14,14,14,42,868,867,846,1,223,224,203,14,14,14,42,847,848,869,1,202,201,222,14,14,14,42,869,868,847,1,222,223,202,14,14,14,42,848,849,870,1,201,200,221,14,14,14,42,870,869,848,1,221,222,201,14,14,14,42,849,850,871,1,200,199,220,14,14,14,42,871,870,849,1,220,221,200,14,14,14,42,850,851,872,1,199,198,219,14,12,12,42,872,871,850,1,219,220,199,12,14,14,42,851,852,873,1,198,197,218,12,12,12,42,873,872,851,1,218,219,198,12,12,12,42,852,853,874,1,197,196,217,12,14,14,42,874,873,852,1,217,218,197,14,12,12,42,853,854,875,1,196,195,216,14,12,12,42,875,874,853,1,216,217,196,12,14,14,42,854,855,876,1,195,194,215,12,12,12,42,876,875,854,1,215,216,195,12,12,12,42,855,856,877,1,194,193,214,12,12,12,42,877,876,855,1,214,215,194,12,12,12,42,856,857,878,1,193,192,213,12,12,12,42,878,877,856,1,213,214,193,12,12,12,42,857,858,879,1,192,191,212,12,12,12,42,879,878,857,1,212,213,192,12,12,12,42,858,859,880,1,191,190,211,12,12,12,42,880,879,858,1,211,212,191,12,12,12,42,859,860,881,1,190,189,210,12,16,16,42,881,880,859,1,210,211,190,16,12,12,42,861,862,883,1,230,229,250,13,14,14,42,883,882,861,1,250,251,230,14,13,13,42,862,863,884,1,229,228,249,14,14,14,42,884,883,862,1,249,250,229,14,14,14,42,863,864,885,1,228,227,248,14,14,14,42,885,884,863,1,248,249,228,14,14,14,42,864,865,886,1,227,226,247,14,14,14,42,886,885,864,1,247,248,227,14,14,14,42,865,866,887,1,226,225,246,14,14,14,42,887,886,865,1,246,247,226,14,14,14,42,866,867,888,1,225,224,245,14,14,14,42,888,887,866,1,245,246,225,14,14,14,42,867,868,889,1,224,223,244,14,14,14,42,889,888,867,1,244,245,224,14,14,14,42,868,869,890,1,223,222,243,14,14,14,42,890,889,868,1,243,244,223,14,14,14,42,869,870,891,1,222,221,242,14,14,14,42,891,890,869,1,242,243,222,14,14,14,42,870,871,892,1,221,220,241,14,14,14,42,892,891,870,1,241,242,221,14,14,14,42,871,872,893,1,220,219,240,14,12,12,42,893,892,871,1,240,241,220,12,14,14,42,872,873,894,1,219,218,239,12,12,12,42,894,893,872,1,239,240,219,12,12,12,42,873,874,895,1,218,217,238,12,14,14,42,895,894,873,1,238,239,218,14,12,12,42,874,875,896,1,217,216,237,14,12,12,42,896,895,874,1,237,238,217,12,14,14,42,875,876,897,1,216,215,236,12,12,12,42,897,896,875,1,236,237,216,12,12,12,42,876,877,898,1,215,214,235,12,12,12,42,898,897,876,1,235,236,215,12,12,12,42,877,878,899,1,214,213,234,12,12,12,42,899,898,877,1,234,235,214,12,12,12,42,878,879,900,1,213,212,233,12,12,12,42,900,899,878,1,233,234,213,12,12,12,42,879,880,901,1,212,211,232,12,12,12,42,901,900,879,1,232,233,212,12,12,12,42,880,881,902,1,211,210,231,12,16,16,42,902,901,880,1,231,232,211,16,12,12,42,882,883,904,1,251,250,271,13,14,14,42,904,903,882,1,271,272,251,14,13,13,42,883,884,905,1,250,249,270,14,14,14,42,905,904,883,1,270,271,250,14,14,14,42,884,885,906,1,249,248,269,14,14,14,42,906,905,884,1,269,270,249,14,14,14,42,885,886,907,1,248,247,268,14,14,14,42,907,906,885,1,268,269,248,14,14,14,42,886,887,908,1,247,246,267,14,14,14,42,908,907,886,1,267,268,247,14,14,14,42,887,888,909,1,246,245,266,14,14,14,42,909,908,887,1,266,267,246,14,14,14,42,888,889,910,1,245,244,265,14,14,14,42,910,909,888,1,265,266,245,14,14,14,42,889,890,911,1,244,243,264,14,14,14,42,911,910,889,1,264,265,244,14,14,14,42,890,891,912,1,243,242,263,14,14,14,42,912,911,890,1,263,264,243,14,14,14,42,891,892,913,1,242,241,262,14,14,14,42,913,912,891,1,262,263,242,14,14,14,42,892,893,914,1,241,240,261,14,12,14,42,914,913,892,1,261,262,241,14,14,14,42,893,894,915,1,240,239,260,12,12,14,42,915,914,893,1,260,261,240,14,14,12,42,894,895,916,1,239,238,259,12,14,12,42,916,915,894,1,259,260,239,12,14,12,42,895,896,917,1,238,237,258,14,12,14,42,917,916,895,1,258,259,238,14,12,14,42,896,897,918,1,237,236,257,12,12,14,42,918,917,896,1,257,258,237,14,14,12,42,897,898,919,1,236,235,256,12,12,14,42,919,918,897,1,256,257,236,14,14,12,42,898,899,920,1,235,234,255,12,12,14,42,920,919,898,1,255,256,235,14,14,12,42,899,900,921,1,234,233,254,12,12,14,42,921,920,899,1,254,255,234,14,14,12,42,900,901,922,1,233,232,253,12,12,14,42,922,921,900,1,253,254,233,14,14,12,42,901,902,923,1,232,231,252,12,16,16,42,923,922,901,1,252,253,232,16,14,12,42,903,904,925,1,272,271,292,13,14,14,42,925,924,903,1,292,293,272,14,13,13,42,904,905,926,1,271,270,291,14,14,14,42,926,925,904,1,291,292,271,14,14,14,42,905,906,927,1,270,269,290,14,14,14,42,927,926,905,1,290,291,270,14,14,14,42,906,907,928,1,269,268,289,14,14,14,42,928,927,906,1,289,290,269,14,14,14,42,907,908,929,1,268,267,288,14,14,14,42,929,928,907,1,288,289,268,14,14,14,42,908,909,930,1,267,266,287,14,14,14,42,930,929,908,1,287,288,267,14,14,14,42,909,910,931,1,266,265,286,14,14,14,42,931,930,909,1,286,287,266,14,14,14,42,910,911,932,1,265,264,285,14,14,14,42,932,931,910,1,285,286,265,14,14,14,42,911,912,933,1,264,263,284,14,14,14,42,933,932,911,1,284,285,264,14,14,14,42,912,913,934,1,263,262,283,14,14,14,42,934,933,912,1,283,284,263,14,14,14,42,913,914,935,1,262,261,282,14,14,14,42,935,934,913,1,282,283,262,14,14,14,42,914,915,936,1,261,260,281,14,14,14,42,936,935,914,1,281,282,261,14,14,14,42,915,916,937,1,260,259,280,14,12,12,42,937,936,915,1,280,281,260,12,14,14,42,916,917,938,1,259,258,279,12,14,14,42,938,937,916,1,279,280,259,14,12,12,42,917,918,939,1,258,257,278,14,14,14,42,939,938,917,1,278,279,258,14,14,14,42,918,919,940,1,257,256,277,14,14,14,42,940,939,918,1,277,278,257,14,14,14,42,919,920,941,1,256,255,276,14,14,14,42,941,940,919,1,276,277,256,14,14,14,42,920,921,942,1,255,254,275,14,14,14,42,942,941,920,1,275,276,255,14,14,14,42,921,922,943,1,254,253,274,14,14,14,42,943,942,921,1,274,275,254,14,14,14,42,922,923,944,1,253,252,273,14,16,16,42,944,943,922,1,273,274,253,16,14,14,42,924,925,946,1,293,292,313,13,14,14,42,946,945,924,1,313,314,293,14,13,13,42,925,926,947,1,292,291,312,14,14,14,42,947,946,925,1,312,313,292,14,14,14,42,926,927,948,1,291,290,311,14,14,14,42,948,947,926,1,311,312,291,14,14,14,42,927,928,949,1,290,289,310,14,14,14,42,949,948,927,1,310,311,290,14,14,14,42,928,929,950,1,289,288,309,14,14,14,42,950,949,928,1,309,310,289,14,14,14,42,929,930,951,1,288,287,308,14,14,14,42,951,950,929,1,308,309,288,14,14,14,42,930,931,952,1,287,286,307,14,14,14,42,952,951,930,1,307,308,287,14,14,14,42,931,932,953,1,286,285,306,14,14,14,42,953,952,931,1,306,307,286,14,14,14,42,932,933,954,1,285,284,305,14,14,14,42,954,953,932,1,305,306,285,14,14,14,42,933,934,955,1,284,283,304,14,14,14,42,955,954,933,1,304,305,284,14,14,14,42,934,935,956,1,283,282,303,14,14,14,42,956,955,934,1,303,304,283,14,14,14,42,935,936,957,1,282,281,302,14,14,14,42,957,956,935,1,302,303,282,14,14,14,42,936,937,958,1,281,280,301,14,12,12,42,958,957,936,1,301,302,281,12,14,14,42,937,938,959,1,280,279,300,12,14,14,42,959,958,937,1,300,301,280,14,12,12,42,938,939,960,1,279,278,299,14,14,14,42,960,959,938,1,299,300,279,14,14,14,42,939,940,961,1,278,277,298,14,14,14,42,961,960,939,1,298,299,278,14,14,14,42,940,941,962,1,277,276,297,14,14,14,42,962,961,940,1,297,298,277,14,14,14,42,941,942,963,1,276,275,296,14,14,14,42,963,962,941,1,296,297,276,14,14,14,42,942,943,964,1,275,274,295,14,14,14,42,964,963,942,1,295,296,275,14,14,14,42,943,944,965,1,274,273,294,14,16,16,42,965,964,943,1,294,295,274,16,14,14,42,945,946,967,1,314,313,334,13,14,14,42,967,966,945,1,334,335,314,14,13,13,42,946,947,968,1,313,312,333,14,14,14,42,968,967,946,1,333,334,313,14,14,14,42,947,948,969,1,312,311,332,14,14,14,42,969,968,947,1,332,333,312,14,14,14,42,948,949,970,1,311,310,331,14,14,14,42,970,969,948,1,331,332,311,14,14,14,42,949,950,971,1,310,309,330,14,14,14,42,971,970,949,1,330,331,310,14,14,14,42,950,951,972,1,309,308,329,14,14,14,42,972,971,950,1,329,330,309,14,14,14,42,951,952,973,1,308,307,328,14,14,14,42,973,972,951,1,328,329,308,14,14,14,42,952,953,974,1,307,306,327,14,14,14,42,974,973,952,1,327,328,307,14,14,14,42,953,954,975,1,306,305,326,14,14,14,42,975,974,953,1,326,327,306,14,14,14,42,954,955,976,1,305,304,325,14,14,14,42,976,975,954,1,325,326,305,14,14,14,42,955,956,977,1,304,303,324,14,14,14,42,977,976,955,1,324,325,304,14,14,14,42,956,957,978,1,303,302,323,14,14,14,42,978,977,956,1,323,324,303,14,14,14,42,957,958,979,1,302,301,322,14,12,12,42,979,978,957,1,322,323,302,12,14,14,42,958,959,980,1,301,300,321,12,14,14,42,980,979,958,1,321,322,301,14,12,12,42,959,960,981,1,300,299,320,14,14,14,42,981,980,959,1,320,321,300,14,14,14,42,960,961,982,1,299,298,319,14,14,14,42,982,981,960,1,319,320,299,14,14,14,42,961,962,983,1,298,297,318,14,14,14,42,983,982,961,1,318,319,298,14,14,14,42,962,963,984,1,297,296,317,14,14,14,42,984,983,962,1,317,318,297,14,14,14,42,963,964,985,1,296,295,316,14,14,14,42,985,984,963,1,316,317,296,14,14,14,42,964,965,986,1,295,294,315,14,16,16,42,986,985,964,1,315,316,295,16,14,14,42,966,967,988,1,335,334,355,13,14,14,42,988,987,966,1,355,356,335,14,13,13,42,967,968,989,1,334,333,354,14,14,14,42,989,988,967,1,354,355,334,14,14,14,42,968,969,990,1,333,332,353,14,14,14,42,990,989,968,1,353,354,333,14,14,14,42,969,970,991,1,332,331,352,14,14,14,42,991,990,969,1,352,353,332,14,14,14,42,970,971,992,1,331,330,351,14,14,14,42,992,991,970,1,351,352,331,14,14,14,42,971,972,993,1,330,329,350,14,14,14,42,993,992,971,1,350,351,330,14,14,14,42,972,973,994,1,329,328,349,14,14,14,42,994,993,972,1,349,350,329,14,14,14,42,973,974,995,1,328,327,348,14,14,14,42,995,994,973,1,348,349,328,14,14,14,42,974,975,996,1,327,326,347,14,14,14,42,996,995,974,1,347,348,327,14,14,14,42,975,976,997,1,326,325,346,14,14,14,42,997,996,975,1,346,347,326,14,14,14,42,976,977,998,1,325,324,345,14,14,14,42,998,997,976,1,345,346,325,14,14,14,42,977,978,999,1,324,323,344,14,14,14,42,999,998,977,1,344,345,324,14,14,14,42,978,979,1000,1,323,322,343,14,12,12,42,1000,999,978,1,343,344,323,12,14,14,42,979,980,1001,1,322,321,342,12,14,14,42,1001,1000,979,1,342,343,322,14,12,12,42,980,981,1002,1,321,320,341,14,14,14,42,1002,1001,980,1,341,342,321,14,14,14,42,981,982,1003,1,320,319,340,14,14,14,42,1003,1002,981,1,340,341,320,14,14,14,42,982,983,1004,1,319,318,339,14,14,14,42,1004,1003,982,1,339,340,319,14,14,14,42,983,984,1005,1,318,317,338,14,14,14,42,1005,1004,983,1,338,339,318,14,14,14,42,984,985,1006,1,317,316,337,14,14,14,42,1006,1005,984,1,337,338,317,14,14,14,42,985,986,1007,1,316,315,336,14,16,16,42,1007,1006,985,1,336,337,316,16,14,14,42,987,988,1009,1,356,355,376,13,14,14,42,1009,1008,987,1,376,377,356,14,13,13,42,988,989,1010,1,355,354,375,14,14,14,42,1010,1009,988,1,375,376,355,14,14,14,42,989,990,1011,1,354,353,374,14,14,14,42,1011,1010,989,1,374,375,354,14,14,14,42,990,991,1012,1,353,352,373,14,14,14,42,1012,1011,990,1,373,374,353,14,14,14,42,991,992,1013,1,352,351,372,14,14,14,42,1013,1012,991,1,372,373,352,14,14,14,42,992,993,1014,1,351,350,371,14,14,14,42,1014,1013,992,1,371,372,351,14,14,14,42,993,994,1015,1,350,349,370,14,14,14,42,1015,1014,993,1,370,371,350,14,14,14,42,994,995,1016,1,349,348,369,14,14,14,42,1016,1015,994,1,369,370,349,14,14,14,42,995,996,1017,1,348,347,368,14,14,14,42,1017,1016,995,1,368,369,348,14,14,14,42,996,997,1018,1,347,346,367,14,14,14,42,1018,1017,996,1,367,368,347,14,14,14,42,997,998,1019,1,346,345,366,14,14,14,42,1019,1018,997,1,366,367,346,14,14,14,42,998,999,1020,1,345,344,365,14,14,14,42,1020,1019,998,1,365,366,345,14,14,14,42,999,1000,1021,1,344,343,364,14,12,12,42,1021,1020,999,1,364,365,344,12,14,14,42,1000,1001,1022,1,343,342,363,12,14,14,42,1022,1021,1000,1,363,364,343,14,12,12,42,1001,1002,1023,1,342,341,362,14,14,14,42,1023,1022,1001,1,362,363,342,14,14,14,42,1002,1003,1024,1,341,340,361,14,14,14,42,1024,1023,1002,1,361,362,341,14,14,14,42,1003,1004,1025,1,340,339,360,14,14,14,42,1025,1024,1003,1,360,361,340,14,14,14,42,1004,1005,1026,1,339,338,359,14,14,14,42,1026,1025,1004,1,359,360,339,14,14,14,42,1005,1006,1027,1,338,337,358,14,14,14,42,1027,1026,1005,1,358,359,338,14,14,14,42,1006,1007,1028,1,337,336,357,14,16,16,42,1028,1027,1006,1,357,358,337,16,14,14,42,1008,1009,1030,1,377,376,397,13,14,14,42,1030,1029,1008,1,397,398,377,14,13,13,42,1009,1010,1031,1,376,375,396,14,14,14,42,1031,1030,1009,1,396,397,376,14,14,14,42,1010,1011,1032,1,375,374,395,14,14,14,42,1032,1031,1010,1,395,396,375,14,14,14,42,1011,1012,1033,1,374,373,394,14,14,14,42,1033,1032,1011,1,394,395,374,14,14,14,42,1012,1013,1034,1,373,372,393,14,14,14,42,1034,1033,1012,1,393,394,373,14,14,14,42,1013,1014,1035,1,372,371,392,14,14,14,42,1035,1034,1013,1,392,393,372,14,14,14,42,1014,1015,1036,1,371,370,391,14,14,14,42,1036,1035,1014,1,391,392,371,14,14,14,42,1015,1016,1037,1,370,369,390,14,14,14,42,1037,1036,1015,1,390,391,370,14,14,14,42,1016,1017,1038,1,369,368,389,14,14,14,42,1038,1037,1016,1,389,390,369,14,14,14,42,1017,1018,1039,1,368,367,388,14,14,14,42,1039,1038,1017,1,388,389,368,14,14,14,42,1018,1019,1040,1,367,366,387,14,14,14,42,1040,1039,1018,1,387,388,367,14,14,14,42,1019,1020,1041,1,366,365,386,14,14,14,42,1041,1040,1019,1,386,387,366,14,14,14,42,1020,1021,1042,1,365,364,385,14,12,12,42,1042,1041,1020,1,385,386,365,12,14,14,42,1021,1022,1043,1,364,363,384,12,14,14,42,1043,1042,1021,1,384,385,364,14,12,12,42,1022,1023,1044,1,363,362,383,14,14,14,42,1044,1043,1022,1,383,384,363,14,14,14,42,1023,1024,1045,1,362,361,382,14,14,14,42,1045,1044,1023,1,382,383,362,14,14,14,42,1024,1025,1046,1,361,360,381,14,14,14,42,1046,1045,1024,1,381,382,361,14,14,14,42,1025,1026,1047,1,360,359,380,14,14,14,42,1047,1046,1025,1,380,381,360,14,14,14,42,1026,1027,1048,1,359,358,379,14,14,14,42,1048,1047,1026,1,379,380,359,14,14,14,42,1027,1028,1049,1,358,357,378,14,16,16,42,1049,1048,1027,1,378,379,358,16,14,14,42,1029,1030,1051,1,398,397,418,13,14,14,42,1051,1050,1029,1,418,419,398,14,13,13,42,1030,1031,1052,1,397,396,417,14,14,14,42,1052,1051,1030,1,417,418,397,14,14,14,42,1031,1032,1053,1,396,395,416,14,14,14,42,1053,1052,1031,1,416,417,396,14,14,14,42,1032,1033,1054,1,395,394,415,14,14,14,42,1054,1053,1032,1,415,416,395,14,14,14,42,1033,1034,1055,1,394,393,414,14,14,14,42,1055,1054,1033,1,414,415,394,14,14,14,42,1034,1035,1056,1,393,392,413,14,14,14,42,1056,1055,1034,1,413,414,393,14,14,14,42,1035,1036,1057,1,392,391,412,14,14,14,42,1057,1056,1035,1,412,413,392,14,14,14,42,1036,1037,1058,1,391,390,411,14,14,14,42,1058,1057,1036,1,411,412,391,14,14,14,42,1037,1038,1059,1,390,389,410,14,14,14,42,1059,1058,1037,1,410,411,390,14,14,14,42,1038,1039,1060,1,389,388,409,14,14,14,42,1060,1059,1038,1,409,410,389,14,14,14,42,1039,1040,1061,1,388,387,408,14,14,14,42,1061,1060,1039,1,408,409,388,14,14,14,42,1040,1041,1062,1,387,386,407,14,14,14,42,1062,1061,1040,1,407,408,387,14,14,14,42,1041,1042,1063,1,386,385,406,14,12,12,42,1063,1062,1041,1,406,407,386,12,14,14,42,1042,1043,1064,1,385,384,405,12,14,14,42,1064,1063,1042,1,405,406,385,14,12,12,42,1043,1044,1065,1,384,383,404,14,14,14,42,1065,1064,1043,1,404,405,384,14,14,14,42,1044,1045,1066,1,383,382,403,14,14,14,42,1066,1065,1044,1,403,404,383,14,14,14,42,1045,1046,1067,1,382,381,402,14,14,14,42,1067,1066,1045,1,402,403,382,14,14,14,42,1046,1047,1068,1,381,380,401,14,14,14,42,1068,1067,1046,1,401,402,381,14,14,14,42,1047,1048,1069,1,380,379,400,14,14,14,42,1069,1068,1047,1,400,401,380,14,14,14,42,1048,1049,1070,1,379,378,399,14,16,16,42,1070,1069,1048,1,399,400,379,16,14,14,42,1050,1051,1072,1,419,418,439,13,14,14,42,1072,1071,1050,1,439,440,419,14,13,13,42,1051,1052,1073,1,418,417,438,14,14,14,42,1073,1072,1051,1,438,439,418,14,14,14,42,1052,1053,1074,1,417,416,437,14,14,14,42,1074,1073,1052,1,437,438,417,14,14,14,42,1053,1054,1075,1,416,415,436,14,14,14,42,1075,1074,1053,1,436,437,416,14,14,14,42,1054,1055,1076,1,415,414,435,14,14,14,42,1076,1075,1054,1,435,436,415,14,14,14,42,1055,1056,1077,1,414,413,434,14,14,14,42,1077,1076,1055,1,434,435,414,14,14,14,42,1056,1057,1078,1,413,412,433,14,14,14,42,1078,1077,1056,1,433,434,413,14,14,14,42,1057,1058,1079,1,412,411,432,14,14,14,42,1079,1078,1057,1,432,433,412,14,14,14,42,1058,1059,1080,1,411,410,431,14,14,14,42,1080,1079,1058,1,431,432,411,14,14,14,42,1059,1060,1081,1,410,409,430,14,14,14,42,1081,1080,1059,1,430,431,410,14,14,14,42,1060,1061,1082,1,409,408,429,14,14,12,42,1082,1081,1060,1,429,430,409,12,14,14,42,1061,1062,1083,1,408,407,428,14,14,12,42,1083,1082,1061,1,428,429,408,12,12,14,42,1062,1063,1084,1,407,406,427,14,12,14,42,1084,1083,1062,1,427,428,407,14,12,14,42,1063,1064,1085,1,406,405,426,12,14,12,42,1085,1084,1063,1,426,427,406,12,14,12,42,1064,1065,1086,1,405,404,425,14,14,12,42,1086,1085,1064,1,425,426,405,12,12,14,42,1065,1066,1087,1,404,403,424,14,14,12,42,1087,1086,1065,1,424,425,404,12,12,14,42,1066,1067,1088,1,403,402,423,14,14,12,42,1088,1087,1066,1,423,424,403,12,12,14,42,1067,1068,1089,1,402,401,422,14,14,12,42,1089,1088,1067,1,422,423,402,12,12,14,42,1068,1069,1090,1,401,400,421,14,14,12,42,1090,1089,1068,1,421,422,401,12,12,14,42,1069,1070,1091,1,400,399,420,14,16,16,42,1091,1090,1069,1,420,421,400,16,12,14,42,1071,1072,1093,1,440,439,460,13,14,14,42,1093,1092,1071,1,460,461,440,14,13,13,42,1072,1073,1094,1,439,438,459,14,14,14,42,1094,1093,1072,1,459,460,439,14,14,14,42,1073,1074,1095,1,438,437,458,14,14,14,42,1095,1094,1073,1,458,459,438,14,14,14,42,1074,1075,1096,1,437,436,457,14,14,14,42,1096,1095,1074,1,457,458,437,14,14,14,42,1075,1076,1097,1,436,435,456,14,14,14,42,1097,1096,1075,1,456,457,436,14,14,14,42,1076,1077,1098,1,435,434,455,14,14,14,42,1098,1097,1076,1,455,456,435,14,14,14,42,1077,1078,1099,1,434,433,454,14,14,14,42,1099,1098,1077,1,454,455,434,14,14,14,42,1078,1079,1100,1,433,432,453,14,14,14,42,1100,1099,1078,1,453,454,433,14,14,14,42,1079,1080,1101,1,432,431,452,14,14,14,42,1101,1100,1079,1,452,453,432,14,14,14,42,1080,1081,1102,1,431,430,451,14,14,14,42,1102,1101,1080,1,451,452,431,14,14,14,42,1081,1082,1103,1,430,429,450,14,12,12,42,1103,1102,1081,1,450,451,430,12,14,14,42,1082,1083,1104,1,429,428,449,12,12,12,42,1104,1103,1082,1,449,450,429,12,12,12,42,1083,1084,1105,1,428,427,448,12,14,14,42,1105,1104,1083,1,448,449,428,14,12,12,42,1084,1085,1106,1,427,426,447,14,12,12,42,1106,1105,1084,1,447,448,427,12,14,14,42,1085,1086,1107,1,426,425,446,12,12,12,42,1107,1106,1085,1,446,447,426,12,12,12,42,1086,1087,1108,1,425,424,445,12,12,12,42,1108,1107,1086,1,445,446,425,12,12,12,42,1087,1088,1109,1,424,423,444,12,12,12,42,1109,1108,1087,1,444,445,424,12,12,12,42,1088,1089,1110,1,423,422,443,12,12,12,42,1110,1109,1088,1,443,444,423,12,12,12,42,1089,1090,1111,1,422,421,442,12,12,12,42,1111,1110,1089,1,442,443,422,12,12,12,42,1090,1091,1112,1,421,420,441,12,16,16,42,1112,1111,1090,1,441,442,421,16,12,12,42,1092,1093,1114,1,461,460,481,13,14,14,42,1114,1113,1092,1,481,482,461,14,13,13,42,1093,1094,1115,1,460,459,480,14,14,14,42,1115,1114,1093,1,480,481,460,14,14,14,42,1094,1095,1116,1,459,458,479,14,14,14,42,1116,1115,1094,1,479,480,459,14,14,14,42,1095,1096,1117,1,458,457,478,14,14,14,42,1117,1116,1095,1,478,479,458,14,14,14,42,1096,1097,1118,1,457,456,477,14,14,14,42,1118,1117,1096,1,477,478,457,14,14,14,42,1097,1098,1119,1,456,455,476,14,14,14,42,1119,1118,1097,1,476,477,456,14,14,14,42,1098,1099,1120,1,455,454,475,14,14,14,42,1120,1119,1098,1,475,476,455,14,14,14,42,1099,1100,1121,1,454,453,474,14,14,14,42,1121,1120,1099,1,474,475,454,14,14,14,42,1100,1101,1122,1,453,452,473,14,14,14,42,1122,1121,1100,1,473,474,453,14,14,14,42,1101,1102,1123,1,452,451,472,14,14,14,42,1123,1122,1101,1,472,473,452,14,14,14,42,1102,1103,1124,1,451,450,471,14,12,12,42,1124,1123,1102,1,471,472,451,12,14,14,42,1103,1104,1125,1,450,449,470,12,12,12,42,1125,1124,1103,1,470,471,450,12,12,12,42,1104,1105,1126,1,449,448,469,12,14,14,42,1126,1125,1104,1,469,470,449,14,12,12,42,1105,1106,1127,1,448,447,468,14,12,12,42,1127,1126,1105,1,468,469,448,12,14,14,42,1106,1107,1128,1,447,446,467,12,12,12,42,1128,1127,1106,1,467,468,447,12,12,12,42,1107,1108,1129,1,446,445,466,12,12,12,42,1129,1128,1107,1,466,467,446,12,12,12,42,1108,1109,1130,1,445,444,465,12,12,12,42,1130,1129,1108,1,465,466,445,12,12,12,42,1109,1110,1131,1,444,443,464,12,12,12,42,1131,1130,1109,1,464,465,444,12,12,12,42,1110,1111,1132,1,443,442,463,12,12,12,42,1132,1131,1110,1,463,464,443,12,12,12,42,1111,1112,1133,1,442,441,462,12,16,16,42,1133,1132,1111,1,462,463,442,16,12,12,42,1113,1114,1135,1,482,481,502,13,14,14,42,1135,1134,1113,1,502,503,482,14,13,13,42,1114,1115,1136,1,481,480,501,14,14,14,42,1136,1135,1114,1,501,502,481,14,14,14,42,1115,1116,1137,1,480,479,500,14,14,14,42,1137,1136,1115,1,500,501,480,14,14,14,42,1116,1117,1138,1,479,478,499,14,14,14,42,1138,1137,1116,1,499,500,479,14,14,14,42,1117,1118,1139,1,478,477,498,14,14,14,42,1139,1138,1117,1,498,499,478,14,14,14,42,1118,1119,1140,1,477,476,497,14,14,14,42,1140,1139,1118,1,497,498,477,14,14,14,42,1119,1120,1141,1,476,475,496,14,14,14,42,1141,1140,1119,1,496,497,476,14,14,14,42,1120,1121,1142,1,475,474,495,14,14,14,42,1142,1141,1120,1,495,496,475,14,14,14,42,1121,1122,1143,1,474,473,494,14,14,14,42,1143,1142,1121,1,494,495,474,14,14,14,42,1122,1123,1144,1,473,472,493,14,14,14,42,1144,1143,1122,1,493,494,473,14,14,14,42,1123,1124,1145,1,472,471,492,14,12,12,42,1145,1144,1123,1,492,493,472,12,14,14,42,1124,1125,1146,1,471,470,491,12,12,12,42,1146,1145,1124,1,491,492,471,12,12,12,42,1125,1126,1147,1,470,469,490,12,14,14,42,1147,1146,1125,1,490,491,470,14,12,12,42,1126,1127,1148,1,469,468,489,14,12,12,42,1148,1147,1126,1,489,490,469,12,14,14,42,1127,1128,1149,1,468,467,488,12,12,12,42,1149,1148,1127,1,488,489,468,12,12,12,42,1128,1129,1150,1,467,466,487,12,12,12,42,1150,1149,1128,1,487,488,467,12,12,12,42,1129,1130,1151,1,466,465,486,12,12,12,42,1151,1150,1129,1,486,487,466,12,12,12,42,1130,1131,1152,1,465,464,485,12,12,12,42,1152,1151,1130,1,485,486,465,12,12,12,42,1131,1132,1153,1,464,463,484,12,12,12,42,1153,1152,1131,1,484,485,464,12,12,12,42,1132,1133,1154,1,463,462,483,12,16,16,42,1154,1153,1132,1,483,484,463,16,12,12,42,1134,1135,1156,1,503,502,523,13,14,14,42,1156,1155,1134,1,523,524,503,14,13,13,42,1135,1136,1157,1,502,501,522,14,14,14,42,1157,1156,1135,1,522,523,502,14,14,14,42,1136,1137,1158,1,501,500,521,14,14,14,42,1158,1157,1136,1,521,522,501,14,14,14,42,1137,1138,1159,1,500,499,520,14,14,14,42,1159,1158,1137,1,520,521,500,14,14,14,42,1138,1139,1160,1,499,498,519,14,14,14,42,1160,1159,1138,1,519,520,499,14,14,14,42,1139,1140,1161,1,498,497,518,14,14,14,42,1161,1160,1139,1,518,519,498,14,14,14,42,1140,1141,1162,1,497,496,517,14,14,14,42,1162,1161,1140,1,517,518,497,14,14,14,42,1141,1142,1163,1,496,495,516,14,14,14,42,1163,1162,1141,1,516,517,496,14,14,14,42,1142,1143,1164,1,495,494,515,14,14,14,42,1164,1163,1142,1,515,516,495,14,14,14,42,1143,1144,1165,1,494,493,514,14,14,14,42,1165,1164,1143,1,514,515,494,14,14,14,42,1144,1145,1166,1,493,492,513,14,12,12,42,1166,1165,1144,1,513,514,493,12,14,14,42,1145,1146,1167,1,492,491,512,12,12,12,42,1167,1166,1145,1,512,513,492,12,12,12,42,1146,1147,1168,1,491,490,511,12,14,14,42,1168,1167,1146,1,511,512,491,14,12,12,42,1147,1148,1169,1,490,489,510,14,12,12,42,1169,1168,1147,1,510,511,490,12,14,14,42,1148,1149,1170,1,489,488,509,12,12,12,42,1170,1169,1148,1,509,510,489,12,12,12,42,1149,1150,1171,1,488,487,508,12,12,12,42,1171,1170,1149,1,508,509,488,12,12,12,42,1150,1151,1172,1,487,486,507,12,12,12,42,1172,1171,1150,1,507,508,487,12,12,12,42,1151,1152,1173,1,486,485,506,12,12,12,42,1173,1172,1151,1,506,507,486,12,12,12,42,1152,1153,1174,1,485,484,505,12,12,12,42,1174,1173,1152,1,505,506,485,12,12,12,42,1153,1154,1175,1,484,483,504,12,16,16,42,1175,1174,1153,1,504,505,484,16,12,12,42,1155,1156,1177,1,524,523,544,13,14,14,42,1177,1176,1155,1,544,545,524,14,13,13,42,1156,1157,1178,1,523,522,543,14,14,14,42,1178,1177,1156,1,543,544,523,14,14,14,42,1157,1158,1179,1,522,521,542,14,14,14,42,1179,1178,1157,1,542,543,522,14,14,14,42,1158,1159,1180,1,521,520,541,14,14,14,42,1180,1179,1158,1,541,542,521,14,14,14,42,1159,1160,1181,1,520,519,540,14,14,14,42,1181,1180,1159,1,540,541,520,14,14,14,42,1160,1161,1182,1,519,518,539,14,14,14,42,1182,1181,1160,1,539,540,519,14,14,14,42,1161,1162,1183,1,518,517,538,14,14,14,42,1183,1182,1161,1,538,539,518,14,14,14,42,1162,1163,1184,1,517,516,537,14,14,14,42,1184,1183,1162,1,537,538,517,14,14,14,42,1163,1164,1185,1,516,515,536,14,14,14,42,1185,1184,1163,1,536,537,516,14,14,14,42,1164,1165,1186,1,515,514,535,14,14,14,42,1186,1185,1164,1,535,536,515,14,14,14,42,1165,1166,1187,1,514,513,534,14,12,12,42,1187,1186,1165,1,534,535,514,12,14,14,42,1166,1167,1188,1,513,512,533,12,12,12,42,1188,1187,1166,1,533,534,513,12,12,12,42,1167,1168,1189,1,512,511,532,12,14,14,42,1189,1188,1167,1,532,533,512,14,12,12,42,1168,1169,1190,1,511,510,531,14,12,12,42,1190,1189,1168,1,531,532,511,12,14,14,42,1169,1170,1191,1,510,509,530,12,12,12,42,1191,1190,1169,1,530,531,510,12,12,12,42,1170,1171,1192,1,509,508,529,12,12,12,42,1192,1191,1170,1,529,530,509,12,12,12,42,1171,1172,1193,1,508,507,528,12,12,12,42,1193,1192,1171,1,528,529,508,12,12,12,42,1172,1173,1194,1,507,506,527,12,12,12,42,1194,1193,1172,1,527,528,507,12,12,12,42,1173,1174,1195,1,506,505,526,12,12,12,42,1195,1194,1173,1,526,527,506,12,12,12,42,1174,1175,1196,1,505,504,525,12,16,16,42,1196,1195,1174,1,525,526,505,16,12,12,42,1176,1177,1198,1,545,544,565,13,14,14,42,1198,1197,1176,1,565,566,545,14,13,13,42,1177,1178,1199,1,544,543,564,14,14,14,42,1199,1198,1177,1,564,565,544,14,14,14,42,1178,1179,1200,1,543,542,563,14,14,14,42,1200,1199,1178,1,563,564,543,14,14,14,42,1179,1180,1201,1,542,541,562,14,14,14,42,1201,1200,1179,1,562,563,542,14,14,14,42,1180,1181,1202,1,541,540,561,14,14,14,42,1202,1201,1180,1,561,562,541,14,14,14,42,1181,1182,1203,1,540,539,560,14,14,14,42,1203,1202,1181,1,560,561,540,14,14,14,42,1182,1183,1204,1,539,538,559,14,14,14,42,1204,1203,1182,1,559,560,539,14,14,14,42,1183,1184,1205,1,538,537,558,14,14,14,42,1205,1204,1183,1,558,559,538,14,14,14,42,1184,1185,1206,1,537,536,557,14,14,14,42,1206,1205,1184,1,557,558,537,14,14,14,42,1185,1186,1207,1,536,535,556,14,14,14,42,1207,1206,1185,1,556,557,536,14,14,14,42,1186,1187,1208,1,535,534,555,14,12,12,42,1208,1207,1186,1,555,556,535,12,14,14,42,1187,1188,1209,1,534,533,554,12,12,12,42,1209,1208,1187,1,554,555,534,12,12,12,42,1188,1189,1210,1,533,532,553,12,14,14,42,1210,1209,1188,1,553,554,533,14,12,12,42,1189,1190,1211,1,532,531,552,14,12,12,42,1211,1210,1189,1,552,553,532,12,14,14,42,1190,1191,1212,1,531,530,551,12,12,12,42,1212,1211,1190,1,551,552,531,12,12,12,42,1191,1192,1213,1,530,529,550,12,12,12,42,1213,1212,1191,1,550,551,530,12,12,12,42,1192,1193,1214,1,529,528,549,12,12,12,42,1214,1213,1192,1,549,550,529,12,12,12,42,1193,1194,1215,1,528,527,548,12,12,12,42,1215,1214,1193,1,548,549,528,12,12,12,42,1194,1195,1216,1,527,526,547,12,12,12,42,1216,1215,1194,1,547,548,527,12,12,12,42,1195,1196,1217,1,526,525,546,12,16,16,42,1217,1216,1195,1,546,547,526,16,12,12,42,1197,1198,1219,1,566,565,586,13,14,14,42,1219,1218,1197,1,586,587,566,14,13,13,42,1198,1199,1220,1,565,564,585,14,14,14,42,1220,1219,1198,1,585,586,565,14,14,14,42,1199,1200,1221,1,564,563,584,14,14,14,42,1221,1220,1199,1,584,585,564,14,14,14,42,1200,1201,1222,1,563,562,583,14,14,14,42,1222,1221,1200,1,583,584,563,14,14,14,42,1201,1202,1223,1,562,561,582,14,14,14,42,1223,1222,1201,1,582,583,562,14,14,14,42,1202,1203,1224,1,561,560,581,14,14,14,42,1224,1223,1202,1,581,582,561,14,14,14,42,1203,1204,1225,1,560,559,580,14,14,14,42,1225,1224,1203,1,580,581,560,14,14,14,42,1204,1205,1226,1,559,558,579,14,14,14,42,1226,1225,1204,1,579,580,559,14,14,14,42,1205,1206,1227,1,558,557,578,14,14,14,42,1227,1226,1205,1,578,579,558,14,14,14,42,1206,1207,1228,1,557,556,577,14,14,14,42,1228,1227,1206,1,577,578,557,14,14,14,42,1207,1208,1229,1,556,555,576,14,12,12,42,1229,1228,1207,1,576,577,556,12,14,14,42,1208,1209,1230,1,555,554,575,12,12,12,42,1230,1229,1208,1,575,576,555,12,12,12,42,1209,1210,1231,1,554,553,574,12,14,14,42,1231,1230,1209,1,574,575,554,14,12,12,42,1210,1211,1232,1,553,552,573,14,12,12,42,1232,1231,1210,1,573,574,553,12,14,14,42,1211,1212,1233,1,552,551,572,12,12,12,42,1233,1232,1211,1,572,573,552,12,12,12,42,1212,1213,1234,1,551,550,571,12,12,12,42,1234,1233,1212,1,571,572,551,12,12,12,42,1213,1214,1235,1,550,549,570,12,12,12,42,1235,1234,1213,1,570,571,550,12,12,12,42,1214,1215,1236,1,549,548,569,12,12,12,42,1236,1235,1214,1,569,570,549,12,12,12,42,1215,1216,1237,1,548,547,568,12,12,12,42,1237,1236,1215,1,568,569,548,12,12,12,42,1216,1217,1238,1,547,546,567,12,16,16,42,1238,1237,1216,1,567,568,547,16,12,12,42,1218,1219,1240,1,587,586,607,13,14,14,42,1240,1239,1218,1,607,608,587,14,13,13,42,1219,1220,1241,1,586,585,606,14,14,14,42,1241,1240,1219,1,606,607,586,14,14,14,42,1220,1221,1242,1,585,584,605,14,14,14,42,1242,1241,1220,1,605,606,585,14,14,14,42,1221,1222,1243,1,584,583,604,14,14,14,42,1243,1242,1221,1,604,605,584,14,14,14,42,1222,1223,1244,1,583,582,603,14,14,14,42,1244,1243,1222,1,603,604,583,14,14,14,42,1223,1224,1245,1,582,581,602,14,14,14,42,1245,1244,1223,1,602,603,582,14,14,14,42,1224,1225,1246,1,581,580,601,14,14,14,42,1246,1245,1224,1,601,602,581,14,14,14,42,1225,1226,1247,1,580,579,600,14,14,14,42,1247,1246,1225,1,600,601,580,14,14,14,42,1226,1227,1248,1,579,578,599,14,14,14,42,1248,1247,1226,1,599,600,579,14,14,14,42,1227,1228,1249,1,578,577,598,14,14,14,42,1249,1248,1227,1,598,599,578,14,14,14,42,1228,1229,1250,1,577,576,597,14,12,12,42,1250,1249,1228,1,597,598,577,12,14,14,42,1229,1230,1251,1,576,575,596,12,12,12,42,1251,1250,1229,1,596,597,576,12,12,12,42,1230,1231,1252,1,575,574,595,12,14,14,42,1252,1251,1230,1,595,596,575,14,12,12,42,1231,1232,1253,1,574,573,594,14,12,12,42,1253,1252,1231,1,594,595,574,12,14,14,42,1232,1233,1254,1,573,572,593,12,12,12,42,1254,1253,1232,1,593,594,573,12,12,12,42,1233,1234,1255,1,572,571,592,12,12,12,42,1255,1254,1233,1,592,593,572,12,12,12,42,1234,1235,1256,1,571,570,591,12,12,12,42,1256,1255,1234,1,591,592,571,12,12,12,42,1235,1236,1257,1,570,569,590,12,12,12,42,1257,1256,1235,1,590,591,570,12,12,12,42,1236,1237,1258,1,569,568,589,12,12,12,42,1258,1257,1236,1,589,590,569,12,12,12,42,1237,1238,1259,1,568,567,588,12,16,16,42,1259,1258,1237,1,588,589,568,16,12,12,42,1239,1240,1261,1,608,607,628,13,14,12,42,1261,1260,1239,1,628,629,608,12,13,13,42,1240,1241,1262,1,607,606,627,14,14,12,42,1262,1261,1240,1,627,628,607,12,12,14,42,1241,1242,1263,1,606,605,626,14,14,12,42,1263,1262,1241,1,626,627,606,12,12,14,42,1242,1243,1264,1,605,604,625,14,14,12,42,1264,1263,1242,1,625,626,605,12,12,14,42,1243,1244,1265,1,604,603,624,14,14,14,42,1265,1264,1243,1,624,625,604,14,12,14,42,1244,1245,1266,1,603,602,623,14,14,12,42,1266,1265,1244,1,623,624,603,12,14,14,42,1245,1246,1267,1,602,601,622,14,14,12,42,1267,1266,1245,1,622,623,602,12,12,14,42,1246,1247,1268,1,601,600,621,14,14,12,42,1268,1267,1246,1,621,622,601,12,12,14,42,1247,1248,1269,1,600,599,620,14,14,12,42,1269,1268,1247,1,620,621,600,12,12,14,42,1248,1249,1270,1,599,598,619,14,14,12,42,1270,1269,1248,1,619,620,599,12,12,14,42,1249,1250,1271,1,598,597,618,14,12,12,42,1271,1270,1249,1,618,619,598,12,12,14,42,1250,1251,1272,1,597,596,617,12,12,12,42,1272,1271,1250,1,617,618,597,12,12,12,42,1251,1252,1273,1,596,595,616,12,14,12,42,1273,1272,1251,1,616,617,596,12,12,12,42,1252,1253,1274,1,595,594,615,14,12,12,42,1274,1273,1252,1,615,616,595,12,12,14,42,1253,1254,1275,1,594,593,614,12,12,12,42,1275,1274,1253,1,614,615,594,12,12,12,42,1254,1255,1276,1,593,592,613,12,12,12,42,1276,1275,1254,1,613,614,593,12,12,12,42,1255,1256,1277,1,592,591,612,12,12,12,42,1277,1276,1255,1,612,613,592,12,12,12,42,1256,1257,1278,1,591,590,611,12,12,12,42,1278,1277,1256,1,611,612,591,12,12,12,42,1257,1258,1279,1,590,589,610,12,12,12,42,1279,1278,1257,1,610,611,590,12,12,12,42,1258,1259,1280,1,589,588,609,12,16,16,42,1280,1279,1258,1,609,610,589,16,12,12,42,1260,1261,1282,1,629,628,649,13,12,17,42,1282,1281,1260,1,649,650,629,17,18,13,42,1261,1262,1283,1,628,627,648,12,12,17,42,1283,1282,1261,1,648,649,628,17,17,12,42,1262,1263,1284,1,627,626,647,12,12,17,42,1284,1283,1262,1,647,648,627,17,17,12,42,1263,1264,1285,1,626,625,646,12,12,17,42,1285,1284,1263,1,646,647,626,17,17,12,42,1264,1265,1286,1,625,624,645,12,14,17,42,1286,1285,1264,1,645,646,625,17,17,12,42,1265,1266,1287,1,624,623,644,14,12,17,42,1287,1286,1265,1,644,645,624,17,17,14,42,1266,1267,1288,1,623,622,643,12,12,17,42,1288,1287,1266,1,643,644,623,17,17,12,42,1267,1268,1289,1,622,621,642,12,12,17,42,1289,1288,1267,1,642,643,622,17,17,12,42,1268,1269,1290,1,621,620,641,12,12,17,42,1290,1289,1268,1,641,642,621,17,17,12,42,1269,1270,1291,1,620,619,640,12,12,17,42,1291,1290,1269,1,640,641,620,17,17,12,42,1270,1271,1292,1,619,618,639,12,12,17,42,1292,1291,1270,1,639,640,619,17,17,12,42,1271,1272,1293,1,618,617,638,12,12,17,42,1293,1292,1271,1,638,639,618,17,17,12,42,1272,1273,1294,1,617,616,637,12,12,17,42,1294,1293,1272,1,637,638,617,17,17,12,42,1273,1274,1295,1,616,615,636,12,12,17,42,1295,1294,1273,1,636,637,616,17,17,12,42,1274,1275,1296,1,615,614,635,12,12,17,42,1296,1295,1274,1,635,636,615,17,17,12,42,1275,1276,1297,1,614,613,634,12,12,17,42,1297,1296,1275,1,634,635,614,17,17,12,42,1276,1277,1298,1,613,612,633,12,12,17,42,1298,1297,1276,1,633,634,613,17,17,12,42,1277,1278,1299,1,612,611,632,12,12,17,42,1299,1298,1277,1,632,633,612,17,17,12,42,1278,1279,1300,1,611,610,631,12,12,17,42,1300,1299,1278,1,631,632,611,17,17,12,42,1279,1280,1301,1,610,609,630,12,16,19,42,1301,1300,1279,1,630,631,610,19,17,12,42,0,1,652,2,41,39,651,0,3,11,42,652,651,0,2,651,652,41,11,10,0,42,1,2,653,2,39,37,653,3,3,11,42,653,652,1,2,653,651,39,11,11,3,42,2,3,654,2,37,35,654,3,3,11,42,654,653,2,2,654,653,37,11,11,3,42,3,4,655,2,35,33,655,3,3,11,42,655,654,3,2,655,654,35,11,11,3,42,4,5,656,2,33,31,656,3,3,11,42,656,655,4,2,656,655,33,11,11,3,42,5,6,657,2,31,29,657,3,3,11,42,657,656,5,2,657,656,31,11,11,3,42,6,7,658,2,29,27,658,3,3,11,42,658,657,6,2,658,657,29,11,11,3,42,7,8,659,2,27,25,659,3,3,11,42,659,658,7,2,659,658,27,11,11,3,42,8,9,660,2,25,23,660,3,3,11,42,660,659,8,2,660,659,25,11,11,3,42,9,10,661,2,23,21,661,3,3,11,42,661,660,9,2,661,660,23,11,11,3,42,10,11,662,2,21,19,662,3,3,11,42,662,661,10,2,662,661,21,11,11,3,42,11,12,663,2,19,17,663,3,3,11,42,663,662,11,2,663,662,19,11,11,3,42,12,13,664,2,17,15,664,3,3,11,42,664,663,12,2,664,663,17,11,11,3,42,13,14,665,2,15,13,665,3,3,11,42,665,664,13,2,665,664,15,11,11,3,42,14,15,666,2,13,11,666,3,3,11,42,666,665,14,2,666,665,13,11,11,3,42,15,16,667,2,11,9,667,3,3,11,42,667,666,15,2,667,666,11,11,11,3,42,16,17,668,2,9,7,668,3,3,11,42,668,667,16,2,668,667,9,11,11,3,42,17,18,669,2,7,5,669,3,3,11,42,669,668,17,2,669,668,7,11,11,3,42,18,19,670,2,5,3,670,3,3,11,42,670,669,18,2,670,669,5,11,11,3,42,19,20,671,2,3,0,671,3,6,15,42,671,670,19,2,671,670,3,15,11,3,42,20,41,692,3,41,672,673,6,5,16,42,692,671,20,3,673,652,41,16,15,6,42,41,62,713,3,672,674,675,5,5,16,42,713,692,41,3,675,673,672,16,16,5,42,62,83,734,3,674,676,677,5,5,16,42,734,713,62,3,677,675,674,16,16,5,42,83,104,755,3,676,678,679,5,5,16,42,755,734,83,3,679,677,676,16,16,5,42,104,125,776,3,678,680,681,5,5,16,42,776,755,104,3,681,679,678,16,16,5,42,125,146,797,3,680,33,655,5,5,16,42,797,776,125,3,655,681,680,16,16,5,42,146,167,818,3,33,682,683,5,5,16,42,818,797,146,3,683,655,33,16,16,5,42,167,188,839,3,682,684,685,5,5,16,42,839,818,167,3,685,683,682,16,16,5,42,188,209,860,3,684,29,657,5,5,16,42,860,839,188,3,657,685,684,16,16,5,42,209,230,881,3,29,686,687,5,5,16,42,881,860,209,3,687,657,29,16,16,5,42,230,251,902,3,686,688,689,5,5,16,42,902,881,230,3,689,687,686,16,16,5,42,251,272,923,3,688,690,691,5,5,16,42,923,902,251,3,691,689,688,16,16,5,42,272,293,944,3,690,692,693,5,5,16,42,944,923,272,3,693,691,690,16,16,5,42,293,314,965,3,692,694,695,5,5,16,42,965,944,293,3,695,693,692,16,16,5,42,314,335,986,3,694,696,697,5,5,16,42,986,965,314,3,697,695,694,16,16,5,42,335,356,1007,3,696,698,699,5,5,16,42,1007,986,335,3,699,697,696,16,16,5,42,356,377,1028,3,698,700,701,5,5,16,42,1028,1007,356,3,701,699,698,16,16,5,42,377,398,1049,3,700,17,663,5,5,16,42,1049,1028,377,3,663,701,700,16,16,5,42,398,419,1070,3,17,702,703,5,5,16,42,1070,1049,398,3,703,663,17,16,16,5,42,419,440,1091,3,702,704,705,5,5,16,42,1091,1070,419,3,705,703,702,16,16,5,42,440,461,1112,3,704,706,707,5,5,16,42,1112,1091,440,3,707,705,704,16,16,5,42,461,482,1133,3,706,708,709,5,5,16,42,1133,1112,461,3,709,707,706,16,16,5,42,482,503,1154,3,708,710,711,5,5,16,42,1154,1133,482,3,711,709,708,16,16,5,42,503,524,1175,3,710,712,713,5,5,16,42,1175,1154,503,3,713,711,710,16,16,5,42,524,545,1196,3,712,714,715,5,5,16,42,1196,1175,524,3,715,713,712,16,16,5,42,545,566,1217,3,714,716,717,5,5,16,42,1217,1196,545,3,717,715,714,16,16,5,42,566,587,1238,3,716,718,719,5,5,16,42,1238,1217,566,3,719,717,716,16,16,5,42,587,608,1259,3,718,720,721,5,5,16,42,1259,1238,587,3,721,719,718,16,16,5,42,608,629,1280,3,720,722,723,5,5,16,42,1280,1259,608,3,723,721,720,16,16,5,42,629,650,1301,3,722,724,725,5,9,19,42,1301,1280,629,3,725,723,722,19,16,5,42,650,649,1300,4,41,39,651,9,8,17,42,1300,1301,650,4,651,652,41,17,19,9,42,649,648,1299,4,39,37,653,8,8,17,42,1299,1300,649,4,653,651,39,17,17,8,42,648,647,1298,4,37,35,654,8,8,17,42,1298,1299,648,4,654,653,37,17,17,8,42,647,646,1297,4,35,33,655,8,8,17,42,1297,1298,647,4,655,654,35,17,17,8,42,646,645,1296,4,33,31,656,8,8,17,42,1296,1297,646,4,656,655,33,17,17,8,42,645,644,1295,4,31,29,657,8,8,17,42,1295,1296,645,4,657,656,31,17,17,8,42,644,643,1294,4,29,27,658,8,8,17,42,1294,1295,644,4,658,657,29,17,17,8,42,643,642,1293,4,27,25,659,8,8,17,42,1293,1294,643,4,659,658,27,17,17,8,42,642,641,1292,4,25,23,660,8,8,17,42,1292,1293,642,4,660,659,25,17,17,8,42,641,640,1291,4,23,21,661,8,8,17,42,1291,1292,641,4,661,660,23,17,17,8,42,640,639,1290,4,21,19,662,8,8,17,42,1290,1291,640,4,662,661,21,17,17,8,42,639,638,1289,4,19,17,663,8,8,17,42,1289,1290,639,4,663,662,19,17,17,8,42,638,637,1288,4,17,15,664,8,8,17,42,1288,1289,638,4,664,663,17,17,17,8,42,637,636,1287,4,15,13,665,8,8,17,42,1287,1288,637,4,665,664,15,17,17,8,42,636,635,1286,4,13,11,666,8,8,17,42,1286,1287,636,4,666,665,13,17,17,8,42,635,634,1285,4,11,9,667,8,8,17,42,1285,1286,635,4,667,666,11,17,17,8,42,634,633,1284,4,9,7,668,8,8,17,42,1284,1285,634,4,668,667,9,17,17,8,42,633,632,1283,4,7,5,669,8,8,17,42,1283,1284,633,4,669,668,7,17,17,8,42,632,631,1282,4,5,3,670,8,8,17,42,1282,1283,632,4,670,669,5,17,17,8,42,631,630,1281,4,3,0,671,8,7,18,42,1281,1282,631,4,671,670,3,18,17,8,42,630,609,1260,5,41,672,673,7,1,13,42,1260,1281,630,5,673,652,41,13,18,7,42,609,588,1239,5,672,674,675,1,1,13,42,1239,1260,609,5,675,673,672,13,13,1,42,588,567,1218,5,674,676,677,1,1,13,42,1218,1239,588,5,677,675,674,13,13,1,42,567,546,1197,5,676,678,679,1,1,13,42,1197,1218,567,5,679,677,676,13,13,1,42,546,525,1176,5,678,680,681,1,1,13,42,1176,1197,546,5,681,679,678,13,13,1,42,525,504,1155,5,680,33,655,1,1,13,42,1155,1176,525,5,655,681,680,13,13,1,42,504,483,1134,5,33,682,683,1,1,13,42,1134,1155,504,5,683,655,33,13,13,1,42,483,462,1113,5,682,684,685,1,1,13,42,1113,1134,483,5,685,683,682,13,13,1,42,462,441,1092,5,684,29,657,1,1,13,42,1092,1113,462,5,657,685,684,13,13,1,42,441,420,1071,5,29,686,687,1,1,13,42,1071,1092,441,5,687,657,29,13,13,1,42,420,399,1050,5,686,688,689,1,1,13,42,1050,1071,420,5,689,687,686,13,13,1,42,399,378,1029,5,688,690,691,1,1,13,42,1029,1050,399,5,691,689,688,13,13,1,42,378,357,1008,5,690,692,693,1,1,13,42,1008,1029,378,5,693,691,690,13,13,1,42,357,336,987,5,692,694,695,1,1,13,42,987,1008,357,5,695,693,692,13,13,1,42,336,315,966,5,694,696,697,1,1,13,42,966,987,336,5,697,695,694,13,13,1,42,315,294,945,5,696,698,699,1,1,13,42,945,966,315,5,699,697,696,13,13,1,42,294,273,924,5,698,700,701,1,1,13,42,924,945,294,5,701,699,698,13,13,1,42,273,252,903,5,700,17,663,1,1,13,42,903,924,273,5,663,701,700,13,13,1,42,252,231,882,5,17,702,703,1,1,13,42,882,903,252,5,703,663,17,13,13,1,42,231,210,861,5,702,704,705,1,1,13,42,861,882,231,5,705,703,702,13,13,1,42,210,189,840,5,704,706,707,1,1,13,42,840,861,210,5,707,705,704,13,13,1,42,189,168,819,5,706,708,709,1,1,13,42,819,840,189,5,709,707,706,13,13,1,42,168,147,798,5,708,710,711,1,1,13,42,798,819,168,5,711,709,708,13,13,1,42,147,126,777,5,710,712,713,1,1,13,42,777,798,147,5,713,711,710,13,13,1,42,126,105,756,5,712,714,715,1,1,13,42,756,777,126,5,715,713,712,13,13,1,42,105,84,735,5,714,716,717,1,1,13,42,735,756,105,5,717,715,714,13,13,1,42,84,63,714,5,716,718,719,1,1,13,42,714,735,84,5,719,717,716,13,13,1,42,63,42,693,5,718,720,721,1,1,13,42,693,714,63,5,721,719,718,13,13,1,42,42,21,672,5,720,722,723,1,1,13,42,672,693,42,5,723,721,720,13,13,1,42,21,0,651,5,722,724,725,1,0,10,42,651,672,21,5,725,723,722,10,13,1], + "uvs": [[1,0,1,0.033333,0.95,0.033333,0.95,0,0.9,0.033333,0.9,0,0.85,0.033333,0.85,0,0.8,0.033333,0.8,0,0.75,0.033333,0.75,0,0.7,0.033333,0.7,0,0.65,0.033333,0.65,0,0.6,0.033333,0.6,0,0.55,0.033333,0.55,0,0.5,0.033333,0.5,0,0.45,0.033333,0.45,0,0.4,0.033333,0.4,0,0.35,0.033333,0.35,0,0.3,0.033333,0.3,0,0.25,0.033333,0.25,0,0.2,0.033333,0.2,0,0.15,0.033333,0.15,0,0.1,0.033333,0.1,0,0.05,0.033333,0.05,0,0,0.033333,0,0,1,0.066667,0.95,0.066667,0.9,0.066667,0.85,0.066667,0.8,0.066667,0.75,0.066667,0.7,0.066667,0.65,0.066667,0.6,0.066667,0.55,0.066667,0.5,0.066667,0.45,0.066667,0.4,0.066667,0.35,0.066667,0.3,0.066667,0.25,0.066667,0.2,0.066667,0.15,0.066667,0.1,0.066667,0.05,0.066667,0,0.066667,1,0.1,0.95,0.1,0.9,0.1,0.85,0.1,0.8,0.1,0.75,0.1,0.7,0.1,0.65,0.1,0.6,0.1,0.55,0.1,0.5,0.1,0.45,0.1,0.4,0.1,0.35,0.1,0.3,0.1,0.25,0.1,0.2,0.1,0.15,0.1,0.1,0.1,0.05,0.1,0,0.1,1,0.133333,0.95,0.133333,0.9,0.133333,0.85,0.133333,0.8,0.133333,0.75,0.133333,0.7,0.133333,0.65,0.133333,0.6,0.133333,0.55,0.133333,0.5,0.133333,0.45,0.133333,0.4,0.133333,0.35,0.133333,0.3,0.133333,0.25,0.133333,0.2,0.133333,0.15,0.133333,0.1,0.133333,0.05,0.133333,0,0.133333,1,0.166667,0.95,0.166667,0.9,0.166667,0.85,0.166667,0.8,0.166667,0.75,0.166667,0.7,0.166667,0.65,0.166667,0.6,0.166667,0.55,0.166667,0.5,0.166667,0.45,0.166667,0.4,0.166667,0.35,0.166667,0.3,0.166667,0.25,0.166667,0.2,0.166667,0.15,0.166667,0.1,0.166667,0.05,0.166667,0,0.166667,1,0.2,0.95,0.2,0.9,0.2,0.85,0.2,0.8,0.2,0.75,0.2,0.7,0.2,0.65,0.2,0.6,0.2,0.55,0.2,0.5,0.2,0.45,0.2,0.4,0.2,0.35,0.2,0.3,0.2,0.25,0.2,0.2,0.2,0.15,0.2,0.1,0.2,0.05,0.2,0,0.2,1,0.233333,0.95,0.233333,0.9,0.233333,0.85,0.233333,0.8,0.233333,0.75,0.233333,0.7,0.233333,0.65,0.233333,0.6,0.233333,0.55,0.233333,0.5,0.233333,0.45,0.233333,0.4,0.233333,0.35,0.233333,0.3,0.233333,0.25,0.233333,0.2,0.233333,0.15,0.233333,0.1,0.233333,0.05,0.233333,0,0.233333,1,0.266667,0.95,0.266667,0.9,0.266667,0.85,0.266667,0.8,0.266667,0.75,0.266667,0.7,0.266667,0.65,0.266667,0.6,0.266667,0.55,0.266667,0.5,0.266667,0.45,0.266667,0.4,0.266667,0.35,0.266667,0.3,0.266667,0.25,0.266667,0.2,0.266667,0.15,0.266667,0.1,0.266667,0.05,0.266667,0,0.266667,1,0.3,0.95,0.3,0.9,0.3,0.85,0.3,0.8,0.3,0.75,0.3,0.7,0.3,0.65,0.3,0.6,0.3,0.55,0.3,0.5,0.3,0.45,0.3,0.4,0.3,0.35,0.3,0.3,0.3,0.25,0.3,0.2,0.3,0.15,0.3,0.1,0.3,0.05,0.3,0,0.3,1,0.333333,0.95,0.333333,0.9,0.333333,0.85,0.333333,0.8,0.333333,0.75,0.333333,0.7,0.333333,0.65,0.333333,0.6,0.333333,0.55,0.333333,0.5,0.333333,0.45,0.333333,0.4,0.333333,0.35,0.333333,0.3,0.333333,0.25,0.333333,0.2,0.333333,0.15,0.333333,0.1,0.333333,0.05,0.333333,0,0.333333,1,0.366667,0.95,0.366667,0.9,0.366667,0.85,0.366667,0.8,0.366667,0.75,0.366667,0.7,0.366667,0.65,0.366667,0.6,0.366667,0.55,0.366667,0.5,0.366667,0.45,0.366667,0.4,0.366667,0.35,0.366667,0.3,0.366667,0.25,0.366667,0.2,0.366667,0.15,0.366667,0.1,0.366667,0.05,0.366667,0,0.366667,1,0.4,0.95,0.4,0.9,0.4,0.85,0.4,0.8,0.4,0.75,0.4,0.7,0.4,0.65,0.4,0.6,0.4,0.55,0.4,0.5,0.4,0.45,0.4,0.4,0.4,0.35,0.4,0.3,0.4,0.25,0.4,0.2,0.4,0.15,0.4,0.1,0.4,0.05,0.4,0,0.4,1,0.433333,0.95,0.433333,0.9,0.433333,0.85,0.433333,0.8,0.433333,0.75,0.433333,0.7,0.433333,0.65,0.433333,0.6,0.433333,0.55,0.433333,0.5,0.433333,0.45,0.433333,0.4,0.433333,0.35,0.433333,0.3,0.433333,0.25,0.433333,0.2,0.433333,0.15,0.433333,0.1,0.433333,0.05,0.433333,0,0.433333,1,0.466667,0.95,0.466667,0.9,0.466667,0.85,0.466667,0.8,0.466667,0.75,0.466667,0.7,0.466667,0.65,0.466667,0.6,0.466667,0.55,0.466667,0.5,0.466667,0.45,0.466667,0.4,0.466667,0.35,0.466667,0.3,0.466667,0.25,0.466667,0.2,0.466667,0.15,0.466667,0.1,0.466667,0.05,0.466667,0,0.466667,1,0.5,0.95,0.5,0.9,0.5,0.85,0.5,0.8,0.5,0.75,0.5,0.7,0.5,0.65,0.5,0.6,0.5,0.55,0.5,0.5,0.5,0.45,0.5,0.4,0.5,0.35,0.5,0.3,0.5,0.25,0.5,0.2,0.5,0.15,0.5,0.1,0.5,0.05,0.5,0,0.5,1,0.533333,0.95,0.533333,0.9,0.533333,0.85,0.533333,0.8,0.533333,0.75,0.533333,0.7,0.533333,0.65,0.533333,0.6,0.533333,0.55,0.533333,0.5,0.533333,0.45,0.533333,0.4,0.533333,0.35,0.533333,0.3,0.533333,0.25,0.533333,0.2,0.533333,0.15,0.533333,0.1,0.533333,0.05,0.533333,0,0.533333,1,0.566667,0.95,0.566667,0.9,0.566667,0.85,0.566667,0.8,0.566667,0.75,0.566667,0.7,0.566667,0.65,0.566667,0.6,0.566667,0.55,0.566667,0.5,0.566667,0.45,0.566667,0.4,0.566667,0.35,0.566667,0.3,0.566667,0.25,0.566667,0.2,0.566667,0.15,0.566667,0.1,0.566667,0.05,0.566667,0,0.566667,1,0.6,0.95,0.6,0.9,0.6,0.85,0.6,0.8,0.6,0.75,0.6,0.7,0.6,0.65,0.6,0.6,0.6,0.55,0.6,0.5,0.6,0.45,0.6,0.4,0.6,0.35,0.6,0.3,0.6,0.25,0.6,0.2,0.6,0.15,0.6,0.1,0.6,0.05,0.6,0,0.6,1,0.633333,0.95,0.633333,0.9,0.633333,0.85,0.633333,0.8,0.633333,0.75,0.633333,0.7,0.633333,0.65,0.633333,0.6,0.633333,0.55,0.633333,0.5,0.633333,0.45,0.633333,0.4,0.633333,0.35,0.633333,0.3,0.633333,0.25,0.633333,0.2,0.633333,0.15,0.633333,0.1,0.633333,0.05,0.633333,0,0.633333,1,0.666667,0.95,0.666667,0.9,0.666667,0.85,0.666667,0.8,0.666667,0.75,0.666667,0.7,0.666667,0.65,0.666667,0.6,0.666667,0.55,0.666667,0.5,0.666667,0.45,0.666667,0.4,0.666667,0.35,0.666667,0.3,0.666667,0.25,0.666667,0.2,0.666667,0.15,0.666667,0.1,0.666667,0.05,0.666667,0,0.666667,1,0.7,0.95,0.7,0.9,0.7,0.85,0.7,0.8,0.7,0.75,0.7,0.7,0.7,0.65,0.7,0.6,0.7,0.55,0.7,0.5,0.7,0.45,0.7,0.4,0.7,0.35,0.7,0.3,0.7,0.25,0.7,0.2,0.7,0.15,0.7,0.1,0.7,0.05,0.7,0,0.7,1,0.733334,0.95,0.733334,0.9,0.733334,0.85,0.733334,0.8,0.733334,0.75,0.733334,0.7,0.733334,0.65,0.733334,0.6,0.733334,0.55,0.733334,0.5,0.733334,0.45,0.733334,0.4,0.733334,0.35,0.733334,0.3,0.733334,0.25,0.733334,0.2,0.733334,0.15,0.733334,0.1,0.733334,0.05,0.733334,0,0.733334,1,0.766667,0.95,0.766667,0.9,0.766667,0.85,0.766667,0.8,0.766667,0.75,0.766667,0.7,0.766667,0.65,0.766667,0.6,0.766667,0.55,0.766667,0.5,0.766667,0.45,0.766667,0.4,0.766667,0.35,0.766667,0.3,0.766667,0.25,0.766667,0.2,0.766667,0.15,0.766667,0.1,0.766667,0.05,0.766667,0,0.766667,1,0.8,0.95,0.8,0.9,0.8,0.85,0.8,0.8,0.8,0.75,0.8,0.7,0.8,0.65,0.8,0.6,0.8,0.55,0.8,0.5,0.8,0.45,0.8,0.4,0.8,0.35,0.8,0.3,0.8,0.25,0.8,0.2,0.8,0.15,0.8,0.1,0.8,0.05,0.8,0,0.8,1,0.833334,0.95,0.833334,0.9,0.833334,0.85,0.833334,0.8,0.833334,0.75,0.833334,0.7,0.833334,0.65,0.833334,0.6,0.833334,0.55,0.833334,0.5,0.833334,0.45,0.833334,0.4,0.833334,0.35,0.833334,0.3,0.833334,0.25,0.833334,0.2,0.833334,0.15,0.833334,0.1,0.833334,0.05,0.833334,0,0.833334,1,0.866667,0.95,0.866667,0.9,0.866667,0.85,0.866667,0.8,0.866667,0.75,0.866667,0.7,0.866667,0.65,0.866667,0.6,0.866667,0.55,0.866667,0.5,0.866667,0.45,0.866667,0.4,0.866667,0.35,0.866667,0.3,0.866667,0.25,0.866667,0.2,0.866667,0.15,0.866667,0.1,0.866667,0.05,0.866667,0,0.866667,1,0.9,0.95,0.9,0.9,0.9,0.85,0.9,0.8,0.9,0.75,0.9,0.7,0.9,0.65,0.9,0.6,0.9,0.55,0.9,0.5,0.9,0.45,0.9,0.4,0.9,0.35,0.9,0.3,0.9,0.25,0.9,0.2,0.9,0.15,0.9,0.1,0.9,0.05,0.9,0,0.9,1,0.933334,0.95,0.933334,0.9,0.933334,0.85,0.933334,0.8,0.933334,0.75,0.933334,0.7,0.933334,0.65,0.933334,0.6,0.933334,0.55,0.933334,0.5,0.933334,0.45,0.933334,0.4,0.933334,0.35,0.933334,0.3,0.933334,0.25,0.933334,0.2,0.933334,0.15,0.933334,0.1,0.933334,0.05,0.933334,0,0.933334,1,0.966667,0.95,0.966667,0.9,0.966667,0.85,0.966667,0.8,0.966667,0.75,0.966667,0.7,0.966667,0.65,0.966667,0.6,0.966667,0.55,0.966667,0.5,0.966667,0.45,0.966667,0.4,0.966667,0.35,0.966667,0.3,0.966667,0.25,0.966667,0.2,0.966667,0.15,0.966667,0.1,0.966667,0.05,0.966667,0,0.966667,1,1,0.95,1,0.9,1,0.85,1,0.8,1,0.75,1,0.7,1,0.65,1,0.6,1,0.55,1,0.5,1,0.45,1,0.4,1,0.35,1,0.3,1,0.25,1,0.2,1,0.15,1,0.1,1,0.05,1,0,1,0.05,1,0,1,0.1,1,0.15,1,0.2,1,0.25,1,0.3,1,0.35,1,0.4,1,0.45,1,0.5,1,0.55,1,0.6,1,0.65,1,0.7,1,0.75,1,0.8,1,0.85,1,0.9,1,0.95,1,1,1,0.033333,0,0.033333,1,0.066667,0,0.066667,1,0.1,0,0.1,1,0.133333,0,0.133333,1,0.166667,0,0.166667,1,0.233333,0,0.233333,1,0.266667,0,0.266667,1,0.333333,0,0.333333,1,0.366667,0,0.366667,1,0.4,0,0.4,1,0.433333,0,0.433333,1,0.466667,0,0.466667,1,0.5,0,0.5,1,0.533333,0,0.533333,1,0.566667,0,0.566667,1,0.633333,0,0.633333,1,0.666667,0,0.666667,1,0.7,0,0.7,1,0.733334,0,0.733334,1,0.766667,0,0.766667,1,0.8,0,0.8,1,0.833334,0,0.833334,1,0.866667,0,0.866667,1,0.9,0,0.9,1,0.933334,0,0.933334,1,0.966667,0,0.966667,1,1,0,1,1]], + "normals": [-0.577349,0.577349,-0.577349,-0.707083,0.707083,0,0,0.999969,0,0,0.707083,-0.707083,0,1,0,0.707083,0.707083,0,0.577349,0.577349,-0.577349,-0.577349,0.577349,0.577349,0,0.707083,0.707083,0.577349,0.577349,0.577349,-0.577349,-0.577349,-0.577349,0,-0.707083,-0.707083,0,-0.999969,0,-0.707083,-0.707083,0,0,-1,0,0.577349,-0.577349,-0.577349,0.707083,-0.707083,0,0,-0.707083,0.707083,-0.577349,-0.577349,0.577349,0.577349,-0.577349,0.577349], + "influencesPerVertex": 2, + "vertices": [-6.9e-05,0.049026,-148.5,10.4999,0.049026,-148.5,20.9999,0.049026,-148.5,31.4999,0.049026,-148.5,41.9999,0.049026,-148.5,52.4999,0.049026,-148.5,62.9999,0.049026,-148.5,73.4999,0.049026,-148.5,83.9999,0.049026,-148.5,94.4999,0.049026,-148.5,105,0.049026,-148.5,115.5,0.049026,-148.5,126,0.049026,-148.5,136.5,0.049026,-148.5,147,0.049026,-148.5,157.5,0.049026,-148.5,168,0.049026,-148.5,178.5,0.049026,-148.5,189,0.049026,-148.5,199.5,0.049026,-148.5,210,0.049026,-148.5,-6.9e-05,0.049026,-138.6,10.4999,0.049026,-138.6,20.9999,0.049026,-138.6,31.4999,0.049026,-138.6,41.9999,0.049026,-138.6,52.4999,0.049026,-138.6,62.9999,0.049026,-138.6,73.4999,0.049026,-138.6,83.9999,0.049026,-138.6,94.4999,0.049026,-138.6,105,0.049026,-138.6,115.5,0.049026,-138.6,126,0.049026,-138.6,136.5,0.049026,-138.6,147,0.049026,-138.6,157.5,0.049026,-138.6,168,0.049026,-138.6,178.5,0.049026,-138.6,189,0.049026,-138.6,199.5,0.049026,-138.6,210,0.049026,-138.6,-6.9e-05,0.049026,-128.7,10.4999,0.049026,-128.7,20.9999,0.049026,-128.7,31.4999,0.049026,-128.7,41.9999,0.049026,-128.7,52.4999,0.049026,-128.7,62.9999,0.049026,-128.7,73.4999,0.049026,-128.7,83.9999,0.049026,-128.7,94.4999,0.049026,-128.7,105,0.049026,-128.7,115.5,0.049026,-128.7,126,0.049026,-128.7,136.5,0.049026,-128.7,147,0.049026,-128.7,157.5,0.049026,-128.7,168,0.049026,-128.7,178.5,0.049026,-128.7,189,0.049026,-128.7,199.5,0.049026,-128.7,210,0.049026,-128.7,-6.9e-05,0.049026,-118.8,10.4999,0.049026,-118.8,20.9999,0.049026,-118.8,31.4999,0.049026,-118.8,41.9999,0.049026,-118.8,52.4999,0.049026,-118.8,62.9999,0.049026,-118.8,73.4999,0.049026,-118.8,83.9999,0.049026,-118.8,94.4999,0.049026,-118.8,105,0.049026,-118.8,115.5,0.049026,-118.8,126,0.049026,-118.8,136.5,0.049026,-118.8,147,0.049026,-118.8,157.5,0.049026,-118.8,168,0.049026,-118.8,178.5,0.049026,-118.8,189,0.049026,-118.8,199.5,0.049026,-118.8,210,0.049026,-118.8,-6.9e-05,0.049026,-108.9,10.4999,0.049026,-108.9,20.9999,0.049026,-108.9,31.4999,0.049026,-108.9,41.9999,0.049026,-108.9,52.4999,0.049026,-108.9,62.9999,0.049026,-108.9,73.4999,0.049026,-108.9,83.9999,0.049026,-108.9,94.4999,0.049026,-108.9,105,0.049026,-108.9,115.5,0.049026,-108.9,126,0.049026,-108.9,136.5,0.049026,-108.9,147,0.049026,-108.9,157.5,0.049026,-108.9,168,0.049026,-108.9,178.5,0.049026,-108.9,189,0.049026,-108.9,199.5,0.049026,-108.9,210,0.049026,-108.9,-6.9e-05,0.049026,-99,10.4999,0.049026,-99,20.9999,0.049026,-99,31.4999,0.049026,-99,41.9999,0.049026,-99,52.4999,0.049026,-99,62.9999,0.049026,-99,73.4999,0.049026,-99,83.9999,0.049026,-99,94.4999,0.049026,-99,105,0.049026,-99,115.5,0.049026,-99,126,0.049026,-99,136.5,0.049026,-99,147,0.049026,-99,157.5,0.049026,-99,168,0.049026,-99,178.5,0.049026,-99,189,0.049026,-99,199.5,0.049026,-99,210,0.049026,-99,-6.9e-05,0.049026,-89.1,10.4999,0.049026,-89.1,20.9999,0.049026,-89.1,31.4999,0.049026,-89.1,41.9999,0.049026,-89.1,52.4999,0.049026,-89.1,62.9999,0.049026,-89.1,73.4999,0.049026,-89.1,83.9999,0.049026,-89.1,94.4999,0.049026,-89.1,105,0.049026,-89.1,115.5,0.049026,-89.1,126,0.049026,-89.1,136.5,0.049026,-89.1,147,0.049026,-89.1,157.5,0.049026,-89.1,168,0.049026,-89.1,178.5,0.049026,-89.1,189,0.049026,-89.1,199.5,0.049026,-89.1,210,0.049026,-89.1,-6.9e-05,0.049026,-79.2,10.4999,0.049026,-79.2,20.9999,0.049026,-79.2,31.4999,0.049026,-79.2,41.9999,0.049026,-79.2,52.4999,0.049026,-79.2,62.9999,0.049026,-79.2,73.4999,0.049026,-79.2,83.9999,0.049026,-79.2,94.4999,0.049026,-79.2,105,0.049026,-79.2,115.5,0.049026,-79.2,126,0.049026,-79.2,136.5,0.049026,-79.2,147,0.049026,-79.2,157.5,0.049026,-79.2,168,0.049026,-79.2,178.5,0.049026,-79.2,189,0.049026,-79.2,199.5,0.049026,-79.2,210,0.049026,-79.2,-6.9e-05,0.049026,-69.3,10.4999,0.049026,-69.3,20.9999,0.049026,-69.3,31.4999,0.049026,-69.3,41.9999,0.049026,-69.3,52.4999,0.049026,-69.3,62.9999,0.049026,-69.3,73.4999,0.049026,-69.3,83.9999,0.049026,-69.3,94.4999,0.049026,-69.3,105,0.049026,-69.3,115.5,0.049026,-69.3,126,0.049026,-69.3,136.5,0.049026,-69.3,147,0.049026,-69.3,157.5,0.049026,-69.3,168,0.049026,-69.3,178.5,0.049026,-69.3,189,0.049026,-69.3,199.5,0.049026,-69.3,210,0.049026,-69.3,-6.9e-05,0.049026,-59.4,10.4999,0.049026,-59.4,20.9999,0.049026,-59.4,31.4999,0.049026,-59.4,41.9999,0.049026,-59.4,52.4999,0.049026,-59.4,62.9999,0.049026,-59.4,73.4999,0.049026,-59.4,83.9999,0.049026,-59.4,94.4999,0.049026,-59.4,105,0.049026,-59.4,115.5,0.049026,-59.4,126,0.049026,-59.4,136.5,0.049026,-59.4,147,0.049026,-59.4,157.5,0.049026,-59.4,168,0.049026,-59.4,178.5,0.049026,-59.4,189,0.049026,-59.4,199.5,0.049026,-59.4,210,0.049026,-59.4,-6.9e-05,0.049026,-49.5,10.4999,0.049026,-49.5,20.9999,0.049026,-49.5,31.4999,0.049026,-49.5,41.9999,0.049026,-49.5,52.4999,0.049026,-49.5,62.9999,0.049026,-49.5,73.4999,0.049026,-49.5,83.9999,0.049026,-49.5,94.4999,0.049026,-49.5,105,0.049026,-49.5,115.5,0.049026,-49.5,126,0.049026,-49.5,136.5,0.049026,-49.5,147,0.049026,-49.5,157.5,0.049026,-49.5,168,0.049026,-49.5,178.5,0.049026,-49.5,189,0.049026,-49.5,199.5,0.049026,-49.5,210,0.049026,-49.5,-6.9e-05,0.049026,-39.6,10.4999,0.049026,-39.6,20.9999,0.049026,-39.6,31.4999,0.049026,-39.6,41.9999,0.049026,-39.6,52.4999,0.049026,-39.6,62.9999,0.049026,-39.6,73.4999,0.049026,-39.6,83.9999,0.049026,-39.6,94.4999,0.049026,-39.6,105,0.049026,-39.6,115.5,0.049026,-39.6,126,0.049026,-39.6,136.5,0.049026,-39.6,147,0.049026,-39.6,157.5,0.049026,-39.6,168,0.049026,-39.6,178.5,0.049026,-39.6,189,0.049026,-39.6,199.5,0.049026,-39.6,210,0.049026,-39.6,-6.9e-05,0.049026,-29.7,10.4999,0.049026,-29.7,20.9999,0.049026,-29.7,31.4999,0.049026,-29.7,41.9999,0.049026,-29.7,52.4999,0.049026,-29.7,62.9999,0.049026,-29.7,73.4999,0.049026,-29.7,83.9999,0.049026,-29.7,94.4999,0.049026,-29.7,105,0.049026,-29.7,115.5,0.049026,-29.7,126,0.049026,-29.7,136.5,0.049026,-29.7,147,0.049026,-29.7,157.5,0.049026,-29.7,168,0.049026,-29.7,178.5,0.049026,-29.7,189,0.049026,-29.7,199.5,0.049026,-29.7,210,0.049026,-29.7,-6.9e-05,0.049026,-19.8,10.4999,0.049026,-19.8,20.9999,0.049026,-19.8,31.4999,0.049026,-19.8,41.9999,0.049026,-19.8,52.4999,0.049026,-19.8,62.9999,0.049026,-19.8,73.4999,0.049026,-19.8,83.9999,0.049026,-19.8,94.4999,0.049026,-19.8,105,0.049026,-19.8,115.5,0.049026,-19.8,126,0.049026,-19.8,136.5,0.049026,-19.8,147,0.049026,-19.8,157.5,0.049026,-19.8,168,0.049026,-19.8,178.5,0.049026,-19.8,189,0.049026,-19.8,199.5,0.049026,-19.8,210,0.049026,-19.8,-6.9e-05,0.049026,-9.9,10.4999,0.049026,-9.9,20.9999,0.049026,-9.9,31.4999,0.049026,-9.9,41.9999,0.049026,-9.9,52.4999,0.049026,-9.9,62.9999,0.049026,-9.9,73.4999,0.049026,-9.9,83.9999,0.049026,-9.9,94.4999,0.049026,-9.9,105,0.049026,-9.9,115.5,0.049026,-9.9,126,0.049026,-9.9,136.5,0.049026,-9.9,147,0.049026,-9.9,157.5,0.049026,-9.9,168,0.049026,-9.9,178.5,0.049026,-9.9,189,0.049026,-9.9,199.5,0.049026,-9.9,210,0.049026,-9.9,-6.9e-05,0.049026,-0,10.4999,0.049026,-0,20.9999,0.049026,-0,31.4999,0.049026,-0,41.9999,0.049026,-0,52.4999,0.049026,-0,62.9999,0.049026,-0,73.4999,0.049026,-0,83.9999,0.049026,-0,94.4999,0.049026,-0,105,0.049026,-0,115.5,0.049026,-0,126,0.049026,-0,136.5,0.049026,-0,147,0.049026,-0,157.5,0.049026,-0,168,0.049026,-0,178.5,0.049026,-0,189,0.049026,-0,199.5,0.049026,-0,210,0.049026,-0,-6.9e-05,0.049026,9.9,10.4999,0.049026,9.9,20.9999,0.049026,9.9,31.4999,0.049026,9.9,41.9999,0.049026,9.9,52.4999,0.049026,9.9,62.9999,0.049026,9.9,73.4999,0.049026,9.9,83.9999,0.049026,9.9,94.4999,0.049026,9.9,105,0.049026,9.9,115.5,0.049026,9.9,126,0.049026,9.9,136.5,0.049026,9.9,147,0.049026,9.9,157.5,0.049026,9.9,168,0.049026,9.9,178.5,0.049026,9.9,189,0.049026,9.9,199.5,0.049026,9.9,210,0.049026,9.9,-6.9e-05,0.049026,19.8,10.4999,0.049026,19.8,20.9999,0.049026,19.8,31.4999,0.049026,19.8,41.9999,0.049026,19.8,52.4999,0.049026,19.8,62.9999,0.049026,19.8,73.4999,0.049026,19.8,83.9999,0.049026,19.8,94.4999,0.049026,19.8,105,0.049026,19.8,115.5,0.049026,19.8,126,0.049026,19.8,136.5,0.049026,19.8,147,0.049026,19.8,157.5,0.049026,19.8,168,0.049026,19.8,178.5,0.049026,19.8,189,0.049026,19.8,199.5,0.049026,19.8,210,0.049026,19.8,-6.9e-05,0.049026,29.7,10.4999,0.049026,29.7,20.9999,0.049026,29.7,31.4999,0.049026,29.7,41.9999,0.049026,29.7,52.4999,0.049026,29.7,62.9999,0.049026,29.7,73.4999,0.049026,29.7,83.9999,0.049026,29.7,94.4999,0.049026,29.7,105,0.049026,29.7,115.5,0.049026,29.7,126,0.049026,29.7,136.5,0.049026,29.7,147,0.049026,29.7,157.5,0.049026,29.7,168,0.049026,29.7,178.5,0.049026,29.7,189,0.049026,29.7,199.5,0.049026,29.7,210,0.049026,29.7,-6.9e-05,0.049026,39.6,10.4999,0.049026,39.6,20.9999,0.049026,39.6,31.4999,0.049026,39.6,41.9999,0.049026,39.6,52.4999,0.049026,39.6,62.9999,0.049026,39.6,73.4999,0.049026,39.6,83.9999,0.049026,39.6,94.4999,0.049026,39.6,105,0.049026,39.6,115.5,0.049026,39.6,126,0.049026,39.6,136.5,0.049026,39.6,147,0.049026,39.6,157.5,0.049026,39.6,168,0.049026,39.6,178.5,0.049026,39.6,189,0.049026,39.6,199.5,0.049026,39.6,210,0.049026,39.6,-6.9e-05,0.049026,49.5,10.4999,0.049026,49.5,20.9999,0.049026,49.5,31.4999,0.049026,49.5,41.9999,0.049026,49.5,52.4999,0.049026,49.5,62.9999,0.049026,49.5,73.4999,0.049026,49.5,83.9999,0.049026,49.5,94.4999,0.049026,49.5,105,0.049026,49.5,115.5,0.049026,49.5,126,0.049026,49.5,136.5,0.049026,49.5,147,0.049026,49.5,157.5,0.049026,49.5,168,0.049026,49.5,178.5,0.049026,49.5,189,0.049026,49.5,199.5,0.049026,49.5,210,0.049026,49.5,-6.9e-05,0.049026,59.4,10.4999,0.049026,59.4,20.9999,0.049026,59.4,31.4999,0.049026,59.4,41.9999,0.049026,59.4,52.4999,0.049026,59.4,62.9999,0.049026,59.4,73.4999,0.049026,59.4,83.9999,0.049026,59.4,94.4999,0.049026,59.4,105,0.049026,59.4,115.5,0.049026,59.4,126,0.049026,59.4,136.5,0.049026,59.4,147,0.049026,59.4,157.5,0.049026,59.4,168,0.049026,59.4,178.5,0.049026,59.4,189,0.049026,59.4,199.5,0.049026,59.4,210,0.049026,59.4,-6.9e-05,0.049026,69.3,10.4999,0.049026,69.3,20.9999,0.049026,69.3,31.4999,0.049026,69.3,41.9999,0.049026,69.3,52.4999,0.049026,69.3,62.9999,0.049026,69.3,73.4999,0.049026,69.3,83.9999,0.049026,69.3,94.4999,0.049026,69.3,105,0.049026,69.3,115.5,0.049026,69.3,126,0.049026,69.3,136.5,0.049026,69.3,147,0.049026,69.3,157.5,0.049026,69.3,168,0.049026,69.3,178.5,0.049026,69.3,189,0.049026,69.3,199.5,0.049026,69.3,210,0.049026,69.3,-6.9e-05,0.049026,79.2,10.4999,0.049026,79.2,20.9999,0.049026,79.2,31.4999,0.049026,79.2,41.9999,0.049026,79.2,52.4999,0.049026,79.2,62.9999,0.049026,79.2,73.4999,0.049026,79.2,83.9999,0.049026,79.2,94.4999,0.049026,79.2,105,0.049026,79.2,115.5,0.049026,79.2,126,0.049026,79.2,136.5,0.049026,79.2,147,0.049026,79.2,157.5,0.049026,79.2,168,0.049026,79.2,178.5,0.049026,79.2,189,0.049026,79.2,199.5,0.049026,79.2,210,0.049026,79.2,-6.9e-05,0.049026,89.1,10.4999,0.049026,89.1,20.9999,0.049026,89.1,31.4999,0.049026,89.1,41.9999,0.049026,89.1,52.4999,0.049026,89.1,62.9999,0.049026,89.1,73.4999,0.049026,89.1,83.9999,0.049026,89.1,94.4999,0.049026,89.1,105,0.049026,89.1,115.5,0.049026,89.1,126,0.049026,89.1,136.5,0.049026,89.1,147,0.049026,89.1,157.5,0.049026,89.1,168,0.049026,89.1,178.5,0.049026,89.1,189,0.049026,89.1,199.5,0.049026,89.1,210,0.049026,89.1,-6.9e-05,0.049026,99,10.4999,0.049026,99,20.9999,0.049026,99,31.4999,0.049026,99,41.9999,0.049026,99,52.4999,0.049026,99,62.9999,0.049026,99,73.4999,0.049026,99,83.9999,0.049026,99,94.4999,0.049026,99,105,0.049026,99,115.5,0.049026,99,126,0.049026,99,136.5,0.049026,99,147,0.049026,99,157.5,0.049026,99,168,0.049026,99,178.5,0.049026,99,189,0.049026,99,199.5,0.049026,99,210,0.049026,99,-6.9e-05,0.049026,108.9,10.4999,0.049026,108.9,20.9999,0.049026,108.9,31.4999,0.049026,108.9,41.9999,0.049026,108.9,52.4999,0.049026,108.9,62.9999,0.049026,108.9,73.4999,0.049026,108.9,83.9999,0.049026,108.9,94.4999,0.049026,108.9,105,0.049026,108.9,115.5,0.049026,108.9,126,0.049026,108.9,136.5,0.049026,108.9,147,0.049026,108.9,157.5,0.049026,108.9,168,0.049026,108.9,178.5,0.049026,108.9,189,0.049026,108.9,199.5,0.049026,108.9,210,0.049026,108.9,-6.9e-05,0.049026,118.8,10.4999,0.049026,118.8,20.9999,0.049026,118.8,31.4999,0.049026,118.8,41.9999,0.049026,118.8,52.4999,0.049026,118.8,62.9999,0.049026,118.8,73.4999,0.049026,118.8,83.9999,0.049026,118.8,94.4999,0.049026,118.8,105,0.049026,118.8,115.5,0.049026,118.8,126,0.049026,118.8,136.5,0.049026,118.8,147,0.049026,118.8,157.5,0.049026,118.8,168,0.049026,118.8,178.5,0.049026,118.8,189,0.049026,118.8,199.5,0.049026,118.8,210,0.049026,118.8,-6.9e-05,0.049026,128.7,10.4999,0.049026,128.7,20.9999,0.049026,128.7,31.4999,0.049026,128.7,41.9999,0.049026,128.7,52.4999,0.049026,128.7,62.9999,0.049026,128.7,73.4999,0.049026,128.7,83.9999,0.049026,128.7,94.4999,0.049026,128.7,105,0.049026,128.7,115.5,0.049026,128.7,126,0.049026,128.7,136.5,0.049026,128.7,147,0.049026,128.7,157.5,0.049026,128.7,168,0.049026,128.7,178.5,0.049026,128.7,189,0.049026,128.7,199.5,0.049026,128.7,210,0.049026,128.7,-6.9e-05,0.049026,138.6,10.4999,0.049026,138.6,20.9999,0.049026,138.6,31.4999,0.049026,138.6,41.9999,0.049026,138.6,52.4999,0.049026,138.6,62.9999,0.049026,138.6,73.4999,0.049026,138.6,83.9999,0.049026,138.6,94.4999,0.049026,138.6,105,0.049026,138.6,115.5,0.049026,138.6,126,0.049026,138.6,136.5,0.049026,138.6,147,0.049026,138.6,157.5,0.049026,138.6,168,0.049026,138.6,178.5,0.049026,138.6,189,0.049026,138.6,199.5,0.049026,138.6,210,0.049026,138.6,-6.9e-05,0.049026,148.5,10.4999,0.049026,148.5,20.9999,0.049026,148.5,31.4999,0.049026,148.5,41.9999,0.049026,148.5,52.4999,0.049026,148.5,62.9999,0.049026,148.5,73.4999,0.049026,148.5,83.9999,0.049026,148.5,94.4999,0.049026,148.5,105,0.049026,148.5,115.5,0.049026,148.5,126,0.049026,148.5,136.5,0.049026,148.5,147,0.049026,148.5,157.5,0.049026,148.5,168,0.049026,148.5,178.5,0.049026,148.5,189,0.049026,148.5,199.5,0.049026,148.5,210,0.049026,148.5,-6.9e-05,-0.050974,-148.5,10.4999,-0.050974,-148.5,20.9999,-0.050974,-148.5,31.4999,-0.050974,-148.5,41.9999,-0.050974,-148.5,52.4999,-0.050974,-148.5,62.9999,-0.050974,-148.5,73.4999,-0.050974,-148.5,83.9999,-0.050974,-148.5,94.4999,-0.050974,-148.5,105,-0.050974,-148.5,115.5,-0.050974,-148.5,126,-0.050974,-148.5,136.5,-0.050974,-148.5,147,-0.050974,-148.5,157.5,-0.050974,-148.5,168,-0.050974,-148.5,178.5,-0.050974,-148.5,189,-0.050974,-148.5,199.5,-0.050974,-148.5,210,-0.050974,-148.5,-6.9e-05,-0.050974,-138.6,10.4999,-0.050974,-138.6,20.9999,-0.050974,-138.6,31.4999,-0.050974,-138.6,41.9999,-0.050974,-138.6,52.4999,-0.050974,-138.6,62.9999,-0.050974,-138.6,73.4999,-0.050974,-138.6,83.9999,-0.050974,-138.6,94.4999,-0.050974,-138.6,105,-0.050974,-138.6,115.5,-0.050974,-138.6,126,-0.050974,-138.6,136.5,-0.050974,-138.6,147,-0.050974,-138.6,157.5,-0.050974,-138.6,168,-0.050974,-138.6,178.5,-0.050974,-138.6,189,-0.050974,-138.6,199.5,-0.050974,-138.6,210,-0.050974,-138.6,-6.9e-05,-0.050974,-128.7,10.4999,-0.050974,-128.7,20.9999,-0.050974,-128.7,31.4999,-0.050974,-128.7,41.9999,-0.050974,-128.7,52.4999,-0.050974,-128.7,62.9999,-0.050974,-128.7,73.4999,-0.050974,-128.7,83.9999,-0.050974,-128.7,94.4999,-0.050974,-128.7,105,-0.050974,-128.7,115.5,-0.050974,-128.7,126,-0.050974,-128.7,136.5,-0.050974,-128.7,147,-0.050974,-128.7,157.5,-0.050974,-128.7,168,-0.050974,-128.7,178.5,-0.050974,-128.7,189,-0.050974,-128.7,199.5,-0.050974,-128.7,210,-0.050974,-128.7,-6.9e-05,-0.050974,-118.8,10.4999,-0.050974,-118.8,20.9999,-0.050974,-118.8,31.4999,-0.050974,-118.8,41.9999,-0.050974,-118.8,52.4999,-0.050974,-118.8,62.9999,-0.050974,-118.8,73.4999,-0.050974,-118.8,83.9999,-0.050974,-118.8,94.4999,-0.050974,-118.8,105,-0.050974,-118.8,115.5,-0.050974,-118.8,126,-0.050974,-118.8,136.5,-0.050974,-118.8,147,-0.050974,-118.8,157.5,-0.050974,-118.8,168,-0.050974,-118.8,178.5,-0.050974,-118.8,189,-0.050974,-118.8,199.5,-0.050974,-118.8,210,-0.050974,-118.8,-6.9e-05,-0.050974,-108.9,10.4999,-0.050974,-108.9,20.9999,-0.050974,-108.9,31.4999,-0.050974,-108.9,41.9999,-0.050974,-108.9,52.4999,-0.050974,-108.9,62.9999,-0.050974,-108.9,73.4999,-0.050974,-108.9,83.9999,-0.050974,-108.9,94.4999,-0.050974,-108.9,105,-0.050974,-108.9,115.5,-0.050974,-108.9,126,-0.050974,-108.9,136.5,-0.050974,-108.9,147,-0.050974,-108.9,157.5,-0.050974,-108.9,168,-0.050974,-108.9,178.5,-0.050974,-108.9,189,-0.050974,-108.9,199.5,-0.050974,-108.9,210,-0.050974,-108.9,-6.9e-05,-0.050974,-99,10.4999,-0.050974,-99,20.9999,-0.050974,-99,31.4999,-0.050974,-99,41.9999,-0.050974,-99,52.4999,-0.050974,-99,62.9999,-0.050974,-99,73.4999,-0.050974,-99,83.9999,-0.050974,-99,94.4999,-0.050974,-99,105,-0.050974,-99,115.5,-0.050974,-99,126,-0.050974,-99,136.5,-0.050974,-99,147,-0.050974,-99,157.5,-0.050974,-99,168,-0.050974,-99,178.5,-0.050974,-99,189,-0.050974,-99,199.5,-0.050974,-99,210,-0.050974,-99,-6.9e-05,-0.050974,-89.1,10.4999,-0.050974,-89.1,20.9999,-0.050974,-89.1,31.4999,-0.050974,-89.1,41.9999,-0.050974,-89.1,52.4999,-0.050974,-89.1,62.9999,-0.050974,-89.1,73.4999,-0.050974,-89.1,83.9999,-0.050974,-89.1,94.4999,-0.050974,-89.1,105,-0.050974,-89.1,115.5,-0.050974,-89.1,126,-0.050974,-89.1,136.5,-0.050974,-89.1,147,-0.050974,-89.1,157.5,-0.050974,-89.1,168,-0.050974,-89.1,178.5,-0.050974,-89.1,189,-0.050974,-89.1,199.5,-0.050974,-89.1,210,-0.050974,-89.1,-6.9e-05,-0.050974,-79.2,10.4999,-0.050974,-79.2,20.9999,-0.050974,-79.2,31.4999,-0.050974,-79.2,41.9999,-0.050974,-79.2,52.4999,-0.050974,-79.2,62.9999,-0.050974,-79.2,73.4999,-0.050974,-79.2,83.9999,-0.050974,-79.2,94.4999,-0.050974,-79.2,105,-0.050974,-79.2,115.5,-0.050974,-79.2,126,-0.050974,-79.2,136.5,-0.050974,-79.2,147,-0.050974,-79.2,157.5,-0.050974,-79.2,168,-0.050974,-79.2,178.5,-0.050974,-79.2,189,-0.050974,-79.2,199.5,-0.050974,-79.2,210,-0.050974,-79.2,-6.9e-05,-0.050974,-69.3,10.4999,-0.050974,-69.3,20.9999,-0.050974,-69.3,31.4999,-0.050974,-69.3,41.9999,-0.050974,-69.3,52.4999,-0.050974,-69.3,62.9999,-0.050974,-69.3,73.4999,-0.050974,-69.3,83.9999,-0.050974,-69.3,94.4999,-0.050974,-69.3,105,-0.050974,-69.3,115.5,-0.050974,-69.3,126,-0.050974,-69.3,136.5,-0.050974,-69.3,147,-0.050974,-69.3,157.5,-0.050974,-69.3,168,-0.050974,-69.3,178.5,-0.050974,-69.3,189,-0.050974,-69.3,199.5,-0.050974,-69.3,210,-0.050974,-69.3,-6.9e-05,-0.050974,-59.4,10.4999,-0.050974,-59.4,20.9999,-0.050974,-59.4,31.4999,-0.050974,-59.4,41.9999,-0.050974,-59.4,52.4999,-0.050974,-59.4,62.9999,-0.050974,-59.4,73.4999,-0.050974,-59.4,83.9999,-0.050974,-59.4,94.4999,-0.050974,-59.4,105,-0.050974,-59.4,115.5,-0.050974,-59.4,126,-0.050974,-59.4,136.5,-0.050974,-59.4,147,-0.050974,-59.4,157.5,-0.050974,-59.4,168,-0.050974,-59.4,178.5,-0.050974,-59.4,189,-0.050974,-59.4,199.5,-0.050974,-59.4,210,-0.050974,-59.4,-6.9e-05,-0.050974,-49.5,10.4999,-0.050974,-49.5,20.9999,-0.050974,-49.5,31.4999,-0.050974,-49.5,41.9999,-0.050974,-49.5,52.4999,-0.050974,-49.5,62.9999,-0.050974,-49.5,73.4999,-0.050974,-49.5,83.9999,-0.050974,-49.5,94.4999,-0.050974,-49.5,105,-0.050974,-49.5,115.5,-0.050974,-49.5,126,-0.050974,-49.5,136.5,-0.050974,-49.5,147,-0.050974,-49.5,157.5,-0.050974,-49.5,168,-0.050974,-49.5,178.5,-0.050974,-49.5,189,-0.050974,-49.5,199.5,-0.050974,-49.5,210,-0.050974,-49.5,-6.9e-05,-0.050974,-39.6,10.4999,-0.050974,-39.6,20.9999,-0.050974,-39.6,31.4999,-0.050974,-39.6,41.9999,-0.050974,-39.6,52.4999,-0.050974,-39.6,62.9999,-0.050974,-39.6,73.4999,-0.050974,-39.6,83.9999,-0.050974,-39.6,94.4999,-0.050974,-39.6,105,-0.050974,-39.6,115.5,-0.050974,-39.6,126,-0.050974,-39.6,136.5,-0.050974,-39.6,147,-0.050974,-39.6,157.5,-0.050974,-39.6,168,-0.050974,-39.6,178.5,-0.050974,-39.6,189,-0.050974,-39.6,199.5,-0.050974,-39.6,210,-0.050974,-39.6,-6.9e-05,-0.050974,-29.7,10.4999,-0.050974,-29.7,20.9999,-0.050974,-29.7,31.4999,-0.050974,-29.7,41.9999,-0.050974,-29.7,52.4999,-0.050974,-29.7,62.9999,-0.050974,-29.7,73.4999,-0.050974,-29.7,83.9999,-0.050974,-29.7,94.4999,-0.050974,-29.7,105,-0.050974,-29.7,115.5,-0.050974,-29.7,126,-0.050974,-29.7,136.5,-0.050974,-29.7,147,-0.050974,-29.7,157.5,-0.050974,-29.7,168,-0.050974,-29.7,178.5,-0.050974,-29.7,189,-0.050974,-29.7,199.5,-0.050974,-29.7,210,-0.050974,-29.7,-6.9e-05,-0.050974,-19.8,10.4999,-0.050974,-19.8,20.9999,-0.050974,-19.8,31.4999,-0.050974,-19.8,41.9999,-0.050974,-19.8,52.4999,-0.050974,-19.8,62.9999,-0.050974,-19.8,73.4999,-0.050974,-19.8,83.9999,-0.050974,-19.8,94.4999,-0.050974,-19.8,105,-0.050974,-19.8,115.5,-0.050974,-19.8,126,-0.050974,-19.8,136.5,-0.050974,-19.8,147,-0.050974,-19.8,157.5,-0.050974,-19.8,168,-0.050974,-19.8,178.5,-0.050974,-19.8,189,-0.050974,-19.8,199.5,-0.050974,-19.8,210,-0.050974,-19.8,-6.9e-05,-0.050974,-9.9,10.4999,-0.050974,-9.9,20.9999,-0.050974,-9.9,31.4999,-0.050974,-9.9,41.9999,-0.050974,-9.9,52.4999,-0.050974,-9.9,62.9999,-0.050974,-9.9,73.4999,-0.050974,-9.9,83.9999,-0.050974,-9.9,94.4999,-0.050974,-9.9,105,-0.050974,-9.9,115.5,-0.050974,-9.9,126,-0.050974,-9.9,136.5,-0.050974,-9.9,147,-0.050974,-9.9,157.5,-0.050974,-9.9,168,-0.050974,-9.9,178.5,-0.050974,-9.9,189,-0.050974,-9.9,199.5,-0.050974,-9.9,210,-0.050974,-9.9,-6.9e-05,-0.050974,-0,10.4999,-0.050974,-0,20.9999,-0.050974,-0,31.4999,-0.050974,-0,41.9999,-0.050974,-0,52.4999,-0.050974,-0,62.9999,-0.050974,-0,73.4999,-0.050974,-0,83.9999,-0.050974,-0,94.4999,-0.050974,-0,105,-0.050974,-0,115.5,-0.050974,-0,126,-0.050974,-0,136.5,-0.050974,-0,147,-0.050974,-0,157.5,-0.050974,-0,168,-0.050974,-0,178.5,-0.050974,-0,189,-0.050974,-0,199.5,-0.050974,-0,210,-0.050974,-0,-6.9e-05,-0.050974,9.9,10.4999,-0.050974,9.9,20.9999,-0.050974,9.9,31.4999,-0.050974,9.9,41.9999,-0.050974,9.9,52.4999,-0.050974,9.9,62.9999,-0.050974,9.9,73.4999,-0.050974,9.9,83.9999,-0.050974,9.9,94.4999,-0.050974,9.9,105,-0.050974,9.9,115.5,-0.050974,9.9,126,-0.050974,9.9,136.5,-0.050974,9.9,147,-0.050974,9.9,157.5,-0.050974,9.9,168,-0.050974,9.9,178.5,-0.050974,9.9,189,-0.050974,9.9,199.5,-0.050974,9.9,210,-0.050974,9.9,-6.9e-05,-0.050974,19.8,10.4999,-0.050974,19.8,20.9999,-0.050974,19.8,31.4999,-0.050974,19.8,41.9999,-0.050974,19.8,52.4999,-0.050974,19.8,62.9999,-0.050974,19.8,73.4999,-0.050974,19.8,83.9999,-0.050974,19.8,94.4999,-0.050974,19.8,105,-0.050974,19.8,115.5,-0.050974,19.8,126,-0.050974,19.8,136.5,-0.050974,19.8,147,-0.050974,19.8,157.5,-0.050974,19.8,168,-0.050974,19.8,178.5,-0.050974,19.8,189,-0.050974,19.8,199.5,-0.050974,19.8,210,-0.050974,19.8,-6.9e-05,-0.050974,29.7,10.4999,-0.050974,29.7,20.9999,-0.050974,29.7,31.4999,-0.050974,29.7,41.9999,-0.050974,29.7,52.4999,-0.050974,29.7,62.9999,-0.050974,29.7,73.4999,-0.050974,29.7,83.9999,-0.050974,29.7,94.4999,-0.050974,29.7,105,-0.050974,29.7,115.5,-0.050974,29.7,126,-0.050974,29.7,136.5,-0.050974,29.7,147,-0.050974,29.7,157.5,-0.050974,29.7,168,-0.050974,29.7,178.5,-0.050974,29.7,189,-0.050974,29.7,199.5,-0.050974,29.7,210,-0.050974,29.7,-6.9e-05,-0.050974,39.6,10.4999,-0.050974,39.6,20.9999,-0.050974,39.6,31.4999,-0.050974,39.6,41.9999,-0.050974,39.6,52.4999,-0.050974,39.6,62.9999,-0.050974,39.6,73.4999,-0.050974,39.6,83.9999,-0.050974,39.6,94.4999,-0.050974,39.6,105,-0.050974,39.6,115.5,-0.050974,39.6,126,-0.050974,39.6,136.5,-0.050974,39.6,147,-0.050974,39.6,157.5,-0.050974,39.6,168,-0.050974,39.6,178.5,-0.050974,39.6,189,-0.050974,39.6,199.5,-0.050974,39.6,210,-0.050974,39.6,-6.9e-05,-0.050974,49.5,10.4999,-0.050974,49.5,20.9999,-0.050974,49.5,31.4999,-0.050974,49.5,41.9999,-0.050974,49.5,52.4999,-0.050974,49.5,62.9999,-0.050974,49.5,73.4999,-0.050974,49.5,83.9999,-0.050974,49.5,94.4999,-0.050974,49.5,105,-0.050974,49.5,115.5,-0.050974,49.5,126,-0.050974,49.5,136.5,-0.050974,49.5,147,-0.050974,49.5,157.5,-0.050974,49.5,168,-0.050974,49.5,178.5,-0.050974,49.5,189,-0.050974,49.5,199.5,-0.050974,49.5,210,-0.050974,49.5,-6.9e-05,-0.050974,59.4,10.4999,-0.050974,59.4,20.9999,-0.050974,59.4,31.4999,-0.050974,59.4,41.9999,-0.050974,59.4,52.4999,-0.050974,59.4,62.9999,-0.050974,59.4,73.4999,-0.050974,59.4,83.9999,-0.050974,59.4,94.4999,-0.050974,59.4,105,-0.050974,59.4,115.5,-0.050974,59.4,126,-0.050974,59.4,136.5,-0.050974,59.4,147,-0.050974,59.4,157.5,-0.050974,59.4,168,-0.050974,59.4,178.5,-0.050974,59.4,189,-0.050974,59.4,199.5,-0.050974,59.4,210,-0.050974,59.4,-6.9e-05,-0.050974,69.3,10.4999,-0.050974,69.3,20.9999,-0.050974,69.3,31.4999,-0.050974,69.3,41.9999,-0.050974,69.3,52.4999,-0.050974,69.3,62.9999,-0.050974,69.3,73.4999,-0.050974,69.3,83.9999,-0.050974,69.3,94.4999,-0.050974,69.3,105,-0.050974,69.3,115.5,-0.050974,69.3,126,-0.050974,69.3,136.5,-0.050974,69.3,147,-0.050974,69.3,157.5,-0.050974,69.3,168,-0.050974,69.3,178.5,-0.050974,69.3,189,-0.050974,69.3,199.5,-0.050974,69.3,210,-0.050974,69.3,-6.9e-05,-0.050974,79.2,10.4999,-0.050974,79.2,20.9999,-0.050974,79.2,31.4999,-0.050974,79.2,41.9999,-0.050974,79.2,52.4999,-0.050974,79.2,62.9999,-0.050974,79.2,73.4999,-0.050974,79.2,83.9999,-0.050974,79.2,94.4999,-0.050974,79.2,105,-0.050974,79.2,115.5,-0.050974,79.2,126,-0.050974,79.2,136.5,-0.050974,79.2,147,-0.050974,79.2,157.5,-0.050974,79.2,168,-0.050974,79.2,178.5,-0.050974,79.2,189,-0.050974,79.2,199.5,-0.050974,79.2,210,-0.050974,79.2,-6.9e-05,-0.050974,89.1,10.4999,-0.050974,89.1,20.9999,-0.050974,89.1,31.4999,-0.050974,89.1,41.9999,-0.050974,89.1,52.4999,-0.050974,89.1,62.9999,-0.050974,89.1,73.4999,-0.050974,89.1,83.9999,-0.050974,89.1,94.4999,-0.050974,89.1,105,-0.050974,89.1,115.5,-0.050974,89.1,126,-0.050974,89.1,136.5,-0.050974,89.1,147,-0.050974,89.1,157.5,-0.050974,89.1,168,-0.050974,89.1,178.5,-0.050974,89.1,189,-0.050974,89.1,199.5,-0.050974,89.1,210,-0.050974,89.1,-6.9e-05,-0.050974,99,10.4999,-0.050974,99,20.9999,-0.050974,99,31.4999,-0.050974,99,41.9999,-0.050974,99,52.4999,-0.050974,99,62.9999,-0.050974,99,73.4999,-0.050974,99,83.9999,-0.050974,99,94.4999,-0.050974,99,105,-0.050974,99,115.5,-0.050974,99,126,-0.050974,99,136.5,-0.050974,99,147,-0.050974,99,157.5,-0.050974,99,168,-0.050974,99,178.5,-0.050974,99,189,-0.050974,99,199.5,-0.050974,99,210,-0.050974,99,-6.9e-05,-0.050974,108.9,10.4999,-0.050974,108.9,20.9999,-0.050974,108.9,31.4999,-0.050974,108.9,41.9999,-0.050974,108.9,52.4999,-0.050974,108.9,62.9999,-0.050974,108.9,73.4999,-0.050974,108.9,83.9999,-0.050974,108.9,94.4999,-0.050974,108.9,105,-0.050974,108.9,115.5,-0.050974,108.9,126,-0.050974,108.9,136.5,-0.050974,108.9,147,-0.050974,108.9,157.5,-0.050974,108.9,168,-0.050974,108.9,178.5,-0.050974,108.9,189,-0.050974,108.9,199.5,-0.050974,108.9,210,-0.050974,108.9,-6.9e-05,-0.050974,118.8,10.4999,-0.050974,118.8,20.9999,-0.050974,118.8,31.4999,-0.050974,118.8,41.9999,-0.050974,118.8,52.4999,-0.050974,118.8,62.9999,-0.050974,118.8,73.4999,-0.050974,118.8,83.9999,-0.050974,118.8,94.4999,-0.050974,118.8,105,-0.050974,118.8,115.5,-0.050974,118.8,126,-0.050974,118.8,136.5,-0.050974,118.8,147,-0.050974,118.8,157.5,-0.050974,118.8,168,-0.050974,118.8,178.5,-0.050974,118.8,189,-0.050974,118.8,199.5,-0.050974,118.8,210,-0.050974,118.8,-6.9e-05,-0.050974,128.7,10.4999,-0.050974,128.7,20.9999,-0.050974,128.7,31.4999,-0.050974,128.7,41.9999,-0.050974,128.7,52.4999,-0.050974,128.7,62.9999,-0.050974,128.7,73.4999,-0.050974,128.7,83.9999,-0.050974,128.7,94.4999,-0.050974,128.7,105,-0.050974,128.7,115.5,-0.050974,128.7,126,-0.050974,128.7,136.5,-0.050974,128.7,147,-0.050974,128.7,157.5,-0.050974,128.7,168,-0.050974,128.7,178.5,-0.050974,128.7,189,-0.050974,128.7,199.5,-0.050974,128.7,210,-0.050974,128.7,-6.9e-05,-0.050974,138.6,10.4999,-0.050974,138.6,20.9999,-0.050974,138.6,31.4999,-0.050974,138.6,41.9999,-0.050974,138.6,52.4999,-0.050974,138.6,62.9999,-0.050974,138.6,73.4999,-0.050974,138.6,83.9999,-0.050974,138.6,94.4999,-0.050974,138.6,105,-0.050974,138.6,115.5,-0.050974,138.6,126,-0.050974,138.6,136.5,-0.050974,138.6,147,-0.050974,138.6,157.5,-0.050974,138.6,168,-0.050974,138.6,178.5,-0.050974,138.6,189,-0.050974,138.6,199.5,-0.050974,138.6,210,-0.050974,138.6,-6.9e-05,-0.050974,148.5,10.4999,-0.050974,148.5,20.9999,-0.050974,148.5,31.4999,-0.050974,148.5,41.9999,-0.050974,148.5,52.4999,-0.050974,148.5,62.9999,-0.050974,148.5,73.4999,-0.050974,148.5,83.9999,-0.050974,148.5,94.4999,-0.050974,148.5,105,-0.050974,148.5,115.5,-0.050974,148.5,126,-0.050974,148.5,136.5,-0.050974,148.5,147,-0.050974,148.5,157.5,-0.050974,148.5,168,-0.050974,148.5,178.5,-0.050974,148.5,189,-0.050974,148.5,199.5,-0.050974,148.5,210,-0.050974,148.5] + }, + "uuid": "9CA3EA4A-05C8-378C-B2E8-75131F7D1E82" + }], + "metadata": { + "generator": "io_three", + "version": 4.4, + "type": "Object" + }, + "images": [{ + "name": "fluidbook-4pages 2.jpg", + "url": "fluidbook-4pages 2.jpg", + "uuid": "E5240A01-C476-31DF-9AAE-3177628E6A50" + },{ + "name": "fluidbook-4pages 3.jpg", + "url": "fluidbook-4pages 3.jpg", + "uuid": "F4001E31-2FB4-31A7-B6AA-2712B355E831" + }], + "animations": [{ + "fps": 29, + "name": "default", + "tracks": [{ + "name": "004.morphTargetInfluences[ffd]", + "keys": [{ + "value": 0, + "time": 0 + },{ + "value": 0.8, + "time": 30 + },{ + "value": 0, + "time": 100 + }], + "type": "number" + },{ + "name": "CameraPreset.position", + "keys": [{ + "value": [0.069363,-0.000541,0.054776], + "time": 0 + },{ + "value": [0.069363,-0.000541,0.054776], + "time": 120 + },{ + "value": [0.069363,-0.000541,0.054776], + "time": 240 + },{ + "value": [0.069363,-0.000541,0.054776], + "time": 360 + }], + "type": "vector3" + },{ + "name": "CameraPreset.scale", + "keys": [{ + "value": [1,1,1], + "time": 0 + },{ + "value": [1,1,1], + "time": 120 + },{ + "value": [1,1,1], + "time": 240 + },{ + "value": [1,1,1], + "time": 360 + }], + "type": "vector3" + },{ + "name": "CameraPreset.quaternion", + "keys": [{ + "value": [0,0.707107,0.707107,0], + "time": 0 + },{ + "value": [-0.612372,-0.353553,-0.353553,0.612372], + "time": 120 + },{ + "value": [-0.612372,0.353553,0.353553,0.612372], + "time": 240 + },{ + "value": [-0,0.707107,0.707107,0], + "time": 360 + }], + "type": "quaternion" + },{ + "name": "004.position", + "keys": [{ + "value": [-0.069363,0.054814,-0.000541], + "time": 0 + },{ + "value": [-0.069362,0.054916,-0.000567], + "time": 5 + },{ + "value": [-0.069384,0.055115,-0.000612], + "time": 10 + },{ + "value": [-0.069455,0.05536,-0.000657], + "time": 15 + },{ + "value": [-0.069593,0.05558,-0.000714], + "time": 20 + },{ + "value": [-0.069799,0.055701,-0.000767], + "time": 25 + },{ + "value": [-0.069996,0.05568,-0.000792], + "time": 30 + },{ + "value": [-0.070148,0.055528,-0.000792], + "time": 35 + },{ + "value": [-0.07025,0.05532,-0.00079], + "time": 40 + },{ + "value": [-0.07027,0.055115,-0.000775], + "time": 45 + },{ + "value": [-0.070225,0.054855,-0.00072], + "time": 50 + },{ + "value": [-0.070093,0.054687,-0.000729], + "time": 55 + },{ + "value": [-0.069942,0.054572,-0.000694], + "time": 60 + },{ + "value": [-0.06963,0.054524,-0.00064], + "time": 70 + },{ + "value": [-0.069445,0.054623,-0.000586], + "time": 80 + },{ + "value": [-0.069377,0.05479,-0.00055], + "time": 90 + },{ + "value": [-0.06936,0.05479,-0.000537], + "time": 100 + }], + "type": "vector3" + },{ + "name": "004.scale", + "keys": [{ + "value": [0.001,0.001,0.001], + "time": 0 + },{ + "value": [0.001,0.001,0.001], + "time": 5 + },{ + "value": [0.001,0.001,0.001], + "time": 10 + },{ + "value": [0.001,0.001,0.001], + "time": 15 + },{ + "value": [0.001,0.001,0.001], + "time": 20 + },{ + "value": [0.001,0.001,0.001], + "time": 25 + },{ + "value": [0.001,0.001,0.001], + "time": 30 + },{ + "value": [0.001,0.001,0.001], + "time": 35 + },{ + "value": [0.001,0.001,0.001], + "time": 40 + },{ + "value": [0.001,0.001,0.001], + "time": 45 + },{ + "value": [0.001,0.001,0.001], + "time": 50 + },{ + "value": [0.001,0.001,0.001], + "time": 55 + },{ + "value": [0.001,0.001,0.001], + "time": 60 + },{ + "value": [0.001,0.001,0.001], + "time": 70 + },{ + "value": [0.001,0.001,0.001], + "time": 80 + },{ + "value": [0.001,0.001,0.001], + "time": 90 + },{ + "value": [0.001,0.001,0.001], + "time": 100 + }], + "type": "vector3" + },{ + "name": "004.quaternion", + "keys": [{ + "value": [-0,0,1,-0], + "time": 0 + },{ + "value": [-1e-06,-0,-0.996917,0.078459], + "time": 5 + },{ + "value": [-0,-0,-0.987688,0.156434], + "time": 10 + },{ + "value": [-0,-0,-0.97237,0.233445], + "time": 15 + },{ + "value": [-0,-0,-0.951057,0.309017], + "time": 20 + },{ + "value": [0,-0,-0.92388,0.382684], + "time": 25 + },{ + "value": [0,-0,-0.891007,0.453991], + "time": 30 + },{ + "value": [0,-0,-0.85264,0.522499], + "time": 35 + },{ + "value": [0,-0,-0.809017,0.587785], + "time": 40 + },{ + "value": [0,-0,-0.760406,0.649448], + "time": 45 + },{ + "value": [0,-0,-0.707107,0.707107], + "time": 50 + },{ + "value": [0,-0,-0.649448,0.760406], + "time": 55 + },{ + "value": [0,-0,-0.587785,0.809017], + "time": 60 + },{ + "value": [0,-0,-0.453991,0.891007], + "time": 70 + },{ + "value": [0,-0,-0.309017,0.951057], + "time": 80 + },{ + "value": [0,-0,-0.156435,0.987688], + "time": 90 + },{ + "value": [0,-0,-0,1], + "time": 100 + }], + "type": "quaternion" + }] + }], + "textures": [{ + "repeat": [1,1], + "minFilter": 1008, + "mapping": 300, + "wrap": [1000,1000], + "image": "E5240A01-C476-31DF-9AAE-3177628E6A50", + "name": "fluidbook_4pages_2_jpg", + "anisotropy": 1, + "magFilter": 1006, + "uuid": "7738E2DA-557B-3F32-B4A5-19A9302EF3F1" + },{ + "repeat": [1,1], + "minFilter": 1008, + "mapping": 300, + "wrap": [1000,1000], + "image": "F4001E31-2FB4-31A7-B6AA-2712B355E831", + "name": "fluidbook_4pages_3_jpg", + "anisotropy": 1, + "magFilter": 1006, + "uuid": "5FCAB75F-200B-38C7-86E7-27E6D26F3D32" + }], + "object": { + "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1], + "children": [{ + "name": "Camera", + "uuid": "DE0714B3-5D16-30EF-9A0A-6C5D6DD394B9", + "matrix": [-1,0,0,0,0,1,-0,0,0,-0,-1,0,0.0806,0,-1.2977,1], + "visible": true, + "type": "PerspectiveCamera", + "far": 50000, + "near": 0.1, + "aspect": 1.77778, + "fov": 73.1429 + },{ + "name": "CameraPreset", + "uuid": "B0C4E574-DECC-3D97-99F0-60577F3026BF", + "matrix": [-1,0,-0,0,-0,0,1,0,0,1,0,0,0.069363,-0.000541,0.054776,1], + "visible": true, + "type": "Object" + },{ + "name": "morpher_test10", + "uuid": "74E6AD62-35E6-319C-8BF2-486A9B501AA1", + "matrix": [-1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1], + "visible": true, + "type": "Object", + "children": [{ + "name": "004", + "uuid": "9B16AC6D-29DB-3664-9FE0-C1EDB37E18F6", + "matrix": [-0.001,-0,0,0,0,-0.001,0,0,-0,0,0.001,0,-0.069363,0.054814,-0.000541,1], + "visible": true, + "type": "Mesh", + "material": "BC3187A1-7BA9-32F8-8EF0-988F0A4965DB", + "castShadow": true, + "receiveShadow": true, + "geometry": "9CA3EA4A-05C8-378C-B2E8-75131F7D1E82" + },{ + "name": "Omni001", + "uuid": "197F6021-DA53-3FB5-99FD-3B7AAB139D81", + "matrix": [0.001,0,0,0,0,0.001,0,0,0,0,0.001,0,1.5888,-1.72503,0.080994,1], + "visible": true, + "type": "PointLight", + "color": 16777215, + "intensity": 7, + "distance": 0, + "decayExponent": 2 + },{ + "name": "Omni002", + "uuid": "55D49FBD-3AE6-38D6-AE64-5C29F5BEEAB6", + "matrix": [0.001,0,0,0,0,0.001,0,0,0,0,0.001,0,-1.73819,-1.72503,0.080994,1], + "visible": true, + "type": "PointLight", + "color": 16777215, + "intensity": 7, + "distance": 0, + "decayExponent": 2 + }] + }], + "type": "Scene", + "uuid": "EE91DC53-E239-42BC-9D61-C7AE77A06F71" + } +} \ No newline at end of file diff --git a/js/3dflip/ltr/fluidbook-4pages 1.jpg b/js/3dflip/ltr/fluidbook-4pages 1.jpg new file mode 100644 index 00000000..960bfc6d Binary files /dev/null and b/js/3dflip/ltr/fluidbook-4pages 1.jpg differ diff --git a/js/3dflip/ltr/fluidbook-4pages 2.jpg b/js/3dflip/ltr/fluidbook-4pages 2.jpg new file mode 100644 index 00000000..223444cd Binary files /dev/null and b/js/3dflip/ltr/fluidbook-4pages 2.jpg differ diff --git a/js/3dflip/ltr/fluidbook-4pages 3.jpg b/js/3dflip/ltr/fluidbook-4pages 3.jpg new file mode 100644 index 00000000..84d9785a Binary files /dev/null and b/js/3dflip/ltr/fluidbook-4pages 3.jpg differ diff --git a/js/3dflip/ltr/fluidbook-4pages 4.jpg b/js/3dflip/ltr/fluidbook-4pages 4.jpg new file mode 100644 index 00000000..cb58bd6e Binary files /dev/null and b/js/3dflip/ltr/fluidbook-4pages 4.jpg differ diff --git a/js/libs/Three.js b/js/libs/Three.js deleted file mode 100644 index b36e7d87..00000000 --- a/js/libs/Three.js +++ /dev/null @@ -1,794 +0,0 @@ -// Three.js - http://github.com/mrdoob/three.js -'use strict';var THREE=THREE||{REVISION:"48"};if(!self.Int32Array)self.Int32Array=Array,self.Float32Array=Array; -(function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},getHex:function(){return Math.floor(255*this.r)<<16^Math.floor(255*this.g)<<8^Math.floor(255*this.b)},getContextStyle:function(){return"rgb("+Math.floor(255*this.r)+","+Math.floor(255*this.g)+","+Math.floor(255*this.b)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0}; -THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(a,b){this.x=a;this.y=b;return this},copy:function(a){this.x=a.x;this.y=a.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this}, -divideScalar:function(a){a?(this.x/=a,this.y/=a):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.normalize().multiplyScalar(a)}, -lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},equals:function(a){return a.x===this.x&&a.y===this.y},isZero:function(){return 1.0E-4>this.lengthSq()}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}; -THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;return this}, -addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},multiply:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},multiplySelf:function(a){this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},divideSelf:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this}, -divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a):this.z=this.y=this.x=0;return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)}, -lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},cross:function(a,b){this.x=a.y*b.z-a.z*b.y;this.y=a.z*b.x-a.x*b.z;this.z=a.x*b.y-a.y*b.x;return this},crossSelf:function(a){var b=this.x,c=this.y,d=this.z;this.x=c*a.z-d*a.y;this.y=d*a.x-b*a.z;this.z=b*a.y-c*a.x;return this},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){return(new THREE.Vector3).sub(this,a).lengthSq()},getPositionFromMatrix:function(a){this.x= -a.n14;this.y=a.n24;this.z=a.n34;return this},getRotationFromMatrix:function(a,b){var c=b?b.x:1,d=b?b.y:1,f=b?b.z:1,g=a.n11/c,e=a.n12/d,c=a.n21/c,d=a.n22/d,h=a.n23/f,i=a.n33/f;this.y=Math.asin(a.n13/f);f=Math.cos(this.y);1.0E-5this.lengthSq()}};THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; -THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y; -this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){a?(this.x/=a,this.y/=a,this.z/=a,this.w/=a):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())}, -normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.normalize().multiplyScalar(a)},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this}};THREE.Frustum=function(){this.planes=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4]}; -THREE.Frustum.prototype.setFromMatrix=function(a){var b,c=this.planes;c[0].set(a.n41-a.n11,a.n42-a.n12,a.n43-a.n13,a.n44-a.n14);c[1].set(a.n41+a.n11,a.n42+a.n12,a.n43+a.n13,a.n44+a.n14);c[2].set(a.n41+a.n21,a.n42+a.n22,a.n43+a.n23,a.n44+a.n24);c[3].set(a.n41-a.n21,a.n42-a.n22,a.n43-a.n23,a.n44-a.n24);c[4].set(a.n41-a.n31,a.n42-a.n32,a.n43-a.n33,a.n44-a.n34);c[5].set(a.n41+a.n31,a.n42+a.n32,a.n43+a.n33,a.n44+a.n34);for(a=0;6>a;a++)b=c[a],b.divideScalar(Math.sqrt(b.x*b.x+b.y*b.y+b.z*b.z))}; -THREE.Frustum.prototype.contains=function(a){for(var b=this.planes,c=a.matrixWorld,d=THREE.Frustum.__v1.set(c.getColumnX().length(),c.getColumnY().length(),c.getColumnZ().length()),d=-a.geometry.boundingSphere.radius*Math.max(d.x,Math.max(d.y,d.z)),f=0;6>f;f++)if(a=b[f].x*c.n14+b[f].y*c.n24+b[f].z*c.n34+b[f].w,a<=d)return!1;return!0};THREE.Frustum.__v1=new THREE.Vector3; -THREE.Ray=function(a,b){function c(a,b,c){p.sub(c,a);s=p.dot(b);t=n.add(a,r.copy(b).multiplyScalar(s));return w=c.distanceTo(t)}function d(a,b,c,d){p.sub(d,b);n.sub(c,b);r.sub(a,b);u=p.dot(p);v=p.dot(n);A=p.dot(r);F=n.dot(n);B=n.dot(r);D=1/(u*F-v*v);H=(F*A-v*B)*D;I=(u*B-v*A)*D;return 0<=H&&0<=I&&1>H+I}this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3;this.intersectObjects=function(a){var b,c,d=[];for(b=0,c=a.length;ba.scale.x)return[];b={distance:p,point:a.position,face:null,object:a}; -n.push(b)}else if(a instanceof THREE.Mesh){var p=c(this.origin,this.direction,a.matrixWorld.getPosition()),r=THREE.Frustum.__v1.set(a.matrixWorld.getColumnX().length(),a.matrixWorld.getColumnY().length(),a.matrixWorld.getColumnZ().length());if(p>a.geometry.boundingSphere.radius*Math.max(r.x,Math.max(r.y,r.z)))return n;var s,l,t=a.geometry,u=t.vertices,E;a.matrixRotationWorld.extractRotation(a.matrixWorld);for(p=0,r=t.faces.length;pl)&&(a.doubleSided||(a.flipSided?0s))))if(o.add(j,k.multiplyScalar(l)),b instanceof THREE.Face3)g=E.multiplyVector3(g.copy(u[b.a].position)),e=E.multiplyVector3(e.copy(u[b.b].position)),h=E.multiplyVector3(h.copy(u[b.c].position)),d(o,g,e,h)&&(b={distance:j.distanceTo(o),point:o.clone(),face:b,object:a},n.push(b));else if(b instanceof -THREE.Face4&&(g=E.multiplyVector3(g.copy(u[b.a].position)),e=E.multiplyVector3(e.copy(u[b.b].position)),h=E.multiplyVector3(h.copy(u[b.c].position)),i=E.multiplyVector3(i.copy(u[b.d].position)),d(o,g,e,i)||d(o,e,h,i)))b={distance:j.distanceTo(o),point:o.clone(),face:b,object:a},n.push(b)}return n};var p=new THREE.Vector3,n=new THREE.Vector3,r=new THREE.Vector3,s,t,w,u,v,A,F,B,D,H,I}; -THREE.Rectangle=function(){function a(){g=d-b;e=f-c}var b,c,d,f,g,e,h=!0;this.getX=function(){return b};this.getY=function(){return c};this.getWidth=function(){return g};this.getHeight=function(){return e};this.getLeft=function(){return b};this.getTop=function(){return c};this.getRight=function(){return d};this.getBottom=function(){return f};this.set=function(g,e,k,q){h=!1;b=g;c=e;d=k;f=q;a()};this.addPoint=function(g,e){h?(h=!1,b=g,c=e,d=g,f=e):(b=bg?d:g,f=f>e?f:e);a()};this.add3Points= -function(g,e,k,q,m,o){h?(h=!1,b=gk?g>m?g:m:k>m?k:m,f=e>q?e>o?e:o:q>o?q:o):(b=gk?g>m?g>d?g:d:m>d?m:d:k>m?k>d?k:d:m>d?m:d,f=e>q?e>o?e>f?e:f:o>f?o:f:q>o?q>f?q:f:o>f?o:f);a()};this.addRectangle=function(g){h?(h=!1,b=g.getLeft(),c=g.getTop(),d=g.getRight(),f=g.getBottom()):(b=bg.getRight()?d:g.getRight(),f=f> -g.getBottom()?f:g.getBottom());a()};this.inflate=function(g){b-=g;c-=g;d+=g;f+=g;a()};this.minSelf=function(g){b=b>g.getLeft()?b:g.getLeft();c=c>g.getTop()?c:g.getTop();d=da.getRight()||fa.getBottom()?!1:!0};this.empty=function(){h=!0;f=d=c=b=0;a()};this.isEmpty=function(){return h}}; -THREE.Math={clamp:function(a,b,c){return ac?c:a},clampBottom:function(a,b){return aa?-1:0f&&0>g||0>e&&0>h)return!1;0>f?c=Math.max(c,f/(f-g)):0>g&&(d=Math.min(d,f/(f-g)));0>e?c=Math.max(c,e/(e-h)):0>h&&(d=Math.min(d,e/(e-h)));if(de&&h.positionScreen.z(ka.positionScreen.x-R.positionScreen.x)*(ca.positionScreen.y-R.positionScreen.y)-(ka.positionScreen.y-R.positionScreen.y)*(ca.positionScreen.x-R.positionScreen.x), -N.doubleSided||l!=N.flipSided)ia=m[q]=m[q]||new THREE.RenderableFace3,q++,k=ia,k.v1.copy(R),k.v2.copy(ca),k.v3.copy(ka);else continue;else continue;else if(E instanceof THREE.Face4)if(R=j[E.a],ca=j[E.b],ka=j[E.c],ia=j[E.d],R.visible&&ca.visible&&ka.visible&&ia.visible)if(l=0>(ia.positionScreen.x-R.positionScreen.x)*(ca.positionScreen.y-R.positionScreen.y)-(ia.positionScreen.y-R.positionScreen.y)*(ca.positionScreen.x-R.positionScreen.x)||0>(ca.positionScreen.x-ka.positionScreen.x)*(ia.positionScreen.y- -ka.positionScreen.y)-(ca.positionScreen.y-ka.positionScreen.y)*(ia.positionScreen.x-ka.positionScreen.x),N.doubleSided||l!=N.flipSided)Ja=p[o]=p[o]||new THREE.RenderableFace4,o++,k=Ja,k.v1.copy(R),k.v2.copy(ca),k.v3.copy(ka),k.v4.copy(ia);else continue;else continue;k.normalWorld.copy(E.normal);!l&&(N.flipSided||N.doubleSided)&&k.normalWorld.negate();U.multiplyVector3(k.normalWorld);k.centroidWorld.copy(E.centroid);aa.multiplyVector3(k.centroidWorld);k.centroidScreen.copy(k.centroidWorld);B.multiplyVector3(k.centroidScreen); -ka=E.vertexNormals;for(R=0,ca=ka.length;RF.z))e=u[w]=u[w]||new THREE.RenderableParticle,w++,t=e,t.x=F.x/F.w,t.y=F.y/F.w,t.z=F.z,t.rotation=N.rotation.z,t.scale.x=N.scale.x*Math.abs(t.x-(F.x+f.projectionMatrix.n11)/(F.w+f.projectionMatrix.n14)),t.scale.y=N.scale.y*Math.abs(t.y-(F.y+f.projectionMatrix.n22)/(F.w+f.projectionMatrix.n24)),t.material=N.material,v.elements.push(t);g&&v.elements.sort(c);return v}}; -THREE.Quaternion=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; -THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w;return this},clone:function(){return new THREE.Quaternion(this.x,this.y,this.z,this.w)},setFromEuler:function(a){var b=Math.PI/360,c=a.x*b,d=a.y*b,f=a.z*b,a=Math.cos(d),d=Math.sin(d),b=Math.cos(-f),f=Math.sin(-f),g=Math.cos(c),c=Math.sin(c),e=a*b,h=d*f;this.w=e*g-h*c;this.x=e*c+h*g;this.y=d*b*g+a*f*c;this.z=a*f* -g-d*b*c;return this},setFromAxisAngle:function(a,b){var c=b/2,d=Math.sin(c);this.x=a.x*d;this.y=a.y*d;this.z=a.z*d;this.w=Math.cos(c);return this},setFromRotationMatrix:function(a){var b=Math.pow(a.determinant(),1/3);this.w=Math.sqrt(Math.max(0,b+a.n11+a.n22+a.n33))/2;this.x=Math.sqrt(Math.max(0,b+a.n11-a.n22-a.n33))/2;this.y=Math.sqrt(Math.max(0,b-a.n11+a.n22-a.n33))/2;this.z=Math.sqrt(Math.max(0,b-a.n11-a.n22+a.n33))/2;this.x=0>a.n32-a.n23?-Math.abs(this.x):Math.abs(this.x);this.y=0>a.n13-a.n31? --Math.abs(this.y):Math.abs(this.y);this.z=0>a.n21-a.n12?-Math.abs(this.z):Math.abs(this.z);this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);0===a?this.w=this.z= -this.y=this.x=0:(a=1/a,this.x*=a,this.y*=a,this.z*=a,this.w*=a);return this},multiplySelf:function(a){var b=this.x,c=this.y,d=this.z,f=this.w,g=a.x,e=a.y,h=a.z,a=a.w;this.x=b*a+f*g+c*h-d*e;this.y=c*a+f*e+d*g-b*h;this.z=d*a+f*h+b*e-c*g;this.w=f*a-b*g-c*e-d*h;return this},multiply:function(a,b){this.x=a.x*b.w+a.y*b.z-a.z*b.y+a.w*b.x;this.y=-a.x*b.z+a.y*b.w+a.z*b.x+a.w*b.y;this.z=a.x*b.y-a.y*b.x+a.z*b.w+a.w*b.z;this.w=-a.x*b.x-a.y*b.y-a.z*b.z+a.w*b.w;return this},multiplyVector3:function(a,b){b||(b= -a);var c=a.x,d=a.y,f=a.z,g=this.x,e=this.y,h=this.z,i=this.w,j=i*c+e*f-h*d,k=i*d+h*c-g*f,q=i*f+g*d-e*c,c=-g*c-e*d-h*f;b.x=j*i+c*-g+k*-h-q*-e;b.y=k*i+c*-e+q*-g-j*-h;b.z=q*i+c*-h+j*-e-k*-g;return b}}; -THREE.Quaternion.slerp=function(a,b,c,d){var f=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;0>f?(c.w=-b.w,c.x=-b.x,c.y=-b.y,c.z=-b.z,f=-f):c.copy(b);if(1<=Math.abs(f))return c.w=a.w,c.x=a.x,c.y=a.y,c.z=a.z,c;var g=Math.acos(f),f=Math.sqrt(1-f*f);if(0.001>Math.abs(f))return c.w=0.5*(a.w+b.w),c.x=0.5*(a.x+b.x),c.y=0.5*(a.y+b.y),c.z=0.5*(a.z+b.z),c;b=Math.sin((1-d)*g)/f;d=Math.sin(d*g)/f;c.w=a.w*b+c.w*d;c.x=a.x*b+c.x*d;c.y=a.y*b+c.y*d;c.z=a.z*b+c.z*d;return c};THREE.Vertex=function(a){this.position=a||new THREE.Vector3}; -THREE.Vertex.prototype={constructor:THREE.Vertex,clone:function(){return new THREE.Vertex(this.position.clone())}};THREE.Face3=function(a,b,c,d,f,g){this.a=a;this.b=b;this.c=c;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=f instanceof THREE.Color?f:new THREE.Color;this.vertexColors=f instanceof Array?f:[];this.vertexTangents=[];this.materialIndex=g;this.centroid=new THREE.Vector3}; -THREE.Face3.prototype={constructor:THREE.Face3,clone:function(){var a=new THREE.Face3(this.a,this.b,this.c);a.normal.copy(this.normal);a.color.copy(this.color);a.centroid.copy(this.centroid);a.materialIndex=this.materialIndex;var b,c;for(b=0,c=this.vertexNormals.length;bf?-1:1,g.vertexTangents[d]=new THREE.Vector4(P.x,P.y,P.z,f)}this.hasTangents=!0},computeBoundingBox:function(){if(!this.boundingBox)this.boundingBox={min:new THREE.Vector3,max:new THREE.Vector3};if(0c.x)c.x=a.x;if(a.yc.y)c.y=a.y;if(a.zc.z)c.z=a.z}}else this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){if(!this.boundingSphere)this.boundingSphere={radius:0};for(var a,b=0,c=0,d=this.vertices.length;cb&&(b=a);this.boundingSphere.radius=b},mergeVertices:function(){var a={},b=[],c=[],d,f=Math.pow(10, -4),g,e;for(g=0,e=this.vertices.length;gthis.points.length-2?g:g+1;c[3]=g>this.points.length-3?g:g+2;j=this.points[c[0]];k=this.points[c[1]]; -q=this.points[c[2]];m=this.points[c[3]];h=e*e;i=e*h;d.x=b(j.x,k.x,q.x,m.x,e,h,i);d.y=b(j.y,k.y,q.y,m.y,e,h,i);d.z=b(j.z,k.z,q.z,m.z,e,h,i);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;ah.end)h.end=f;b||(b=e)}}a.firstAnimation=b}; -THREE.MorphAnimMesh.prototype.setAnimationLabel=function(a,b,c){if(!this.geometry.animations)this.geometry.animations={};this.geometry.animations[a]={start:b,end:c}};THREE.MorphAnimMesh.prototype.playAnimation=function(a,b){var c=this.geometry.animations[a];c?(this.setFrameRange(c.start,c.end),this.duration=1E3*((c.end-c.start)/b),this.time=0):console.warn("animation["+a+"] undefined")}; -THREE.MorphAnimMesh.prototype.updateAnimation=function(a){var b=this.duration/this.length;this.time+=this.direction*a;if(this.mirroredLoop){if(this.time>this.duration||0>this.time){this.direction*=-1;if(this.time>this.duration)this.time=this.duration,this.directionBackwards=!0;if(0>this.time)this.time=0,this.directionBackwards=!1}}else this.time%=this.duration,0>this.time&&(this.time+=this.duration);a=this.startKeyframe+THREE.Math.clamp(Math.floor(this.time/b),0,this.length-1);if(a!==this.currentKeyframe)this.morphTargetInfluences[this.lastKeyframe]= -0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[a]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=a;b=this.time%b/b;this.directionBackwards&&(b=1-b);this.morphTargetInfluences[this.currentKeyframe]=b;this.morphTargetInfluences[this.lastKeyframe]=1-b};THREE.Ribbon=function(a,b){THREE.Object3D.call(this);this.geometry=a;this.material=b};THREE.Ribbon.prototype=new THREE.Object3D;THREE.Ribbon.prototype.constructor=THREE.Ribbon; -THREE.LOD=function(){THREE.Object3D.call(this);this.LODs=[]};THREE.LOD.prototype=new THREE.Object3D;THREE.LOD.prototype.constructor=THREE.LOD;THREE.LOD.prototype.supr=THREE.Object3D.prototype;THREE.LOD.prototype.addLevel=function(a,b){void 0===b&&(b=0);for(var b=Math.abs(b),c=0;c=this.LODs[b].visibleAtDistance)this.LODs[b-1].object3D.visible=!1,this.LODs[b].object3D.visible=!0;else break;for(;bs&&n.clearRect(Math.floor(sa.getX()),Math.floor(sa.getY()),Math.floor(sa.getWidth()),Math.floor(sa.getHeight())),0=i||(i*=e.intensity,d.r+=h.r*i,d.g+=h.g*i,d.b+=h.b*i)):e instanceof THREE.PointLight&&(l=e.matrixWorld.getPosition(),i=c.dot(Z.sub(l,b).normalize()),0>=i||(i*=0==e.distance?1:1-Math.min(b.distanceTo(l)/e.distance,1),0!=i&&(i*=e.intensity,d.r+=h.r*i,d.g+=h.g*i,d.b+=h.b*i)))}function r(a,g,e){b(e.opacity);c(e.blending);var Z,h,l,i,k,j;if(e instanceof THREE.ParticleBasicMaterial){if(e.map)i= -e.map.image,k=i.width>>1,j=i.height>>1,e=g.scale.x*o,l=g.scale.y*p,Z=e*k,h=l*j,za.set(a.x-Z,a.y-h,a.x+Z,a.y+h),La.intersects(za)&&(n.save(),n.translate(a.x,a.y),n.rotate(-g.rotation),n.scale(e,-l),n.translate(-k,-j),n.drawImage(i,0,0),n.restore())}else e instanceof THREE.ParticleCanvasMaterial&&(Z=g.scale.x*o,h=g.scale.y*p,za.set(a.x-Z,a.y-h,a.x+Z,a.y+h),La.intersects(za)&&(d(e.color.getContextStyle()),f(e.color.getContextStyle()),n.save(),n.translate(a.x,a.y),n.rotate(-g.rotation),n.scale(Z,h),e.program(n), -n.restore()))}function s(a,f,g,e){b(e.opacity);c(e.blending);n.beginPath();n.moveTo(a.positionScreen.x,a.positionScreen.y);n.lineTo(f.positionScreen.x,f.positionScreen.y);n.closePath();if(e instanceof THREE.LineBasicMaterial){a=e.linewidth;if(A!=a)n.lineWidth=A=a;a=e.linecap;if(F!=a)n.lineCap=F=a;a=e.linejoin;if(B!=a)n.lineJoin=B=a;d(e.color.getContextStyle());n.stroke();za.inflate(2*e.linewidth)}}function t(a,d,f,e,h,j,n,T){g.info.render.vertices+=3;g.info.render.faces++;b(T.opacity);c(T.blending); -K=a.positionScreen.x;O=a.positionScreen.y;y=d.positionScreen.x;l=d.positionScreen.y;$=f.positionScreen.x;C=f.positionScreen.y;v(K,O,y,l,$,C);if(T instanceof THREE.MeshBasicMaterial)if(T.map)T.map.mapping instanceof THREE.UVMapping&&(ha=n.uvs[0],Vc(K,O,y,l,$,C,ha[e].u,ha[e].v,ha[h].u,ha[h].v,ha[j].u,ha[j].v,T.map));else if(T.envMap){if(T.envMap.mapping instanceof THREE.SphericalReflectionMapping)a=k.matrixWorldInverse,Z.copy(n.vertexNormalsWorld[e]),ib=0.5*(Z.x*a.n11+Z.y*a.n12+Z.z*a.n13)+0.5,db=0.5* --(Z.x*a.n21+Z.y*a.n22+Z.z*a.n23)+0.5,Z.copy(n.vertexNormalsWorld[h]),lb=0.5*(Z.x*a.n11+Z.y*a.n12+Z.z*a.n13)+0.5,cb=0.5*-(Z.x*a.n21+Z.y*a.n22+Z.z*a.n23)+0.5,Z.copy(n.vertexNormalsWorld[j]),Za=0.5*(Z.x*a.n11+Z.y*a.n12+Z.z*a.n13)+0.5,Sa=0.5*-(Z.x*a.n21+Z.y*a.n22+Z.z*a.n23)+0.5,Vc(K,O,y,l,$,C,ib,db,lb,cb,Za,Sa,T.envMap)}else T.wireframe?Mb(T.color,T.wireframeLinewidth,T.wireframeLinecap,T.wireframeLinejoin):Gb(T.color);else if(T instanceof THREE.MeshLambertMaterial)T.map&&!T.wireframe&&(T.map.mapping instanceof -THREE.UVMapping&&(ha=n.uvs[0],Vc(K,O,y,l,$,C,ha[e].u,ha[e].v,ha[h].u,ha[h].v,ha[j].u,ha[j].v,T.map)),c(THREE.SubtractiveBlending)),Ea?!T.wireframe&&T.shading==THREE.SmoothShading&&3==n.vertexNormalsWorld.length?(aa.r=U.r=ba.r=Fa.r,aa.g=U.g=ba.g=Fa.g,aa.b=U.b=ba.b=Fa.b,q(i,n.v1.positionWorld,n.vertexNormalsWorld[0],aa),q(i,n.v2.positionWorld,n.vertexNormalsWorld[1],U),q(i,n.v3.positionWorld,n.vertexNormalsWorld[2],ba),aa.r=Math.max(0,Math.min(T.color.r*aa.r,1)),aa.g=Math.max(0,Math.min(T.color.g*aa.g, -1)),aa.b=Math.max(0,Math.min(T.color.b*aa.b,1)),U.r=Math.max(0,Math.min(T.color.r*U.r,1)),U.g=Math.max(0,Math.min(T.color.g*U.g,1)),U.b=Math.max(0,Math.min(T.color.b*U.b,1)),ba.r=Math.max(0,Math.min(T.color.r*ba.r,1)),ba.g=Math.max(0,Math.min(T.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(T.color.b*ba.b,1)),ea.r=0.5*(U.r+ba.r),ea.g=0.5*(U.g+ba.g),ea.b=0.5*(U.b+ba.b),qa=Dc(aa,U,ba,ea),gc(K,O,y,l,$,C,0,0,1,0,0,1,qa)):(N.r=Fa.r,N.g=Fa.g,N.b=Fa.b,q(i,n.centroidWorld,n.normalWorld,N),N.r=Math.max(0,Math.min(T.color.r* -N.r,1)),N.g=Math.max(0,Math.min(T.color.g*N.g,1)),N.b=Math.max(0,Math.min(T.color.b*N.b,1)),T.wireframe?Mb(N,T.wireframeLinewidth,T.wireframeLinecap,T.wireframeLinejoin):Gb(N)):T.wireframe?Mb(T.color,T.wireframeLinewidth,T.wireframeLinecap,T.wireframeLinejoin):Gb(T.color);else if(T instanceof THREE.MeshDepthMaterial)Ka=k.near,Ga=k.far,aa.r=aa.g=aa.b=1-ac(a.positionScreen.z,Ka,Ga),U.r=U.g=U.b=1-ac(d.positionScreen.z,Ka,Ga),ba.r=ba.g=ba.b=1-ac(f.positionScreen.z,Ka,Ga),ea.r=0.5*(U.r+ba.r),ea.g=0.5* -(U.g+ba.g),ea.b=0.5*(U.b+ba.b),qa=Dc(aa,U,ba,ea),gc(K,O,y,l,$,C,0,0,1,0,0,1,qa);else if(T instanceof THREE.MeshNormalMaterial)N.r=hc(n.normalWorld.x),N.g=hc(n.normalWorld.y),N.b=hc(n.normalWorld.z),T.wireframe?Mb(N,T.wireframeLinewidth,T.wireframeLinecap,T.wireframeLinejoin):Gb(N)}function u(a,d,f,e,Z,h,T,j,n){g.info.render.vertices+=4;g.info.render.faces++;b(j.opacity);c(j.blending);if(j.map||j.envMap)t(a,d,e,0,1,3,T,j,n),t(Z,f,h,1,2,3,T,j,n);else if(K=a.positionScreen.x,O=a.positionScreen.y,y=d.positionScreen.x, -l=d.positionScreen.y,$=f.positionScreen.x,C=f.positionScreen.y,E=e.positionScreen.x,S=e.positionScreen.y,R=Z.positionScreen.x,ca=Z.positionScreen.y,ka=h.positionScreen.x,ia=h.positionScreen.y,j instanceof THREE.MeshBasicMaterial)w(K,O,y,l,$,C,E,S),j.wireframe?Mb(j.color,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):Gb(j.color);else if(j instanceof THREE.MeshLambertMaterial)Ea?!j.wireframe&&j.shading==THREE.SmoothShading&&4==T.vertexNormalsWorld.length?(aa.r=U.r=ba.r=ea.r=Fa.r,aa.g= -U.g=ba.g=ea.g=Fa.g,aa.b=U.b=ba.b=ea.b=Fa.b,q(i,T.v1.positionWorld,T.vertexNormalsWorld[0],aa),q(i,T.v2.positionWorld,T.vertexNormalsWorld[1],U),q(i,T.v4.positionWorld,T.vertexNormalsWorld[3],ba),q(i,T.v3.positionWorld,T.vertexNormalsWorld[2],ea),aa.r=Math.max(0,Math.min(j.color.r*aa.r,1)),aa.g=Math.max(0,Math.min(j.color.g*aa.g,1)),aa.b=Math.max(0,Math.min(j.color.b*aa.b,1)),U.r=Math.max(0,Math.min(j.color.r*U.r,1)),U.g=Math.max(0,Math.min(j.color.g*U.g,1)),U.b=Math.max(0,Math.min(j.color.b*U.b,1)), -ba.r=Math.max(0,Math.min(j.color.r*ba.r,1)),ba.g=Math.max(0,Math.min(j.color.g*ba.g,1)),ba.b=Math.max(0,Math.min(j.color.b*ba.b,1)),ea.r=Math.max(0,Math.min(j.color.r*ea.r,1)),ea.g=Math.max(0,Math.min(j.color.g*ea.g,1)),ea.b=Math.max(0,Math.min(j.color.b*ea.b,1)),qa=Dc(aa,U,ba,ea),v(K,O,y,l,E,S),gc(K,O,y,l,E,S,0,0,1,0,0,1,qa),v(R,ca,$,C,ka,ia),gc(R,ca,$,C,ka,ia,1,0,1,1,0,1,qa)):(N.r=Fa.r,N.g=Fa.g,N.b=Fa.b,q(i,T.centroidWorld,T.normalWorld,N),N.r=Math.max(0,Math.min(j.color.r*N.r,1)),N.g=Math.max(0, -Math.min(j.color.g*N.g,1)),N.b=Math.max(0,Math.min(j.color.b*N.b,1)),w(K,O,y,l,$,C,E,S),j.wireframe?Mb(N,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):Gb(N)):(w(K,O,y,l,$,C,E,S),j.wireframe?Mb(j.color,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin):Gb(j.color));else if(j instanceof THREE.MeshNormalMaterial)N.r=hc(T.normalWorld.x),N.g=hc(T.normalWorld.y),N.b=hc(T.normalWorld.z),w(K,O,y,l,$,C,E,S),j.wireframe?Mb(N,j.wireframeLinewidth,j.wireframeLinecap,j.wireframeLinejoin): -Gb(N);else if(j instanceof THREE.MeshDepthMaterial)Ka=k.near,Ga=k.far,aa.r=aa.g=aa.b=1-ac(a.positionScreen.z,Ka,Ga),U.r=U.g=U.b=1-ac(d.positionScreen.z,Ka,Ga),ba.r=ba.g=ba.b=1-ac(e.positionScreen.z,Ka,Ga),ea.r=ea.g=ea.b=1-ac(f.positionScreen.z,Ka,Ga),qa=Dc(aa,U,ba,ea),v(K,O,y,l,E,S),gc(K,O,y,l,E,S,0,0,1,0,0,1,qa),v(R,ca,$,C,ka,ia),gc(R,ca,$,C,ka,ia,1,0,1,1,0,1,qa)}function v(a,b,c,d,f,e){n.beginPath();n.moveTo(a,b);n.lineTo(c,d);n.lineTo(f,e);n.lineTo(a,b);n.closePath()}function w(a,b,c,d,f,e,g,Z){n.beginPath(); -n.moveTo(a,b);n.lineTo(c,d);n.lineTo(f,e);n.lineTo(g,Z);n.lineTo(a,b);n.closePath()}function Mb(a,b,c,f){if(A!=b)n.lineWidth=A=b;if(F!=c)n.lineCap=F=c;if(B!=f)n.lineJoin=B=f;d(a.getContextStyle());n.stroke();za.inflate(2*b)}function Gb(a){f(a.getContextStyle());n.fill()}function Vc(a,b,c,d,e,g,Z,h,l,i,j,T,k){if(0!=k.image.width){if(!0==k.needsUpdate||void 0==Ta[k.id]){var m=k.wrapS==THREE.RepeatWrapping,o=k.wrapT==THREE.RepeatWrapping;Ta[k.id]=n.createPattern(k.image,m&&o?"repeat":m&&!o?"repeat-x": -!m&&o?"repeat-y":"no-repeat");k.needsUpdate=!1}f(Ta[k.id]);var m=k.offset.x/k.repeat.x,o=k.offset.y/k.repeat.y,p=k.image.width*k.repeat.x,Fb=k.image.height*k.repeat.y,Z=(Z+m)*p,h=(h+o)*Fb,c=c-a,d=d-b,e=e-a,g=g-b,l=(l+m)*p-Z,i=(i+o)*Fb-h,j=(j+m)*p-Z,T=(T+o)*Fb-h,m=l*T-j*i;if(0==m){if(void 0===Ja[k.id])b=document.createElement("canvas"),b.width=k.image.width,b.height=k.image.height,b=b.getContext("2d"),b.drawImage(k.image,0,0),Ja[k.id]=b.getImageData(0,0,k.image.width,k.image.height).data;b=Ja[k.id]; -Z=4*(Math.floor(Z)+Math.floor(h)*k.image.width);N.setRGB(b[Z]/255,b[Z+1]/255,b[Z+2]/255);Gb(N)}else m=1/m,k=(T*c-i*e)*m,i=(T*d-i*g)*m,c=(l*e-j*c)*m,d=(l*g-j*d)*m,a=a-k*Z-c*h,Z=b-i*Z-d*h,n.save(),n.transform(k,i,c,d,a,Z),n.fill(),n.restore()}}function gc(a,b,c,d,f,e,g,Z,h,l,i,j,T){var k,m;k=T.width-1;m=T.height-1;g*=k;Z*=m;c-=a;d-=b;f-=a;e-=b;h=h*k-g;l=l*m-Z;i=i*k-g;j=j*m-Z;m=1/(h*j-i*l);k=(j*c-l*f)*m;l=(j*d-l*e)*m;c=(h*f-i*c)*m;d=(h*e-i*d)*m;a=a-k*g-c*Z;b=b-l*g-d*Z;n.save();n.transform(k,l,c,d,a, -b);n.clip();n.drawImage(T,0,0);n.restore()}function Dc(a,b,c,d){var f=~~(255*a.r),e=~~(255*a.g),a=~~(255*a.b),g=~~(255*b.r),Z=~~(255*b.g),b=~~(255*b.b),h=~~(255*c.r),l=~~(255*c.g),c=~~(255*c.b),i=~~(255*d.r),j=~~(255*d.g),d=~~(255*d.b);eb[0]=0>f?0:255e?0:255a?0:255g?0:255Z?0:255b?0:255h?0:255l?0:255c?0:255i?0:255j?0:255d?0:255a?0:1=j||(j*=g.intensity,d.r+=h.r*j,d.g+=h.g*j,d.b+=h.b*j)):g instanceof THREE.PointLight&&(i=g.matrixWorld.getPosition(),j=c.dot(D.sub(i,b).normalize()),0>=j||(j*=0==g.distance?1:1-Math.min(b.distanceTo(i)/g.distance,1),0!=j&&(j*=g.intensity,d.r+=h.r*j,d.g+=h.g*j,d.b+=h.b*j)))}function b(a){null==H[a]&&(H[a]=document.createElementNS("http://www.w3.org/2000/svg", -"path"),0==K&&H[a].setAttribute("shape-rendering","crispEdges"));return H[a]}function c(a){a=0.5*(a+1);return 0>a?0:1 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif", -lights_lambert_vertex:"vLightFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\nvLightBack = vec3( 0.0 );\n#endif\ntransformedNormal = normalize( transformedNormal );\n#if MAX_DIR_LIGHTS > 0\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nfloat dotProduct = dot( transformedNormal, dirVector );\nvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n#ifdef DOUBLE_SIDED\nvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n#ifdef WRAP_AROUND\nvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n#endif\n#endif\n#ifdef WRAP_AROUND\nvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\ndirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n#ifdef DOUBLE_SIDED\ndirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n#endif\n#endif\nvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n#ifdef DOUBLE_SIDED\nvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n#endif\n}\n#endif\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nfloat dotProduct = dot( transformedNormal, lVector );\nvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n#ifdef DOUBLE_SIDED\nvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n#ifdef WRAP_AROUND\nvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n#endif\n#endif\n#ifdef WRAP_AROUND\nvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\npointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n#ifdef DOUBLE_SIDED\npointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n#endif\n#endif\nvLightFront += pointLightColor[ i ] * pointLightWeighting * lDistance;\n#ifdef DOUBLE_SIDED\nvLightBack += pointLightColor[ i ] * pointLightWeightingBack * lDistance;\n#endif\n}\n#endif\nvLightFront = vLightFront * diffuse + ambient * ambientLightColor;\n#ifdef DOUBLE_SIDED\nvLightBack = vLightBack * diffuse + ambient * ambientLightColor;\n#endif", -lights_phong_pars_vertex:"#if MAX_POINT_LIGHTS > 0\n#ifndef PHONG_PER_PIXEL\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\n#endif",lights_phong_vertex:"#if MAX_POINT_LIGHTS > 0\n#ifndef PHONG_PER_PIXEL\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nvPointLight[ i ] = vec4( lVector, lDistance );\n}\n#endif\n#endif", -lights_phong_pars_fragment:"uniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n#ifdef PHONG_PER_PIXEL\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#else\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;", -lights_phong_fragment:"vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n#ifdef DOUBLE_SIDED\nnormal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n#endif\n#if MAX_POINT_LIGHTS > 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n#ifdef PHONG_PER_PIXEL\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz + vViewPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\n#else\nvec3 lVector = normalize( vPointLight[ i ].xyz );\nfloat lDistance = vPointLight[ i ].w;\n#endif\nfloat dotProduct = dot( normal, lVector );\n#ifdef WRAP_AROUND\nfloat pointDiffuseWeightFull = max( dotProduct, 0.0 );\nfloat pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\nvec3 pointDiffuseWeight = mix( vec3 ( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n#else\nfloat pointDiffuseWeight = max( dotProduct, 0.0 );\n#endif\npointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * lDistance;\nvec3 pointHalfVector = normalize( lVector + viewPosition );\nfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\nfloat pointSpecularWeight = max( pow( pointDotNormalHalf, shininess ), 0.0 );\n#ifdef PHYSICALLY_BASED_SHADING\nvec3 schlick = specular + vec3( 1.0 - specular ) * pow( dot( lVector, pointHalfVector ), 5.0 );\npointSpecular += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance;\n#else\npointSpecular += specular * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * lDistance;\n#endif\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nfloat dotProduct = dot( normal, dirVector );\n#ifdef WRAP_AROUND\nfloat dirDiffuseWeightFull = max( dotProduct, 0.0 );\nfloat dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\nvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n#else\nfloat dirDiffuseWeight = max( dotProduct, 0.0 );\n#endif\ndirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\nvec3 dirHalfVector = normalize( dirVector + viewPosition );\nfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\nfloat dirSpecularWeight = max( pow( dirDotNormalHalf, shininess ), 0.0 );\n#ifdef PHYSICALLY_BASED_SHADING\nvec3 schlick = specular + vec3( 1.0 - specular ) * pow( dot( dirVector, dirHalfVector ), 5.0 );\ndirSpecular += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight;\n#else\ndirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight;\n#endif\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\n#ifdef METAL\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient + totalSpecular );\n#else\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * ambient ) + totalSpecular;\n#endif", -color_pars_fragment:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_fragment:"#ifdef USE_COLOR\ngl_FragColor = gl_FragColor * vec4( vColor, opacity );\n#endif",color_pars_vertex:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n#ifdef GAMMA_INPUT\nvColor = color * color;\n#else\nvColor = color;\n#endif\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\nuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n#endif",skinning_vertex:"#ifdef USE_SKINNING\ngl_Position = ( boneGlobalMatrices[ int( skinIndex.x ) ] * skinVertexA ) * skinWeight.x;\ngl_Position += ( boneGlobalMatrices[ int( skinIndex.y ) ] * skinVertexB ) * skinWeight.y;\ngl_Position = projectionMatrix * modelViewMatrix * gl_Position;\n#endif", -morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n#ifndef USE_MORPHNORMALS\nuniform float morphTargetInfluences[ 8 ];\n#else\nuniform float morphTargetInfluences[ 4 ];\n#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\nvec3 morphed = vec3( 0.0 );\nmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\nmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\nmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\nmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n#ifndef USE_MORPHNORMALS\nmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\nmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\nmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\nmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n#endif\nmorphed += position;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( morphed, 1.0 );\n#endif", -default_vertex:"#ifndef USE_MORPHTARGETS\n#ifndef USE_SKINNING\ngl_Position = projectionMatrix * mvPosition;\n#endif\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\nvec3 morphedNormal = vec3( 0.0 );\nmorphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\nmorphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\nmorphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\nmorphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\nmorphedNormal += normal;\nvec3 transformedNormal = normalMatrix * morphedNormal;\n#else\nvec3 transformedNormal = normalMatrix * normal;\n#endif", -shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\nuniform sampler2D shadowMap[ MAX_SHADOWS ];\nuniform vec2 shadowMapSize[ MAX_SHADOWS ];\nuniform float shadowDarkness[ MAX_SHADOWS ];\nuniform float shadowBias[ MAX_SHADOWS ];\nvarying vec4 vShadowCoord[ MAX_SHADOWS ];\nfloat unpackDepth( const in vec4 rgba_depth ) {\nconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\nfloat depth = dot( rgba_depth, bit_shift );\nreturn depth;\n}\n#endif",shadowmap_fragment:"#ifdef USE_SHADOWMAP\n#ifdef SHADOWMAP_DEBUG\nvec3 frustumColors[3];\nfrustumColors[0] = vec3( 1.0, 0.5, 0.0 );\nfrustumColors[1] = vec3( 0.0, 1.0, 0.8 );\nfrustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n#endif\n#ifdef SHADOWMAP_CASCADE\nint inFrustumCount = 0;\n#endif\nfloat fDepth;\nvec3 shadowColor = vec3( 1.0 );\nfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\nvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\nbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\nbool inFrustum = all( inFrustumVec );\n#ifdef SHADOWMAP_CASCADE\ninFrustumCount += int( inFrustum );\nbvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n#else\nbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n#endif\nbool frustumTest = all( frustumTestVec );\nif ( frustumTest ) {\nshadowCoord.z += shadowBias[ i ];\n#ifdef SHADOWMAP_SOFT\nfloat shadow = 0.0;\nconst float shadowDelta = 1.0 / 9.0;\nfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\nfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\nfloat dx0 = -1.25 * xPixelOffset;\nfloat dy0 = -1.25 * yPixelOffset;\nfloat dx1 = 1.25 * xPixelOffset;\nfloat dy1 = 1.25 * yPixelOffset;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\nif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\nshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n#else\nvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\nfloat fDepth = unpackDepth( rgbaDepth );\nif ( fDepth < shadowCoord.z )\nshadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n#endif\n}\n#ifdef SHADOWMAP_DEBUG\n#ifdef SHADOWMAP_CASCADE\nif ( inFrustum && inFrustumCount == 1 ) gl_FragColor.xyz *= frustumColors[ i ];\n#else\nif ( inFrustum ) gl_FragColor.xyz *= frustumColors[ i ];\n#endif\n#endif\n}\n#ifdef GAMMA_OUTPUT\nshadowColor *= shadowColor;\n#endif\ngl_FragColor.xyz = gl_FragColor.xyz * shadowColor;\n#endif", -shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\nvarying vec4 vShadowCoord[ MAX_SHADOWS ];\nuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\nfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n#ifdef USE_MORPHTARGETS\nvShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( morphed, 1.0 );\n#else\nvShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( position, 1.0 );\n#endif\n}\n#endif",alphatest_fragment:"#ifdef ALPHATEST\nif ( gl_FragColor.a < ALPHATEST ) discard;\n#endif", -linear_to_gamma_fragment:"#ifdef GAMMA_OUTPUT\ngl_FragColor.xyz = sqrt( gl_FragColor.xyz );\n#endif"}; -THREE.UniformsUtils={merge:function(a){var b,c,d,f={};for(b=0;bn;n++){m=k;r=n;if(y.autoScaleCubemaps){if(s=h.image[n],E=Ea,!(s.width<=E&&s.height<=E))u=Math.max(s.width, -s.height),t=Math.floor(s.width*E/u),E=Math.floor(s.height*E/u),u=document.createElement("canvas"),u.width=t,u.height=E,u.getContext("2d").drawImage(s,0,0,s.width,s.height,0,0,t,E),s=u}else s=h.image[n];m[r]=s}n=k[0];m=0===(n.width&n.width-1)&&0===(n.height&n.height-1);r=A(h.format);s=A(h.type);w(l.TEXTURE_CUBE_MAP,h,m);for(n=0;6>n;n++)l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,r,r,s,k[n]);h.generateMipmaps&&m&&l.generateMipmap(l.TEXTURE_CUBE_MAP);h.needsUpdate=!1;if(h.onUpdate)h.onUpdate()}else l.activeTexture(l.TEXTURE0+ -k),l.bindTexture(l.TEXTURE_CUBE_MAP,h.image.__webglTextureCube)}else n instanceof THREE.WebGLRenderTargetCube?(h=n,l.activeTexture(l.TEXTURE0+k),l.bindTexture(l.TEXTURE_CUBE_MAP,h.__webglTexture)):y.setTexture(n,k)}else if("tv"===m){if(!h._array){h._array=[];for(m=0,r=h.texture.length;mj&&(k=m,j=h[k]);l.bindBuffer(l.ARRAY_BUFFER,f.__webglMorphTargetsBuffers[k]);l.vertexAttribPointer(c["morphTarget"+g],3,l.FLOAT,!1,0,0);d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,f.__webglMorphNormalsBuffers[k]),l.vertexAttribPointer(c["morphNormal"+ -g],3,l.FLOAT,!1,0,0));e.__webglMorphTargetInfluences[g]=j;i[k]=1;j=-1;g++}}null!==d.program.uniforms.morphTargetInfluences&&l.uniform1fv(d.program.uniforms.morphTargetInfluences,e.__webglMorphTargetInfluences)}if(a){if(f.__webglCustomAttributesList)for(g=0,h=f.__webglCustomAttributesList.length;gla;la++)Vb=jc[la],hb[Ra]=Vb.x,hb[Ra+1]=Vb.y,hb[Ra+2]=Vb.z,Ra+=3;else for(la=0;3>la;la++)hb[Ra]=Ob.x,hb[Ra+1]=Ob.y,hb[Ra+2]=Ob.z,Ra+=3;for(G=0,V=na.length;Gla;la++)Vb=jc[la], -hb[Ra]=Vb.x,hb[Ra+1]=Vb.y,hb[Ra+2]=Vb.z,Ra+=3;else for(la=0;4>la;la++)hb[Ra]=Ob.x,hb[Ra+1]=Ob.y,hb[Ra+2]=Ob.z,Ra+=3;l.bindBuffer(l.ARRAY_BUFFER,fa.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,hb,$a)}if(kd&&bd&&hd){for(G=0,V=ma.length;Gla;la++)mc=kc[la],wc[Jb]=mc.u,wc[Jb+1]=mc.v,Jb+=2;for(G=0,V=na.length;Gla;la++)mc=kc[la],wc[Jb]=mc.u,wc[Jb+1]=mc.v,Jb+=2;0la;la++)nc=lc[la],xc[Kb]=nc.u,xc[Kb+1]=nc.v,Kb+=2;for(G=0,V=na.length;Gla;la++)nc=lc[la],xc[Kb]=nc.u,xc[Kb+1]=nc.v,Kb+=2;0c;c++){a.__webglFramebuffer[c]=l.createFramebuffer();a.__webglRenderbuffer[c]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+c,0,d,a.width,a.height,0,d,f,null);var e=a,g=l.TEXTURE_CUBE_MAP_POSITIVE_X+c;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[c]);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,g,e.__webglTexture,0);u(a.__webglRenderbuffer[c],a)}}else a.__webglFramebuffer=l.createFramebuffer(),a.__webglRenderbuffer= -l.createRenderbuffer(),l.bindTexture(l.TEXTURE_2D,a.__webglTexture),w(l.TEXTURE_2D,a,c),l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,f,null),d=l.TEXTURE_2D,l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,d,a.__webglTexture,0),u(a.__webglRenderbuffer,a);b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]: -a.__webglFramebuffer,d=a.width,a=a.height,c=f=0):(b=null,d=ha,a=ib,f=Ga,c=qa);b!==E&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(f,c,d,a),E=b);db=d;lb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)}; -THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:THREE.RGBAFormat;this.type=void 0!==c.type?c.type: -THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0}; -THREE.WebGLRenderTarget.prototype.clone=function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;return a};THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0}; -THREE.WebGLRenderTargetCube.prototype=new THREE.WebGLRenderTarget;THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube;THREE.RenderableVertex=function(){this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)}; -THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.faceMaterial=this.material=null;this.uvs=[[]];this.z=null}; -THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.v4=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.faceMaterial=this.material=null;this.uvs=[[]];this.z=null};THREE.RenderableObject=function(){this.z=this.object=null}; -THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.material=null}; -THREE.ColorUtils={adjustHSV:function(a,b,c,d){var f=THREE.ColorUtils.__hsv;THREE.ColorUtils.rgbToHsv(a,f);f.h=THREE.Math.clamp(f.h+b,0,1);f.s=THREE.Math.clamp(f.s+c,0,1);f.v=THREE.Math.clamp(f.v+d,0,1);a.setHSV(f.h,f.s,f.v)},rgbToHsv:function(a,b){var c=a.r,d=a.g,f=a.b,g=Math.max(Math.max(c,d),f),e=Math.min(Math.min(c,d),f);if(e===g)e=c=0;else{var h=g-e,e=h/g,c=(c===g?(d-f)/h:d===g?2+(f-c)/h:4+(c-d)/h)/6;0>c&&(c+=1);1a?b(c,f-1):j[f]b||o>b||q>b){h=a.vertices.length;t=d.clone();d=d.clone();m>=o&&m>=q?(i=i.clone(),i.position.lerpSelf(j.position,0.5),t.a=f,t.b=h,t.c=e,d.a=h,d.b=g,d.c=e,f= -0):o>=m&&o>=q?(i=j.clone(),i.position.lerpSelf(k.position,0.5),t.a=f,t.b=g,t.c=h,d.a=h,d.b=e,d.c=f,f=1):(i=i.clone(),i.position.lerpSelf(k.position,0.5),t.a=f,t.b=g,t.c=h,d.a=h,d.b=g,d.c=e,f=2);a.faces.splice(c,1,t,d);a.vertices.push(i);for(g=0;gb||o>b||p>b||n>b){r=a.vertices.length;s=a.vertices.length+1;t=d.clone(); -d=d.clone();m>=o&&m>=p&&m>=n||p>=o&&p>=m&&p>=n?(m=i.clone(),m.position.lerpSelf(j.position,0.5),j=k.clone(),j.position.lerpSelf(q.position,0.5),t.a=f,t.b=r,t.c=s,t.d=h,d.a=r,d.b=g,d.c=e,d.d=s,f=0):(m=j.clone(),m.position.lerpSelf(k.position,0.5),j=q.clone(),j.position.lerpSelf(i.position,0.5),t.a=f,t.b=g,t.c=r,t.d=s,d.a=s,d.b=r,d.c=e,d.d=h,f=1);a.faces.splice(c,1,t,d);a.vertices.push(m);a.vertices.push(j);for(g=0;gq-1?f-1:q-1,o=(q+1)%f,p=0>k-1?d-1:k-1,n=(k+1)%d,r=[],s=[0,0,h[4*(q*d+k)]/255*b];r.push([-1,0,h[4*(q*d+p)]/255*b]);r.push([-1,-1,h[4*(m*d+p)]/255*b]);r.push([0,-1, -h[4*(m*d+k)]/255*b]);r.push([1,-1,h[4*(m*d+n)]/255*b]);r.push([1,0,h[4*(q*d+n)]/255*b]);r.push([1,1,h[4*(o*d+n)]/255*b]);r.push([0,1,h[4*(o*d+k)]/255*b]);r.push([-1,1,h[4*(o*d+p)]/255*b]);m=[];p=r.length;for(o=0;o 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\n#ifdef WRAP_AROUND\nuniform vec3 wrapRGB;\n#endif\nvarying vec3 vViewPosition;", -THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3( 1.0 ), uOpacity );\nvec3 specularTex = vec3( 1.0 );\nvec3 normalTex = texture2D( tNormal, vUv ).xyz * 2.0 - 1.0;\nnormalTex.xy *= uNormalScale;\nnormalTex = normalize( normalTex );\nif( enableDiffuse ) {\n#ifdef GAMMA_INPUT\nvec4 texelColor = texture2D( tDiffuse, vUv );\ntexelColor.xyz *= texelColor.xyz;\ngl_FragColor = gl_FragColor * texelColor;\n#else\ngl_FragColor = gl_FragColor * texture2D( tDiffuse, vUv );\n#endif\n}\nif( enableAO ) {\n#ifdef GAMMA_INPUT\nvec4 aoColor = texture2D( tAO, vUv );\naoColor.xyz *= aoColor.xyz;\ngl_FragColor.xyz = gl_FragColor.xyz * aoColor.xyz;\n#else\ngl_FragColor.xyz = gl_FragColor.xyz * texture2D( tAO, vUv ).xyz;\n#endif\n}\nif( enableSpecular )\nspecularTex = texture2D( tSpecular, vUv ).xyz;\nmat3 tsb = mat3( normalize( vTangent ), normalize( vBinormal ), normalize( vNormal ) );\nvec3 finalNormal = tsb * normalTex;\nvec3 normal = normalize( finalNormal );\nvec3 viewPosition = normalize( vViewPosition );\n#if MAX_POINT_LIGHTS > 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec3 pointVector = normalize( vPointLight[ i ].xyz );\nfloat pointDistance = vPointLight[ i ].w;\n#ifdef WRAP_AROUND\nfloat pointDiffuseWeightFull = max( dot( normal, pointVector ), 0.0 );\nfloat pointDiffuseWeightHalf = max( 0.5 * dot( normal, pointVector ) + 0.5, 0.0 );\nvec3 pointDiffuseWeight = mix( vec3 ( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n#else\nfloat pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );\n#endif\npointDiffuse += pointDistance * pointLightColor[ i ] * uDiffuseColor * pointDiffuseWeight;\nvec3 pointHalfVector = normalize( pointVector + viewPosition );\nfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\nfloat pointSpecularWeight = specularTex.r * max( pow( pointDotNormalHalf, uShininess ), 0.0 );\npointSpecular += pointDistance * pointLightColor[ i ] * uSpecularColor * pointSpecularWeight * pointDiffuseWeight;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\n#ifdef WRAP_AROUND\nfloat directionalLightWeightingFull = max( dot( normal, dirVector ), 0.0 );\nfloat directionalLightWeightingHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );\nvec3 dirDiffuseWeight = mix( vec3( directionalLightWeightingFull ), vec3( directionalLightWeightingHalf ), wrapRGB );\n#else\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\n#endif\ndirDiffuse += directionalLightColor[ i ] * uDiffuseColor * dirDiffuseWeight;\nvec3 dirHalfVector = normalize( dirVector + viewPosition );\nfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\nfloat dirSpecularWeight = specularTex.r * max( pow( dirDotNormalHalf, uShininess ), 0.0 );\ndirSpecular += directionalLightColor[ i ] * uSpecularColor * dirSpecularWeight * dirDiffuseWeight;\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\ngl_FragColor.xyz = gl_FragColor.xyz * ( totalDiffuse + ambientLightColor * uAmbientColor) + totalSpecular;\nif ( enableReflection ) {\nvec3 wPos = cameraPosition - vViewPosition;\nvec3 vReflect = reflect( normalize( wPos ), normal );\nvec4 cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n#ifdef GAMMA_INPUT\ncubeColor.xyz *= cubeColor.xyz;\n#endif\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, specularTex.r * uReflectivity );\n}", -THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.linear_to_gamma_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n"),vertexShader:["attribute vec4 tangent;\nuniform vec2 uOffset;\nuniform vec2 uRepeat;\n#ifdef VERTEX_TEXTURES\nuniform sampler2D tDisplacement;\nuniform float uDisplacementScale;\nuniform float uDisplacementBias;\n#endif\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec3 vNormal;\nvarying vec2 vUv;\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\nvarying vec3 vViewPosition;", -THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvViewPosition = -mvPosition.xyz;\nvNormal = normalMatrix * normal;\nvTangent = normalMatrix * tangent.xyz;\nvBinormal = cross( vNormal, vTangent ) * tangent.w;\nvUv = uv * uRepeat + uOffset;\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nvPointLight[ i ] = vec4( lVector, lDistance );\n}\n#endif\n#ifdef VERTEX_TEXTURES\nvec3 dv = texture2D( tDisplacement, uv ).xyz;\nfloat df = uDisplacementScale * dv.x + uDisplacementBias;\nvec4 displacedPosition = vec4( normalize( vNormal.xyz ) * df, 0.0 ) + mvPosition;\ngl_Position = projectionMatrix * displacedPosition;\n#else\ngl_Position = projectionMatrix * mvPosition;\n#endif", -THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:1,texture:null},tFlip:{type:"f",value:-1}},vertexShader:"varying vec3 vViewPosition;\nvoid main() {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"uniform samplerCube tCube;\nuniform float tFlip;\nvarying vec3 vViewPosition;\nvoid main() {\nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( tFlip * wPos.x, wPos.yz ) );\n}"}}}; -THREE.BufferGeometry=function(){this.id=THREE.GeometryCount++;this.vertexColorArray=this.vertexUvArray=this.vertexNormalArray=this.vertexPositionArray=this.vertexIndexArray=this.vertexColorBuffer=this.vertexUvBuffer=this.vertexNormalBuffer=this.vertexPositionBuffer=this.vertexIndexBuffer=null;this.dynamic=!1;this.boundingSphere=this.boundingBox=null;this.morphTargets=[]};THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,computeBoundingBox:function(){},computeBoundingSphere:function(){}}; -THREE.Curve=function(){};THREE.Curve.prototype.getPoint=function(){console.log("Warning, getPoint() not implemented!");return null};THREE.Curve.prototype.getPointAt=function(a){return this.getPoint(this.getUtoTmapping(a))};THREE.Curve.prototype.getPoints=function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPoint(b/a));return c};THREE.Curve.prototype.getSpacedPoints=function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPointAt(b/a));return c}; -THREE.Curve.prototype.getLength=function(){var a=this.getLengths();return a[a.length-1]};THREE.Curve.prototype.getLengths=function(a){a||(a=200);if(this.cacheArcLengths&&this.cacheArcLengths.length==a+1)return this.cacheArcLengths;var b=[],c,d=this.getPoint(0),f,g=0;b.push(0);for(f=1;f<=a;f++)c=this.getPoint(f/a),g+=c.distanceTo(d),b.push(g),d=c;return this.cacheArcLengths=b}; -THREE.Curve.prototype.getUtoTmapping=function(a,b){var c=this.getLengths(),d=0,f=c.length,g;g=b?b:a*c[f-1];for(var e=0,h=f-1,i;e<=h;)if(d=Math.floor(e+(h-e)/2),i=c[d]-g,0>i)e=d+1;else if(0b&&(b=0);1d.length-2?a:a+1;c[3]=a>d.length-3?a:a+2;b.x=THREE.Curve.Utils.interpolate(d[c[0]].x,d[c[1]].x,d[c[2]].x,d[c[3]].x,f);b.y=THREE.Curve.Utils.interpolate(d[c[0]].y,d[c[1]].y,d[c[2]].y,d[c[3]].y,f);return b};THREE.ArcCurve=function(a,b,c,d,f,g){this.aX=a;this.aY=b;this.aRadius=c;this.aStartAngle=d;this.aEndAngle=f;this.aClockwise=g}; -THREE.ArcCurve.prototype=new THREE.Curve;THREE.ArcCurve.prototype.constructor=THREE.ArcCurve;THREE.ArcCurve.prototype.getPoint=function(a){var b=this.aEndAngle-this.aStartAngle;this.aClockwise||(a=1-a);b=this.aStartAngle+a*b;a=this.aX+this.aRadius*Math.cos(b);b=this.aY+this.aRadius*Math.sin(b);return new THREE.Vector2(a,b)}; -THREE.Curve.Utils={tangentQuadraticBezier:function(a,b,c,d){return 2*(1-a)*(c-b)+2*a*(d-c)},tangentCubicBezier:function(a,b,c,d,f){return-3*b*(1-a)*(1-a)+3*c*(1-a)*(1-a)-6*a*c*(1-a)+6*a*d*(1-a)-3*a*a*d+3*a*a*f},tangentSpline:function(a){return 6*a*a-6*a+(3*a*a-4*a+1)+(-6*a*a+6*a)+(3*a*a-2*a)},interpolate:function(a,b,c,d,f){var a=0.5*(c-a),d=0.5*(d-b),g=f*f;return(2*b-2*c+a+d)*f*g+(-3*b+3*c-2*a-d)*g+a*f+b}}; -THREE.Curve.create=function(a,b){a.prototype=new THREE.Curve;a.prototype.constructor=a;a.prototype.getPoint=b;return a};THREE.LineCurve3=THREE.Curve.create(function(a,b){this.v1=a;this.v2=b},function(a){var b=new THREE.Vector3;b.sub(this.v2,this.v1);b.multiplyScalar(a);b.addSelf(this.v1);return b}); -THREE.QuadraticBezierCurve3=THREE.Curve.create(function(a,b,c){this.v0=a;this.v1=b;this.v2=c},function(a){var b,c;b=THREE.Shape.Utils.b2(a,this.v0.x,this.v1.x,this.v2.x);c=THREE.Shape.Utils.b2(a,this.v0.y,this.v1.y,this.v2.y);a=THREE.Shape.Utils.b2(a,this.v0.z,this.v1.z,this.v2.z);return new THREE.Vector3(b,c,a)}); -THREE.CubicBezierCurve3=THREE.Curve.create(function(a,b,c,d){this.v0=a;this.v1=b;this.v2=c;this.v3=d},function(a){var b,c;b=THREE.Shape.Utils.b3(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x);c=THREE.Shape.Utils.b3(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y);a=THREE.Shape.Utils.b3(a,this.v0.z,this.v1.z,this.v2.z,this.v3.z);return new THREE.Vector3(b,c,a)}); -THREE.SplineCurve3=THREE.Curve.create(function(a){this.points=void 0==a?[]:a},function(a){var b=new THREE.Vector3,c=[],d=this.points,f;f=(d.length-1)*a;a=Math.floor(f);f-=a;c[0]=0==a?a:a-1;c[1]=a;c[2]=a>d.length-2?a:a+1;c[3]=a>d.length-3?a:a+2;b.x=THREE.Curve.Utils.interpolate(d[c[0]].x,d[c[1]].x,d[c[2]].x,d[c[3]].x,f);b.y=THREE.Curve.Utils.interpolate(d[c[0]].y,d[c[1]].y,d[c[2]].y,d[c[3]].y,f);b.z=THREE.Curve.Utils.interpolate(d[c[0]].z,d[c[1]].z,d[c[2]].z,d[c[3]].z,f);return b}); -THREE.CurvePath=function(){this.curves=[];this.bends=[];this.autoClose=!1};THREE.CurvePath.prototype=new THREE.Curve;THREE.CurvePath.prototype.constructor=THREE.CurvePath;THREE.CurvePath.prototype.add=function(a){this.curves.push(a)};THREE.CurvePath.prototype.checkConnection=function(){};THREE.CurvePath.prototype.closePath=function(){var a=this.curves[0].getPoint(0),b=this.curves[this.curves.length-1].getPoint(1);a.equals(b)||this.curves.push(new THREE.LineCurve(b,a))}; -THREE.CurvePath.prototype.getPoint=function(a){for(var b=a*this.getLength(),c=this.getCurveLengths(),a=0;a=b)return b=c[a]-b,a=this.curves[a],b=1-b/a.getLength(),a.getPointAt(b);a++}return null};THREE.CurvePath.prototype.getLength=function(){var a=this.getCurveLengths();return a[a.length-1]}; -THREE.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var a=[],b=0,c,d=this.curves.length;for(c=0;cb)b=g.x;else if(g.xc)c=g.y;else if(g.y -h&&(h+=c.length);h%=c.length;0>e&&(e+=j.length);e%=j.length;f=0<=h-1?h-1:c.length-1;g=0<=e-1?e-1:j.length-1;n=[j[e],c[h],c[f]];n=THREE.FontUtils.Triangulate.area(n);r=[j[e],j[g],c[h]];r=THREE.FontUtils.Triangulate.area(r);q+m>n+r&&(h=o,e=k,0>h&&(h+=c.length),h%=c.length,0>e&&(e+=j.length),e%=j.length,f=0<=h-1?h-1:c.length-1,g=0<=e-1?e-1:j.length-1);q=c.slice(0,h);m=c.slice(h);o=j.slice(e);k=j.slice(0,e);g=[j[e],j[g],c[h]];p.push([j[e],c[h],c[f]]);p.push(g);c=q.concat(o).concat(k).concat(m)}return{shape:c, -isolatedPts:p,allpoints:d}},triangulateShape:function(a,b){var c=THREE.Shape.Utils.removeHoles(a,b),d=c.allpoints,f=c.isolatedPts,c=THREE.FontUtils.Triangulate(c.shape,!1),g,e,h,i,j={};for(g=0,e=d.length;gd;d++)i=h[d].x+":"+h[d].y,i=j[i],void 0!==i&&(h[d]=i)}for(g=0,e=f.length;gd;d++)i=h[d].x+":"+h[d].y,i=j[i],void 0!==i&&(h[d]=i)}return c.concat(f)}, -isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,f){return this.b3p0(a,b)+this.b3p1(a,c)+this.b3p2(a,d)+ -this.b3p3(a,f)}};THREE.TextPath=function(a,b){THREE.Path.call(this);this.parameters=b||{};this.set(a)};THREE.TextPath.prototype.set=function(a,b){b=b||this.parameters;this.text=a;var c=void 0!==b.curveSegments?b.curveSegments:4,d=void 0!==b.font?b.font:"helvetiker",f=void 0!==b.weight?b.weight:"normal",g=void 0!==b.style?b.style:"normal";THREE.FontUtils.size=void 0!==b.size?b.size:100;THREE.FontUtils.divisions=c;THREE.FontUtils.face=d;THREE.FontUtils.weight=f;THREE.FontUtils.style=g}; -THREE.TextPath.prototype.toShapes=function(){for(var a=THREE.FontUtils.drawText(this.text).paths,b=[],c=0,d=a.length;ca.hierarchy[c].keys[d].time)a.hierarchy[c].keys[d].time= -0;if(void 0!==a.hierarchy[c].keys[d].rot&&!(a.hierarchy[c].keys[d].rot instanceof THREE.Quaternion)){var h=a.hierarchy[c].keys[d].rot;a.hierarchy[c].keys[d].rot=new THREE.Quaternion(h[0],h[1],h[2],h[3])}}if(a.hierarchy[c].keys.length&&void 0!==a.hierarchy[c].keys[0].morphTargets){h={};for(d=0;dn;n++){c=b[n];e=i.prevKey[c];h=i.nextKey[c];if(h.time<=m){if(qd||1d?0:1;if("pos"===c)if(c=a.position,this.interpolationType===THREE.AnimationHandler.LINEAR)c.x=f[0]+(g[0]-f[0])*d,c.y=f[1]+(g[1]-f[1])*d,c.z=f[2]+(g[2]-f[2])*d;else{if(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)if(this.points[0]= -this.getPrevKeyWith("pos",o,e.index-1).pos,this.points[1]=f,this.points[2]=g,this.points[3]=this.getNextKeyWith("pos",o,h.index+1).pos,d=0.33*d+0.33,f=this.interpolateCatmullRom(this.points,d),c.x=f[0],c.y=f[1],c.z=f[2],this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)d=this.interpolateCatmullRom(this.points,1.01*d),this.target.set(d[0],d[1],d[2]),this.target.subSelf(c),this.target.y=0,this.target.normalize(),d=Math.atan2(this.target.x,this.target.z),a.rotation.set(0,d,0)}else if("rot"=== -c)THREE.Quaternion.slerp(f,g,a.quaternion,d);else if("scl"===c)c=a.scale,c.x=f[0]+(g[0]-f[0])*d,c.y=f[1]+(g[1]-f[1])*d,c.z=f[2]+(g[2]-f[2])*d}}if(this.JITCompile&&void 0===k[0][j]){this.hierarchy[0].updateMatrixWorld(!0);for(o=0;oa.length-2?g:g+1;c[3]=g>a.length-3?g:g+2;g=a[c[0]];h=a[c[1]];i=a[c[2]];j=a[c[3]];c=f*f;e=f*c;d[0]=this.interpolate(g[0],h[0],i[0],j[0],f,c,e);d[1]=this.interpolate(g[1],h[1],i[1],j[1],f,c,e);d[2]=this.interpolate(g[2],h[2],i[2],j[2],f,c,e);return d}; -THREE.Animation.prototype.interpolate=function(a,b,c,d,f,g,e){a=0.5*(c-a);d=0.5*(d-b);return(2*(b-c)+a+d)*e+(-3*(b-c)-2*a-d)*g+a*f+b};THREE.Animation.prototype.getNextKeyWith=function(a,b,c){for(var d=this.data.hierarchy[b].keys,c=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?c=e?b.interpolate(c,e):b.interpolate(c,c.time)}this.data.hierarchy[a].node.updateMatrix();d.matrixWorldNeedsUpdate=!0}}if(this.JITCompile&&void 0===g[0][f]){this.hierarchy[0].updateMatrixWorld(!0);for(a=0;a(a*=2)?0.5*a*a:-0.5*(--a*(a-2)-1)}function d(a,b){return function(){b.apply(a,arguments)}}function f(a,b,c,d){var f={name:c,fps:0.6,length:d,hierarchy:[]},e,g=b.getControlPointsArray(),h=b.getLength(),r=g.length,s=0;e=r-1;b={parent:-1,keys:[]};b.keys[0]={time:0,pos:g[0],rot:[0,0,0,1],scl:[1,1,1]};b.keys[e]={time:d,pos:g[e],rot:[0,0,0,1],scl:[1,1,1]};for(e=1;ei)?1:i));this.object.translateX(b*j);this.object.translateY(b*k);e&&(this.roll+=this.rollSpeed*a*h);if(this.forward.y>this.constrainVertical[1])this.forward.y=this.constrainVertical[1],this.forward.normalize();else if(this.forward.yc.maxDistance*c.maxDistance&&c.object.position.setLength(c.maxDistance),e.lengthSq()o;o++)this.materials.push(e)}o=0;r=1;p=2;s= -3;n=4;t=5}else this.materials=[];this.sides={px:!0,nx:!0,py:!0,ny:!0,pz:!0,nz:!0};if(void 0!=h)for(var w in h)void 0!==this.sides[w]&&(this.sides[w]=h[w]);this.sides.px&&i("z","y",-1,-1,c,b,k,o);this.sides.nx&&i("z","y",1,-1,c,b,-k,r);this.sides.py&&i("x","z",1,1,a,c,q,p);this.sides.ny&&i("x","z",1,-1,a,c,-q,s);this.sides.pz&&i("x","y",1,-1,a,b,m,n);this.sides.nz&&i("x","y",-1,-1,a,b,-m,t);this.computeCentroids();this.mergeVertices()};THREE.CubeGeometry.prototype=new THREE.Geometry; -THREE.CubeGeometry.prototype.constructor=THREE.CubeGeometry; -THREE.CylinderGeometry=function(a,b,c,d,f,g){THREE.Geometry.call(this);var a=void 0!==a?a:20,b=void 0!==b?b:20,c=void 0!==c?c:100,e=c/2,d=d||8,f=f||1,h,i,j=[],k=[];for(i=0;i<=f;i++){var q=[],m=[],o=i/f,p=o*(b-a)+a;for(h=0;h<=d;h++){var n=h/d,r=p*Math.sin(2*n*Math.PI),s=-o*c+e,t=p*Math.cos(2*n*Math.PI);this.vertices.push(new THREE.Vertex(new THREE.Vector3(r,s,t)));q.push(this.vertices.length-1);m.push(new THREE.UV(n,o))}j.push(q);k.push(m)}for(i=0;ig?(b=Math.atan2(b.y-a.y,b.x-a.x),a=Math.atan2(c.y-a.y,c.x-a.x),b>a&&(a+=2*Math.PI),c=(b+a)/2,a=-Math.cos(c),c=-Math.sin(c),new THREE.Vector2(a,c)):d.multiplyScalar(g).addSelf(h).subSelf(a).clone()}function f(a){for(y=a.length;0<=--y;){$=y;C=y-1;0>C&&(C=a.length-1);for(var b= -0,c=o+2*k,b=0;bMath.abs(d-l)? -B.faceVertexUvs[0].push([new THREE.UV(f,e),new THREE.UV(j,g),new THREE.UV(m,h),new THREE.UV(q,i)]):B.faceVertexUvs[0].push([new THREE.UV(d,e),new THREE.UV(l,g),new THREE.UV(n,h),new THREE.UV(p,i)])}}}function g(a,b,c){B.vertices.push(new THREE.Vertex(new THREE.Vector3(a,b,c)))}function e(a,b,c){a+=D;b+=D;c+=D;B.faces.push(new THREE.Face3(a,b,c,null,null,w));var d=B.vertices[b].position.x,b=B.vertices[b].position.y,f=B.vertices[c].position.x,c=B.vertices[c].position.y;B.faceVertexUvs[0].push([new THREE.UV(B.vertices[a].position.x, -1-B.vertices[a].position.y),new THREE.UV(d,1-b),new THREE.UV(f,1-c)])}var h=void 0!==b.amount?b.amount:100,i=void 0!==b.bevelThickness?b.bevelThickness:6,j=void 0!==b.bevelSize?b.bevelSize:i-2,k=void 0!==b.bevelSegments?b.bevelSegments:3,q=void 0!==b.bevelEnabled?b.bevelEnabled:!0,m=void 0!==b.curveSegments?b.curveSegments:12,o=void 0!==b.steps?b.steps:1,p=b.bendPath,n=b.extrudePath,r,s=!1,t=void 0!==b.useSpacedPoints?b.useSpacedPoints:!1,w=b.material,u=b.extrudeMaterial;if(n)r=n.getPoints(m),o=r.length, -s=!0,q=!1;q||(j=i=k=0);var v,A,F,B=this,D=this.vertices.length;p&&a.addWrapPath(p);m=t?a.extractAllSpacedPoints(m):a.extractAllPoints(m);p=m.shape;m=m.holes;if(n=!THREE.Shape.Utils.isClockWise(p)){p=p.reverse();for(A=0,F=m.length;Af)return null;var g=[],e=[],h=[],i,j,k;if(0=q--){console.log("Warning, unable to triangulate polygon!");break}i=j;f<=i&&(i=0);j=i+1;f<=j&&(j=0);k=j+1;f<=k&&(k=0);var m;a:{m=a;var o=i,p=j,n=k,r=f,s=e,t=void 0,w=void 0,u=void 0,v=void 0,A=void 0, -F=void 0,B=void 0,D=void 0,H=void 0,w=m[s[o]].x,u=m[s[o]].y,v=m[s[p]].x,A=m[s[p]].y,F=m[s[n]].x,B=m[s[n]].y;if(1.0E-10>(v-w)*(B-u)-(A-u)*(F-w))m=!1;else{for(t=0;td?(d=new THREE.Face3(a.index,b.index,c.index,[a.position.clone(),b.position.clone(),c.position.clone()]),d.centroid.addSelf(a.position).addSelf(b.position).addSelf(c.position).divideScalar(3),d.normal=d.centroid.clone().normalize(), -i.faces.push(d),d=Math.atan2(d.centroid.z,-d.centroid.x),i.faceVertexUvs[0].push([h(a.uv,a.position,d),h(b.uv,b.position,d),h(c.uv,c.position,d)])):(d-=1,g(a,e(a,b),e(a,c),d),g(e(a,b),b,e(b,c),d),g(e(a,c),e(b,c),c,d),g(e(a,b),e(b,c),e(a,c),d))}function e(a,b){q[a.index]||(q[a.index]=[]);q[b.index]||(q[b.index]=[]);var c=q[a.index][b.index];void 0===c&&(q[a.index][b.index]=q[b.index][a.index]=c=f((new THREE.Vector3).add(a.position,b.position).divideScalar(2)));return c}function h(a,b,c){0>c&&1===a.u&& -(a=new THREE.UV(a.u-1,a.v));0===b.x&&0===b.z&&(a=new THREE.UV(c/2/Math.PI+0.5,a.v));return a}THREE.Geometry.call(this);for(var c=c||1,d=d||0,i=this,j=0,k=a.length;jq;q++){o=i[q];k=new THREE.Color;k.setRGB(0,0,0);for(var p=0;pw.length&&(q[o]=!0)}for(o in p)if(w=p[o],s=w[0],w=w[1],v=o.split("_"),A=v[0],v=v[1],r=new THREE.Vector3,q[o]?(r.addSelf(h[A].position),r.addSelf(h[v].position),r.multiplyScalar(0.5)):(r.addSelf(j[s]),r.addSelf(j[w]),r.addSelf(h[A].position),r.addSelf(h[v].position),r.multiplyScalar(0.25)), -k[o]=t+d.length+u,i.push(new THREE.Vertex(r)),u++,e.supportUVs&&0!=m.length)w=new THREE.UV,w.u=m[A].u+m[v].u,w.v=m[A].v+m[v].v,w.u/=2,w.v/=2,m.push(w);var I,Q;v=["123","12","2","23"];r=["123","23","3","31"];var D=["123","31","1","12"],H=["1234","12","2","23"],P=["1234","23","3","34"],L=["1234","34","4","41"],K=["1234","41","1","12"];for(o=0,p=j.length;oa.length?".":a.join("/"))+"/"},initMaterials:function(a,b,c){a.materials=[];for(var d=0;da.opacity)j.transparent=a.transparent;if(void 0!==a.depthTest)j.depthTest=a.depthTest;if(void 0!==a.vertexColors)if("face"==a.vertexColors)j.vertexColors=THREE.FaceColors;else if(a.vertexColors)j.vertexColors= -THREE.VertexColors;if(a.colorDiffuse)j.color=e(a.colorDiffuse);else if(a.DbgColor)j.color=a.DbgColor;if(a.colorSpecular)j.specular=e(a.colorSpecular);if(a.colorAmbient)j.ambient=e(a.colorAmbient);if(a.transparency)j.opacity=a.transparency;if(a.specularCoef)j.shininess=a.specularCoef;a.mapDiffuse&&b&&g(j,"map",a.mapDiffuse,a.mapDiffuseRepeat,a.mapDiffuseOffset,a.mapDiffuseWrap);a.mapLight&&b&&g(j,"lightMap",a.mapLight,a.mapLightRepeat,a.mapLightOffset,a.mapLightWrap);a.mapNormal&&b&&g(j,"normalMap", -a.mapNormal,a.mapNormalRepeat,a.mapNormalOffset,a.mapNormalWrap);a.mapSpecular&&b&&g(j,"specularMap",a.mapSpecular,a.mapSpecularRepeat,a.mapSpecularOffset,a.mapSpecularWrap);if(a.mapNormal){var i=THREE.ShaderUtils.lib.normal,k=THREE.UniformsUtils.clone(i.uniforms);k.tNormal.texture=j.normalMap;if(a.mapNormalFactor)k.uNormalScale.value=a.mapNormalFactor;if(j.map)k.tDiffuse.texture=j.map,k.enableDiffuse.value=!0;if(j.specularMap)k.tSpecular.texture=j.specularMap,k.enableSpecular.value=!0;if(j.lightMap)k.tAO.texture= -j.lightMap,k.enableAO.value=!0;k.uDiffuseColor.value.setHex(j.color);k.uSpecularColor.value.setHex(j.specular);k.uAmbientColor.value.setHex(j.ambient);k.uShininess.value=j.shininess;if(void 0!==j.opacity)k.uOpacity.value=j.opacity;j=new THREE.ShaderMaterial({fragmentShader:i.fragmentShader,vertexShader:i.vertexShader,uniforms:k,lights:!0,fog:!0})}else j=new THREE[i](j);if(void 0!==a.DbgName)j.name=a.DbgName;return j}};THREE.BinaryLoader=function(a){THREE.Loader.call(this,a)}; -THREE.BinaryLoader.prototype=new THREE.Loader;THREE.BinaryLoader.prototype.constructor=THREE.BinaryLoader;THREE.BinaryLoader.prototype.supr=THREE.Loader.prototype;THREE.BinaryLoader.prototype.load=function(a,b,c,d){var c=c?c:this.extractUrlBase(a),d=d?d:this.extractUrlBase(a),f=this.showProgress?THREE.Loader.prototype.updateProgress:null;this.onLoadStart();this.loadAjaxJSON(this,a,b,c,d,f)}; -THREE.BinaryLoader.prototype.loadAjaxJSON=function(a,b,c,d,f,g){var e=new XMLHttpRequest;e.onreadystatechange=function(){if(4==e.readyState)if(200==e.status||0==e.status){var h=JSON.parse(e.responseText);a.loadAjaxBuffers(h,c,f,d,g)}else console.error("THREE.BinaryLoader: Couldn't load ["+b+"] ["+e.status+"]")};e.open("GET",b,!0);e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined");e.setRequestHeader("Content-Type","text/plain");e.send(null)}; -THREE.BinaryLoader.prototype.loadAjaxBuffers=function(a,b,c,d,f){var g=new XMLHttpRequest,e=c+"/"+a.buffers,h=0;g.onreadystatechange=function(){4==g.readyState?200==g.status||0==g.status?THREE.BinaryLoader.prototype.createBinModel(g.response,b,d,a.materials):console.error("THREE.BinaryLoader: Couldn't load ["+e+"] ["+g.status+"]"):3==g.readyState?f&&(0==h&&(h=g.getResponseHeader("Content-Length")),f({total:h,loaded:g.responseText.length})):2==g.readyState&&(h=g.getResponseHeader("Content-Length"))}; -g.open("GET",e,!0);g.responseType="arraybuffer";g.send(null)}; -THREE.BinaryLoader.prototype.createBinModel=function(a,b,c,d){var f=function(b){var c,f,i,j,k,q,m,o,p,n,r,s,t,w,u;function v(a){return a%4?4-a%4:0}function A(a,b){return(new Uint8Array(a,b,1))[0]}function F(a,b){return(new Uint32Array(a,b,1))[0]}function B(b,c){var d,e,f,g,h,i,j,k,l=new Uint32Array(a,c,3*b);for(d=0;da.length?".":a.join("/"))+"/");if((a=U.evaluate("//dae:asset",U,E,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null).iterateNext())&&a.childNodes)for(f=0;fp)break}if(!s){s=new l(p);t=-1;u=0;for(v=d.length;u=p&&(t=u);p=t;d.splice(-1==p?d.length: -p,0,s)}s.addTarget(f,j,g,r)}}else console.log('Could not find transform "'+b.sid+'" in node '+this.id)}for(c=0;cthis.set)this.set=0;return this};F.prototype.parse=function(a){this.id=a.getAttribute("id");for(var b=0;bthis.transparency,c;for(c in this)switch(c){case "ambient":case "emission":case "diffuse":case "specular":var d=this[c]; -if(d instanceof D)if(d.isTexture()){if(this.effect.sampler&&this.effect.surface&&this.effect.sampler.source==this.effect.surface.sid){var e=Ka[this.effect.surface.init_from];if(e)e=THREE.ImageUtils.loadTexture(Sa+e.init_from),e.wrapS=d.texOpts.wrapU?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,e.wrapT=d.texOpts.wrapV?THREE.RepeatWrapping:THREE.ClampToEdgeWrapping,e.offset.x=d.texOpts.offsetU,e.offset.y=d.texOpts.offsetV,e.repeat.x=d.texOpts.repeatU,e.repeat.y=d.texOpts.repeatV,a.map=e}}else"diffuse"== -c?a.color=d.color.getHex():b||(a[c]=d.color.getHex());break;case "shininess":case "reflectivity":a[c]=this[c];break;case "transparency":if(b)a.transparent=!0,a.opacity=this[c],b=!0}a.shading=za;return this.material=new THREE.MeshLambertMaterial(a)};I.prototype.parse=function(a){for(var b=0;bf||1f?0:1;if(h.length)for(var e=[],i=0;ir.parameters.opacity)r.parameters.transparent=!0;if(r.parameters.normalMap){a=THREE.ShaderUtils.lib.normal;k=THREE.UniformsUtils.clone(a.uniforms);n=r.parameters.color;P=r.parameters.specular;c=r.parameters.ambient;K=r.parameters.shininess;k.tNormal.texture=C.textures[r.parameters.normalMap];if(r.parameters.normalMapFactor)k.uNormalScale.value=r.parameters.normalMapFactor;if(r.parameters.map)k.tDiffuse.texture=r.parameters.map,k.enableDiffuse.value=!0;if(r.parameters.lightMap)k.tAO.texture= -r.parameters.lightMap,k.enableAO.value=!0;if(r.parameters.specularMap)k.tSpecular.texture=C.textures[r.parameters.specularMap],k.enableSpecular.value=!0;k.uDiffuseColor.value.setHex(n);k.uSpecularColor.value.setHex(P);k.uAmbientColor.value.setHex(c);k.uShininess.value=K;if(r.parameters.opacity)k.uOpacity.value=r.parameters.opacity;I=new THREE.ShaderMaterial({fragmentShader:a.fragmentShader,vertexShader:a.vertexShader,uniforms:k,lights:!0,fog:!0})}else I=new THREE[r.type](r.parameters);C.materials[q]= -I}f();i.callbackSync(C);h()};THREE.UTF8Loader=function(){}; -THREE.UTF8Loader.prototype.load=function(a,b,c){var d=new XMLHttpRequest,f=void 0!==c.scale?c.scale:1,g=void 0!==c.offsetX?c.offsetX:0,e=void 0!==c.offsetY?c.offsetY:0,h=void 0!==c.offsetZ?c.offsetZ:0;d.onreadystatechange=function(){4==d.readyState?200==d.status||0==d.status?THREE.UTF8Loader.prototype.createModel(d.responseText,b,f,g,e,h):console.error("THREE.UTF8Loader: Couldn't load ["+a+"] ["+d.status+"]"):3!=d.readyState&&2==d.readyState&&d.getResponseHeader("Content-Length")};d.open("GET",a, -!0);d.send(null)};THREE.UTF8Loader.prototype.decompressMesh=function(a){var b=a.charCodeAt(0);57344<=b&&(b-=2048);b++;for(var c=new Float32Array(8*b),d=1,f=0;8>f;f++){for(var g=0,e=0;e>1^-(h&1));c[8*e+f]=g}d+=b}b=a.length-d;g=new Uint16Array(b);for(f=e=0;f=this.maxCount-3&&h(this)};this.begin=function(){this.count=0; -this.hasNormal=this.hasPos=!1};this.end=function(a){if(0!==this.count){for(var b=3*this.count;bq&&(q=1);i=Math.floor(i+h);i>this.size-1&&(i=this.size-1);var m=Math.floor(j-h);1>m&&(m=1);j=Math.floor(j+h);j>this.size-1&&(j=this.size-1);var o=Math.floor(k-h);1>o&&(o=1);h=Math.floor(k+h);h>this.size-1&&(h=this.size- -1);for(var p,n,r,s,t,w,u,k=q;kj&&(o=j);for(f=0;fk&&(p=k);for(g=0;gk&&(p=k);for(e=0;e=b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS)?(j=!1,k=a(THREE.ShaderFlares.lensFlare)):(j=!0,k=a(THREE.ShaderFlares.lensFlareVertexTexture));q={};m={};q.vertex=b.getAttribLocation(k,"position");q.uv=b.getAttribLocation(k,"uv");m.renderType=b.getUniformLocation(k,"renderType");m.map=b.getUniformLocation(k,"map");m.occlusionMap=b.getUniformLocation(k,"occlusionMap");m.opacity=b.getUniformLocation(k,"opacity");m.color=b.getUniformLocation(k, -"color");m.scale=b.getUniformLocation(k,"scale");m.rotation=b.getUniformLocation(k,"rotation");m.screenPosition=b.getUniformLocation(k,"screenPosition");o=!1};this.render=function(a,d,f,s){var a=a.__webglFlares,t=a.length;if(t){var w=new THREE.Vector3,u=s/f,v=0.5*f,A=0.5*s,F=16/s,B=new THREE.Vector2(F*u,F),D=new THREE.Vector3(1,1,0),H=new THREE.Vector2(1,1),I=m,F=q;b.useProgram(k);o||(b.enableVertexAttribArray(q.vertex),b.enableVertexAttribArray(q.uv),o=!0);b.uniform1i(I.occlusionMap,0);b.uniform1i(I.map, -1);b.bindBuffer(b.ARRAY_BUFFER,g);b.vertexAttribPointer(F.vertex,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(F.uv,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,e);b.disable(b.CULL_FACE);b.depthMask(!1);var Q,P,L,K,O;for(Q=0;Qv;v++)s[v]=new THREE.Vector3,n[v]=new THREE.Vector3;s=t.shadowCascadeNearZ[r];t=t.shadowCascadeFarZ[r];n[0].set(-1,-1,s);n[1].set(1,-1,s);n[2].set(-1,1,s);n[3].set(1,1,s);n[4].set(-1,-1,t);n[5].set(1,-1,t);n[6].set(-1,1,t);n[7].set(1,1,t);u.originalCamera=j;n=new THREE.Gyroscope;n.position=m.shadowCascadeOffset;n.add(u);n.add(u.target);j.add(n);m.shadowCascadeArray[p]=u;console.log("Created virtualLight",u)}r=m;s=p;t=r.shadowCascadeArray[s];t.position.copy(r.position); -t.target.position.copy(r.target.position);t.lookAt(t.target);t.shadowCameraVisible=r.shadowCameraVisible;t.shadowDarkness=r.shadowDarkness;t.shadowBias=r.shadowCascadeBias[s];n=r.shadowCascadeNearZ[s];r=r.shadowCascadeFarZ[s];t=t.pointsFrustum;t[0].z=n;t[1].z=n;t[2].z=n;t[3].z=n;t[4].z=r;t[5].z=r;t[6].z=r;t[7].z=r;w[o]=u;o++}else w[o]=m,o++;for(k=0,q=w.length;kr;r++){s=t[r];s.copy(n[r]);THREE.ShadowMapPlugin.__projector.unprojectVector(s, -p);o.matrixWorldInverse.multiplyVector3(s);if(s.xh.x)h.x=s.x;if(s.yh.y)h.y=s.y;if(s.zh.z)h.z=s.z}o.left=e.x;o.right=h.x;o.top=h.y;o.bottom=e.y;o.updateProjectionMatrix()}o=m.shadowMap;n=m.shadowMatrix;p=m.shadowCamera;p.position.copy(m.matrixWorld.getPosition());p.lookAt(m.target.matrixWorld.getPosition());p.updateMatrixWorld();p.matrixWorldInverse.getInverse(p.matrixWorld);if(m.cameraHelper)m.cameraHelper.lines.visible=m.shadowCameraVisible; -m.shadowCameraVisible&&m.cameraHelper.update(m.shadowCamera);n.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);n.multiplySelf(p.projectionMatrix);n.multiplySelf(p.matrixWorldInverse);if(!p._viewMatrixArray)p._viewMatrixArray=new Float32Array(16);p.matrixWorldInverse.flattenToArray(p._viewMatrixArray);if(!p._projectionMatrixArray)p._projectionMatrixArray=new Float32Array(16);p.projectionMatrix.flattenToArray(p._projectionMatrixArray);g.multiply(p.projectionMatrix,p.matrixWorldInverse);f.setFromMatrix(g); -b.setRenderTarget(o);b.clear();t=i.__webglObjects;for(m=0,o=t.length;m=0;n=m[n].parent){var r=m[n],s=new THREE.Vector3(r.pos[0],r.pos[1],r.pos[2]),a=new THREE.Vector3(r.scl[0],r.scl[1],r.scl[2]),i=new THREE.Quaternion(r.rotq[0],r.rotq[1],r.rotq[2],r.rotq[3]),o=(new THREE.Matrix4).compose(s,i,a);t.premultiply(o)}return t}function s(t){var n=-1;if(!t||!e.materials)return 0;for(var r=0;r=0;l=m[l].parent){var p=e.animNodes[l];i=u(i=u(i=u(i,p.scl.times),p.rot.times),p.pos.times)}n.times=n.times.concat(i),s.times=s.times.concat(i),a.times=a.times.concat(i);var f=new THREE.Vector3,c=new THREE.Vector3,h=new THREE.Quaternion,E=new THREE.Matrix4,v=new THREE.Matrix4;v.getInverse(r(t));for(var d=0;d=0;v=m[v].parent){var d=e.animNodes[v];(a=(s=l(d.scl.times,n)).iBegin)==(i=s.iEnd)?u=new THREE.Vector3(d.scl.values[3*a],d.scl.values[3*a+1],d.scl.values[3*a+2]):(E=(n-d.scl.times[a])/(d.scl.times[i]-d.scl.times[a]),u=new THREE.Vector3(d.scl.values[3*a],d.scl.values[3*a+1],d.scl.values[3*a+2]),c=new THREE.Vector3(d.scl.values[3*i],d.scl.values[3*i+1],d.scl.values[3*i+2]),u=u.lerp(c,E)),(a=(s=l(d.pos.times,n)).iBegin)==(i=s.iEnd)?o=new THREE.Vector3(d.pos.values[3*a],d.pos.values[3*a+1],d.pos.values[3*a+2]):(E=(n-d.pos.times[a])/(d.pos.times[i]-d.pos.times[a]),o=new THREE.Vector3(d.pos.values[3*a],d.pos.values[3*a+1],d.pos.values[3*a+2]),f=new THREE.Vector3(d.pos.values[3*i],d.pos.values[3*i+1],d.pos.values[3*i+2]),o=o.lerp(f,E)),(a=(s=l(d.rot.times,n)).iBegin)==(i=s.iEnd)?p=new THREE.Quaternion(d.rot.values[4*a],d.rot.values[4*a+1],d.rot.values[4*a+2],d.rot.values[4*a+3]):(E=(n-d.rot.times[a])/(d.rot.times[i]-d.rot.times[a]),p=new THREE.Quaternion(d.rot.values[4*a],d.rot.values[4*a+1],d.rot.values[4*a+2],d.rot.values[4*a+3]),h=new THREE.Quaternion(d.rot.values[4*i],d.rot.values[4*i+1],d.rot.values[4*i+2],d.rot.values[4*i+3]),p=p.slerp(h,E));var g=(new THREE.Matrix4).compose(o,p,u);r.premultiply(g)}return r}function l(e,t){for(var n=0,r=0,s=0;st){n=r=s;break}if(s==e.length-1){n=r=s;break}if(tt[s]?(0!=n.length&&t[s]==n[n.length-1]||n.push(t[s]),++s):(0!=n.length&&n[n.length-1]==e[r]||n.push(e[r]),++r,++s);for(;r0)for(var t=0;t1&&(u.name+="_SubSpline"+q),F=new THREE.CurvePath,N=I.splines[q],a=0;a+2=0&&S0){var z=(new THREE.Matrix3).getNormalMatrix(O),P=new Float32Array(x);for(a=0;a+20){a=(a=s(M))1&&(a=0==a?1:0,K=new Float32Array(b[a]),u.addAttribute("uv2",new THREE.BufferAttribute(K,2)))}var Q=new Uint32Array(B);u.setIndex(new THREE.BufferAttribute(Q,1)),u.groups=M,l=h.length/3;var D,G,J=[],U=[];if(A&&A.skinBones&&A.skinWeights&&A.skinBones.length==A.skinWeights.length)for(E=0;E0&&U.length>0)for(p="SkinnedMesh",u.addAttribute("skinIndex",new THREE.Float32BufferAttribute(new Float32Array(4*c),4)),u.addAttribute("skinWeight",new THREE.Float32BufferAttribute(new Float32Array(4*c),4)),E=0;E0&&(u.bones=X)}v.push(u),g.push(p),T.push(f),d.push(S)}}}(),function(){var t=e.animation;if(t&&t.keyframeAnimations&&0!=t.keyframeAnimations.length){var n,r,s,i=t.keyframeAnimations.concat(),o=[];for(r=0;r0)for(n=0;n0&&v[n].skinWeights&&v[n].skinWeights.length>0:v[n]instanceof THREE.BufferGeometry&&(l=v[n].attributes.skinIndex&&v[n].attributes.skinIndex.count>0&&v[n].attributes.skinWeight&&v[n].attributes.skinWeight.count>0),l)v[n].animations=o;else for(v[n].animations=[],r=0;r0){for(e=0;e=r&&(a=(r=p)+o[e])}n.center=l,n.radius=a}}return n}();return{objects:R,materials:E,jd_materials:e.materials,boundingSphere:w}}}; \ No newline at end of file diff --git a/js/libs/threejs/OrbitControls.js b/js/libs/threejs/OrbitControls.js new file mode 100644 index 00000000..1be29547 --- /dev/null +++ b/js/libs/threejs/OrbitControls.js @@ -0,0 +1,1042 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one finger move +// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish +// Pan - right mouse, or arrow keys / touch: three finger swipe + +THREE.OrbitControls = function (object, domElement) { + + this.object = object; + + this.domElement = (domElement !== undefined) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = -Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = {LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40}; + + // Mouse buttons + this.mouseButtons = {ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT}; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy(scope.target); + scope.position0.copy(scope.object.position); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy(scope.target0); + scope.object.position.copy(scope.position0); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent(changeEvent); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0)); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy(position).sub(scope.target); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion(quat); + + // angle from z-axis around y-axis + spherical.setFromVector3(offset); + + if (scope.autoRotate && state === STATE.NONE) { + + rotateLeft(getAutoRotationAngle()); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta)); + + // restrict phi to be between desired limits + spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi)); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius)); + + // move target to panned location + scope.target.add(panOffset); + + offset.setFromSpherical(spherical); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion(quatInverse); + + position.copy(scope.target).add(offset); + + scope.object.lookAt(scope.target); + + if (scope.enableDamping === true) { + + sphericalDelta.theta *= (1 - scope.dampingFactor); + sphericalDelta.phi *= (1 - scope.dampingFactor); + + } else { + + sphericalDelta.set(0, 0, 0); + + } + + scale = 1; + panOffset.set(0, 0, 0); + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if (zoomChanged || + lastPosition.distanceToSquared(scope.object.position) > EPS || + 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) { + + scope.dispatchEvent(changeEvent); + + lastPosition.copy(scope.object.position); + lastQuaternion.copy(scope.object.quaternion); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener('contextmenu', onContextMenu, false); + scope.domElement.removeEventListener('mousedown', onMouseDown, false); + scope.domElement.removeEventListener('wheel', onMouseWheel, false); + + scope.domElement.removeEventListener('touchstart', onTouchStart, false); + scope.domElement.removeEventListener('touchend', onTouchEnd, false); + scope.domElement.removeEventListener('touchmove', onTouchMove, false); + + document.removeEventListener('mousemove', onMouseMove, false); + document.removeEventListener('mouseup', onMouseUp, false); + + window.removeEventListener('keydown', onKeyDown, false); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = {type: 'change'}; + var startEvent = {type: 'start'}; + var endEvent = {type: 'end'}; + + var STATE = {NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5}; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow(0.95, scope.zoomSpeed); + + } + + function rotateLeft(angle) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp(angle) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft(distance, objectMatrix) { + + v.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix + v.multiplyScalar(-distance); + + panOffset.add(v); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp(distance, objectMatrix) { + + v.setFromMatrixColumn(objectMatrix, 1); // get Y column of objectMatrix + v.multiplyScalar(distance); + + panOffset.add(v); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan(deltaX, deltaY) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if (scope.object.isPerspectiveCamera) { + + // perspective + var position = scope.object.position; + offset.copy(position).sub(scope.target); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0); + + // we actually don't use screenWidth, since perspective camera is fixed to screen height + panLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix); + panUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix); + + } else if (scope.object.isOrthographicCamera) { + + // orthographic + panLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix); + panUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix); + + } else { + + // camera neither orthographic nor perspective + console.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.'); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn(dollyScale) { + + if (scope.object.isPerspectiveCamera) { + + scale /= dollyScale; + + } else if (scope.object.isOrthographicCamera) { + + scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale)); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.'); + scope.enableZoom = false; + + } + + } + + function dollyOut(dollyScale) { + + if (scope.object.isPerspectiveCamera) { + + scale *= dollyScale; + + } else if (scope.object.isOrthographicCamera) { + + scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale)); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.'); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate(event) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set(event.clientX, event.clientY); + + } + + function handleMouseDownDolly(event) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set(event.clientX, event.clientY); + + } + + function handleMouseDownPan(event) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set(event.clientX, event.clientY); + + } + + function handleMouseMoveRotate(event) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set(event.clientX, event.clientY); + rotateDelta.subVectors(rotateEnd, rotateStart); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed); + + rotateStart.copy(rotateEnd); + + scope.update(); + + } + + function handleMouseMoveDolly(event) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set(event.clientX, event.clientY); + + dollyDelta.subVectors(dollyEnd, dollyStart); + + if (dollyDelta.y > 0) { + + dollyIn(getZoomScale()); + + } else if (dollyDelta.y < 0) { + + dollyOut(getZoomScale()); + + } + + dollyStart.copy(dollyEnd); + + scope.update(); + + } + + function handleMouseMovePan(event) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set(event.clientX, event.clientY); + + panDelta.subVectors(panEnd, panStart); + + pan(panDelta.x, panDelta.y); + + panStart.copy(panEnd); + + scope.update(); + + } + + function handleMouseUp(event) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel(event) { + + // console.log( 'handleMouseWheel' ); + + if (event.deltaY < 0) { + + dollyOut(getZoomScale()); + + } else if (event.deltaY > 0) { + + dollyIn(getZoomScale()); + + } + + scope.update(); + + } + + function handleKeyDown(event) { + + //console.log( 'handleKeyDown' ); + + switch (event.keyCode) { + + case scope.keys.UP: + pan(0, scope.keyPanSpeed); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan(0, -scope.keyPanSpeed); + scope.update(); + break; + + case scope.keys.LEFT: + pan(scope.keyPanSpeed, 0); + scope.update(); + break; + + case scope.keys.RIGHT: + pan(-scope.keyPanSpeed, 0); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate(event) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set(event.touches[0].pageX, event.touches[0].pageY); + + } + + function handleTouchStartDolly(event) { + + //console.log( 'handleTouchStartDolly' ); + + var dx = event.touches[0].pageX - event.touches[1].pageX; + var dy = event.touches[0].pageY - event.touches[1].pageY; + + var distance = Math.sqrt(dx * dx + dy * dy); + + dollyStart.set(0, distance); + + } + + function handleTouchStartPan(event) { + + //console.log( 'handleTouchStartPan' ); + + panStart.set(event.touches[0].pageX, event.touches[0].pageY); + + } + + function handleTouchMoveRotate(event) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set(event.touches[0].pageX, event.touches[0].pageY); + rotateDelta.subVectors(rotateEnd, rotateStart); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft(2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed); + + rotateStart.copy(rotateEnd); + + scope.update(); + + } + + function handleTouchMoveDolly(event) { + + //console.log( 'handleTouchMoveDolly' ); + + var dx = event.touches[0].pageX - event.touches[1].pageX; + var dy = event.touches[0].pageY - event.touches[1].pageY; + + var distance = Math.sqrt(dx * dx + dy * dy); + + dollyEnd.set(0, distance); + + dollyDelta.subVectors(dollyEnd, dollyStart); + + if (dollyDelta.y > 0) { + + dollyOut(getZoomScale()); + + } else if (dollyDelta.y < 0) { + + dollyIn(getZoomScale()); + + } + + dollyStart.copy(dollyEnd); + + scope.update(); + + } + + function handleTouchMovePan(event) { + + //console.log( 'handleTouchMovePan' ); + + panEnd.set(event.touches[0].pageX, event.touches[0].pageY); + + panDelta.subVectors(panEnd, panStart); + + pan(panDelta.x, panDelta.y); + + panStart.copy(panEnd); + + scope.update(); + + } + + function handleTouchEnd(event) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + switch (event.button) { + + case scope.mouseButtons.ORBIT: + + if (scope.enableRotate === false) return; + + handleMouseDownRotate(event); + + state = STATE.ROTATE; + + break; + + case scope.mouseButtons.ZOOM: + + if (scope.enableZoom === false) return; + + handleMouseDownDolly(event); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.PAN: + + if (scope.enablePan === false) return; + + handleMouseDownPan(event); + + state = STATE.PAN; + + break; + + } + + if (state !== STATE.NONE) { + + document.addEventListener('mousemove', onMouseMove, false); + document.addEventListener('mouseup', onMouseUp, false); + + scope.dispatchEvent(startEvent); + + } + + } + + function onMouseMove(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + switch (state) { + + case STATE.ROTATE: + + if (scope.enableRotate === false) return; + + handleMouseMoveRotate(event); + + break; + + case STATE.DOLLY: + + if (scope.enableZoom === false) return; + + handleMouseMoveDolly(event); + + break; + + case STATE.PAN: + + if (scope.enablePan === false) return; + + handleMouseMovePan(event); + + break; + + } + + } + + function onMouseUp(event) { + + if (scope.enabled === false) return; + + handleMouseUp(event); + + document.removeEventListener('mousemove', onMouseMove, false); + document.removeEventListener('mouseup', onMouseUp, false); + + scope.dispatchEvent(endEvent); + + state = STATE.NONE; + + } + + function onMouseWheel(event) { + + if (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE)) return; + + event.preventDefault(); + event.stopPropagation(); + + handleMouseWheel(event); + + scope.dispatchEvent(startEvent); // not sure why these are here... + scope.dispatchEvent(endEvent); + + } + + function onKeyDown(event) { + + if (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false) return; + + handleKeyDown(event); + + } + + function onTouchStart(event) { + + if (scope.enabled === false) return; + + switch (event.touches.length) { + + case 1: // one-fingered touch: rotate + + if (scope.enableRotate === false) return; + + handleTouchStartRotate(event); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly + + if (scope.enableZoom === false) return; + + handleTouchStartDolly(event); + + state = STATE.TOUCH_DOLLY; + + break; + + case 3: // three-fingered touch: pan + + if (scope.enablePan === false) return; + + handleTouchStartPan(event); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if (state !== STATE.NONE) { + + scope.dispatchEvent(startEvent); + + } + + } + + function onTouchMove(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + event.stopPropagation(); + + switch (event.touches.length) { + + case 1: // one-fingered touch: rotate + + if (scope.enableRotate === false) return; + if (state !== STATE.TOUCH_ROTATE) return; // is this needed?... + + handleTouchMoveRotate(event); + + break; + + case 2: // two-fingered touch: dolly + + if (scope.enableZoom === false) return; + if (state !== STATE.TOUCH_DOLLY) return; // is this needed?... + + handleTouchMoveDolly(event); + + break; + + case 3: // three-fingered touch: pan + + if (scope.enablePan === false) return; + if (state !== STATE.TOUCH_PAN) return; // is this needed?... + + handleTouchMovePan(event); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd(event) { + + if (scope.enabled === false) return; + + handleTouchEnd(event); + + scope.dispatchEvent(endEvent); + + state = STATE.NONE; + + } + + function onContextMenu(event) { + + if (scope.enabled === false) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener('contextmenu', onContextMenu, false); + + scope.domElement.addEventListener('mousedown', onMouseDown, false); + scope.domElement.addEventListener('wheel', onMouseWheel, false); + + scope.domElement.addEventListener('touchstart', onTouchStart, false); + scope.domElement.addEventListener('touchend', onTouchEnd, false); + scope.domElement.addEventListener('touchmove', onTouchMove, false); + + window.addEventListener('keydown', onKeyDown, false); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + +Object.defineProperties(THREE.OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn('THREE.OrbitControls: .center has been renamed to .target'); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.'); + return !this.enableZoom; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.'); + this.enableZoom = !value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.'); + return !this.enableRotate; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.'); + this.enableRotate = !value; + + } + + }, + + noPan: { + + get: function () { + + console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.'); + return !this.enablePan; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.'); + this.enablePan = !value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.'); + return !this.enableKeys; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.'); + this.enableKeys = !value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.'); + return !this.enableDamping; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.'); + this.enableDamping = !value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.'); + return this.dampingFactor; + + }, + + set: function (value) { + + console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.'); + this.dampingFactor = value; + + } + + } + +}); diff --git a/js/libs/threejs/Tweenmax.threejs.js b/js/libs/threejs/Tweenmax.threejs.js new file mode 100644 index 00000000..5833ce29 --- /dev/null +++ b/js/libs/threejs/Tweenmax.threejs.js @@ -0,0 +1,53 @@ +var _gsScope = (typeof module !== "undefined" && module.exports && typeof global !== "undefined") ? global : this || window; +(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function () { + "use strict"; + var _xyzContexts = "position,scale,rotation".split(","), + _contexts = {x:"position", y:"position", z:"position"}, + _DEG2RAD = Math.PI / 180, + _degreesToRadians = function(value) { + return (typeof(value) === "string" && value.charAt(1) === "=") ? value.substr(0, 2) + (parseFloat(value.substr(2)) * _DEG2RAD) : value * _DEG2RAD; + }, i, p; + for (i = 0; i < _xyzContexts.length; i++) { + p = _xyzContexts[i]; + _contexts[p + "X"] = p; + _contexts[p + "Y"] = p; + _contexts[p + "Z"] = p; + } + var ThreePlugin = _gsScope._gsDefine.plugin({ + propName: "three", + priority: 0, + API: 2, + version: "0.0.1", + init: function (target, values, tween, index) { + var context, axis, value, p, i, m; + for (p in values) { + context = _contexts[p]; + value = values[p]; + if (typeof(value) === "function") { + value = value(index || 0, target); + } + if (context) { + i = p.charAt(p.length-1).toLowerCase(); + axis = (i.indexOf("x") !== -1) ? "x" : (i.indexOf("z") !== -1) ? "z" : "y"; + this._addTween(target[context], axis, target[context][axis], (p.indexOf("rotation") !== -1) ? _degreesToRadians(value) : value, p); + } else if (p === "scale") { + this._addTween(target[p], "x", target[p].x, value, p + "X"); + this._addTween(target[p], "y", target[p].y, value, p + "Y"); + this._addTween(target[p], "z", target[p].z, value, p + "Z"); + } else if (p === "opacity") { + m = (target.material.length) ? target.material : [target.material]; + i = m.length; + while (--i > -1) { + m[i].transparent = true; + this._addTween(m[i], p, m[i][p], value, p); + } + } else { + this._addTween(target, p, target[p], value, p); + } + this._overwriteProps.push(p); + } + return true; + } + }); + +}); if (_gsScope._gsDefine) { _gsScope._gsQueue.pop()(); } \ No newline at end of file diff --git a/js/libs/threejs/stats.js b/js/libs/threejs/stats.js new file mode 100644 index 00000000..2450dc0e --- /dev/null +++ b/js/libs/threejs/stats.js @@ -0,0 +1,5 @@ +// stats.js - http://github.com/mrdoob/stats.js +(function(f,e){"object"===typeof exports&&"undefined"!==typeof module?module.exports=e():"function"===typeof define&&define.amd?define(e):f.Stats=e()})(this,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;dg+1E3&&(r.update(1E3*a/(c-g),100),g=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/ + 1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){k=this.end()},domElement:c,setMode:u}};f.Panel=function(e,f,l){var c=Infinity,k=0,g=Math.round,a=g(window.devicePixelRatio||1),r=80*a,h=48*a,t=3*a,v=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement("canvas");q.width=r;q.height=h;q.style.cssText="width:80px;height:48px";var b=q.getContext("2d");b.font="bold "+9*a+"px Helvetica,Arial,sans-serif";b.textBaseline="top";b.fillStyle=l;b.fillRect(0,0,r,h);b.fillStyle=f;b.fillText(e,t,v); + b.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(h,w){c=Math.min(c,h);k=Math.max(k,h);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=f;b.fillText(g(h)+" "+e+" ("+g(c)+"-"+g(k)+")",t,v);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,g((1-h/w)*p))}}};return f}); diff --git a/js/libs/threejs/three.min.js b/js/libs/threejs/three.min.js new file mode 100644 index 00000000..2619ca6b --- /dev/null +++ b/js/libs/threejs/three.min.js @@ -0,0 +1,939 @@ +// threejs.org/license +(function(k,ha){"object"===typeof exports&&"undefined"!==typeof module?ha(exports):"function"===typeof define&&define.amd?define(["exports"],ha):ha(k.THREE={})})(this,function(k){function ha(){}function y(a,b){this.x=a||0;this.y=b||0}function F(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0b&&(b=a[c]);return b}function G(){Object.defineProperty(this,"id",{value:Hf+=2});this.uuid=P.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}}function Nb(a,b,c,d,e,f){J.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e, +depthSegments:f};this.fromBufferGeometry(new pb(a,b,c,d,e,f));this.mergeVertices()}function pb(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,k,Q,E,Bc){var t=f/Q,u=g/E,V=f/2,z=g/2,w=k/2;g=Q+1;var x=E+1,H=f=0,C,y,A=new p;for(y=0;ym;m++){if(n=d[m])if(h=n[0],l=n[1]){v&&e.addAttribute("morphTarget"+m,v[h]);f&&e.addAttribute("morphNormal"+m,f[h]);c[m]=l;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function Tf(a,b){var c={};return{update:function(d){var e=b.render.frame,f=d.geometry,g=a.get(d,f);c[g.id]!==e&&(f.isGeometry&&g.updateFromObject(d), +a.update(g),c[g.id]=e);return g},dispose:function(){c={}}}}function cb(a,b,c,d,e,f,g,h,l,m){a=void 0!==a?a:[];ca.call(this,a,void 0!==b?b:301,c,d,e,f,g,h,l,m);this.flipY=!1}function Pb(a,b,c){var d=a[0];if(0>=d||0/gm,function(a,c){a=W[c];if(void 0===a)throw Error("Can not resolve #include <"+c+">");return Yd(a)})}function Xe(a){return a.replace(/#pragma unroll_loop[\s]+?for \( int i = (\d+); i < (\d+); i \+\+ \) \{([\s\S]+?)(?=\})\}/g, +function(a,c,d,e){a="";for(c=parseInt(c);c 0 ) {\n\t\tfloat fogFactor = 0.0;\n\t\tif ( fogType == 1 ) {\n\t\t\tfogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t\t} else {\n\t\t\tconst float LOG2 = 1.442695;\n\t\t\tfogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );\n\t\t\tfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n\t\t}\n\t\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n\t}\n}"].join("\n")); +b.compileShader(Da);b.compileShader(ia);b.attachShader(S,Da);b.attachShader(S,ia);b.linkProgram(S);y=S;V=b.getAttribLocation(y,"position");Q=b.getAttribLocation(y,"uv");f=b.getUniformLocation(y,"uvOffset");g=b.getUniformLocation(y,"uvScale");h=b.getUniformLocation(y,"rotation");l=b.getUniformLocation(y,"center");m=b.getUniformLocation(y,"scale");v=b.getUniformLocation(y,"color");n=b.getUniformLocation(y,"map");r=b.getUniformLocation(y,"opacity");q=b.getUniformLocation(y,"modelViewMatrix");t=b.getUniformLocation(y, +"projectionMatrix");k=b.getUniformLocation(y,"fogType");z=b.getUniformLocation(y,"fogDensity");x=b.getUniformLocation(y,"fogNear");w=b.getUniformLocation(y,"fogFar");H=b.getUniformLocation(y,"fogColor");b.getUniformLocation(y,"fogDepth");C=b.getUniformLocation(y,"alphaTest");S=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");S.width=8;S.height=8;Da=S.getContext("2d");Da.fillStyle="white";Da.fillRect(0,0,8,8);A=new Qb(S)}c.useProgram(y);c.initAttributes();c.enableAttribute(V);c.enableAttribute(Q); +c.disableUnusedAttributes();c.disable(b.CULL_FACE);c.enable(b.BLEND);b.bindBuffer(b.ARRAY_BUFFER,Bc);b.vertexAttribPointer(V,2,b.FLOAT,!1,16,0);b.vertexAttribPointer(Q,2,b.FLOAT,!1,16,8);b.bindBuffer(b.ELEMENT_ARRAY_BUFFER,qb);b.uniformMatrix4fv(t,!1,rd.projectionMatrix.elements);c.activeTexture(b.TEXTURE0);b.uniform1i(n,0);Da=S=0;(ia=p.fog)?(b.uniform3f(H,ia.color.r,ia.color.g,ia.color.b),ia.isFog?(b.uniform1f(x,ia.near),b.uniform1f(w,ia.far),b.uniform1i(k,1),Da=S=1):ia.isFogExp2&&(b.uniform1f(z, +ia.density),b.uniform1i(k,2),Da=S=2)):(b.uniform1i(k,0),Da=S=0);ia=0;for(var M=u.length;iab||a.height>b){if("data"in a){console.warn("THREE.WebGLRenderer: image in DataTexture is too big ("+a.width+"x"+a.height+").");return}b/=Math.max(a.width,a.height);var c=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");c.width=Math.floor(a.width*b);c.height=Math.floor(a.height*b);c.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,c.width,c.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+c.width+ +"x"+c.height,a);return c}return a}function l(a){return P.isPowerOfTwo(a.width)&&P.isPowerOfTwo(a.height)}function m(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function v(b,c,e,f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e,f))*Math.LOG2E}function n(b){return 1003===b||1004===b||1005===b?a.NEAREST:a.LINEAR}function r(b){b=b.target;b.removeEventListener("dispose",r);a:{var c=d.get(b);if(b.image&&c.__image__webglTextureCube)a.deleteTexture(c.__image__webglTextureCube); +else{if(void 0===c.__webglInit)break a;a.deleteTexture(c.__webglTexture)}d.remove(b)}b.isVideoTexture&&delete H[b.id];g.memory.textures--}function q(b){b=b.target;b.removeEventListener("dispose",q);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer), +c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.remove(b.texture);d.remove(b)}g.memory.textures--}function k(b,n){var q=d.get(b);if(b.isVideoTexture){var k=b.id,t=g.render.frame;H[k]!==t&&(H[k]=t,b.update())}if(0p;p++)t[p]=n||k?k?b.image[p].image:b.image[p]:h(b.image[p],e.maxCubemapSize);var w=t[0],z=l(w),x=f.convert(b.format),V=f.convert(b.type);u(a.TEXTURE_CUBE_MAP,b,z);for(p=0;6>p;p++)if(n)for(var C,H=t[p].mipmaps,Q=0,y=H.length;Qr;r++)e.__webglFramebuffer[r]=a.createFramebuffer()}else e.__webglFramebuffer= +a.createFramebuffer();if(h){c.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);u(a.TEXTURE_CUBE_MAP,b.texture,n);for(r=0;6>r;r++)p(e.__webglFramebuffer[r],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+r);m(b.texture,n)&&v(a.TEXTURE_CUBE_MAP,b.texture,b.width,b.height);c.bindTexture(a.TEXTURE_CUBE_MAP,null)}else c.bindTexture(a.TEXTURE_2D,f.__webglTexture),u(a.TEXTURE_2D,b.texture,n),p(e.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),m(b.texture,n)&&v(a.TEXTURE_2D,b.texture,b.width,b.height), +c.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){e=d.get(b);f=!0===b.isWebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error("target.depthTexture not supported in Cube render targets");if(b&&b.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer);if(!b.depthTexture||!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&& +b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);k(b.depthTexture,0);e=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.TEXTURE_2D,e,0);else if(1027===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,e,0);else throw Error("Unknown depthTexture format"); +}else if(f)for(e.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer[f]),e.__webglDepthbuffer[f]=a.createRenderbuffer(),x(e.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=a.createRenderbuffer(),x(e.__webglDepthbuffer,b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap=function(b){var e=b.texture,f=l(b);if(m(e,f)){f=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D;var g=d.get(e).__webglTexture; +c.bindTexture(f,g);v(f,e,b.width,b.height);c.bindTexture(f,null)}}}function Ze(a,b){return{convert:function(c){if(1E3===c)return a.REPEAT;if(1001===c)return a.CLAMP_TO_EDGE;if(1002===c)return a.MIRRORED_REPEAT;if(1003===c)return a.NEAREST;if(1004===c)return a.NEAREST_MIPMAP_NEAREST;if(1005===c)return a.NEAREST_MIPMAP_LINEAR;if(1006===c)return a.LINEAR;if(1007===c)return a.LINEAR_MIPMAP_NEAREST;if(1008===c)return a.LINEAR_MIPMAP_LINEAR;if(1009===c)return a.UNSIGNED_BYTE;if(1017===c)return a.UNSIGNED_SHORT_4_4_4_4; +if(1018===c)return a.UNSIGNED_SHORT_5_5_5_1;if(1019===c)return a.UNSIGNED_SHORT_5_6_5;if(1010===c)return a.BYTE;if(1011===c)return a.SHORT;if(1012===c)return a.UNSIGNED_SHORT;if(1013===c)return a.INT;if(1014===c)return a.UNSIGNED_INT;if(1015===c)return a.FLOAT;if(1016===c){var d=b.get("OES_texture_half_float");if(null!==d)return d.HALF_FLOAT_OES}if(1021===c)return a.ALPHA;if(1022===c)return a.RGB;if(1023===c)return a.RGBA;if(1024===c)return a.LUMINANCE;if(1025===c)return a.LUMINANCE_ALPHA;if(1026=== +c)return a.DEPTH_COMPONENT;if(1027===c)return a.DEPTH_STENCIL;if(100===c)return a.FUNC_ADD;if(101===c)return a.FUNC_SUBTRACT;if(102===c)return a.FUNC_REVERSE_SUBTRACT;if(200===c)return a.ZERO;if(201===c)return a.ONE;if(202===c)return a.SRC_COLOR;if(203===c)return a.ONE_MINUS_SRC_COLOR;if(204===c)return a.SRC_ALPHA;if(205===c)return a.ONE_MINUS_SRC_ALPHA;if(206===c)return a.DST_ALPHA;if(207===c)return a.ONE_MINUS_DST_ALPHA;if(208===c)return a.DST_COLOR;if(209===c)return a.ONE_MINUS_DST_COLOR;if(210=== +c)return a.SRC_ALPHA_SATURATE;if(33776===c||33777===c||33778===c||33779===c)if(d=b.get("WEBGL_compressed_texture_s3tc"),null!==d){if(33776===c)return d.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===c)return d.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===c)return d.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===c)return d.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(35840===c||35841===c||35842===c||35843===c)if(d=b.get("WEBGL_compressed_texture_pvrtc"),null!==d){if(35840===c)return d.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841=== +c)return d.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===c)return d.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===c)return d.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(36196===c&&(d=b.get("WEBGL_compressed_texture_etc1"),null!==d))return d.COMPRESSED_RGB_ETC1_WEBGL;if(37808===c||37809===c||37810===c||37811===c||37812===c||37813===c||37814===c||37815===c||37816===c||37817===c||37818===c||37819===c||37820===c||37821===c)if(d=b.get("WEBGL_compressed_texture_astc"),null!==d)return c;if(103===c||104===c)if(d=b.get("EXT_blend_minmax"), +null!==d){if(103===c)return d.MIN_EXT;if(104===c)return d.MAX_EXT}return 1020===c&&(d=b.get("WEBGL_depth_texture"),null!==d)?d.UNSIGNED_INT_24_8_WEBGL:0}}}function X(a,b,c,d){Qa.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==c?c:.1;this.far=void 0!==d?d:2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Ec(a){X.call(this);this.cameras=a||[]}function $e(a){function b(){return null!== +e&&!0===e.isPresenting}function c(){if(b()){var c=e.getEyeParameters("left"),f=c.renderWidth;c=c.renderHeight;z=a.getPixelRatio();u=a.getSize();a.setDrawingBufferSize(2*f,c,1);x.start()}else d.enabled&&(a.setDrawingBufferSize(u.width,u.height,z),x.stop())}var d=this,e=null,f=null,g=null,h=new F,l=new F;"undefined"!==typeof window&&"VRFrameData"in window&&(f=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1));var m=new F,v=new ea,n=new p,r=new X;r.bounds=new U(0,0,.5,1); +r.layers.enable(1);var q=new X;q.bounds=new U(.5,0,.5,1);q.layers.enable(2);var k=new Ec([r,q]);k.layers.enable(1);k.layers.enable(2);var u,z;this.enabled=!1;this.userHeight=1.6;this.getDevice=function(){return e};this.setDevice=function(a){void 0!==a&&(e=a);x.setContext(a)};this.setPoseTarget=function(a){void 0!==a&&(g=a)};this.getCamera=function(a){if(null===e)return a;e.depthNear=a.near;e.depthFar=a.far;e.getFrameData(f);var b=e.stageParameters;b?h.fromArray(b.sittingToStandingTransform):h.makeTranslation(0, +d.userHeight,0);b=f.pose;var c=null!==g?g:a;c.matrix.copy(h);c.matrix.decompose(c.position,c.quaternion,c.scale);null!==b.orientation&&(v.fromArray(b.orientation),c.quaternion.multiply(v));null!==b.position&&(v.setFromRotationMatrix(h),n.fromArray(b.position),n.applyQuaternion(v),c.position.add(n));c.updateMatrixWorld();if(!1===e.isPresenting)return a;r.near=a.near;q.near=a.near;r.far=a.far;q.far=a.far;k.matrixWorld.copy(a.matrixWorld);k.matrixWorldInverse.copy(a.matrixWorldInverse);r.matrixWorldInverse.fromArray(f.leftViewMatrix); +q.matrixWorldInverse.fromArray(f.rightViewMatrix);l.getInverse(h);r.matrixWorldInverse.multiply(l);q.matrixWorldInverse.multiply(l);a=c.parent;null!==a&&(m.getInverse(a.matrixWorld),r.matrixWorldInverse.multiply(m),q.matrixWorldInverse.multiply(m));r.matrixWorld.getInverse(r.matrixWorldInverse);q.matrixWorld.getInverse(q.matrixWorldInverse);r.projectionMatrix.fromArray(f.leftProjectionMatrix);q.projectionMatrix.fromArray(f.rightProjectionMatrix);k.projectionMatrix.copy(r.projectionMatrix);a=e.getLayers(); +a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&r.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&q.bounds.fromArray(a.rightBounds));return k};this.getStandingMatrix=function(){return h};this.isPresenting=b;var x=new Td;this.setAnimationLoop=function(a){x.setAnimationLoop(a)};this.submitFrame=function(){b()&&e.submitFrame()};this.dispose=function(){"undefined"!==typeof window&&window.removeEventListener("vrdisplaypresentchange",c)}}function Lg(a){function b(){return null!== +f&&null!==g}function c(a,b){null===b?a.matrixWorld.copy(a.matrix):a.matrixWorld.multiplyMatrices(b.matrixWorld,a.matrix);a.matrixWorldInverse.getInverse(a.matrixWorld)}var d=a.context,e=null,f=null,g=null,h=null,l=new X;l.layers.enable(1);l.viewport=new U;var m=new X;m.layers.enable(2);m.viewport=new U;var v=new Ec([l,m]);v.layers.enable(1);v.layers.enable(2);this.enabled=!1;this.getDevice=function(){return e};this.setDevice=function(a){void 0!==a&&(e=a);d.setCompatibleXRDevice(a)};this.setSession= +function(b,c){f=b;null!==f&&(f.addEventListener("end",function(){a.setFramebuffer(null);r.stop()}),f.baseLayer=new XRWebGLLayer(f,d),f.requestFrameOfReference(c.frameOfReferenceType).then(function(b){g=b;a.setFramebuffer(f.baseLayer.framebuffer);r.setContext(f);r.start()}))};this.getCamera=function(a){if(b()){var d=a.parent,e=v.cameras;c(v,d);for(var f=0;fa.matrixWorld.determinant();Z.setMaterial(e,h);h=n(c,b.fog,e,a);O="";g(a,h,e)}else A.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(A,b,c,d,e,f);y=pa.get(b,W||c)}function v(a,b,c){var d=Ba.get(a),g=y.state.lights;c=na.getParameters(a,g.state,y.state.shadowsArray,b,X.numPlanes, +X.numIntersection,c);var h=na.getProgramCode(a,c),l=d.program,m=!0;if(void 0===l)a.addEventListener("dispose",e);else if(l.code!==h)f(a);else{if(d.lightsHash!==g.state.hash)Ba.update(a,"lightsHash",g.state.hash);else if(void 0!==c.shaderID)return;m=!1}m&&(c.shaderID?(l=tb[c.shaderID],d.shader={name:a.type,uniforms:Ca.clone(l.uniforms),vertexShader:l.vertexShader,fragmentShader:l.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader}, +a.onBeforeCompile(d.shader,A),l=na.acquireProgram(a,d.shader,c,h),d.program=l,a.program=l);c=l.getAttributes();if(a.morphTargets)for(h=a.numSupportedMorphTargets=0;he.matrixWorld.determinant();Z.setMaterial(d,g);var h=n(a,b,d,e);a=c.id+"_"+h.id+"_"+(!0===d.wireframe);var l=!1;a!==O&&(O=a,l=!0);e.morphTargetInfluences&& +(va.update(e,c,d,h),l=!0);g=c.index;var m=c.attributes.position;b=1;!0===d.wireframe&&(g=sa.getWireframeAttribute(c),b=2);a=wa;if(null!==g){var v=ra.get(g);a=ya;a.setIndex(v)}if(l){if(c&&c.isInstancedBufferGeometry&&null===la.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{Z.initAttributes();l=c.attributes;h=h.getAttributes();var r=d.defaultAttributeValues; +for(H in h){var k=h[H];if(0<=k){var q=l[H];if(void 0!==q){var t=q.normalized,u=q.itemSize,p=ra.get(q);if(void 0!==p){var z=p.buffer,w=p.type;p=p.bytesPerElement;if(q.isInterleavedBufferAttribute){var x=q.data,C=x.stride;q=q.offset;x&&x.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(k,x.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=x.meshPerAttribute*x.count)):Z.enableAttribute(k);D.bindBuffer(D.ARRAY_BUFFER,z);D.vertexAttribPointer(k,u,w,t,C*p,q*p)}else q.isInstancedBufferAttribute? +(Z.enableAttributeAndDivisor(k,q.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=q.meshPerAttribute*q.count)):Z.enableAttribute(k),D.bindBuffer(D.ARRAY_BUFFER,z),D.vertexAttribPointer(k,u,w,t,0,0)}}else if(void 0!==r&&(t=r[H],void 0!==t))switch(t.length){case 2:D.vertexAttrib2fv(k,t);break;case 3:D.vertexAttrib3fv(k,t);break;case 4:D.vertexAttrib4fv(k,t);break;default:D.vertexAttrib1fv(k,t)}}}Z.disableUnusedAttributes()}null!==g&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,v.buffer)}v= +Infinity;null!==g?v=g.count:void 0!==m&&(v=m.count);g=c.drawRange.start*b;m=null!==f?f.start*b:0;var H=Math.max(g,m);f=Math.max(0,Math.min(v,g+c.drawRange.count*b,m+(null!==f?f.count*b:Infinity))-1-H+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)Z.setLineWidth(d.wireframeLinewidth*(null===G?Y:1)),a.setMode(D.LINES);else switch(e.drawMode){case 0:a.setMode(D.TRIANGLES);break;case 1:a.setMode(D.TRIANGLE_STRIP);break;case 2:a.setMode(D.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&(d=1),Z.setLineWidth(d* +(null===G?Y:1)),e.isLineSegments?a.setMode(D.LINES):e.isLineLoop?a.setMode(D.LINE_LOOP):a.setMode(D.LINE_STRIP)):e.isPoints&&a.setMode(D.POINTS);c&&c.isInstancedBufferGeometry?0=Ra.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+ +" texture units while this GPU supports only "+Ra.maxTextures);ca+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);hb.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);hb.setTexture2D(b, +c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?hb.setTextureCube(b,c):hb.setTextureCubeDynamic(b,c)}}();this.setFramebuffer=function(a){I=a};this.getRenderTarget=function(){return G};this.setRenderTarget=function(a){(G=a)&&void 0=== +Ba.get(a).__webglFramebuffer&&hb.setupRenderTarget(a);var b=I,c=!1;a?(b=Ba.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),S.copy(a.viewport),T.copy(a.scissor),aa=a.scissorTest):(S.copy(ba).multiplyScalar(Y),T.copy(N).multiplyScalar(Y),aa=da);K!==b&&(D.bindFramebuffer(D.FRAMEBUFFER,b),K=b);Z.viewport(S);Z.scissor(T);Z.setScissorTest(aa);c&&(c=Ba.get(a.texture),D.framebufferTexture2D(D.FRAMEBUFFER,D.COLOR_ATTACHMENT0,D.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace, +c.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=Ba.get(a).__webglFramebuffer;if(g){var h=!1;g!==K&&(D.bindFramebuffer(D.FRAMEBUFFER,g),h=!0);try{var l=a.texture,m=l.format,n=l.type;1023!==m&&ha.convert(m)!==D.getParameter(D.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===n||ha.convert(n)===D.getParameter(D.IMPLEMENTATION_COLOR_READ_TYPE)|| +1015===n&&(la.get("OES_texture_float")||la.get("WEBGL_color_buffer_float"))||1016===n&&la.get("EXT_color_buffer_half_float")?D.checkFramebufferStatus(D.FRAMEBUFFER)===D.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&D.readPixels(b,c,d,e,ha.convert(m),ha.convert(n),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&& +D.bindFramebuffer(D.FRAMEBUFFER,K)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")};this.copyFramebufferToTexture=function(a,b,c){var d=b.image.width,e=b.image.height,f=ha.convert(b.format);this.setTexture2D(b,0);D.copyTexImage2D(D.TEXTURE_2D,c||0,f,a.x,a.y,d,e,0)};this.copyTextureToTexture=function(a,b,c,d){var e=b.image.width,f=b.image.height,g=ha.convert(c.format),h=ha.convert(c.type);this.setTexture2D(c,0);b.isDataTexture?D.texSubImage2D(D.TEXTURE_2D, +d||0,a.x,a.y,e,f,g,h,b.image.data):D.texSubImage2D(D.TEXTURE_2D,d||0,a.x,a.y,g,h,b.image)}}function Sb(a,b){this.name="";this.color=new K(a);this.density=void 0!==b?b:2.5E-4}function Tb(a,b,c){this.name="";this.color=new K(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}function sd(){B.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ib(a){L.call(this);this.type="SpriteMaterial";this.color=new K(16777215);this.map=null;this.rotation= +0;this.lights=this.fog=!1;this.setValues(a)}function Fc(a){B.call(this);this.type="Sprite";this.material=void 0!==a?a:new ib;this.center=new y(.5,.5)}function Gc(){B.call(this);this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Hc(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."), +this.boneInverses=[],a=0,b=this.bones.length;ac;c++){var n=v[h[c]];var r=v[h[(c+1)%3]];f[0]=Math.min(n,r);f[1]=Math.max(n,r);n=f[0]+","+f[1];void 0===g[n]&&(g[n]={index1:f[0],index2:f[1]})}}for(n in g)m=g[n],h=a.vertices[m.index1],b.push(h.x,h.y,h.z),h=a.vertices[m.index2],b.push(h.x,h.y,h.z)}else if(a&&a.isBufferGeometry)if(h=new p,null!==a.index){l=a.attributes.position;v=a.index;var k=a.groups;0===k.length&&(k=[{start:0,count:v.count,materialIndex:0}]); +a=0;for(e=k.length;ac;c++)n=v.getX(m+c),r=v.getX(m+(c+1)%3),f[0]=Math.min(n,r),f[1]=Math.max(n,r),n=f[0]+","+f[1],void 0===g[n]&&(g[n]={index1:f[0],index2:f[1]});for(n in g)m=g[n],h.fromBufferAttribute(l,m.index1),b.push(h.x,h.y,h.z),h.fromBufferAttribute(l,m.index2),b.push(h.x,h.y,h.z)}else for(l=a.attributes.position,m=0,d=l.count/3;mc;c++)g=3*m+c,h.fromBufferAttribute(l,g),b.push(h.x,h.y,h.z),g=3*m+(c+1)%3,h.fromBufferAttribute(l, +g),b.push(h.x,h.y,h.z);this.addAttribute("position",new A(b,3))}function Jc(a,b,c){J.call(this);this.type="ParametricGeometry";this.parameters={func:a,slices:b,stacks:c};this.fromBufferGeometry(new Xb(a,b,c));this.mergeVertices()}function Xb(a,b,c){G.call(this);this.type="ParametricBufferGeometry";this.parameters={func:a,slices:b,stacks:c};var d=[],e=[],f=[],g=[],h=new p,l=new p,m=new p,v=new p,n=new p,r,k;3>a.length&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter."); +var t=b+1;for(r=0;r<=c;r++){var u=r/c;for(k=0;k<=b;k++){var z=k/b;a(z,u,l);e.push(l.x,l.y,l.z);0<=z-1E-5?(a(z-1E-5,u,m),v.subVectors(l,m)):(a(z+1E-5,u,m),v.subVectors(m,l));0<=u-1E-5?(a(z,u-1E-5,m),n.subVectors(l,m)):(a(z,u+1E-5,m),n.subVectors(m,l));h.crossVectors(v,n).normalize();f.push(h.x,h.y,h.z);g.push(z,u)}}for(r=0;rd&&1===a.x&&(l[b]=a.x-1);0===c.x&&0===c.z&&(l[b]=d/2/Math.PI+.5)}G.call(this);this.type="PolyhedronBufferGeometry";this.parameters={vertices:a, +indices:b,radius:c,detail:d};c=c||1;d=d||0;var h=[],l=[];(function(a){for(var c=new p,d=new p,g=new p,h=0;he&&(.2>b&&(l[a+0]+=1),.2>c&&(l[a+2]+=1),.2>d&&(l[a+4]+=1))})();this.addAttribute("position",new A(h,3));this.addAttribute("normal",new A(h.slice(),3));this.addAttribute("uv",new A(l,2));0===d?this.computeVertexNormals():this.normalizeNormals()}function Lc(a, +b){J.call(this);this.type="TetrahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Yb(a,b));this.mergeVertices()}function Yb(a,b){va.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],a,b);this.type="TetrahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Mc(a,b){J.call(this);this.type="OctahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new ub(a,b));this.mergeVertices()}function ub(a,b){va.call(this,[1,0,0, +-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],a,b);this.type="OctahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Nc(a,b){J.call(this);this.type="IcosahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new Zb(a,b));this.mergeVertices()}function Zb(a,b){var c=(1+Math.sqrt(5))/2;va.call(this,[-1,c,0,1,c,0,-1,-c,0,1,-c,0,0,-1,c,0,1,c,0,-1,-c,0,1,-c,c,0,-1,c,0,1,-c,0,-1,-c,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5, +11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a,b);this.type="IcosahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Oc(a,b){J.call(this);this.type="DodecahedronGeometry";this.parameters={radius:a,detail:b};this.fromBufferGeometry(new $b(a,b));this.mergeVertices()}function $b(a,b){var c=(1+Math.sqrt(5))/2,d=1/c;va.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-d,-c,0,-d,c,0,d,-c,0,d,c,-d,-c,0,-d,c,0,d,-c,0,d,c, +0,-c,0,-d,c,0,-d,-c,0,d,c,0,d],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],a,b);this.type="DodecahedronBufferGeometry";this.parameters={radius:a,detail:b}}function Pc(a,b,c,d,e,f){J.call(this);this.type="TubeGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d, +closed:e};void 0!==f&&console.warn("THREE.TubeGeometry: taper has been removed.");a=new ac(a,b,c,d,e);this.tangents=a.tangents;this.normals=a.normals;this.binormals=a.binormals;this.fromBufferGeometry(a);this.mergeVertices()}function ac(a,b,c,d,e){function f(e){v=a.getPointAt(e/b,v);var f=g.normals[e];e=g.binormals[e];for(k=0;k<=d;k++){var m=k/d*Math.PI*2,n=Math.sin(m);m=-Math.cos(m);l.x=m*f.x+n*e.x;l.y=m*f.y+n*e.y;l.z=m*f.z+n*e.z;l.normalize();t.push(l.x,l.y,l.z);h.x=v.x+c*l.x;h.y=v.y+c*l.y;h.z= +v.z+c*l.z;q.push(h.x,h.y,h.z)}}G.call(this);this.type="TubeBufferGeometry";this.parameters={path:a,tubularSegments:b,radius:c,radialSegments:d,closed:e};b=b||64;c=c||1;d=d||8;e=e||!1;var g=a.computeFrenetFrames(b,e);this.tangents=g.tangents;this.normals=g.normals;this.binormals=g.binormals;var h=new p,l=new p,m=new y,v=new p,n,k,q=[],t=[],u=[],z=[];for(n=0;n=b;e-=d)f=bf(e,a[e],a[e+1],f);f&&vb(f,f.next)&&(Sc(f),f=f.next);return f}function Tc(a,b){if(!a)return a;b||(b=a);do{var c=!1;if(a.steiner||!vb(a,a.next)&&0!==na(a.prev,a,a.next))a=a.next;else{Sc(a);a=b=a.prev;if(a===a.next)break;c=!0}}while(c||a!==b);return b} +function Uc(a,b,c,d,e,f,g){if(a){if(!g&&f){var h=a,l=h;do null===l.z&&(l.z=ae(l.x,l.y,d,e,f)),l.prevZ=l.prev,l=l.nextZ=l.next;while(l!==h);l.prevZ.nextZ=null;l.prevZ=null;h=l;var m,v,n,k,q=1;do{l=h;var t=h=null;for(v=0;l;){v++;var p=l;for(m=n=0;mn.x?v.x>q.x?v.x:q.x:n.x>q.x?n.x:q.x,H=v.y>n.y?v.y>q.y?v.y:q.y:n.y>q.y?n.y:q.y;m=ae(v.x=m;){if(z!==t.prev&&z!==t.next&&xd(v.x,v.y,n.x,n.y,q.x,q.y,z.x,z.y)&&0<=na(z.prev,z,z.next)){t=!1;break a}z= +z.prevZ}t=!0}}else a:if(t=a,v=t.prev,n=t,q=t.next,0<=na(v,n,q))t=!1;else{for(m=t.next.next;m!==t.prev;){if(xd(v.x,v.y,n.x,n.y,q.x,q.y,m.x,m.y)&&0<=na(m.prev,m,m.next)){t=!1;break a}m=m.next}t=!0}if(t)b.push(l.i/c),b.push(a.i/c),b.push(p.i/c),Sc(a),h=a=p.next;else if(a=p,a===h){if(!g)Uc(Tc(a),b,c,d,e,f,1);else if(1===g){g=b;h=c;l=a;do p=l.prev,t=l.next.next,!vb(p,t)&&cf(p,l,l.next,t)&&Vc(p,t)&&Vc(t,p)&&(g.push(p.i/h),g.push(l.i/h),g.push(t.i/h),Sc(l),Sc(l.next),l=a=t),l=l.next;while(l!==a);a=l;Uc(a, +b,c,d,e,f,2)}else if(2===g)a:{g=a;do{for(h=g.next.next;h!==g.prev;){if(l=g.i!==h.i){l=g;p=h;if(t=l.next.i!==p.i&&l.prev.i!==p.i){b:{t=l;do{if(t.i!==l.i&&t.next.i!==l.i&&t.i!==p.i&&t.next.i!==p.i&&cf(t,t.next,l,p)){t=!0;break b}t=t.next}while(t!==l);t=!1}t=!t}if(t=t&&Vc(l,p)&&Vc(p,l)){t=l;v=!1;n=(l.x+p.x)/2;p=(l.y+p.y)/2;do t.y>p!==t.next.y>p&&t.next.y!==t.y&&n<(t.next.x-t.x)*(p-t.y)/(t.next.y-t.y)+t.x&&(v=!v),t=t.next;while(t!==l);t=v}l=t}if(l){a=df(g,h);g=Tc(g,g.next);a=Tc(a,a.next);Uc(g,b,c,d,e, +f);Uc(a,b,c,d,e,f);break a}h=h.next}g=g.next}while(g!==a)}break}}}}function Ng(a,b){return a.x-b.x}function Og(a,b){var c=b,d=a.x,e=a.y,f=-Infinity;do{if(e<=c.y&&e>=c.next.y&&c.next.y!==c.y){var g=c.x+(e-c.y)*(c.next.x-c.x)/(c.next.y-c.y);if(g<=d&&g>f){f=g;if(g===d){if(e===c.y)return c;if(e===c.next.y)return c.next}var h=c.x=c.x&&c.x>=g&&d!==c.x&&xd(eh.x)&&Vc(c,a)&&(h=c,m=v)}c=c.next}return h}function ae(a,b,c,d,e){a=32767*(a-c)*e;b=32767*(b-d)*e;a=(a|a<<8)&16711935;a=(a|a<<4)&252645135;a=(a|a<<2)&858993459;b=(b|b<<8)&16711935;b=(b|b<<4)&252645135;b=(b|b<<2)&858993459;return(a|a<<1)&1431655765|((b|b<<1)&1431655765)<<1}function Pg(a){var b=a,c=a;do b.xna(a.prev,a,a.next)?0<=na(a,b,a.next)&&0<=na(a,a.prev,b):0>na(a,b,a.prev)||0>na(a,a.next,b)}function df(a,b){var c=new be(a.i,a.x,a.y),d=new be(b.i,b.x,b.y),e=a.next,f=b.prev;a.next=b;b.prev=a;c.next=e;e.prev= +c;d.next=c;c.prev=d;f.next=d;d.prev=f;return d}function bf(a,b,c,d){a=new be(a,b,c);d?(a.next=d.next,a.prev=d,d.next.prev=a,d.next=a):(a.prev=a,a.next=a);return a}function Sc(a){a.next.prev=a.prev;a.prev.next=a.next;a.prevZ&&(a.prevZ.nextZ=a.nextZ);a.nextZ&&(a.nextZ.prevZ=a.prevZ)}function be(a,b,c){this.i=a;this.x=b;this.y=c;this.nextZ=this.prevZ=this.z=this.next=this.prev=null;this.steiner=!1}function ef(a){var b=a.length;2Number.EPSILON){var l=Math.sqrt(h),m=Math.sqrt(f*f+g*g);h=b.x-e/l;b=b.y+d/l; +g=((c.x-g/m-h)*g-(c.y+f/m-b)*f)/(d*g-e*f);f=h+d*g-a.x;d=b+e*g-a.y;e=f*f+d*d;if(2>=e)return new y(f,d);e=Math.sqrt(e/2)}else a=!1,d>Number.EPSILON?f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(f=-e,e=Math.sqrt(h)):(f=d,d=e,e=Math.sqrt(h/2));return new y(f/e,d/e)}function h(a,b){for(N=a.length;0<=--N;){var c=N;var f=N-1;0>f&&(f=a.length-1);var g,h=w+2*E;for(g=0;gk;k++){var n=m[f[k]];var r=m[f[(k+1)%3]];d[0]=Math.min(n,r);d[1]=Math.max(n,r);n=d[0]+","+d[1];void 0===e[n]?e[n]={index1:d[0],index2:d[1],face1:h,face2:void 0}:e[n].face2=h}for(n in e)if(d=e[n],void 0===d.face2||g[d.face1].normal.dot(g[d.face2].normal)<=b)f=a[d.index1], +c.push(f.x,f.y,f.z),f=a[d.index2],c.push(f.x,f.y,f.z);this.addAttribute("position",new A(c,3))}function Ab(a,b,c,d,e,f,g,h){J.call(this);this.type="CylinderGeometry";this.parameters={radiusTop:a,radiusBottom:b,height:c,radialSegments:d,heightSegments:e,openEnded:f,thetaStart:g,thetaLength:h};this.fromBufferGeometry(new $a(a,b,c,d,e,f,g,h));this.mergeVertices()}function $a(a,b,c,d,e,f,g,h){function l(c){var e,f=new y,l=new p,v=0,u=!0===c?a:b,w=!0===c?1:-1;var A=t;for(e=1;e<=d;e++)n.push(0,z*w,0),r.push(0, +w,0),q.push(.5,.5),t++;var B=t;for(e=0;e<=d;e++){var F=e/d*h+g,G=Math.cos(F);F=Math.sin(F);l.x=u*F;l.y=z*w;l.z=u*G;n.push(l.x,l.y,l.z);r.push(0,w,0);f.x=.5*G+.5;f.y=.5*F*w+.5;q.push(f.x,f.y);t++}for(e=0;ethis.duration&&this.resetDuration();this.optimize()}function Nd(a){this.manager=void 0!==a?a:wa;this.textures={}}function ge(a){this.manager=void 0!==a?a: +wa}function mc(){}function he(a){"boolean"===typeof a&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),a=void 0);this.manager=void 0!==a?a:wa;this.withCredentials=!1}function lf(a){this.manager=void 0!==a?a:wa;this.texturePath=""}function ie(a){"undefined"===typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported.");"undefined"===typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported.");this.manager= +void 0!==a?a:wa;this.options=void 0}function je(){this.type="ShapePath";this.color=new K;this.subPaths=[];this.currentPath=null}function ke(a){this.type="Font";this.data=a}function mf(a){this.manager=void 0!==a?a:wa}function le(a){this.manager=void 0!==a?a:wa}function nf(){this.type="StereoCamera";this.aspect=1;this.eyeSep=.064;this.cameraL=new X;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=!1;this.cameraR=new X;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=!1}function hd(a, +b,c){B.call(this);this.type="CubeCamera";var d=new X(90,1,a,b);d.up.set(0,-1,0);d.lookAt(new p(1,0,0));this.add(d);var e=new X(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new p(-1,0,0));this.add(e);var f=new X(90,1,a,b);f.up.set(0,0,1);f.lookAt(new p(0,1,0));this.add(f);var g=new X(90,1,a,b);g.up.set(0,0,-1);g.lookAt(new p(0,-1,0));this.add(g);var h=new X(90,1,a,b);h.up.set(0,-1,0);h.lookAt(new p(0,0,1));this.add(h);var l=new X(90,1,a,b);l.up.set(0,-1,0);l.lookAt(new p(0,0,-1));this.add(l);this.renderTarget= +new Lb(c,c,{format:1022,magFilter:1006,minFilter:1006});this.renderTarget.texture.name="CubeCamera";this.update=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=this.renderTarget,m=c.texture.generateMipmaps;c.texture.generateMipmaps=!1;c.activeCubeFace=0;a.render(b,d,c);c.activeCubeFace=1;a.render(b,e,c);c.activeCubeFace=2;a.render(b,f,c);c.activeCubeFace=3;a.render(b,g,c);c.activeCubeFace=4;a.render(b,h,c);c.texture.generateMipmaps=m;c.activeCubeFace=5;a.render(b,l,c);a.setRenderTarget(null)}; +this.clear=function(a,b,c,d){for(var e=this.renderTarget,f=0;6>f;f++)e.activeCubeFace=f,a.setRenderTarget(e),a.clear(b,c,d);a.setRenderTarget(null)}}function me(){B.call(this);this.type="AudioListener";this.context=ne.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null}function nc(a){B.call(this);this.type="Audio";this.context=a.context;this.gain=this.context.createGain();this.gain.connect(a.getInput());this.autoplay=!1;this.buffer=null;this.loop= +!1;this.offset=this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}function oe(a){nc.call(this,a);this.panner=this.context.createPanner();this.panner.connect(this.gain)}function pe(a,b){this.analyser=a.context.createAnalyser();this.analyser.fftSize=void 0!==b?b:2048;this.data=new Uint8Array(this.analyser.frequencyBinCount);a.getOutput().connect(this.analyser)}function qe(a,b,c){this.binding=a;this.valueSize=c;a=Float64Array;switch(b){case "quaternion":b= +this._slerp;break;case "string":case "bool":a=Array;b=this._select;break;default:b=this._lerp}this.buffer=new a(4*c);this._mixBufferRegion=b;this.referenceCount=this.useCount=this.cumulativeWeight=0}function of(a,b,c){c=c||oa.parseTrackName(b);this._targetGroup=a;this._bindings=a.subscribe_(b,c)}function oa(a,b,c){this.path=b;this.parsedPath=c||oa.parseTrackName(b);this.node=oa.findNode(a,this.parsedPath.nodeName)||a;this.rootNode=a}function pf(){this.uuid=P.generateUUID();this._objects=Array.prototype.slice.call(arguments); +this.nCachedObjects_=0;var a={};this._indicesByUUID=a;for(var b=0,c=arguments.length;b!==c;++b)a[arguments[b].uuid]=b;this._paths=[];this._parsedPaths=[];this._bindings=[];this._bindingsIndicesByPath={};var d=this;this.stats={objects:{get total(){return d._objects.length},get inUse(){return this.total-d.nCachedObjects_}},get bindingsPerObject(){return d._bindings.length}}}function qf(a,b,c){this._mixer=a;this._clip=b;this._localRoot=c||null;a=b.tracks;b=a.length;c=Array(b);for(var d={endingStart:2400, +endingEnd:2400},e=0;e!==b;++e){var f=a[e].createInterpolant(null);c[e]=f;f.settings=d}this._interpolantSettings=d;this._interpolants=c;this._propertyBindings=Array(b);this._weightInterpolant=this._timeScaleInterpolant=this._byClipCacheIndex=this._cacheIndex=null;this.loop=2201;this._loopCount=-1;this._startTime=null;this.time=0;this._effectiveWeight=this.weight=this._effectiveTimeScale=this.timeScale=1;this.repetitions=Infinity;this.paused=!1;this.enabled=!0;this.clampWhenFinished=!1;this.zeroSlopeAtEnd= +this.zeroSlopeAtStart=!0}function re(a){this._root=a;this._initMemoryManager();this.time=this._accuIndex=0;this.timeScale=1}function Od(a,b){"string"===typeof a&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),a=b);this.value=a}function se(){G.call(this);this.type="InstancedBufferGeometry";this.maxInstancedCount=void 0}function te(a,b,c,d){this.data=a;this.itemSize=b;this.offset=c;this.normalized=!0===d}function oc(a,b){this.array=a;this.stride=b;this.count=void 0!==a?a.length/ +b:0;this.dynamic=!1;this.updateRange={offset:0,count:-1};this.version=0}function ue(a,b,c){oc.call(this,a,b);this.meshPerAttribute=c||1}function ve(a,b,c){O.call(this,a,b);this.meshPerAttribute=c||1}function rf(a,b,c,d){this.ray=new sb(a,b);this.near=c||0;this.far=d||Infinity;this.params={Mesh:{},Line:{},LOD:{},Points:{threshold:1},Sprite:{}};Object.defineProperties(this.params,{PointCloud:{get:function(){console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points.");return this.Points}}})} +function sf(a,b){return a.distance-b.distance}function we(a,b,c,d){if(!1!==a.visible&&(a.raycast(b,c),!0===d)){a=a.children;d=0;for(var e=a.length;dc;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new A(b,3));b=new T({fog:!1});this.cone=new aa(a,b);this.add(this.cone);this.update()}function wf(a){var b=[];a&&a.isBone&& +b.push(a);for(var c=0;ca?-1:0b;b++)a[b]=(16>b?"0":"")+b.toString(16);return function(){var b=4294967295*Math.random()|0,d=4294967295*Math.random()|0,e=4294967295* +Math.random()|0,f=4294967295*Math.random()|0;return(a[b&255]+a[b>>8&255]+a[b>>16&255]+a[b>>24&255]+"-"+a[d&255]+a[d>>8&255]+"-"+a[d>>16&15|64]+a[d>>24&255]+"-"+a[e&63|128]+a[e>>8&255]+"-"+a[e>>16&255]+a[e>>24&255]+a[f&255]+a[f>>8&255]+a[f>>16&255]+a[f>>24&255]).toUpperCase()}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},lerp:function(a,b,c){return(1-c)*a+c*b},smoothstep:function(a, +b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(a){return a*P.DEG2RAD},radToDeg:function(a){return a*P.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},ceilPowerOfTwo:function(a){return Math.pow(2, +Math.ceil(Math.log(a)/Math.LN2))},floorPowerOfTwo:function(a){return Math.pow(2,Math.floor(Math.log(a)/Math.LN2))}};Object.defineProperties(y.prototype,{width:{get:function(){return this.x},set:function(a){this.x=a}},height:{get:function(){return this.y},set:function(a){this.y=a}}});Object.assign(y.prototype,{isVector2:!0,set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this}, +setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."), +this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this}, +subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*=a.y;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},applyMatrix3:function(a){var b=this.x,c=this.y;a=a.elements;this.x=a[0]*b+a[3]*c+a[6];this.y=a[1]*b+a[4]*c+a[7];return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this}, +max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));return this},clampScalar:function(){var a=new y,b=new y;return function(c,d){a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y); +return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},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 a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)},setLength:function(a){return this.normalize().multiplyScalar(a)}, +lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."); +this.x=a.getX(b);this.y=a.getY(b);return this},rotateAround:function(a,b){var c=Math.cos(b);b=Math.sin(b);var d=this.x-a.x,e=this.y-a.y;this.x=d*c-e*b+a.x;this.y=d*b+e*c+a.y;return this}});Object.assign(F.prototype,{isMatrix4:!0,set:function(a,b,c,d,e,f,g,h,l,m,k,n,r,q,t,p){var v=this.elements;v[0]=a;v[4]=b;v[8]=c;v[12]=d;v[1]=e;v[5]=f;v[9]=g;v[13]=h;v[2]=l;v[6]=m;v[10]=k;v[14]=n;v[3]=r;v[7]=q;v[11]=t;v[15]=p;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this}, +clone:function(){return(new F).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];b[13]=a[13];b[14]=a[14];b[15]=a[15];return this},copyPosition:function(a){var b=this.elements;a=a.elements;b[12]=a[12];b[13]=a[13];b[14]=a[14];return this},extractBasis:function(a,b,c){a.setFromMatrixColumn(this,0);b.setFromMatrixColumn(this,1);c.setFromMatrixColumn(this, +2);return this},makeBasis:function(a,b,c){this.set(a.x,b.x,c.x,0,a.y,b.y,c.y,0,a.z,b.z,c.z,0,0,0,0,1);return this},extractRotation:function(){var a=new p;return function(b){var c=this.elements,d=b.elements,e=1/a.setFromMatrixColumn(b,0).length(),f=1/a.setFromMatrixColumn(b,1).length();b=1/a.setFromMatrixColumn(b,2).length();c[0]=d[0]*e;c[1]=d[1]*e;c[2]=d[2]*e;c[3]=0;c[4]=d[4]*f;c[5]=d[5]*f;c[6]=d[6]*f;c[7]=0;c[8]=d[8]*b;c[9]=d[9]*b;c[10]=d[10]*b;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return this}}(), +makeRotationFromEuler:function(a){a&&a.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var b=this.elements,c=a.x,d=a.y,e=a.z,f=Math.cos(c);c=Math.sin(c);var g=Math.cos(d);d=Math.sin(d);var h=Math.cos(e);e=Math.sin(e);if("XYZ"===a.order){a=f*h;var l=f*e,m=c*h,k=c*e;b[0]=g*h;b[4]=-g*e;b[8]=d;b[1]=l+m*d;b[5]=a-k*d;b[9]=-c*g;b[2]=k-a*d;b[6]=m+l*d;b[10]=f*g}else"YXZ"===a.order?(a=g*h,l=g*e,m=d*h,k=d*e,b[0]=a+k*c,b[4]=m*c-l, +b[8]=f*d,b[1]=f*e,b[5]=f*h,b[9]=-c,b[2]=l*c-m,b[6]=k+a*c,b[10]=f*g):"ZXY"===a.order?(a=g*h,l=g*e,m=d*h,k=d*e,b[0]=a-k*c,b[4]=-f*e,b[8]=m+l*c,b[1]=l+m*c,b[5]=f*h,b[9]=k-a*c,b[2]=-f*d,b[6]=c,b[10]=f*g):"ZYX"===a.order?(a=f*h,l=f*e,m=c*h,k=c*e,b[0]=g*h,b[4]=m*d-l,b[8]=a*d+k,b[1]=g*e,b[5]=k*d+a,b[9]=l*d-m,b[2]=-d,b[6]=c*g,b[10]=f*g):"YZX"===a.order?(a=f*g,l=f*d,m=c*g,k=c*d,b[0]=g*h,b[4]=k-a*e,b[8]=m*e+l,b[1]=e,b[5]=f*h,b[9]=-c*h,b[2]=-d*h,b[6]=l*e+m,b[10]=a-k*e):"XZY"===a.order&&(a=f*g,l=f*d,m=c*g,k= +c*d,b[0]=g*h,b[4]=-e,b[8]=d*h,b[1]=a*e+k,b[5]=f*h,b[9]=l*e-m,b[2]=m*e-l,b[6]=c*h,b[10]=k*e+a);b[3]=0;b[7]=0;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1;return this},makeRotationFromQuaternion:function(){var a=new p(0,0,0),b=new p(1,1,1);return function(c){return this.compose(a,c,b)}}(),lookAt:function(){var a=new p,b=new p,c=new p;return function(d,e,f){var g=this.elements;c.subVectors(d,e);0===c.lengthSq()&&(c.z=1);c.normalize();a.crossVectors(f,c);0===a.lengthSq()&&(1===Math.abs(f.z)?c.x+=1E-4:c.z+= +1E-4,c.normalize(),a.crossVectors(f,c));a.normalize();b.crossVectors(c,a);g[0]=a.x;g[4]=b.x;g[8]=c.x;g[1]=a.y;g[5]=b.y;g[9]=c.y;g[2]=a.z;g[6]=b.z;g[10]=c.z;return this}}(),multiply:function(a,b){return void 0!==b?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(a,b)):this.multiplyMatrices(this,a)},premultiply:function(a){return this.multiplyMatrices(a,this)},multiplyMatrices:function(a,b){var c=a.elements,d=b.elements; +b=this.elements;a=c[0];var e=c[4],f=c[8],g=c[12],h=c[1],l=c[5],m=c[9],k=c[13],n=c[2],r=c[6],q=c[10],t=c[14],p=c[3],z=c[7],x=c[11];c=c[15];var w=d[0],y=d[4],C=d[8],A=d[12],Q=d[1],E=d[5],F=d[9],B=d[13],G=d[2],I=d[6],K=d[10],J=d[14],L=d[3],M=d[7],O=d[11];d=d[15];b[0]=a*w+e*Q+f*G+g*L;b[4]=a*y+e*E+f*I+g*M;b[8]=a*C+e*F+f*K+g*O;b[12]=a*A+e*B+f*J+g*d;b[1]=h*w+l*Q+m*G+k*L;b[5]=h*y+l*E+m*I+k*M;b[9]=h*C+l*F+m*K+k*O;b[13]=h*A+l*B+m*J+k*d;b[2]=n*w+r*Q+q*G+t*L;b[6]=n*y+r*E+q*I+t*M;b[10]=n*C+r*F+q*K+t*O;b[14]=n* +A+r*B+q*J+t*d;b[3]=p*w+z*Q+x*G+c*L;b[7]=p*y+z*E+x*I+c*M;b[11]=p*C+z*F+x*K+c*O;b[15]=p*A+z*B+x*J+c*d;return this},multiplyScalar:function(a){var b=this.elements;b[0]*=a;b[4]*=a;b[8]*=a;b[12]*=a;b[1]*=a;b[5]*=a;b[9]*=a;b[13]*=a;b[2]*=a;b[6]*=a;b[10]*=a;b[14]*=a;b[3]*=a;b[7]*=a;b[11]*=a;b[15]*=a;return this},applyToBufferAttribute:function(){var a=new p;return function(b){for(var c=0,d=b.count;cthis.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.copy(this);c=1/g;f=1/h;var m=1/l;b.elements[0]*=c; +b.elements[1]*=c;b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=m;b.elements[9]*=m;b.elements[10]*=m;d.setFromRotationMatrix(b);e.x=g;e.y=h;e.z=l;return this}}(),makePerspective:function(a,b,c,d,e,f){void 0===f&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(c-d);g[9]=(c+d)/(c-d);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+ +e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),l=1/(c-d),m=1/(f-e);g[0]=2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*l;g[9]=0;g[13]=-((c+d)*l);g[2]=0;g[6]=0;g[10]=-2*m;g[14]=-((f+e)*m);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;16>c;c++)this.elements[c]= +a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}});Object.assign(ea,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],l=c[d+1],m=c[d+2];c=c[d+3];d=e[f+0];var k=e[f+1],n=e[f+2];e=e[f+3];if(c!== +e||h!==d||l!==k||m!==n){f=1-g;var r=h*d+l*k+m*n+c*e,q=0<=r?1:-1,p=1-r*r;p>Number.EPSILON&&(p=Math.sqrt(p),r=Math.atan2(p,r*q),f=Math.sin(f*r)/p,g=Math.sin(g*r)/p);q*=g;h=h*f+d*q;l=l*f+k*q;m=m*f+n*q;c=c*f+e*q;f===1-g&&(g=1/Math.sqrt(h*h+l*l+m*m+c*c),h*=g,l*=g,m*=g,c*=g)}a[b]=h;a[b+1]=l;a[b+2]=m;a[b+3]=c}});Object.defineProperties(ea.prototype,{x:{get:function(){return this._x},set:function(a){this._x=a;this.onChangeCallback()}},y:{get:function(){return this._y},set:function(a){this._y=a;this.onChangeCallback()}}, +z:{get:function(){return this._z},set:function(a){this._z=a;this.onChangeCallback()}},w:{get:function(){return this._w},set:function(a){this._w=a;this.onChangeCallback()}}});Object.assign(ea.prototype,{set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._w=d;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(a){this._x=a.x;this._y=a.y;this._z=a.z;this._w=a.w;this.onChangeCallback();return this},setFromEuler:function(a, +b){if(!a||!a.isEuler)throw Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var c=a._x,d=a._y,e=a._z;a=a.order;var f=Math.cos,g=Math.sin,h=f(c/2),l=f(d/2);f=f(e/2);c=g(c/2);d=g(d/2);e=g(e/2);"XYZ"===a?(this._x=c*l*f+h*d*e,this._y=h*d*f-c*l*e,this._z=h*l*e+c*d*f,this._w=h*l*f-c*d*e):"YXZ"===a?(this._x=c*l*f+h*d*e,this._y=h*d*f-c*l*e,this._z=h*l*e-c*d*f,this._w=h*l*f+c*d*e):"ZXY"===a?(this._x=c*l*f-h*d*e,this._y=h*d*f+c*l*e,this._z=h*l*e+c*d* +f,this._w=h*l*f-c*d*e):"ZYX"===a?(this._x=c*l*f-h*d*e,this._y=h*d*f+c*l*e,this._z=h*l*e-c*d*f,this._w=h*l*f+c*d*e):"YZX"===a?(this._x=c*l*f+h*d*e,this._y=h*d*f+c*l*e,this._z=h*l*e-c*d*f,this._w=h*l*f-c*d*e):"XZY"===a&&(this._x=c*l*f-h*d*e,this._y=h*d*f-c*l*e,this._z=h*l*e+c*d*f,this._w=h*l*f+c*d*e);if(!1!==b)this.onChangeCallback();return this},setFromAxisAngle:function(a,b){b/=2;var c=Math.sin(b);this._x=a.x*c;this._y=a.y*c;this._z=a.z*c;this._w=Math.cos(b);this.onChangeCallback();return this},setFromRotationMatrix:function(a){var b= +a.elements,c=b[0];a=b[4];var d=b[8],e=b[1],f=b[5],g=b[9],h=b[2],l=b[6];b=b[10];var m=c+f+b;0f&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(l-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y=.25*c,this._z=(g+l)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+l)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a= +new p,b;return function(c,d){void 0===a&&(a=new p);b=c.dot(d)+1;1E-6>b?(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=a.x;this._y=a.y;this._z=a.z;this._w=b;return this.normalize()}}(),inverse:function(){return this.conjugate()},conjugate:function(){this._x*=-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+ +this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this},multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this, +a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z;a=a._w;var f=b._x,g=b._y,h=b._z;b=b._w;this._x=c*b+a*f+d*h-e*g;this._y=d*b+a*g+e*f-c*h;this._z=e*b+a*h+c*g-d*f;this._w=a*b-c*f-d*g-e*h;this.onChangeCallback();return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z, +g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;a=Math.sqrt(1-g*g);if(.001>Math.abs(a))return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var h=Math.atan2(a,g);g=Math.sin((1-b)*h)/a;b=Math.sin(b*h)/a;this._w=f*g+this._w*b;this._x=c*g+this._x*b;this._y=d*g+this._y*b;this._z=e*g+this._z*b;this.onChangeCallback();return this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a, +b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}});Object.assign(p.prototype,{isVector3:!0,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x= +a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(a){this.x= +a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;return this},sub:function(a,b){if(void 0!== +b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this},multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a, +b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a=new ea;return function(b){b&&b.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");return this.applyQuaternion(a.setFromEuler(b))}}(),applyAxisAngle:function(){var a=new ea;return function(b,c){return this.applyQuaternion(a.setFromAxisAngle(b, +c))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a=a.w;var h=a*b+ +f*d-g*c,l=a*c+g*b-e*d,m=a*d+e*c-f*b;b=-e*b-f*c-g*d;this.x=h*a+b*-e+l*-g-m*-f;this.y=l*a+b*-f+m*-e-h*-g;this.z=m*a+b*-g+h*-f-l*-e;return this},project:function(){var a=new F;return function(b){a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyMatrix4(a)}}(),unproject:function(){var a=new F;return function(b){a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyMatrix4(a)}}(),transformDirection:function(a){var b=this.x,c=this.y,d=this.z; +a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);return this},clamp:function(a,b){this.x= +Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(){var a=new p,b=new p;return function(c,d){a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x); +this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x* +this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},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(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)}, +cross:function(a,b){return void 0!==b?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b)):this.crossVectors(this,a)},crossVectors:function(a,b){var c=a.x,d=a.y;a=a.z;var e=b.x,f=b.y;b=b.z;this.x=d*b-a*f;this.y=a*e-c*b;this.z=c*f-d*e;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a=new p;return function(b){a.copy(this).projectOnVector(b); +return this.sub(a)}}(),reflect:function(){var a=new p;return function(b){return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(P.clamp(a,-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},manhattanDistanceTo:function(a){return Math.abs(this.x-a.x)+Math.abs(this.y-a.y)+Math.abs(this.z- +a.z)},setFromSpherical:function(a){var b=Math.sin(a.phi)*a.radius;this.x=b*Math.sin(a.theta);this.y=Math.cos(a.phi)*a.radius;this.z=b*Math.cos(a.theta);return this},setFromCylindrical:function(a){this.x=a.radius*Math.sin(a.theta);this.y=a.y;this.z=a.radius*Math.cos(a.theta);return this},setFromMatrixPosition:function(a){a=a.elements;this.x=a[12];this.y=a[13];this.z=a[14];return this},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a,1).length(); +a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."); +this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);return this}});Object.assign(ta.prototype,{isMatrix3:!0,set:function(a,b,c,d,e,f,g,h,l){var m=this.elements;m[0]=a;m[1]=d;m[2]=g;m[3]=b;m[4]=e;m[5]=h;m[6]=c;m[7]=f;m[8]=l;return this},identity:function(){this.set(1,0,0,0,1,0,0,0,1);return this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(a){var b=this.elements;a=a.elements;b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];b[5]=a[5];b[6]=a[6];b[7]=a[7];b[8]= +a[8];return this},setFromMatrix4:function(a){a=a.elements;this.set(a[0],a[4],a[8],a[1],a[5],a[9],a[2],a[6],a[10]);return this},applyToBufferAttribute:function(){var a=new p;return function(b){for(var c=0,d=b.count;cc;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a,b){void 0===b&&(b=0);for(var c=0;9>c;c++)this.elements[c]=a[c+b];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8]; +return a}});var Df=0;ca.DEFAULT_IMAGE=void 0;ca.DEFAULT_MAPPING=300;ca.prototype=Object.assign(Object.create(ha.prototype),{constructor:ca,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(a){this.name=a.name;this.image=a.image;this.mipmaps=a.mipmaps.slice(0);this.mapping=a.mapping;this.wrapS=a.wrapS;this.wrapT=a.wrapT; +this.magFilter=a.magFilter;this.minFilter=a.minFilter;this.anisotropy=a.anisotropy;this.format=a.format;this.type=a.type;this.offset.copy(a.offset);this.repeat.copy(a.repeat);this.center.copy(a.center);this.rotation=a.rotation;this.matrixAutoUpdate=a.matrixAutoUpdate;this.matrix.copy(a.matrix);this.generateMipmaps=a.generateMipmaps;this.premultiplyAlpha=a.premultiplyAlpha;this.flipY=a.flipY;this.unpackAlignment=a.unpackAlignment;this.encoding=a.encoding;return this},toJSON:function(a){var b=void 0=== +a||"string"===typeof a;if(!b&&void 0!==a.textures[this.uuid])return a.textures[this.uuid];var c={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 d=this.image;void 0===d.uuid&&(d.uuid=P.generateUUID());if(!b&&void 0===a.images[d.uuid]){var e=a.images,f=d.uuid,g=d.uuid;if(d instanceof HTMLCanvasElement)var h=d;else{h=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");h.width=d.width;h.height=d.height;var l=h.getContext("2d");d instanceof ImageData?l.putImageData(d,0,0):l.drawImage(d,0,0,d.width,d.height)}h=2048a.x||1a.x?0:1;break;case 1002:a.x=1===Math.abs(Math.floor(a.x)%2)?Math.ceil(a.x)-a.x:a.x-Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case 1002:a.y=1===Math.abs(Math.floor(a.y)% +2)?Math.ceil(a.y)-a.y:a.y-Math.floor(a.y)}this.flipY&&(a.y=1-a.y)}}});Object.defineProperty(ca.prototype,"needsUpdate",{set:function(a){!0===a&&this.version++}});Object.assign(U.prototype,{isVector4:!0,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a, +b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw Error("index is out of range: "+a);}return this},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a, +b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!== +b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z, +e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z=a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){a=a.elements;var b=a[0];var c=a[4];var d= +a[8],e=a[1],f=a[5],g=a[9];var h=a[2];var l=a[6];var m=a[10];if(.01>Math.abs(c-e)&&.01>Math.abs(d-h)&&.01>Math.abs(g-l)){if(.1>Math.abs(c+e)&&.1>Math.abs(d+h)&&.1>Math.abs(g+l)&&.1>Math.abs(b+f+m-3))return this.set(1,0,0,0),this;a=Math.PI;b=(b+1)/2;f=(f+1)/2;m=(m+1)/2;c=(c+e)/4;d=(d+h)/4;g=(g+l)/4;b>f&&b>m?.01>b?(l=0,c=h=.707106781):(l=Math.sqrt(b),h=c/l,c=d/l):f>m?.01>f?(l=.707106781,h=0,c=.707106781):(h=Math.sqrt(f),l=c/h,c=g/h):.01>m?(h=l=.707106781,c=0):(c=Math.sqrt(m),l=d/c,h=g/c);this.set(l, +h,c,a);return this}a=Math.sqrt((l-g)*(l-g)+(d-h)*(d-h)+(e-c)*(e-c));.001>Math.abs(a)&&(a=1);this.x=(l-g)/a;this.y=(d-h)/a;this.z=(e-c)/a;this.w=Math.acos((b+f+m-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x, +Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));this.w=Math.max(a.w,Math.min(b.w,this.w));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new U,b=new U);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.divideScalar(c||1).multiplyScalar(Math.max(a,Math.min(b,c)))},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z); +this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w): +Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},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(a){return this.normalize().multiplyScalar(a)},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a= +[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromBufferAttribute:function(a,b,c){void 0!==c&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute().");this.x=a.getX(b);this.y=a.getY(b);this.z=a.getZ(b);this.w=a.getW(b);return this}});kb.prototype=Object.assign(Object.create(ha.prototype),{constructor:kb,isWebGLRenderTarget:!0,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0, +0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});Lb.prototype=Object.create(kb.prototype);Lb.prototype.constructor=Lb;Lb.prototype.isWebGLRenderTargetCube=!0;lb.prototype= +Object.create(ca.prototype);lb.prototype.constructor=lb;lb.prototype.isDataTexture=!0;Object.assign(Wa.prototype,{isBox3:!0,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,l=a.length;he&&(e=m);k>f&&(f=k);n>g&&(g=n)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromBufferAttribute:function(a){for(var b= +Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,l=a.count;he&&(e=m);k>f&&(f=k);n>g&&(g=n)}this.min.set(b,c,d);this.max.set(e,f,g);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y|| +a.zthis.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box3: .getParameter() target is now required"),b=new p);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},intersectsSphere:function(){var a=new p;return function(b){this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){if(0=a.constant},intersectsTriangle:function(){function a(a){var e;var f=0;for(e=a.length-3;f<=e;f+=3){h.fromArray(a,f);var g=m.x*Math.abs(h.x)+m.y*Math.abs(h.y)+m.z*Math.abs(h.z),l=b.dot(h),k=c.dot(h),n=d.dot(h);if(Math.max(-Math.max(l,k,n),Math.min(l,k,n))>g)return!1}return!0}var b=new p,c=new p,d=new p,e=new p,f=new p,g=new p,h=new p,l= +new p,m=new p,k=new p;return function(h){if(this.isEmpty())return!1;this.getCenter(l);m.subVectors(this.max,l);b.subVectors(h.a,l);c.subVectors(h.b,l);d.subVectors(h.c,l);e.subVectors(c,b);f.subVectors(d,c);g.subVectors(b,d);h=[0,-e.z,e.y,0,-f.z,f.y,0,-g.z,g.y,e.z,0,-e.x,f.z,0,-f.x,g.z,0,-g.x,-e.y,e.x,0,-f.y,f.x,0,-g.y,g.x,0];if(!a(h))return!1;h=[1,0,0,0,1,0,0,0,1];if(!a(h))return!1;k.crossVectors(e,f);h=[k.x,k.y,k.z];return a(h)}}(),clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box3: .clampPoint() target is now required"), +b=new p);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new p;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new p;return function(b){void 0===b&&(console.warn("THREE.Box3: .getBoundingSphere() target is now required"),b=new Ga);this.getCenter(b.center);b.radius=.5*this.getSize(a).length();return b}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this}, +union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(a){if(this.isEmpty())return this;a=a.elements;var b=a[0]*this.min.x,c=a[1]*this.min.x,d=a[2]*this.min.x,e=a[0]*this.max.x,f=a[1]*this.max.x,g=a[2]*this.max.x,h=a[4]*this.min.y,l=a[5]*this.min.y,m=a[6]*this.min.y,k=a[4]*this.max.y,n=a[5]*this.max.y,r=a[6]*this.max.y,q=a[8]*this.min.z,p=a[9]*this.min.z,u=a[10]*this.min.z,z=a[8]*this.max.z,x=a[9]*this.max.z,w=a[10]*this.max.z;this.min.x=Math.min(b,e)+Math.min(h, +k)+Math.min(q,z)+a[12];this.min.y=Math.min(c,f)+Math.min(l,n)+Math.min(p,x)+a[13];this.min.z=Math.min(d,g)+Math.min(m,r)+Math.min(u,w)+a[14];this.max.x=Math.max(b,e)+Math.max(h,k)+Math.max(q,z)+a[12];this.max.y=Math.max(c,f)+Math.max(l,n)+Math.max(p,x)+a[13];this.max.z=Math.max(d,g)+Math.max(m,r)+Math.max(u,w)+a[14];return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});Object.assign(Ga.prototype, +{set:function(a,b){this.center.copy(a);this.radius=b;return this},setFromPoints:function(){var a=new Wa;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).getCenter(d);for(var e=c=0,f=b.length;e=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<= +this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(a.distanceToPoint(this.center))<=this.radius},clampPoint:function(a,b){var c=this.center.distanceToSquared(a);void 0===b&&(console.warn("THREE.Sphere: .clampPoint() target is now required"), +b=new p);b.copy(a);c>this.radius*this.radius&&(b.sub(this.center).normalize(),b.multiplyScalar(this.radius).add(this.center));return b},getBoundingBox:function(a){void 0===a&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),a=new Wa);a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&& +a.radius===this.radius}});Object.assign(Ha.prototype,{set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new p,b=new p;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d,c);return this}}(), +clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a,b){void 0=== +b&&(console.warn("THREE.Plane: .projectPoint() target is now required"),b=new p);return b.copy(this.normal).multiplyScalar(-this.distanceToPoint(a)).add(a)},intersectLine:function(){var a=new p;return function(b,c){void 0===c&&(console.warn("THREE.Plane: .intersectLine() target is now required"),c=new p);var d=b.delta(a),e=this.normal.dot(d);if(0===e){if(0===this.distanceToPoint(b.start))return c.copy(b.start)}else if(e=-(b.start.dot(this.normal)+this.constant)/e,!(0>e||1b&&0a&&0c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],l=c[6],m=c[7],k=c[8],n=c[9],r=c[10],q=c[11],p=c[12],u=c[13],z=c[14];c=c[15];b[0].setComponents(f-a,m-g,q-k,c-p).normalize();b[1].setComponents(f+a,m+g,q+k,c+p).normalize();b[2].setComponents(f+d,m+h,q+n,c+u).normalize();b[3].setComponents(f-d,m-h,q-n,c-u).normalize();b[4].setComponents(f-e,m-l,q-r,c-z).normalize();b[5].setComponents(f+e, +m+l,q+r,c+z).normalize();return this},intersectsObject:function(){var a=new Ga;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSprite:function(){var a=new Ga;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d= +0;6>d;d++)if(b[d].distanceToPoint(c)e;e++){var f=d[e];a.x=0g&&0>f)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6> +c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}});var W={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(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_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_pars_maps:"#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( 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(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", +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 \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}\n",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}\n", +equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldPosition;\n#include \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 \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}\n", +linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \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 \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}\n", +meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \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 \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \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 \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#include \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 \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \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 \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \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 \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +meshphysical_vert:"#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \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 \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n", +points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \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 \n\t#include \n\t#include \n\t#include \n}\n", +shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}\n",shadow_vert:"#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"}, +Ca={merge:function(a){for(var b={},c=0;c>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b, +c,d){b=P.euclideanModulo(b,1);c=P.clamp(c,0,1);d=P.clamp(d,0,1);0===c?this.r=this.g=this.b=d:(c=.5>=d?d*(1+c):d+c-d*c,d=2*d-c,this.r=a(d,c,b+1/3),this.g=a(d,c,b),this.b=a(d,c,b-1/3));return this}}(),setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r= +Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2],10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){d=parseFloat(c[1])/ +360;var e=parseInt(c[2],10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)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===d)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}a&&0=h?l/(e+f):l/(2-e-f);switch(e){case b:g= +(c-d)/l+(cMath.abs(g)?(this._x=Math.atan2(-m,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(n,l),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(m,-1,1)),.99999>Math.abs(m)?(this._y=Math.atan2(g,e),this._z=Math.atan2(h,l)):(this._y=Math.atan2(-k,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(n,-1,1)),.99999>Math.abs(n)? +(this._y=Math.atan2(-k,e),this._z=Math.atan2(-f,l)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(k,-1,1)),.99999>Math.abs(k)?(this._x=Math.atan2(n,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,l))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-m,l),this._y=Math.atan2(-k,a)):(this._x=0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(n,l),this._y=Math.atan2(g,a)):(this._x= +Math.atan2(-m,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a=new F;return function(b,c,d){a.makeRotationFromQuaternion(b);return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a,b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new ea;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x=== +this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new p(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}}); +Object.assign(Ud.prototype,{set:function(a){this.mask=1<g;g++)if(d[g]===d[(g+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(d=a[f],this.faces.splice(d,1),c=0,e=this.faceVertexUvs.length;cthis.opacity&&(d.opacity=this.opacity);!0===this.transparent&&(d.transparent=this.transparent);d.depthFunc=this.depthFunc;d.depthTest=this.depthTest;d.depthWrite=this.depthWrite;0!==this.rotation&&(d.rotation=this.rotation);1!==this.linewidth&&(d.linewidth=this.linewidth);void 0!==this.dashSize&&(d.dashSize= +this.dashSize);void 0!==this.gapSize&&(d.gapSize=this.gapSize);void 0!==this.scale&&(d.scale=this.scale);!0===this.dithering&&(d.dithering=!0);0a?b.copy(this.origin):b.copy(this.direction).multiplyScalar(a).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new p;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b); +a.copy(this.direction).multiplyScalar(c).add(this.origin);return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a=new p,b=new p,c=new p;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),l=-this.direction.dot(b),m=c.dot(this.direction),k=-c.dot(b),n=c.lengthSq(),p=Math.abs(1-l*l);if(0=-q?e<=q?(h=1/p,d*=h,e*=h,l=d*(d+l*e+2*m)+e*(l*d+e+2*k)+n):(e=h,d=Math.max(0, +-(l*e+m)),l=-d*d+e*(e+2*k)+n):(e=-h,d=Math.max(0,-(l*e+m)),l=-d*d+e*(e+2*k)+n):e<=-q?(d=Math.max(0,-(-l*h+m)),e=0b)return null;b=Math.sqrt(b-e);e=d-b;d+=b;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a, +b){a=this.distanceToPlane(a);return null===a?null:this.at(a,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin);return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a,b){var c=1/this.direction.x;var d=1/this.direction.y;var e=1/this.direction.z,f=this.origin;if(0<=c){var g=(a.min.x-f.x)*c;c*=a.max.x-f.x}else g=(a.max.x-f.x)*c,c*=a.min.x-f.x;if(0<=d){var h=(a.min.y-f.y)*d;d*=a.max.y-f.y}else h=(a.max.y-f.y)*d,d*=a.min.y-f.y;if(g>d||h>c)return null;if(h>g||g!== +g)g=h;if(da||h>c)return null;if(h>g||g!==g)g=h;if(ac?null:this.at(0<=g?g:c,b)},intersectsBox:function(){var a=new p;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new p,b=new p,c=new p,d=new p;return function(e,f,g,h,l){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d);if(0 +f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,l)}}(),applyMatrix4:function(a){this.origin.applyMatrix4(a);this.direction.transformDirection(a);return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}});Object.assign(Ob.prototype,{set:function(a,b){this.start.copy(a);this.end.copy(b); +return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},getCenter:function(a){void 0===a&&(console.warn("THREE.Line3: .getCenter() target is now required"),a=new p);return a.addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){void 0===a&&(console.warn("THREE.Line3: .delta() target is now required"),a=new p);return a.subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)}, +distance:function(){return this.start.distanceTo(this.end)},at:function(a,b){void 0===b&&(console.warn("THREE.Line3: .at() target is now required"),b=new p);return this.delta(b).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new p,b=new p;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);c=b.dot(b);c=b.dot(a)/c;d&&(c=P.clamp(c,0,1));return c}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);void 0===c&& +(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),c=new p);return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a);this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}});Object.assign(Aa,{getNormal:function(){var a=new p;return function(b,c,d,e){void 0===e&&(console.warn("THREE.Triangle: .getNormal() target is now required"),e=new p);e.subVectors(d,c);a.subVectors(b, +c);e.cross(a);b=e.lengthSq();return 0=a.x+a.y}}()});Object.assign(Aa.prototype,{set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},getArea:function(){var a=new p,b=new p;return function(){a.subVectors(this.c, +this.b);b.subVectors(this.a,this.b);return.5*a.cross(b).length()}}(),getMidpoint:function(a){void 0===a&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),a=new p);return a.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},getNormal:function(a){return Aa.getNormal(this.a,this.b,this.c,a)},getPlane:function(a){void 0===a&&(console.warn("THREE.Triangle: .getPlane() target is now required"),a=new p);return a.setFromCoplanarPoints(this.a,this.b,this.c)},getBarycoord:function(a, +b){return Aa.getBarycoord(a,this.a,this.b,this.c,b)},containsPoint:function(a){return Aa.containsPoint(a,this.a,this.b,this.c)},intersectsBox:function(a){return a.intersectsTriangle(this)},closestPointToPoint:function(){var a=new Ha,b=[new Ob,new Ob,new Ob],c=new p,d=new p;return function(e,f){void 0===f&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),f=new p);var g=Infinity;a.setFromCoplanarPoints(this.a,this.b,this.c);a.projectPoint(e,c);if(!0===this.containsPoint(c))f.copy(c); +else for(b[0].set(this.a,this.b),b[1].set(this.b,this.c),b[2].set(this.c,this.a),e=0;ec.far?null:{distance:b,point:x.clone(),object:a}}function c(c,d,e,f,m,k,n,p){g.fromBufferAttribute(f,k);h.fromBufferAttribute(f,n);l.fromBufferAttribute(f,p);if(c=b(c,c.material,d,e,g,h,l,z))m&&(r.fromBufferAttribute(m,k),q.fromBufferAttribute(m,n),t.fromBufferAttribute(m,p),c.uv=a(z,g,h,l,r,q,t)),m=new Xa(k,n,p),Aa.getNormal(g,h,l,m.normal),c.face=m;return c}var d=new F,e=new sb, +f=new Ga,g=new p,h=new p,l=new p,m=new p,k=new p,n=new p,r=new y,q=new y,t=new y,u=new p,z=new p,x=new p;return function(p,v){var u=this.geometry,w=this.material,x=this.matrixWorld;if(void 0!==w&&(null===u.boundingSphere&&u.computeBoundingSphere(),f.copy(u.boundingSphere),f.applyMatrix4(x),!1!==p.ray.intersectsSphere(f)&&(d.getInverse(x),e.copy(p.ray).applyMatrix4(d),null===u.boundingBox||!1!==e.intersectsBox(u.boundingBox)))){var y;if(u.isBufferGeometry){w=u.index;var A=u.attributes.position;u=u.attributes.uv; +var H;if(null!==w)for(x=0,H=w.count;xf||(f=d.ray.origin.distanceTo(a),fd.far||e.push({distance:f,point:a.clone(),face:null,object:this}))}}(),clone:function(){return(new this.constructor(this.material)).copy(this)},copy:function(a){B.prototype.copy.call(this,a);void 0!==a.center&&this.center.copy(a.center); +return this}});Gc.prototype=Object.assign(Object.create(B.prototype),{constructor:Gc,copy:function(a){B.prototype.copy.call(this,a,!1);a=a.levels;for(var b=0,c=a.length;b=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible= +!0;else break;for(;ef||(k.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(k),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}else for(g=0,t=q.length/3-1;gf||(k.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(k),ud.far||e.push({distance:u,point:h.clone().applyMatrix4(this.matrixWorld), +index:g,face:null,faceIndex:null,object:this}))}else if(g.isGeometry)for(l=g.vertices,m=l.length,g=0;gf||(k.applyMatrix4(this.matrixWorld),u=d.ray.origin.distanceTo(k),ud.far||e.push({distance:u,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)}});aa.prototype=Object.assign(Object.create(ma.prototype), +{constructor:aa,isLineSegments:!0,computeLineDistances:function(){var a=new p,b=new p;return function(){var c=this.geometry;if(c.isBufferGeometry)if(null===c.index){for(var d=c.attributes.position,e=[],f=0,g=d.count;fd.far||e.push({distance:a,distanceToRay:Math.sqrt(f),point:n.clone(),index:c,face:null,object:g}))}var g=this,h=this.geometry,l=this.matrixWorld,m=d.params.Points.threshold;null===h.boundingSphere&& +h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(l);c.radius+=m;if(!1!==d.ray.intersectsSphere(c)){a.getInverse(l);b.copy(d.ray).applyMatrix4(a);m/=(this.scale.x+this.scale.y+this.scale.z)/3;var k=m*m;m=new p;var n=new p;if(h.isBufferGeometry){var r=h.index;h=h.attributes.position.array;if(null!==r){var q=r.array;r=0;for(var t=q.length;r=a.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}});Vb.prototype=Object.create(ca.prototype);Vb.prototype.constructor=Vb;Vb.prototype.isCompressedTexture=!0;Ic.prototype=Object.create(ca.prototype); +Ic.prototype.constructor=Ic;Ic.prototype.isDepthTexture=!0;Wb.prototype=Object.create(G.prototype);Wb.prototype.constructor=Wb;Jc.prototype=Object.create(J.prototype);Jc.prototype.constructor=Jc;Xb.prototype=Object.create(G.prototype);Xb.prototype.constructor=Xb;Kc.prototype=Object.create(J.prototype);Kc.prototype.constructor=Kc;va.prototype=Object.create(G.prototype);va.prototype.constructor=va;Lc.prototype=Object.create(J.prototype);Lc.prototype.constructor=Lc;Yb.prototype=Object.create(va.prototype); +Yb.prototype.constructor=Yb;Mc.prototype=Object.create(J.prototype);Mc.prototype.constructor=Mc;ub.prototype=Object.create(va.prototype);ub.prototype.constructor=ub;Nc.prototype=Object.create(J.prototype);Nc.prototype.constructor=Nc;Zb.prototype=Object.create(va.prototype);Zb.prototype.constructor=Zb;Oc.prototype=Object.create(J.prototype);Oc.prototype.constructor=Oc;$b.prototype=Object.create(va.prototype);$b.prototype.constructor=$b;Pc.prototype=Object.create(J.prototype);Pc.prototype.constructor= +Pc;ac.prototype=Object.create(G.prototype);ac.prototype.constructor=ac;Qc.prototype=Object.create(J.prototype);Qc.prototype.constructor=Qc;bc.prototype=Object.create(G.prototype);bc.prototype.constructor=bc;Rc.prototype=Object.create(J.prototype);Rc.prototype.constructor=Rc;cc.prototype=Object.create(G.prototype);cc.prototype.constructor=cc;var Sg={triangulate:function(a,b,c){c=c||2;var d=b&&b.length,e=d?b[0]*c:a.length,f=af(a,0,e,c,!0),g=[];if(!f)return g;var h;if(d){var l=c;d=[];var m;var k=0;for(m= +b.length;k80*c){var q=h=a[0];var t=d=a[1];for(l=c;lh&&(h=k),b>d&&(d=b);h=Math.max(h-q,d-t);h=0!==h?1/h:0}Uc(f,g,c,q,t,h);return g}},Za={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;eZa.area(a)},triangulateShape:function(a,b){var c=[],d=[],e=[];ef(a);ff(c,a);var f=a.length;b.forEach(ef);for(a=0;aMath.abs(g-l)? +[new y(a,1-c),new y(h,1-d),new y(m,1-e),new y(n,1-b)]:[new y(g,1-c),new y(l,1-d),new y(k,1-e),new y(p,1-b)]}};Wc.prototype=Object.create(J.prototype);Wc.prototype.constructor=Wc;dc.prototype=Object.create(Sa.prototype);dc.prototype.constructor=dc;Xc.prototype=Object.create(J.prototype);Xc.prototype.constructor=Xc;xb.prototype=Object.create(G.prototype);xb.prototype.constructor=xb;Yc.prototype=Object.create(J.prototype);Yc.prototype.constructor=Yc;ec.prototype=Object.create(G.prototype);ec.prototype.constructor= +ec;Zc.prototype=Object.create(J.prototype);Zc.prototype.constructor=Zc;fc.prototype=Object.create(G.prototype);fc.prototype.constructor=fc;yb.prototype=Object.create(J.prototype);yb.prototype.constructor=yb;yb.prototype.toJSON=function(){var a=J.prototype.toJSON.call(this);return hf(this.parameters.shapes,a)};zb.prototype=Object.create(G.prototype);zb.prototype.constructor=zb;zb.prototype.toJSON=function(){var a=G.prototype.toJSON.call(this);return hf(this.parameters.shapes,a)};gc.prototype=Object.create(G.prototype); +gc.prototype.constructor=gc;Ab.prototype=Object.create(J.prototype);Ab.prototype.constructor=Ab;$a.prototype=Object.create(G.prototype);$a.prototype.constructor=$a;$c.prototype=Object.create(Ab.prototype);$c.prototype.constructor=$c;ad.prototype=Object.create($a.prototype);ad.prototype.constructor=ad;bd.prototype=Object.create(J.prototype);bd.prototype.constructor=bd;hc.prototype=Object.create(G.prototype);hc.prototype.constructor=hc;var za=Object.freeze({WireframeGeometry:Wb,ParametricGeometry:Jc, +ParametricBufferGeometry:Xb,TetrahedronGeometry:Lc,TetrahedronBufferGeometry:Yb,OctahedronGeometry:Mc,OctahedronBufferGeometry:ub,IcosahedronGeometry:Nc,IcosahedronBufferGeometry:Zb,DodecahedronGeometry:Oc,DodecahedronBufferGeometry:$b,PolyhedronGeometry:Kc,PolyhedronBufferGeometry:va,TubeGeometry:Pc,TubeBufferGeometry:ac,TorusKnotGeometry:Qc,TorusKnotBufferGeometry:bc,TorusGeometry:Rc,TorusBufferGeometry:cc,TextGeometry:Wc,TextBufferGeometry:dc,SphereGeometry:Xc,SphereBufferGeometry:xb,RingGeometry:Yc, +RingBufferGeometry:ec,PlaneGeometry:Cc,PlaneBufferGeometry:rb,LatheGeometry:Zc,LatheBufferGeometry:fc,ShapeGeometry:yb,ShapeBufferGeometry:zb,ExtrudeGeometry:wb,ExtrudeBufferGeometry:Sa,EdgesGeometry:gc,ConeGeometry:$c,ConeBufferGeometry:ad,CylinderGeometry:Ab,CylinderBufferGeometry:$a,CircleGeometry:bd,CircleBufferGeometry:hc,BoxGeometry:Nb,BoxBufferGeometry:pb});Bb.prototype=Object.create(L.prototype);Bb.prototype.constructor=Bb;Bb.prototype.isShadowMaterial=!0;Bb.prototype.copy=function(a){L.prototype.copy.call(this, +a);this.color.copy(a.color);return this};ic.prototype=Object.create(Ea.prototype);ic.prototype.constructor=ic;ic.prototype.isRawShaderMaterial=!0;Ta.prototype=Object.create(L.prototype);Ta.prototype.constructor=Ta;Ta.prototype.isMeshStandardMaterial=!0;Ta.prototype.copy=function(a){L.prototype.copy.call(this,a);this.defines={STANDARD:""};this.color.copy(a.color);this.roughness=a.roughness;this.metalness=a.metalness;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity; +this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.roughnessMap=a.roughnessMap;this.metalnessMap=a.metalnessMap;this.alphaMap= +a.alphaMap;this.envMap=a.envMap;this.envMapIntensity=a.envMapIntensity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Cb.prototype=Object.create(Ta.prototype);Cb.prototype.constructor=Cb;Cb.prototype.isMeshPhysicalMaterial=!0;Cb.prototype.copy=function(a){Ta.prototype.copy.call(this, +a);this.defines={PHYSICAL:""};this.reflectivity=a.reflectivity;this.clearCoat=a.clearCoat;this.clearCoatRoughness=a.clearCoatRoughness;return this};Ja.prototype=Object.create(L.prototype);Ja.prototype.constructor=Ja;Ja.prototype.isMeshPhongMaterial=!0;Ja.prototype.copy=function(a){L.prototype.copy.call(this,a);this.color.copy(a.color);this.specular.copy(a.specular);this.shininess=a.shininess;this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity= +a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap=a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity= +a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Db.prototype=Object.create(Ja.prototype);Db.prototype.constructor=Db;Db.prototype.isMeshToonMaterial=!0;Db.prototype.copy=function(a){Ja.prototype.copy.call(this,a);this.gradientMap=a.gradientMap; +return this};Eb.prototype=Object.create(L.prototype);Eb.prototype.constructor=Eb;Eb.prototype.isMeshNormalMaterial=!0;Eb.prototype.copy=function(a){L.prototype.copy.call(this,a);this.bumpMap=a.bumpMap;this.bumpScale=a.bumpScale;this.normalMap=a.normalMap;this.normalMapType=a.normalMapType;this.normalScale.copy(a.normalScale);this.displacementMap=a.displacementMap;this.displacementScale=a.displacementScale;this.displacementBias=a.displacementBias;this.wireframe=a.wireframe;this.wireframeLinewidth= +a.wireframeLinewidth;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Fb.prototype=Object.create(L.prototype);Fb.prototype.constructor=Fb;Fb.prototype.isMeshLambertMaterial=!0;Fb.prototype.copy=function(a){L.prototype.copy.call(this,a);this.color.copy(a.color);this.map=a.map;this.lightMap=a.lightMap;this.lightMapIntensity=a.lightMapIntensity;this.aoMap=a.aoMap;this.aoMapIntensity=a.aoMapIntensity;this.emissive.copy(a.emissive);this.emissiveMap= +a.emissiveMap;this.emissiveIntensity=a.emissiveIntensity;this.specularMap=a.specularMap;this.alphaMap=a.alphaMap;this.envMap=a.envMap;this.combine=a.combine;this.reflectivity=a.reflectivity;this.refractionRatio=a.refractionRatio;this.wireframe=a.wireframe;this.wireframeLinewidth=a.wireframeLinewidth;this.wireframeLinecap=a.wireframeLinecap;this.wireframeLinejoin=a.wireframeLinejoin;this.skinning=a.skinning;this.morphTargets=a.morphTargets;this.morphNormals=a.morphNormals;return this};Gb.prototype= +Object.create(T.prototype);Gb.prototype.constructor=Gb;Gb.prototype.isLineDashedMaterial=!0;Gb.prototype.copy=function(a){T.prototype.copy.call(this,a);this.scale=a.scale;this.dashSize=a.dashSize;this.gapSize=a.gapSize;return this};var Tg=Object.freeze({ShadowMaterial:Bb,SpriteMaterial:ib,RawShaderMaterial:ic,ShaderMaterial:Ea,PointsMaterial:Ia,MeshPhysicalMaterial:Cb,MeshStandardMaterial:Ta,MeshPhongMaterial:Ja,MeshToonMaterial:Db,MeshNormalMaterial:Eb,MeshLambertMaterial:Fb,MeshDepthMaterial:eb, +MeshDistanceMaterial:fb,MeshBasicMaterial:ka,LineDashedMaterial:Gb,LineBasicMaterial:T,Material:L}),Kb={enabled:!1,files:{},add:function(a,b){!1!==this.enabled&&(this.files[a]=b)},get:function(a){if(!1!==this.enabled)return this.files[a]},remove:function(a){delete this.files[a]},clear:function(){this.files={}}},wa=new ce,bb={};Object.assign(Ka.prototype,{load:function(a,b,c,d){void 0===a&&(a="");void 0!==this.path&&(a=this.path+a);a=this.manager.resolveURL(a);var e=this,f=Kb.get(a);if(void 0!==f)return e.manager.itemStart(a), +setTimeout(function(){b&&b(f);e.manager.itemEnd(a)},0),f;if(void 0!==bb[a])bb[a].push({onLoad:b,onProgress:c,onError:d});else{var g=a.match(/^data:(.*?)(;base64)?,(.*)$/);if(g){c=g[1];var h=!!g[2];g=g[3];g=window.decodeURIComponent(g);h&&(g=window.atob(g));try{var l=(this.responseType||"").toLowerCase();switch(l){case "arraybuffer":case "blob":var m=new Uint8Array(g.length);for(h=0;hg)e=a+1;else if(0b&&(b=0);1Number.EPSILON&&(g.normalize(),c=Math.acos(P.clamp(d[l-1].dot(d[l]),-1,1)),e[l].applyMatrix4(h.makeRotationAxis(g,c))),f[l].crossVectors(d[l],e[l]);if(!0===b)for(c=Math.acos(P.clamp(e[0].dot(e[a]),-1,1)),c/=a,0d;)d+=c;for(;d>c;)d-=c;de&&(e=1);1E-4>d&&(d=e);1E-4>l&&(l=e);Ae.initNonuniformCatmullRom(f.x,g.x,h.x,c.x,d,e,l);Be.initNonuniformCatmullRom(f.y,g.y,h.y,c.y,d,e,l);Ce.initNonuniformCatmullRom(f.z,g.z,h.z,c.z,d,e,l)}else"catmullrom"===this.curveType&&(Ae.initCatmullRom(f.x,g.x,h.x,c.x,this.tension),Be.initCatmullRom(f.y,g.y,h.y,c.y,this.tension),Ce.initCatmullRom(f.z,g.z,h.z,c.z,this.tension));b.set(Ae.calc(a), +Be.calc(a),Ce.calc(a));return b};ra.prototype.copy=function(a){I.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;bc.length-2?c.length-1:a+1];c=c[a>c.length-3?c.length-1:a+2];b.set(kf(d,e.x,f.x,g.x,c.x),kf(d,e.y,f.y,g.y,c.y));return b};Oa.prototype.copy=function(a){I.prototype.copy.call(this,a);this.points=[];for(var b=0,c=a.points.length;b=b)return b=c[a]-b,a=this.curves[a],c=a.getLength(),a.getPointAt(0===c?0:1-b/c);a++}return null},getLength:function(){var a=this.getCurveLengths(); +return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;c=e)break a;else{f=b[1];a=e)break b}d=c;c=0}}for(;c>>1,ab;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),a=this.getValueSize(),this.times=sa.arraySlice(c,e,f),this.values=sa.arraySlice(this.values,e*a,f*a);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),a=!1);var c=this.times;b=this.values;var d=c.length;0===d&&(console.error("THREE.KeyframeTrack: Track is empty.", +this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&sa.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,d);a=!1;break}return a},optimize:function(){for(var a=this.times,b=this.values, +c=this.getValueSize(),d=2302===this.getInterpolation(),e=1,f=a.length-1,g=1;gk.opacity&&(k.transparent=!0);d.setTextures(l);return d.parse(k)}}()});var De={decodeText:function(a){if("undefined"!==typeof TextDecoder)return(new TextDecoder).decode(a);for(var b="",c=0,d=a.length;cf;f++){var C=h[q++];var B=A[2*C];C=A[2*C+1];B=new y(B,C);2!==f&&c.faceVertexUvs[e][u].push(B);0!==f&&c.faceVertexUvs[e][u+1].push(B)}}z&&(z=3*h[q++],t.normal.set(k[z++],k[z++],k[z]),w.normal.copy(t.normal));if(x)for(e=0;4>e;e++)z=3*h[q++],x=new p(k[z++],k[z++],k[z]),2!==e&&t.vertexNormals.push(x), +0!==e&&w.vertexNormals.push(x);n&&(n=h[q++],n=v[n],t.color.setHex(n),w.color.setHex(n));if(l)for(e=0;4>e;e++)n=h[q++],n=v[n],2!==e&&t.vertexColors.push(new K(n)),0!==e&&w.vertexColors.push(new K(n));c.faces.push(t);c.faces.push(w)}else{t=new Xa;t.a=h[q++];t.b=h[q++];t.c=h[q++];u&&(u=h[q++],t.materialIndex=u);u=c.faces.length;if(e)for(e=0;ef;f++)C=h[q++],B=A[2*C],C=A[2*C+1],B=new y(B,C),c.faceVertexUvs[e][u].push(B);z&&(z=3*h[q++],t.normal.set(k[z++], +k[z++],k[z]));if(x)for(e=0;3>e;e++)z=3*h[q++],x=new p(k[z++],k[z++],k[z]),t.vertexNormals.push(x);n&&(n=h[q++],t.color.setHex(v[n]));if(l)for(e=0;3>e;e++)n=h[q++],t.vertexColors.push(new K(v[n]));c.faces.push(t)}}d=a;q=void 0!==d.influencesPerVertex?d.influencesPerVertex:2;if(d.skinWeights)for(g=0,h=d.skinWeights.length;gNumber.EPSILON){if(0>k&&(g=b[f],l=-l,h=b[e],k=-k),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=k*(a.x-g.x)-l*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=Za.isClockWise, +f=this.subPaths;if(0===f.length)return[];if(!0===b)return c(f);b=[];if(1===f.length){var g=f[0];var h=new jb;h.curves=g.curves;b.push(h);return b}var l=!e(f[0].getPoints());l=a?!l:l;h=[];var k=[],p=[],n=0;k[n]=void 0;p[n]=[];for(var r=0,q=f.length;rd&&this._mixBufferRegion(c,a,3*b,1-d,b);d=b;for(var f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a);break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight= +0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a,b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d){ea.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}});Object.assign(of.prototype,{getValue:function(a,b){this.bind();var c=this._bindings[this._targetGroup.nCachedObjects_];void 0!==c&&c.getValue(a,b)},setValue:function(a,b){for(var c=this._bindings,d=this._targetGroup.nCachedObjects_, +e=c.length;d!==e;++d)c[d].setValue(a,b)},bind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].bind()},unbind:function(){for(var a=this._bindings,b=this._targetGroup.nCachedObjects_,c=a.length;b!==c;++b)a[b].unbind()}});Object.assign(oa,{Composite:of,create:function(a,b,c){return a&&a.isAnimationObjectGroup?new oa.Composite(a,b,c):new oa(a,b,c)},sanitizeNodeName:function(){var a=/[\[\]\.:\/]/g;return function(b){return b.replace(/\s/g,"_").replace(a, +"")}}(),parseTrackName:function(){var a="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",b=/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]");a=/(WCOD+)?/.source.replace("WCOD",a);var c=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]"),d=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]"),e=new RegExp("^"+b+a+c+d+"$"),f=["material","materials","bones"];return function(a){var b=e.exec(a);if(!b)throw Error("PropertyBinding: Cannot parse trackName: "+a);b={nodeName:b[2], +objectName:b[3],objectIndex:b[4],propertyName:b[5],propertyIndex:b[6]};var c=b.nodeName&&b.nodeName.lastIndexOf(".");if(void 0!==c&&-1!==c){var d=b.nodeName.substring(c+1);-1!==f.indexOf(d)&&(b.nodeName=b.nodeName.substring(0,c),b.objectName=d)}if(null===b.propertyName||0===b.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+a);return b}}(),findNode:function(a,b){if(!b||""===b||"root"===b||"."===b||-1===b||b===a.name||b===a.uuid)return a;if(a.skeleton){var c= +a.skeleton.getBoneByName(b);if(void 0!==c)return c}if(a.children){var d=function(a){for(var c=0;c=b){var p=b++,n=a[p];c[n.uuid]=k;a[k]=n;c[l]=p;a[p]=h;h=0;for(l=e;h!==l;++h){n=d[h];var r=n[k];n[k]=n[p];n[p]=r}}}this.nCachedObjects_=b},uncache:function(){for(var a=this._objects,b=a.length,c=this.nCachedObjects_,d=this._indicesByUUID,e=this._bindings,f=e.length,g=0,h=arguments.length;g!==h;++g){var l= +arguments[g].uuid,k=d[l];if(void 0!==k)if(delete d[l],kb||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){b=this.timeScale;var c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0];b*=d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0:this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a;if(0===a)return b;var c=this._clip.duration,d=this.loop,e=this._loopCount;if(2200=== +d)a:{if(-1===e&&(this._loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0>a?-1:1})}else{d=2202===d;-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions,d)):this._setEndings(0===this.repetitions,!0,d));if(b>=c||0>b){var f=Math.floor(b/c);b-=c*f;e+=Math.abs(f);var g=this.repetitions-e;0>=g?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,b= +0a,this._setEndings(a,!a,d)):this._setEndings(!1,!1,d),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:f}))}if(d&&1===(e&1))return this.time=b,c-b}return this.time=b},_setEndings:function(a,b,c){var d=this._interpolantSettings;c?(d.endingStart=2401,d.endingEnd=2401):(d.endingStart=a?this.zeroSlopeAtStart?2401:2400:2402,d.endingEnd=b?this.zeroSlopeAtEnd?2401:2400:2402)},_scheduleFading:function(a, +b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions;f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}});re.prototype=Object.assign(Object.create(ha.prototype),{constructor:re,_bindAction:function(a,b){var c=a._localRoot||this._root,d=a._clip.tracks,e=d.length,f=a._propertyBindings;a=a._interpolants;var g=c.uuid,h=this._bindingsByRootAndName,k=h[g];void 0===k&&(k={},h[g]=k);for(h=0;h!==e;++h){var m= +d[h],p=m.name,n=k[p];if(void 0===n){n=f[h];if(void 0!==n){null===n._cacheIndex&&(++n.referenceCount,this._addInactiveBinding(n,g,p));continue}n=new qe(oa.create(c,p,b&&b._propertyBindings[h].binding.parsedPath),m.ValueTypeName,m.getValueSize());++n.referenceCount;this._addInactiveBinding(n,g,p)}f[h]=n;a[h].resultBuffer=n.buffer}},_activateAction:function(a){if(!this._isActiveAction(a)){if(null===a._cacheIndex){var b=(a._localRoot||this._root).uuid,c=a._clip.uuid,d=this._actionsByClip[c];this._bindAction(a, +d&&d.knownActions[0]);this._addInactiveAction(a,c,b)}b=a._propertyBindings;c=0;for(d=b.length;c!==d;++c){var e=b[c];0===e.useCount++&&(this._lendBinding(e),e.saveOriginalState())}this._lendAction(a)}},_deactivateAction:function(a){if(this._isActiveAction(a)){for(var b=a._propertyBindings,c=0,d=b.length;c!==d;++c){var e=b[c];0===--e.useCount&&(e.restoreOriginalState(),this._takeBackBinding(e))}this._takeBackAction(a)}},_initMemoryManager:function(){this._actions=[];this._nActiveActions=0;this._actionsByClip= +{};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;var a=this;this.stats={actions:{get total(){return a._actions.length},get inUse(){return a._nActiveActions}},bindings:{get total(){return a._bindings.length},get inUse(){return a._nActiveBindings}},controlInterpolants:{get total(){return a._controlInterpolants.length},get inUse(){return a._nActiveControlInterpolants}}}},_isActiveAction:function(a){a=a._cacheIndex; +return null!==a&&athis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<= +this.max.y},getParameter:function(a,b){void 0===b&&(console.warn("THREE.Box2: .getParameter() target is now required"),b=new y);return b.set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y?!1:!0},clampPoint:function(a,b){void 0===b&&(console.warn("THREE.Box2: .clampPoint() target is now required"),b=new y);return b.copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a= +new y;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}});id.prototype=Object.create(B.prototype);id.prototype.constructor=id;id.prototype.isImmediateRenderObject=!0;jd.prototype=Object.create(aa.prototype); +jd.prototype.constructor=jd;jd.prototype.update=function(){var a=new p,b=new p,c=new ta;return function(){var d=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var e=this.object.matrixWorld,f=this.geometry.attributes.position,g=this.object.geometry;if(g&&g.isGeometry)for(var h=g.vertices,k=g.faces,m=g=0,p=k.length;mMath.abs(b)&&(b=1E-8);this.scale.set(.5*this.size,.5*this.size,b);this.children[0].material.side=0>b?1:0;this.lookAt(this.plane.normal);B.prototype.updateMatrixWorld.call(this,a)};var Qd,ye;Jb.prototype=Object.create(B.prototype);Jb.prototype.constructor=Jb;Jb.prototype.setDirection= +function(){var a=new p,b;return function(c){.99999c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y),this.quaternion.setFromAxisAngle(a,b))}}();Jb.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()};Jb.prototype.setColor=function(a){this.line.material.color.copy(a); +this.cone.material.color.copy(a)};pd.prototype=Object.create(aa.prototype);pd.prototype.constructor=pd;I.create=function(a,b){console.log("THREE.Curve.create() has been deprecated");a.prototype=Object.create(I.prototype);a.prototype.constructor=a;a.prototype.getPoint=b;return a};Object.assign(ab.prototype,{createPointsGeometry:function(a){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getPoints(a);return this.createGeometry(a)}, +createSpacedPointsGeometry:function(a){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");a=this.getSpacedPoints(a);return this.createGeometry(a)},createGeometry:function(a){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var b=new J,c=0,d=a.length;c