From 6eb0a656450cc55358e7aa290efe453a29e228b6 Mon Sep 17 00:00:00 2001 From: Viktor Kovacs Date: Sat, 27 Mar 2021 08:27:33 +0100 Subject: [PATCH] Remove old code. --- .gitignore | 2 - LICENSE.md | 22 - README.md | 36 - embeddable/fullscreen.html | 55 - embeddable/include/online3dembedder.js | 77 - embeddable/multiple.html | 38 - embeddable/testfiles/_1.png | Bin 56249 -> 0 bytes embeddable/testfiles/cube.3ds | Bin 2008 -> 0 bytes embeddable/testfiles/cubeobj.mtl | 24 - embeddable/testfiles/cubeobj.obj | 63 - embeddable/testfiles/objects_ascii.stl | 4006 ----------------- embeddable/testfiles/objects_binary.stl | Bin 36484 -> 0 bytes embeddable/testfiles/texture with space.png | Bin 56249 -> 0 bytes embeddable/testfiles/texture.png | Bin 56249 -> 0 bytes embeddable/testfiles/textured cube.mtl | 10 - embeddable/testfiles/textured cube.obj | 48 - embeddable/testfiles/texturedcube.3ds | Bin 2070 -> 0 bytes embeddable/testfiles/texturedcube.mtl | 10 - embeddable/testfiles/texturedcube.obj | 48 - jsmodeler/jsmodeler.ext.three.js | 32 - jsmodeler/jsmodeler.js | 630 --- jsmodeler/three.min.js | 870 ---- tools/build.py | 72 - tools/eyeicon.svg | 112 - tools/jshintcode.py | 38 - tools/jshintconfig.json | 18 - website/.htaccess | 3 - website/extensions/example/example.js | 21 - website/extensions/example/example.png | Bin 253 -> 0 bytes website/images/back.png | Bin 279 -> 0 bytes website/images/bottom.png | Bin 289 -> 0 bytes website/images/closed.png | Bin 229 -> 0 bytes website/images/copytoclipboard.png | Bin 203 -> 0 bytes website/images/fitinwindow.png | Bin 301 -> 0 bytes website/images/fitinwindowsmall.png | Bin 242 -> 0 bytes website/images/fixup.png | Bin 292 -> 0 bytes website/images/fixupgray.png | Bin 292 -> 0 bytes website/images/front.png | Bin 294 -> 0 bytes website/images/githublogo.png | Bin 1714 -> 0 bytes website/images/hidden.png | Bin 589 -> 0 bytes website/images/highlightmesh.png | Bin 236 -> 0 bytes website/images/info.png | Bin 387 -> 0 bytes website/images/left.png | Bin 284 -> 0 bytes website/images/opened.png | Bin 228 -> 0 bytes website/images/openfile.png | Bin 233 -> 0 bytes website/images/right.png | Bin 285 -> 0 bytes website/images/top.png | Bin 284 -> 0 bytes website/images/visible.png | Bin 552 -> 0 bytes website/include/floatingdialog.css | 58 - website/include/floatingdialog.js | 121 - website/include/importerapp.css | 265 -- website/include/importerapp.js | 755 ---- website/include/importermenu.js | 234 - website/include/importerviewer.js | 212 - website/index.html | 56 - website/jquery/jquery-1.12.4.js | 5 - website/jquery/jquery-3.4.1.js | 2 - website/robots.txt | 3 - website/testfiles/_1.png | Bin 56249 -> 0 bytes website/testfiles/cube.3ds | Bin 2008 -> 0 bytes website/testfiles/cubeobj.mtl | 24 - website/testfiles/cubeobj.obj | 63 - website/testfiles/lotofcubes.mtl | 2 - website/testfiles/lotofcubes.obj | 4251 ------------------- website/testfiles/multimesh.mtl | 6 - website/testfiles/multimesh.obj | 103 - website/testfiles/multimesh2.mtl | 6 - website/testfiles/multimesh2.obj | 102 - website/testfiles/multimesh3.mtl | 6 - website/testfiles/multimesh3.obj | 105 - website/testfiles/objects_ascii.stl | 4006 ----------------- website/testfiles/objects_binary.stl | Bin 36484 -> 0 bytes website/testfiles/prism.off | 16 - website/testfiles/texture with space.png | Bin 56249 -> 0 bytes website/testfiles/texture.png | Bin 56249 -> 0 bytes website/testfiles/textured cube.mtl | 10 - website/testfiles/textured cube.obj | 48 - website/testfiles/texturedcube.3ds | Bin 2070 -> 0 bytes website/testfiles/texturedcube.mtl | 10 - website/testfiles/texturedcube.obj | 48 - 80 files changed, 16752 deletions(-) delete mode 100644 .gitignore delete mode 100644 LICENSE.md delete mode 100644 README.md delete mode 100644 embeddable/fullscreen.html delete mode 100644 embeddable/include/online3dembedder.js delete mode 100644 embeddable/multiple.html delete mode 100644 embeddable/testfiles/_1.png delete mode 100644 embeddable/testfiles/cube.3ds delete mode 100644 embeddable/testfiles/cubeobj.mtl delete mode 100644 embeddable/testfiles/cubeobj.obj delete mode 100644 embeddable/testfiles/objects_ascii.stl delete mode 100644 embeddable/testfiles/objects_binary.stl delete mode 100644 embeddable/testfiles/texture with space.png delete mode 100644 embeddable/testfiles/texture.png delete mode 100644 embeddable/testfiles/textured cube.mtl delete mode 100644 embeddable/testfiles/textured cube.obj delete mode 100644 embeddable/testfiles/texturedcube.3ds delete mode 100644 embeddable/testfiles/texturedcube.mtl delete mode 100644 embeddable/testfiles/texturedcube.obj delete mode 100644 jsmodeler/jsmodeler.ext.three.js delete mode 100644 jsmodeler/jsmodeler.js delete mode 100644 jsmodeler/three.min.js delete mode 100644 tools/build.py delete mode 100644 tools/eyeicon.svg delete mode 100644 tools/jshintcode.py delete mode 100644 tools/jshintconfig.json delete mode 100644 website/.htaccess delete mode 100644 website/extensions/example/example.js delete mode 100644 website/extensions/example/example.png delete mode 100644 website/images/back.png delete mode 100644 website/images/bottom.png delete mode 100644 website/images/closed.png delete mode 100644 website/images/copytoclipboard.png delete mode 100644 website/images/fitinwindow.png delete mode 100644 website/images/fitinwindowsmall.png delete mode 100644 website/images/fixup.png delete mode 100644 website/images/fixupgray.png delete mode 100644 website/images/front.png delete mode 100644 website/images/githublogo.png delete mode 100644 website/images/hidden.png delete mode 100644 website/images/highlightmesh.png delete mode 100644 website/images/info.png delete mode 100644 website/images/left.png delete mode 100644 website/images/opened.png delete mode 100644 website/images/openfile.png delete mode 100644 website/images/right.png delete mode 100644 website/images/top.png delete mode 100644 website/images/visible.png delete mode 100644 website/include/floatingdialog.css delete mode 100644 website/include/floatingdialog.js delete mode 100644 website/include/importerapp.css delete mode 100644 website/include/importerapp.js delete mode 100644 website/include/importermenu.js delete mode 100644 website/include/importerviewer.js delete mode 100644 website/index.html delete mode 100644 website/jquery/jquery-1.12.4.js delete mode 100644 website/jquery/jquery-3.4.1.js delete mode 100644 website/robots.txt delete mode 100644 website/testfiles/_1.png delete mode 100644 website/testfiles/cube.3ds delete mode 100644 website/testfiles/cubeobj.mtl delete mode 100644 website/testfiles/cubeobj.obj delete mode 100644 website/testfiles/lotofcubes.mtl delete mode 100644 website/testfiles/lotofcubes.obj delete mode 100644 website/testfiles/multimesh.mtl delete mode 100644 website/testfiles/multimesh.obj delete mode 100644 website/testfiles/multimesh2.mtl delete mode 100644 website/testfiles/multimesh2.obj delete mode 100644 website/testfiles/multimesh3.mtl delete mode 100644 website/testfiles/multimesh3.obj delete mode 100644 website/testfiles/objects_ascii.stl delete mode 100644 website/testfiles/objects_binary.stl delete mode 100644 website/testfiles/prism.off delete mode 100644 website/testfiles/texture with space.png delete mode 100644 website/testfiles/texture.png delete mode 100644 website/testfiles/textured cube.mtl delete mode 100644 website/testfiles/textured cube.obj delete mode 100644 website/testfiles/texturedcube.3ds delete mode 100644 website/testfiles/texturedcube.mtl delete mode 100644 website/testfiles/texturedcube.obj diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 5882b4c..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -build/* -website/extensions/ts/* diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 5cefdb3..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Viktor Kovacs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/README.md b/README.md deleted file mode 100644 index aa2d6e1..0000000 --- a/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Online 3D Viewer - -Online 3D Viewer is an engine to visualize 3D models online. - -Supported file formats: - - 3ds (with textures) - - obj, mtl (with textures) - - stl (ascii and binary) - - off (only ascii) - -## Website - -This is the source code for http://3dviewer.net. - -### Features - -- Open 3ds, obj, stl and off files by file open or drag and drop. -- Multiple file support. You can open or drag and drop the referenced files together. For example: - - Open the requested mtl file with an obj file. - - Open textures with 3ds file. -- Open files from location hash. - - Define file as a server url like [this](http://3dviewer.net/#https://cdn.rawgit.com/kovacsv/Online3DViewer/9e9ca71d/website/testfiles/cube.3ds). - - Define file relative to the root folder like [this](http://3dviewer.net/#testfiles/cube.3ds). - - Define multiple files like [this](http://3dviewer.net/#testfiles/multimesh.obj,testfiles/multimesh.mtl). -- Show basic information about the model and the meshes. -- Show/Hide a mesh by clicking the eye icon in the mesh list. -- Isolate a mesh by clicking the eye icon while pressing control key in the mesh list. -- Highlight a mesh by clicking it in the 3D model, or clicking the highlight icon in the mesh list. -- Fit the whole model or a selected mesh to the window. -- Copy mesh name to clipboard. - -## Embeddable - -This is the embeddable version of the viewer: -- In this case you should host the 3D models. -- See examples for more information. diff --git a/embeddable/fullscreen.html b/embeddable/fullscreen.html deleted file mode 100644 index 1c687c1..0000000 --- a/embeddable/fullscreen.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - Online 3D Viewer - - - - - - - - diff --git a/embeddable/include/online3dembedder.js b/embeddable/include/online3dembedder.js deleted file mode 100644 index d0db19b..0000000 --- a/embeddable/include/online3dembedder.js +++ /dev/null @@ -1,77 +0,0 @@ -LoadOnline3DModels = function () -{ - function Error (viewerElement, message) - { - var context = viewerElement.getContext ('2d'); - context.font = '12px Arial'; - context.fillText (message, 0, 12); - } - - function LoadViewer (viewerElement) - { - var urls = viewerElement.getAttribute ('sourcefiles'); - if (urls === undefined || urls === null) { - Error (viewerElement, 'Invalid source files.'); - return; - } - - var urlList = urls.split ('|'); - JSM.ConvertURLListToJsonData (urlList, { - onError : function () { - Error (viewerElement, 'Conversion failed.'); - return; - }, - onReady : function (fileNames, jsonData) { - var viewerSettings = { - cameraEyePosition : [6.0, -5.5, 4.0], - cameraCenterPosition : [0.0, 0.0, 0.0], - cameraUpVector : [0.0, 0.0, 1.0] - }; - - var viewer = new JSM.ThreeViewer (); - if (!viewer.Start (viewerElement, viewerSettings)) { - Error (viewerElement, 'Internal error.'); - return; - } - - var currentMeshIndex = 0; - var environment = { - onStart : function (/*taskCount, meshes*/) { - viewer.EnableDraw (false); - }, - onProgress : function (currentTask, meshes) { - while (currentMeshIndex < meshes.length) { - viewer.AddMesh (meshes[currentMeshIndex]); - currentMeshIndex = currentMeshIndex + 1; - } - }, - onFinish : function (meshes) { - if (meshes.length > 0) { - viewer.AdjustClippingPlanes (50.0); - viewer.FitInWindow (); - } - viewer.EnableDraw (true); - viewer.Draw (); - } - }; - - var textureLoaded = function () { - viewer.Draw (); - }; - JSM.ConvertJSONDataToThreeMeshes (jsonData, textureLoaded, environment); - } - }); - } - - var supported = JSM.IsWebGLEnabled () && JSM.IsFileApiEnabled (); - var viewers = document.getElementsByClassName ('3dviewer'); - var i, viewer; - for (i = 0; i < viewers.length; i++) { - viewer = viewers[i]; - if (supported) { - LoadViewer (viewer); - } else { - Error (viewer, 'No browser support.'); - } - } -}; diff --git a/embeddable/multiple.html b/embeddable/multiple.html deleted file mode 100644 index ac0248c..0000000 --- a/embeddable/multiple.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - Online 3D Viewer - - - - - - - - - - - - - - - - - - - - - diff --git a/embeddable/testfiles/_1.png b/embeddable/testfiles/_1.png deleted file mode 100644 index 29ce540d1d1d396a8702702102af79136db75d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56249 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 I 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 N^;6k~<)-b`e*xtv1JM8g diff --git a/embeddable/testfiles/cubeobj.mtl b/embeddable/testfiles/cubeobj.mtl deleted file mode 100644 index 2a211ac..0000000 --- a/embeddable/testfiles/cubeobj.mtl +++ /dev/null @@ -1,24 +0,0 @@ -# -## Alias OBJ Material File -# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited - -newmtl FrontColor -Ka 0.000000 0.000000 0.000000 -Kd 1.000000 1.000000 1.000000 -Ks 0.330000 0.330000 0.330000 - -newmtl M_0020_Red -Ka 0.000000 0.000000 0.000000 -Kd 1.000000 0.000000 0.000000 -Ks 0.330000 0.330000 0.330000 - -newmtl M_0103_Blue -Ka 0.000000 0.000000 0.000000 -Kd 0.000000 0.000000 1.000000 -Ks 0.330000 0.330000 0.330000 - -newmtl M_0076_Green -Ka 0.000000 0.000000 0.000000 -Kd 0.000000 0.501961 0.000000 -Ks 0.330000 0.330000 0.330000 - diff --git a/embeddable/testfiles/cubeobj.obj b/embeddable/testfiles/cubeobj.obj deleted file mode 100644 index 7846cad..0000000 --- a/embeddable/testfiles/cubeobj.obj +++ /dev/null @@ -1,63 +0,0 @@ -# Alias OBJ Model File -# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited -# File units = meters - -mtllib cubeobj.mtl - -g Mesh1 Model - -usemtl FrontColor -v -1.94623 0 0.600186 -vt 76.6233 -23.6294 -vn 0 -1 -0 -v -1.94623 0 -0.979814 -vt 76.6233 38.5753 -v 1.51377 0 -0.979814 -vt -59.5972 38.5753 -v 1.51377 0 0.600186 -vt -59.5972 -23.6294 -f 1/1/1 2/2/1 3/3/1 4/4/1 - -vt -38.5753 0 -vn -1 0 -0 -vt 23.6294 0 -v -1.94623 0.69 0.600186 -vt 23.6294 27.1654 -v -1.94623 0.69 -0.979814 -vt -38.5753 27.1654 -f 2/5/2 1/6/2 5/7/2 6/8/2 - -usemtl M_0076_Green -vt -76.6233 0 -vn 0 0 1 -vt 59.5972 0 -v 1.51377 0.69 0.600186 -vt 59.5972 27.1654 -vt -76.6233 27.1654 -f 1/9/3 4/10/3 7/11/3 5/12/3 - -usemtl M_0103_Blue -vt -23.6294 0 -vn 1 0 -0 -vt 38.5753 0 -v 1.51377 0.69 -0.979814 -vt 38.5753 27.1654 -vt -23.6294 27.1654 -f 4/13/4 3/14/4 8/15/4 7/16/4 - -usemtl FrontColor -vt -59.5972 0 -vn 0 0 -1 -vt 76.6233 0 -vt 76.6233 27.1654 -vt -59.5972 27.1654 -f 3/17/5 2/18/5 6/19/5 8/20/5 - -usemtl M_0020_Red -vt -76.6233 38.5753 -vn 0 1 -0 -vt -76.6233 -23.6294 -vt 59.5972 -23.6294 -vt 59.5972 38.5753 -f 6/21/6 5/22/6 7/23/6 8/24/6 - diff --git a/embeddable/testfiles/objects_ascii.stl b/embeddable/testfiles/objects_ascii.stl deleted file mode 100644 index 9441588..0000000 --- a/embeddable/testfiles/objects_ascii.stl +++ /dev/null @@ -1,4006 +0,0 @@ -solid Untitled-5427e5af -facet normal 0.0 0.0 -1.0 - outer loop - vertex 1.17 1.63 0.0 - vertex 0.0 0.0 0.0 - vertex 0.0 1.63 0.0 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 0.0 0.0 0.0 - vertex 1.17 1.63 0.0 - vertex 1.17 0.0 0.0 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 1.17 0.0 1.2 - vertex 0.0 1.63 1.2 - vertex 0.0 0.0 1.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 0.0 1.63 1.2 - vertex 1.17 0.0 1.2 - vertex 1.17 1.63 1.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 0.0 1.63 1.2 - vertex 0.0 0.0 0.0 - vertex 0.0 0.0 1.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 0.0 0.0 0.0 - vertex 0.0 1.63 1.2 - vertex 0.0 1.63 0.0 - endloop -endfacet -facet normal -0.0 1.0 0.0 - outer loop - vertex 0.0 1.63 1.2 - vertex 1.17 1.63 0.0 - vertex 0.0 1.63 0.0 - endloop -endfacet -facet normal -0.0 1.0 0.0 - outer loop - vertex 1.17 1.63 0.0 - vertex 0.0 1.63 1.2 - vertex 1.17 1.63 1.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 1.17 1.63 0.0 - vertex 1.17 0.0 1.2 - vertex 1.17 0.0 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 1.17 0.0 1.2 - vertex 1.17 1.63 0.0 - vertex 1.17 1.63 1.2 - endloop -endfacet -facet normal -0.0 -1.0 -0.0 - outer loop - vertex 1.17 0.0 1.2 - vertex 0.0 0.0 0.0 - vertex 1.17 0.0 0.0 - endloop -endfacet -facet normal -0.0 -1.0 -0.0 - outer loop - vertex 0.0 0.0 0.0 - vertex 1.17 0.0 1.2 - vertex 0.0 0.0 1.2 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 1.73120970770261 3.31831671830375 0.0 - vertex 1.69335580395681 1.58667960794511 0.0 - vertex 1.21240217992756 2.46342564388318 0.0 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 1.69335580395681 1.58667960794511 0.0 - vertex 1.73120970770261 3.31831671830375 0.0 - vertex 2.69311695576112 1.5648246464276 0.0 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 2.69311695576112 1.5648246464276 0.0 - vertex 1.73120970770261 3.31831671830375 0.0 - vertex 2.73097085950691 3.29646175678623 0.0 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 2.69311695576112 1.5648246464276 0.0 - vertex 2.73097085950691 3.29646175678623 0.0 - vertex 3.21192448353617 2.41971572084816 0.0 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 1.69335580395681 1.58667960794511 0.54 - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 1.21240217992756 2.46342564388318 0.54 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 1.69335580395681 1.58667960794511 0.54 - vertex 2.69311695576112 1.5648246464276 0.54 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 2.69311695576112 1.5648246464276 0.54 - vertex 2.73097085950691 3.29646175678623 0.54 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 2.73097085950691 3.29646175678623 0.54 - vertex 2.69311695576112 1.5648246464276 0.54 - vertex 3.21192448353617 2.41971572084816 0.54 - endloop -endfacet -facet normal -0.854891074420561 0.518807527775049 0.0 - outer loop - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 1.21240217992756 2.46342564388318 0.0 - vertex 1.21240217992756 2.46342564388318 0.54 - endloop -endfacet -facet normal -0.854891074420561 0.518807527775049 0.0 - outer loop - vertex 1.21240217992756 2.46342564388318 0.0 - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 1.73120970770261 3.31831671830375 0.0 - endloop -endfacet -facet normal 0.0218549615175129 0.999761151804304 0.0 - outer loop - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 2.73097085950691 3.29646175678623 0.0 - vertex 1.73120970770261 3.31831671830375 0.0 - endloop -endfacet -facet normal 0.0218549615175129 0.999761151804304 0.0 - outer loop - vertex 2.73097085950691 3.29646175678623 0.0 - vertex 1.73120970770261 3.31831671830375 0.54 - vertex 2.73097085950691 3.29646175678623 0.54 - endloop -endfacet -facet normal 0.876746035938074 0.480953624029254 0.0 - outer loop - vertex 2.73097085950691 3.29646175678623 0.0 - vertex 3.21192448353617 2.41971572084816 0.54 - vertex 3.21192448353617 2.41971572084816 0.0 - endloop -endfacet -facet normal 0.876746035938074 0.480953624029254 0.0 - outer loop - vertex 3.21192448353617 2.41971572084816 0.54 - vertex 2.73097085950691 3.29646175678623 0.0 - vertex 2.73097085950691 3.29646175678623 0.54 - endloop -endfacet -facet normal 0.854891074420561 -0.51880752777505 0.0 - outer loop - vertex 3.21192448353617 2.41971572084816 0.0 - vertex 2.69311695576112 1.5648246464276 0.54 - vertex 2.69311695576112 1.5648246464276 0.0 - endloop -endfacet -facet normal 0.854891074420561 -0.51880752777505 0.0 - outer loop - vertex 2.69311695576112 1.5648246464276 0.54 - vertex 3.21192448353617 2.41971572084816 0.0 - vertex 3.21192448353617 2.41971572084816 0.54 - endloop -endfacet -facet normal -0.0218549615175129 -0.999761151804304 -0.0 - outer loop - vertex 2.69311695576112 1.5648246464276 0.54 - vertex 1.69335580395681 1.58667960794511 0.0 - vertex 2.69311695576112 1.5648246464276 0.0 - endloop -endfacet -facet normal -0.0218549615175129 -0.999761151804304 -0.0 - outer loop - vertex 1.69335580395681 1.58667960794511 0.0 - vertex 2.69311695576112 1.5648246464276 0.54 - vertex 1.69335580395681 1.58667960794511 0.54 - endloop -endfacet -facet normal -0.876746035938074 -0.480953624029255 -0.0 - outer loop - vertex 1.21240217992756 2.46342564388318 0.54 - vertex 1.69335580395681 1.58667960794511 0.0 - vertex 1.69335580395681 1.58667960794511 0.54 - endloop -endfacet -facet normal -0.876746035938074 -0.480953624029255 -0.0 - outer loop - vertex 1.69335580395681 1.58667960794511 0.0 - vertex 1.21240217992756 2.46342564388318 0.54 - vertex 1.21240217992756 2.46342564388318 0.0 - endloop -endfacet -facet normal 7.93222929432366e-016 4.89694648390394e-016 -1.0 - outer loop - vertex 2.97826240317018 -0.636443757595701 1.44368526932165e-015 - vertex 1.4493076566905 -1.10792799192095 0.0 - vertex 2.10637516234703 0.776146996759498 1.44382245079469e-015 - endloop -endfacet -facet normal -7.93222929432366e-016 -4.89694648390394e-016 1.0 - outer loop - vertex 2.97826240317018 -0.636443757595701 0.880000000000001 - vertex 2.10637516234703 0.776146996759498 0.880000000000001 - vertex 1.4493076566905 -1.10792799192095 0.88 - endloop -endfacet -facet normal -0.944226355661639 0.329297113977544 -5.87726961439968e-016 - outer loop - vertex 2.10637516234703 0.776146996759498 0.880000000000001 - vertex 1.4493076566905 -1.10792799192095 0.0 - vertex 1.4493076566905 -1.10792799192095 0.88 - endloop -endfacet -facet normal -0.944226355661639 0.329297113977544 -5.87726961439968e-016 - outer loop - vertex 1.4493076566905 -1.10792799192095 0.0 - vertex 2.10637516234703 0.776146996759498 0.880000000000001 - vertex 2.10637516234703 0.776146996759498 1.44382245079469e-015 - endloop -endfacet -facet normal 0.850958285756144 0.525233277604309 9.32203549451609e-016 - outer loop - vertex 2.10637516234703 0.776146996759498 1.44382245079469e-015 - vertex 2.97826240317018 -0.636443757595701 0.880000000000001 - vertex 2.97826240317018 -0.636443757595701 1.44368526932165e-015 - endloop -endfacet -facet normal 0.850958285756144 0.525233277604309 9.32203549451609e-016 - outer loop - vertex 2.97826240317018 -0.636443757595701 0.880000000000001 - vertex 2.10637516234703 0.776146996759498 1.44382245079469e-015 - vertex 2.10637516234703 0.776146996759498 0.880000000000001 - endloop -endfacet -facet normal 0.294677646453279 -0.955596716549799 -2.34205532155964e-016 - outer loop - vertex 2.97826240317018 -0.636443757595701 1.44368526932165e-015 - vertex 1.4493076566905 -1.10792799192095 0.88 - vertex 1.4493076566905 -1.10792799192095 0.0 - endloop -endfacet -facet normal 0.294677646453279 -0.955596716549799 -2.34205532155964e-016 - outer loop - vertex 1.4493076566905 -1.10792799192095 0.88 - vertex 2.97826240317018 -0.636443757595701 1.44368526932165e-015 - vertex 2.97826240317018 -0.636443757595701 0.880000000000001 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.0 - vertex 3.16916924809083 0.370587344831611 0.0 - vertex 3.0733838074778 0.370587344831611 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.16916924809083 0.370587344831611 0.0 - vertex 3.3138052634165 1.0837099501956 0.0 - vertex 3.23382442050462 0.569821061306707 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.23382442050462 0.569821061306707 0.0 - vertex 3.3138052634165 1.0837099501956 0.0 - vertex 3.26016541667321 0.650759758624714 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.26016541667321 0.650759758624714 0.0 - vertex 3.3138052634165 1.0837099501956 0.0 - vertex 3.36983974617512 0.986966655176438 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.36983974617512 0.986966655176438 0.0 - vertex 3.3138052634165 1.0837099501956 0.0 - vertex 3.43066350096439 1.0837099501956 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.36983974617512 0.986966655176438 0.0 - vertex 3.43066350096439 1.0837099501956 0.0 - vertex 3.4799930028801 0.650759758624714 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.4799930028801 0.650759758624714 0.0 - vertex 3.43066350096439 1.0837099501956 0.0 - vertex 3.67108495690309 0.370587344831611 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.4799930028801 0.650759758624714 0.0 - vertex 3.67108495690309 0.370587344831611 0.0 - vertex 3.50633399904868 0.569821061306707 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.50633399904868 0.569821061306707 0.0 - vertex 3.67108495690309 0.370587344831611 0.0 - vertex 3.57098917146248 0.370587344831611 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.26016541667321 0.650759758624714 0.0 - vertex 3.50633399904868 0.569821061306707 0.0 - vertex 3.23382442050462 0.569821061306707 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.50633399904868 0.569821061306707 0.0 - vertex 3.26016541667321 0.650759758624714 0.0 - vertex 3.4799930028801 0.650759758624714 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.81895373084945 0.907105544065327 0.0 - vertex 3.79273246648164 0.767139068969542 0.0 - vertex 3.78491996648164 0.892887392724331 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.79273246648164 0.767139068969542 0.0 - vertex 3.81895373084945 0.907105544065327 0.0 - vertex 3.80039530173068 0.800185045981036 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.80039530173068 0.800185045981036 0.0 - vertex 3.81895373084945 0.907105544065327 0.0 - vertex 3.8233838074778 0.823652478931228 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.8233838074778 0.823652478931228 0.0 - vertex 3.81895373084945 0.907105544065327 0.0 - vertex 3.857477437746 0.915636434869925 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.8233838074778 0.823652478931228 0.0 - vertex 3.857477437746 0.915636434869925 0.0 - vertex 3.85750737069619 0.837661099620883 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.85750737069619 0.837661099620883 0.0 - vertex 3.857477437746 0.915636434869925 0.0 - vertex 3.90049108717129 0.918480065138124 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.85750737069619 0.837661099620883 0.0 - vertex 3.90049108717129 0.918480065138124 0.0 - vertex 3.89857537835903 0.842330639850768 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.89857537835903 0.842330639850768 0.0 - vertex 3.90049108717129 0.918480065138124 0.0 - vertex 3.94149922893374 0.838379490425481 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.94149922893374 0.838379490425481 0.0 - vertex 3.90049108717129 0.918480065138124 0.0 - vertex 3.99005047414447 0.907464739467626 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.94149922893374 0.838379490425481 0.0 - vertex 3.99005047414447 0.907464739467626 0.0 - vertex 3.98406388410616 0.826526042149619 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.98406388410616 0.826526042149619 0.0 - vertex 3.99005047414447 0.907464739467626 0.0 - vertex 4.02447336686478 0.807847881230078 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.02447336686478 0.807847881230078 0.0 - vertex 3.99005047414447 0.907464739467626 0.0 - vertex 4.06572097222876 0.879686961689848 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.02447336686478 0.807847881230078 0.0 - vertex 4.06572097222876 0.879686961689848 0.0 - vertex 4.06093170019811 0.783422593873756 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.06093170019811 0.783422593873756 0.0 - vertex 4.06572097222876 0.879686961689848 0.0 - vertex 4.06572097222876 0.783422593873756 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.70419079981497 0.789648647513603 0.0 - vertex 3.70772288793757 0.706375180080653 0.0 - vertex 3.70077844349313 0.755165888892914 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.70772288793757 0.706375180080653 0.0 - vertex 3.70419079981497 0.789648647513603 0.0 - vertex 3.71442786878049 0.820778915712837 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.70772288793757 0.706375180080653 0.0 - vertex 3.71442786878049 0.820778915712837 0.0 - vertex 3.72855622127091 0.665367038318201 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.72855622127091 0.665367038318201 0.0 - vertex 3.71442786878049 0.820778915712837 0.0 - vertex 3.73148965038968 0.848556693490615 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.72855622127091 0.665367038318201 0.0 - vertex 3.73148965038968 0.848556693490615 0.0 - vertex 3.76471522510232 0.633099318011688 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.73148965038968 0.848556693490615 0.0 - vertex 3.75537614464255 0.872981980846936 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.75537614464255 0.872981980846936 0.0 - vertex 3.78491996648164 0.892887392724331 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.78491996648164 0.892887392724331 0.0 - vertex 3.79273246648164 0.767139068969542 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.79273246648164 0.767139068969542 0.0 - vertex 3.79728227491075 0.737864643682186 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.79728227491075 0.737864643682186 0.0 - vertex 3.81763668104102 0.610529873567243 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.81763668104102 0.610529873567243 0.0 - vertex 3.79728227491075 0.737864643682186 0.0 - vertex 3.81093170019811 0.717091176249235 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.81763668104102 0.610529873567243 0.0 - vertex 3.81093170019811 0.717091176249235 0.0 - vertex 3.83463859674983 0.702064835253067 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.81763668104102 0.610529873567243 0.0 - vertex 3.83463859674983 0.702064835253067 0.0 - vertex 3.86888189176899 0.598077766287549 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.86888189176899 0.598077766287549 0.0 - vertex 3.83463859674983 0.702064835253067 0.0 - vertex 3.86936081897206 0.690031789276055 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.86888189176899 0.598077766287549 0.0 - vertex 3.86936081897206 0.690031789276055 0.0 - vertex 3.91390104885711 0.588020295023182 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.91390104885711 0.588020295023182 0.0 - vertex 3.86936081897206 0.690031789276055 0.0 - vertex 3.91414051245865 0.679734854410155 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.91390104885711 0.588020295023182 0.0 - vertex 3.91414051245865 0.679734854410155 0.0 - vertex 3.95167643199888 0.575687919544254 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.95167643199888 0.575687919544254 0.0 - vertex 3.91414051245865 0.679734854410155 0.0 - vertex 3.96610411399121 0.668001137935059 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.95167643199888 0.575687919544254 0.0 - vertex 3.96610411399121 0.668001137935059 0.0 - vertex 3.97592212165405 0.560721444448469 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.97592212165405 0.560721444448469 0.0 - vertex 3.96610411399121 0.668001137935059 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.97592212165405 0.560721444448469 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 3.98903275383796 0.540486770118967 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.98903275383796 0.540486770118967 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 3.99340296456593 0.512349796938891 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.99340296456593 0.512349796938891 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 4.00112566571535 0.38543408812663 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.00112566571535 0.38543408812663 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 4.03171714081114 0.406506885061496 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.03171714081114 0.406506885061496 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 4.05542403736286 0.61867163601935 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.03171714081114 0.406506885061496 0.0 - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.05488524425941 0.430752574716668 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.05488524425941 0.430752574716668 0.0 - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.07170756226708 0.459428341000193 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.07170756226708 0.459428341000193 0.0 - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.07787375000654 0.577962823758814 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.07170756226708 0.459428341000193 0.0 - vertex 4.07787375000654 0.577962823758814 0.0 - vertex 4.08194463123259 0.491217134103642 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.08194463123259 0.491217134103642 0.0 - vertex 4.07787375000654 0.577962823758814 0.0 - vertex 4.08535698755443 0.524801904218584 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.70317307950846 0.503729107283718 0.0 - vertex 3.6983838074778 0.402675467436975 0.0 - vertex 3.6983838074778 0.503729107283718 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.6983838074778 0.402675467436975 0.0 - vertex 3.70317307950846 0.503729107283718 0.0 - vertex 3.77573055077282 0.372024126440806 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.0 - vertex 3.70317307950846 0.503729107283718 0.0 - vertex 3.73023246648164 0.483614164754982 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.0 - vertex 3.73023246648164 0.483614164754982 0.0 - vertex 3.77165966954677 0.460625659007856 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.0 - vertex 3.77165966954677 0.460625659007856 0.0 - vertex 3.82218648947014 0.441947498088316 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.0 - vertex 3.82218648947014 0.441947498088316 0.0 - vertex 3.82416206418278 0.361248264371841 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.82416206418278 0.361248264371841 0.0 - vertex 3.82218648947014 0.441947498088316 0.0 - vertex 3.87941829023642 0.433805735636209 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.82416206418278 0.361248264371841 0.0 - vertex 3.87941829023642 0.433805735636209 0.0 - vertex 3.87606579981497 0.357656310348852 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.87606579981497 0.357656310348852 0.0 - vertex 3.87941829023642 0.433805735636209 0.0 - vertex 3.92605382663489 0.360769337168776 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.92605382663489 0.360769337168776 0.0 - vertex 3.87941829023642 0.433805735636209 0.0 - vertex 3.92539530173068 0.438834471268392 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.92605382663489 0.360769337168776 0.0 - vertex 3.92539530173068 0.438834471268392 0.0 - vertex 3.96179376916363 0.451526042149618 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.92605382663489 0.360769337168776 0.0 - vertex 3.96179376916363 0.451526042149618 0.0 - vertex 3.96682250479581 0.370108417628546 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.96682250479581 0.370108417628546 0.0 - vertex 3.96179376916363 0.451526042149618 0.0 - vertex 3.98597959291842 0.47499347509981 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 3.96682250479581 0.370108417628546 0.0 - vertex 3.98597959291842 0.47499347509981 0.0 - vertex 4.00112566571535 0.38543408812663 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.00112566571535 0.38543408812663 0.0 - vertex 3.98597959291842 0.47499347509981 0.0 - vertex 3.99340296456593 0.512349796938891 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.13702125958508 0.702962823758814 0.0 - vertex 4.13684166188393 0.571078245214753 0.0 - vertex 4.13229185345481 0.63734979693889 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.13684166188393 0.571078245214753 0.0 - vertex 4.13702125958508 0.702962823758814 0.0 - vertex 4.15049108717129 0.514026042149619 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.15049108717129 0.514026042149619 0.0 - vertex 4.13702125958508 0.702962823758814 0.0 - vertex 4.15120947797589 0.758997306517435 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.15049108717129 0.514026042149619 0.0 - vertex 4.15120947797589 0.758997306517435 0.0 - vertex 4.17240200671152 0.466073455942722 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.17240200671152 0.466073455942722 0.0 - vertex 4.15120947797589 0.758997306517435 0.0 - vertex 4.17329999521727 0.80617163601935 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.17240200671152 0.466073455942722 0.0 - vertex 4.17329999521727 0.80617163601935 0.0 - vertex 4.20173629789926 0.427100754793297 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.17329999521727 0.80617163601935 0.0 - vertex 4.20173629789926 0.845204203069159 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.20173629789926 0.845204203069159 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.22568265805252 0.63734979693889 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.22568265805252 0.63734979693889 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.22833172414447 0.68298257950594 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.22833172414447 0.68298257950594 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.23627892242033 0.723137632187933 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.23627892242033 0.723137632187933 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.2495242528801 0.757814954984868 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.2495242528801 0.757814954984868 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.28051982280347 0.899083513413986 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.2495242528801 0.757814954984868 0.0 - vertex 4.28051982280347 0.899083513413986 0.0 - vertex 4.26806771552378 0.787014547896745 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.26806771552378 0.787014547896745 0.0 - vertex 4.28051982280347 0.899083513413986 0.0 - vertex 4.29098138889543 0.810167684869925 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.29098138889543 0.810167684869925 0.0 - vertex 4.28051982280347 0.899083513413986 0.0 - vertex 4.3294302634165 0.913271731804791 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.29098138889543 0.810167684869925 0.0 - vertex 4.3294302634165 0.913271731804791 0.0 - vertex 4.31733735153911 0.826705639850768 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.31733735153911 0.826705639850768 0.0 - vertex 4.3294302634165 0.913271731804791 0.0 - vertex 4.34713560345482 0.836628412839274 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.34713560345482 0.836628412839274 0.0 - vertex 4.3294302634165 0.913271731804791 0.0 - vertex 4.38181292625175 0.918001137935059 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.34713560345482 0.836628412839274 0.0 - vertex 4.38181292625175 0.918001137935059 0.0 - vertex 4.38037614464255 0.839936003835442 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.38037614464255 0.839936003835442 0.0 - vertex 4.38181292625175 0.918001137935059 0.0 - vertex 4.4292267193552 0.832752095789465 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.4292267193552 0.832752095789465 0.0 - vertex 4.38181292625175 0.918001137935059 0.0 - vertex 4.42509597222876 0.914888111115136 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.4292267193552 0.832752095789465 0.0 - vertex 4.42509597222876 0.914888111115136 0.0 - vertex 4.46682250479581 0.905549030655366 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.4292267193552 0.832752095789465 0.0 - vertex 4.46682250479581 0.905549030655366 0.0 - vertex 4.47328802203719 0.815989643682186 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.47328802203719 0.815989643682186 0.0 - vertex 4.46682250479581 0.905549030655366 0.0 - vertex 4.53985890326324 0.876813398471458 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.47328802203719 0.815989643682186 0.0 - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.50992595307167 0.794437919544255 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.50992595307167 0.794437919544255 0.0 - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.53459070402953 0.775759758624714 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.53459070402953 0.775759758624714 0.0 - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.53985890326324 0.775759758624714 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.22568265805252 0.63734979693889 0.0 - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.20173629789926 0.427100754793297 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.22568265805252 0.63734979693889 0.0 - vertex 4.2282419252939 0.592555136977205 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.2282419252939 0.592555136977205 0.0 - vertex 4.23591972701803 0.552998743299044 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.23591972701803 0.552998743299044 0.0 - vertex 4.24871606322493 0.518680615904408 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.24871606322493 0.518680615904408 0.0 - vertex 4.28075928640501 0.375616080463795 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.28075928640501 0.375616080463795 0.0 - vertex 4.24871606322493 0.518680615904408 0.0 - vertex 4.26663093391458 0.489600754793297 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.28075928640501 0.375616080463795 0.0 - vertex 4.26663093391458 0.489600754793297 0.0 - vertex 4.28909561303336 0.466447617820117 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.28075928640501 0.375616080463795 0.0 - vertex 4.28909561303336 0.466447617820117 0.0 - vertex 4.32901120211382 0.362864643682186 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.32901120211382 0.362864643682186 0.0 - vertex 4.28909561303336 0.466447617820117 0.0 - vertex 4.31554137452761 0.449909662839274 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.32901120211382 0.362864643682186 0.0 - vertex 4.31554137452761 0.449909662839274 0.0 - vertex 4.34596821839734 0.439986889850768 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.32901120211382 0.362864643682186 0.0 - vertex 4.34596821839734 0.439986889850768 0.0 - vertex 4.38181292625175 0.358614164754983 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.38181292625175 0.358614164754983 0.0 - vertex 4.34596821839734 0.439986889850768 0.0 - vertex 4.38037614464255 0.436679298854599 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.38181292625175 0.358614164754983 0.0 - vertex 4.38037614464255 0.436679298854599 0.0 - vertex 4.42335986111765 0.441229107283718 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.38181292625175 0.358614164754983 0.0 - vertex 4.42335986111765 0.441229107283718 0.0 - vertex 4.42874779215213 0.362206118777971 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.42874779215213 0.362206118777971 0.0 - vertex 4.42335986111765 0.441229107283718 0.0 - vertex 4.46418840517895 0.454878532571074 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.42874779215213 0.362206118777971 0.0 - vertex 4.46418840517895 0.454878532571074 0.0 - vertex 4.46993553161574 0.372503053643871 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.46993553161574 0.372503053643871 0.0 - vertex 4.46418840517895 0.454878532571074 0.0 - vertex 4.5016644588188 0.475711865904408 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.46993553161574 0.372503053643871 0.0 - vertex 4.5016644588188 0.475711865904408 0.0 - vertex 4.50633399904869 0.385673551728163 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.50633399904869 0.385673551728163 0.0 - vertex 4.5016644588188 0.475711865904408 0.0 - vertex 4.53459070402953 0.501813398471458 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.50633399904869 0.385673551728163 0.0 - vertex 4.53459070402953 0.501813398471458 0.0 - vertex 4.53985890326324 0.400759758624714 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.53985890326324 0.400759758624714 0.0 - vertex 4.53459070402953 0.501813398471458 0.0 - vertex 4.53985890326324 0.501813398471458 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.71370947797589 0.905549030655366 0.0 - vertex 4.62367116379964 0.370587344831611 0.0 - vertex 4.62367116379964 0.905549030655366 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.62367116379964 0.370587344831611 0.0 - vertex 4.71370947797589 0.905549030655366 0.0 - vertex 4.71370947797589 0.370587344831611 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.71993553161574 1.08849922222625 0.0 - vertex 4.6174451101598 0.995108417628546 0.0 - vertex 4.6174451101598 1.08849922222625 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.6174451101598 0.995108417628546 0.0 - vertex 4.71993553161574 1.08849922222625 0.0 - vertex 4.71993553161574 0.995108417628546 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.93784740901037 0.905549030655366 0.0 - vertex 4.84780909483413 0.370587344831611 0.0 - vertex 4.84780909483413 0.905549030655366 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.84780909483413 0.370587344831611 0.0 - vertex 4.93784740901037 0.905549030655366 0.0 - vertex 4.93784740901037 0.370587344831611 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.94407346265022 1.08849922222625 0.0 - vertex 4.84158304119428 0.995108417628546 0.0 - vertex 4.84158304119428 1.08849922222625 0.0 - endloop -endfacet -facet normal -0.0 -0.0 -1.0 - outer loop - vertex 4.84158304119428 0.995108417628546 0.0 - vertex 4.94407346265022 1.08849922222625 0.0 - vertex 4.94407346265022 0.995108417628546 0.0 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.23382442050462 0.569821061306707 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.4799930028801 0.650759758624714 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.16916924809083 0.370587344831611 0.2 - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.0733838074778 0.370587344831611 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.16916924809083 0.370587344831611 0.2 - vertex 3.23382442050462 0.569821061306707 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.23382442050462 0.569821061306707 0.2 - vertex 3.26016541667321 0.650759758624714 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.36983974617512 0.986966655176438 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.36983974617512 0.986966655176438 0.2 - vertex 3.43066350096439 1.0837099501956 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.43066350096439 1.0837099501956 0.2 - vertex 3.36983974617512 0.986966655176438 0.2 - vertex 3.4799930028801 0.650759758624714 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.43066350096439 1.0837099501956 0.2 - vertex 3.4799930028801 0.650759758624714 0.2 - vertex 3.67108495690309 0.370587344831611 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.67108495690309 0.370587344831611 0.2 - vertex 3.4799930028801 0.650759758624714 0.2 - vertex 3.50633399904868 0.569821061306707 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.67108495690309 0.370587344831611 0.2 - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.57098917146248 0.370587344831611 0.2 - endloop -endfacet -facet normal -0.947595870336326 0.319471542584846 0.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.0733838074778 0.370587344831611 0.0 - vertex 3.0733838074778 0.370587344831611 0.2 - endloop -endfacet -facet normal -0.947595870336326 0.319471542584846 0.0 - outer loop - vertex 3.0733838074778 0.370587344831611 0.0 - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.3138052634165 1.0837099501956 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.43066350096439 1.0837099501956 0.0 - vertex 3.3138052634165 1.0837099501956 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 3.43066350096439 1.0837099501956 0.0 - vertex 3.3138052634165 1.0837099501956 0.2 - vertex 3.43066350096439 1.0837099501956 0.2 - endloop -endfacet -facet normal 0.947595870336326 0.319471542584846 0.0 - outer loop - vertex 3.43066350096439 1.0837099501956 0.0 - vertex 3.67108495690309 0.370587344831611 0.2 - vertex 3.67108495690309 0.370587344831611 0.0 - endloop -endfacet -facet normal 0.947595870336326 0.319471542584846 0.0 - outer loop - vertex 3.67108495690309 0.370587344831611 0.2 - vertex 3.43066350096439 1.0837099501956 0.0 - vertex 3.43066350096439 1.0837099501956 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 3.67108495690309 0.370587344831611 0.2 - vertex 3.57098917146248 0.370587344831611 0.0 - vertex 3.67108495690309 0.370587344831611 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 3.57098917146248 0.370587344831611 0.0 - vertex 3.67108495690309 0.370587344831611 0.2 - vertex 3.57098917146248 0.370587344831611 0.2 - endloop -endfacet -facet normal -0.951168400556076 -0.308672437680457 0.0 - outer loop - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.57098917146248 0.370587344831611 0.0 - vertex 3.57098917146248 0.370587344831611 0.2 - endloop -endfacet -facet normal -0.951168400556076 -0.308672437680457 0.0 - outer loop - vertex 3.57098917146248 0.370587344831611 0.0 - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.50633399904868 0.569821061306707 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.23382442050462 0.569821061306707 0.0 - vertex 3.50633399904868 0.569821061306707 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 3.23382442050462 0.569821061306707 0.0 - vertex 3.50633399904868 0.569821061306707 0.2 - vertex 3.23382442050462 0.569821061306707 0.2 - endloop -endfacet -facet normal 0.951168400556076 -0.308672437680457 0.0 - outer loop - vertex 3.23382442050462 0.569821061306707 0.0 - vertex 3.16916924809083 0.370587344831611 0.2 - vertex 3.16916924809083 0.370587344831611 0.0 - endloop -endfacet -facet normal 0.951168400556076 -0.308672437680457 0.0 - outer loop - vertex 3.16916924809083 0.370587344831611 0.2 - vertex 3.23382442050462 0.569821061306707 0.0 - vertex 3.23382442050462 0.569821061306707 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 3.16916924809083 0.370587344831611 0.2 - vertex 3.0733838074778 0.370587344831611 0.0 - vertex 3.16916924809083 0.370587344831611 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 3.0733838074778 0.370587344831611 0.0 - vertex 3.16916924809083 0.370587344831611 0.2 - vertex 3.0733838074778 0.370587344831611 0.2 - endloop -endfacet -facet normal -0.950295217341758 -0.311350284884052 0.0 - outer loop - vertex 3.36983974617512 0.986966655176438 0.2 - vertex 3.4799930028801 0.650759758624714 0.0 - vertex 3.4799930028801 0.650759758624714 0.2 - endloop -endfacet -facet normal -0.950295217341758 -0.311350284884052 0.0 - outer loop - vertex 3.4799930028801 0.650759758624714 0.0 - vertex 3.36983974617512 0.986966655176438 0.2 - vertex 3.36983974617512 0.986966655176438 0.0 - endloop -endfacet -facet normal 0.950695123572524 -0.310127041735196 0.0 - outer loop - vertex 3.36983974617512 0.986966655176438 0.0 - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.26016541667321 0.650759758624714 0.0 - endloop -endfacet -facet normal 0.950695123572524 -0.310127041735196 0.0 - outer loop - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.36983974617512 0.986966655176438 0.0 - vertex 3.36983974617512 0.986966655176438 0.2 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.4799930028801 0.650759758624714 0.0 - vertex 3.26016541667321 0.650759758624714 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 3.4799930028801 0.650759758624714 0.0 - vertex 3.26016541667321 0.650759758624714 0.2 - vertex 3.4799930028801 0.650759758624714 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.6983838074778 0.503729107283718 0.2 - vertex 3.6983838074778 0.402675467436975 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.6983838074778 0.503729107283718 0.2 - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.70317307950846 0.503729107283718 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.70317307950846 0.503729107283718 0.2 - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.73023246648164 0.483614164754982 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.73023246648164 0.483614164754982 0.2 - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.77165966954677 0.460625659007856 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.77165966954677 0.460625659007856 0.2 - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.82218648947014 0.441947498088316 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.82218648947014 0.441947498088316 0.2 - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.82416206418278 0.361248264371841 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.82218648947014 0.441947498088316 0.2 - vertex 3.82416206418278 0.361248264371841 0.2 - vertex 3.87941829023642 0.433805735636209 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.87941829023642 0.433805735636209 0.2 - vertex 3.82416206418278 0.361248264371841 0.2 - vertex 3.87606579981497 0.357656310348852 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.87941829023642 0.433805735636209 0.2 - vertex 3.87606579981497 0.357656310348852 0.2 - vertex 3.92605382663489 0.360769337168776 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.87941829023642 0.433805735636209 0.2 - vertex 3.92605382663489 0.360769337168776 0.2 - vertex 3.92539530173068 0.438834471268392 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.92539530173068 0.438834471268392 0.2 - vertex 3.92605382663489 0.360769337168776 0.2 - vertex 3.96179376916363 0.451526042149618 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.96179376916363 0.451526042149618 0.2 - vertex 3.92605382663489 0.360769337168776 0.2 - vertex 3.96682250479581 0.370108417628546 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.96179376916363 0.451526042149618 0.2 - vertex 3.96682250479581 0.370108417628546 0.2 - vertex 3.98597959291842 0.47499347509981 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.98597959291842 0.47499347509981 0.2 - vertex 3.96682250479581 0.370108417628546 0.2 - vertex 4.00112566571535 0.38543408812663 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.98597959291842 0.47499347509981 0.2 - vertex 4.00112566571535 0.38543408812663 0.2 - vertex 3.99340296456593 0.512349796938891 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.70772288793757 0.706375180080653 0.2 - vertex 3.70419079981497 0.789648647513603 0.2 - vertex 3.70077844349313 0.755165888892914 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.70419079981497 0.789648647513603 0.2 - vertex 3.70772288793757 0.706375180080653 0.2 - vertex 3.71442786878049 0.820778915712837 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.71442786878049 0.820778915712837 0.2 - vertex 3.70772288793757 0.706375180080653 0.2 - vertex 3.72855622127091 0.665367038318201 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.71442786878049 0.820778915712837 0.2 - vertex 3.72855622127091 0.665367038318201 0.2 - vertex 3.73148965038968 0.848556693490615 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.73148965038968 0.848556693490615 0.2 - vertex 3.72855622127091 0.665367038318201 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.73148965038968 0.848556693490615 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.75537614464255 0.872981980846936 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.75537614464255 0.872981980846936 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.78491996648164 0.892887392724331 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.78491996648164 0.892887392724331 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.79273246648164 0.767139068969542 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.79273246648164 0.767139068969542 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.79728227491075 0.737864643682186 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.79728227491075 0.737864643682186 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.81763668104102 0.610529873567243 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.79728227491075 0.737864643682186 0.2 - vertex 3.81763668104102 0.610529873567243 0.2 - vertex 3.81093170019811 0.717091176249235 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.81093170019811 0.717091176249235 0.2 - vertex 3.81763668104102 0.610529873567243 0.2 - vertex 3.83463859674983 0.702064835253067 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.83463859674983 0.702064835253067 0.2 - vertex 3.81763668104102 0.610529873567243 0.2 - vertex 3.86888189176899 0.598077766287549 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.83463859674983 0.702064835253067 0.2 - vertex 3.86888189176899 0.598077766287549 0.2 - vertex 3.86936081897206 0.690031789276055 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.86936081897206 0.690031789276055 0.2 - vertex 3.86888189176899 0.598077766287549 0.2 - vertex 3.91390104885711 0.588020295023182 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.86936081897206 0.690031789276055 0.2 - vertex 3.91390104885711 0.588020295023182 0.2 - vertex 3.91414051245865 0.679734854410155 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.91414051245865 0.679734854410155 0.2 - vertex 3.91390104885711 0.588020295023182 0.2 - vertex 3.95167643199888 0.575687919544254 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.91414051245865 0.679734854410155 0.2 - vertex 3.95167643199888 0.575687919544254 0.2 - vertex 3.96610411399121 0.668001137935059 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.96610411399121 0.668001137935059 0.2 - vertex 3.95167643199888 0.575687919544254 0.2 - vertex 3.97592212165405 0.560721444448469 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.96610411399121 0.668001137935059 0.2 - vertex 3.97592212165405 0.560721444448469 0.2 - vertex 4.01812758142416 0.648245390808622 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 3.97592212165405 0.560721444448469 0.2 - vertex 3.98903275383796 0.540486770118967 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 3.98903275383796 0.540486770118967 0.2 - vertex 3.99340296456593 0.512349796938891 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 3.99340296456593 0.512349796938891 0.2 - vertex 4.00112566571535 0.38543408812663 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 4.00112566571535 0.38543408812663 0.2 - vertex 4.03171714081114 0.406506885061496 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 4.03171714081114 0.406506885061496 0.2 - vertex 4.05542403736286 0.61867163601935 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.05542403736286 0.61867163601935 0.2 - vertex 4.03171714081114 0.406506885061496 0.2 - vertex 4.05488524425941 0.430752574716668 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.05542403736286 0.61867163601935 0.2 - vertex 4.05488524425941 0.430752574716668 0.2 - vertex 4.07170756226708 0.459428341000193 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.05542403736286 0.61867163601935 0.2 - vertex 4.07170756226708 0.459428341000193 0.2 - vertex 4.07787375000654 0.577962823758814 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.07787375000654 0.577962823758814 0.2 - vertex 4.07170756226708 0.459428341000193 0.2 - vertex 4.08194463123259 0.491217134103642 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.07787375000654 0.577962823758814 0.2 - vertex 4.08194463123259 0.491217134103642 0.2 - vertex 4.08535698755443 0.524801904218584 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.79273246648164 0.767139068969542 0.2 - vertex 3.81895373084945 0.907105544065327 0.2 - vertex 3.78491996648164 0.892887392724331 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.81895373084945 0.907105544065327 0.2 - vertex 3.79273246648164 0.767139068969542 0.2 - vertex 3.80039530173068 0.800185045981036 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.81895373084945 0.907105544065327 0.2 - vertex 3.80039530173068 0.800185045981036 0.2 - vertex 3.8233838074778 0.823652478931228 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.81895373084945 0.907105544065327 0.2 - vertex 3.8233838074778 0.823652478931228 0.2 - vertex 3.857477437746 0.915636434869925 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.857477437746 0.915636434869925 0.2 - vertex 3.8233838074778 0.823652478931228 0.2 - vertex 3.85750737069619 0.837661099620883 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.857477437746 0.915636434869925 0.2 - vertex 3.85750737069619 0.837661099620883 0.2 - vertex 3.90049108717129 0.918480065138124 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.90049108717129 0.918480065138124 0.2 - vertex 3.85750737069619 0.837661099620883 0.2 - vertex 3.89857537835903 0.842330639850768 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.90049108717129 0.918480065138124 0.2 - vertex 3.89857537835903 0.842330639850768 0.2 - vertex 3.94149922893374 0.838379490425481 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.90049108717129 0.918480065138124 0.2 - vertex 3.94149922893374 0.838379490425481 0.2 - vertex 3.99005047414447 0.907464739467626 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.99005047414447 0.907464739467626 0.2 - vertex 3.94149922893374 0.838379490425481 0.2 - vertex 3.98406388410616 0.826526042149619 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.99005047414447 0.907464739467626 0.2 - vertex 3.98406388410616 0.826526042149619 0.2 - vertex 4.02447336686478 0.807847881230078 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 3.99005047414447 0.907464739467626 0.2 - vertex 4.02447336686478 0.807847881230078 0.2 - vertex 4.06572097222876 0.879686961689848 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.06572097222876 0.879686961689848 0.2 - vertex 4.02447336686478 0.807847881230078 0.2 - vertex 4.06093170019811 0.783422593873756 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.06572097222876 0.879686961689848 0.2 - vertex 4.06093170019811 0.783422593873756 0.2 - vertex 4.06572097222876 0.783422593873756 0.2 - endloop -endfacet -facet normal -0.0034494236932481 -0.999994050720395 0.0 - outer loop - vertex 3.87606579981497 0.357656310348852 0.2 - vertex 3.82416206418278 0.361248264371841 0.0 - vertex 3.87606579981497 0.357656310348852 0.0 - endloop -endfacet -facet normal -0.143515065226195 -0.989648132445629 0.0 - outer loop - vertex 3.82416206418278 0.361248264371841 0.0 - vertex 3.87606579981497 0.357656310348852 0.2 - vertex 3.82416206418278 0.361248264371841 0.2 - endloop -endfacet -facet normal -0.143515065226195 -0.989648132445629 0.0 - outer loop - vertex 3.82416206418278 0.361248264371841 0.2 - vertex 3.77573055077282 0.372024126440806 0.0 - vertex 3.82416206418278 0.361248264371841 0.0 - endloop -endfacet -facet normal -0.29371898743818 -0.955891812088738 0.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.0 - vertex 3.82416206418278 0.361248264371841 0.2 - vertex 3.77573055077282 0.372024126440806 0.2 - endloop -endfacet -facet normal -0.29371898743818 -0.955891812088738 0.0 - outer loop - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.6983838074778 0.402675467436975 0.0 - vertex 3.77573055077282 0.372024126440806 0.0 - endloop -endfacet -facet normal -0.36841130465666 -0.929662901594539 0.0 - outer loop - vertex 3.6983838074778 0.402675467436975 0.0 - vertex 3.77573055077282 0.372024126440806 0.2 - vertex 3.6983838074778 0.402675467436975 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 3.6983838074778 0.503729107283718 0.2 - vertex 3.6983838074778 0.402675467436975 0.0 - vertex 3.6983838074778 0.402675467436975 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 3.6983838074778 0.402675467436975 0.0 - vertex 3.6983838074778 0.503729107283718 0.2 - vertex 3.6983838074778 0.503729107283718 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 3.6983838074778 0.503729107283718 0.2 - vertex 3.70317307950846 0.503729107283718 0.0 - vertex 3.6983838074778 0.503729107283718 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 3.70317307950846 0.503729107283718 0.0 - vertex 3.6983838074778 0.503729107283718 0.2 - vertex 3.70317307950846 0.503729107283718 0.2 - endloop -endfacet -facet normal 0.596585492351885 0.802549531378132 0.0 - outer loop - vertex 3.70317307950846 0.503729107283718 0.2 - vertex 3.73023246648164 0.483614164754982 0.0 - vertex 3.70317307950846 0.503729107283718 0.0 - endloop -endfacet -facet normal 0.542091186803624 0.840319668453523 0.0 - outer loop - vertex 3.73023246648164 0.483614164754982 0.0 - vertex 3.70317307950846 0.503729107283718 0.2 - vertex 3.73023246648164 0.483614164754982 0.2 - endloop -endfacet -facet normal 0.542091186803624 0.840319668453523 0.0 - outer loop - vertex 3.73023246648164 0.483614164754982 0.2 - vertex 3.77165966954677 0.460625659007856 0.0 - vertex 3.73023246648164 0.483614164754982 0.0 - endloop -endfacet -facet normal 0.417186946688829 0.908820692718015 0.0 - outer loop - vertex 3.77165966954677 0.460625659007856 0.0 - vertex 3.73023246648164 0.483614164754982 0.2 - vertex 3.77165966954677 0.460625659007856 0.2 - endloop -endfacet -facet normal 0.417186946688829 0.908820692718015 0.0 - outer loop - vertex 3.77165966954677 0.460625659007856 0.2 - vertex 3.82218648947014 0.441947498088316 0.0 - vertex 3.77165966954677 0.460625659007856 0.0 - endloop -endfacet -facet normal 0.245174475646029 0.969478971660394 0.0 - outer loop - vertex 3.82218648947014 0.441947498088316 0.0 - vertex 3.77165966954677 0.460625659007856 0.2 - vertex 3.82218648947014 0.441947498088316 0.2 - endloop -endfacet -facet normal 0.245174475646029 0.969478971660394 0.0 - outer loop - vertex 3.82218648947014 0.441947498088316 0.2 - vertex 3.87941829023642 0.433805735636209 0.0 - vertex 3.82218648947014 0.441947498088316 0.0 - endloop -endfacet -facet normal 0.0161839307351789 0.999869031616621 0.0 - outer loop - vertex 3.87941829023642 0.433805735636209 0.0 - vertex 3.82218648947014 0.441947498088316 0.2 - vertex 3.87941829023642 0.433805735636209 0.2 - endloop -endfacet -facet normal 0.0161839307351789 0.999869031616621 0.0 - outer loop - vertex 3.87941829023642 0.433805735636209 0.2 - vertex 3.92539530173068 0.438834471268392 0.0 - vertex 3.87941829023642 0.433805735636209 0.0 - endloop -endfacet -facet normal -0.220397575605247 0.975410123315998 0.0 - outer loop - vertex 3.92539530173068 0.438834471268392 0.0 - vertex 3.87941829023642 0.433805735636209 0.2 - vertex 3.92539530173068 0.438834471268392 0.2 - endloop -endfacet -facet normal -0.220397575605247 0.975410123315998 0.0 - outer loop - vertex 3.92539530173068 0.438834471268392 0.2 - vertex 3.96179376916363 0.451526042149618 0.0 - vertex 3.92539530173068 0.438834471268392 0.0 - endloop -endfacet -facet normal -0.525168442208563 0.85099830041442 0.0 - outer loop - vertex 3.96179376916363 0.451526042149618 0.0 - vertex 3.92539530173068 0.438834471268392 0.2 - vertex 3.96179376916363 0.451526042149618 0.2 - endloop -endfacet -facet normal -0.525168442208563 0.85099830041442 0.0 - outer loop - vertex 3.96179376916363 0.451526042149618 0.2 - vertex 3.98597959291842 0.47499347509981 0.0 - vertex 3.96179376916363 0.451526042149618 0.0 - endloop -endfacet -facet normal -0.696367753757026 0.71768513397408 0.0 - outer loop - vertex 3.98597959291842 0.47499347509981 0.0 - vertex 3.96179376916363 0.451526042149618 0.2 - vertex 3.98597959291842 0.47499347509981 0.2 - endloop -endfacet -facet normal -0.999778724496402 0.021035732560287 0.0 - outer loop - vertex 3.99340296456593 0.512349796938891 0.2 - vertex 3.98597959291842 0.47499347509981 0.0 - vertex 3.98597959291842 0.47499347509981 0.2 - endloop -endfacet -facet normal -0.980821750211741 0.194906886260025 0.0 - outer loop - vertex 3.98597959291842 0.47499347509981 0.0 - vertex 3.99340296456593 0.512349796938891 0.2 - vertex 3.99340296456593 0.512349796938891 0.0 - endloop -endfacet -facet normal -0.934301067909552 -0.356484942884087 0.0 - outer loop - vertex 3.98903275383796 0.540486770118967 0.2 - vertex 3.99340296456593 0.512349796938891 0.0 - vertex 3.99340296456593 0.512349796938891 0.2 - endloop -endfacet -facet normal -0.999778724496402 0.021035732560287 0.0 - outer loop - vertex 3.99340296456593 0.512349796938891 0.0 - vertex 3.98903275383796 0.540486770118967 0.2 - vertex 3.98903275383796 0.540486770118967 0.0 - endloop -endfacet -facet normal -0.699326547675998 -0.714802336115076 0.0 - outer loop - vertex 3.97592212165405 0.560721444448469 0.2 - vertex 3.98903275383796 0.540486770118967 0.0 - vertex 3.98903275383796 0.540486770118967 0.2 - endloop -endfacet -facet normal -0.934301067909552 -0.356484942884087 0.0 - outer loop - vertex 3.98903275383796 0.540486770118967 0.0 - vertex 3.97592212165405 0.560721444448469 0.2 - vertex 3.97592212165405 0.560721444448469 0.0 - endloop -endfacet -facet normal -0.699326547675998 -0.714802336115076 0.0 - outer loop - vertex 3.97592212165405 0.560721444448469 0.2 - vertex 3.95167643199888 0.575687919544254 0.0 - vertex 3.97592212165405 0.560721444448469 0.0 - endloop -endfacet -facet normal -0.420770342017246 -0.907167194776514 0.0 - outer loop - vertex 3.95167643199888 0.575687919544254 0.0 - vertex 3.97592212165405 0.560721444448469 0.2 - vertex 3.95167643199888 0.575687919544254 0.2 - endloop -endfacet -facet normal -0.420770342017246 -0.907167194776514 0.0 - outer loop - vertex 3.95167643199888 0.575687919544254 0.2 - vertex 3.91390104885711 0.588020295023182 0.0 - vertex 3.95167643199888 0.575687919544254 0.0 - endloop -endfacet -facet normal -0.264491049691579 -0.964388140031309 0.0 - outer loop - vertex 3.91390104885711 0.588020295023182 0.0 - vertex 3.95167643199888 0.575687919544254 0.2 - vertex 3.91390104885711 0.588020295023182 0.2 - endloop -endfacet -facet normal -0.264491049691579 -0.964388140031309 0.0 - outer loop - vertex 3.91390104885711 0.588020295023182 0.2 - vertex 3.86888189176899 0.598077766287549 0.0 - vertex 3.91390104885711 0.588020295023182 0.0 - endloop -endfacet -facet normal -0.227084527668728 -0.973875052197904 0.0 - outer loop - vertex 3.86888189176899 0.598077766287549 0.0 - vertex 3.91390104885711 0.588020295023182 0.2 - vertex 3.86888189176899 0.598077766287549 0.2 - endloop -endfacet -facet normal -0.227084527668728 -0.973875052197904 0.0 - outer loop - vertex 3.86888189176899 0.598077766287549 0.2 - vertex 3.81763668104102 0.610529873567243 0.0 - vertex 3.86888189176899 0.598077766287549 0.0 - endloop -endfacet -facet normal -0.315271954457167 -0.949001367086875 0.0 - outer loop - vertex 3.81763668104102 0.610529873567243 0.0 - vertex 3.86888189176899 0.598077766287549 0.2 - vertex 3.81763668104102 0.610529873567243 0.2 - endloop -endfacet -facet normal -0.315271954457167 -0.949001367086875 0.0 - outer loop - vertex 3.81763668104102 0.610529873567243 0.2 - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.81763668104102 0.610529873567243 0.0 - endloop -endfacet -facet normal -0.53613649635636 -0.844131303337773 0.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.0 - vertex 3.81763668104102 0.610529873567243 0.2 - vertex 3.76471522510232 0.633099318011688 0.2 - endloop -endfacet -facet normal -0.53613649635636 -0.844131303337773 0.0 - outer loop - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.72855622127091 0.665367038318201 0.0 - vertex 3.76471522510232 0.633099318011688 0.0 - endloop -endfacet -facet normal -0.792360540300353 -0.610053091275614 0.0 - outer loop - vertex 3.72855622127091 0.665367038318201 0.0 - vertex 3.76471522510232 0.633099318011688 0.2 - vertex 3.72855622127091 0.665367038318201 0.2 - endloop -endfacet -facet normal -0.953631698966797 -0.300976050086549 0.0 - outer loop - vertex 3.70772288793757 0.706375180080653 0.2 - vertex 3.72855622127091 0.665367038318201 0.0 - vertex 3.72855622127091 0.665367038318201 0.2 - endloop -endfacet -facet normal -0.792360540300353 -0.610053091275614 0.0 - outer loop - vertex 3.72855622127091 0.665367038318201 0.0 - vertex 3.70772288793757 0.706375180080653 0.2 - vertex 3.70772288793757 0.706375180080653 0.0 - endloop -endfacet -facet normal -0.999771622308441 -0.0213706159655532 0.0 - outer loop - vertex 3.70077844349313 0.755165888892914 0.2 - vertex 3.70772288793757 0.706375180080653 0.0 - vertex 3.70772288793757 0.706375180080653 0.2 - endloop -endfacet -facet normal -0.953631698966797 -0.300976050086549 0.0 - outer loop - vertex 3.70772288793757 0.706375180080653 0.0 - vertex 3.70077844349313 0.755165888892914 0.2 - vertex 3.70077844349313 0.755165888892914 0.0 - endloop -endfacet -facet normal -0.978410359122527 0.206671645761406 0.0 - outer loop - vertex 3.70419079981497 0.789648647513603 0.2 - vertex 3.70077844349313 0.755165888892914 0.0 - vertex 3.70077844349313 0.755165888892914 0.2 - endloop -endfacet -facet normal -0.999771622308441 -0.0213706159655532 0.0 - outer loop - vertex 3.70077844349313 0.755165888892914 0.0 - vertex 3.70419079981497 0.789648647513603 0.2 - vertex 3.70419079981497 0.789648647513603 0.0 - endloop -endfacet -facet normal -0.907181743274203 0.420738974507922 0.0 - outer loop - vertex 3.71442786878049 0.820778915712837 0.2 - vertex 3.70419079981497 0.789648647513603 0.0 - vertex 3.70419079981497 0.789648647513603 0.2 - endloop -endfacet -facet normal -0.978410359122527 0.206671645761406 0.0 - outer loop - vertex 3.70419079981497 0.789648647513603 0.0 - vertex 3.71442786878049 0.820778915712837 0.2 - vertex 3.71442786878049 0.820778915712837 0.0 - endloop -endfacet -facet normal -0.788438815616603 0.615113187981764 0.0 - outer loop - vertex 3.73148965038968 0.848556693490615 0.2 - vertex 3.71442786878049 0.820778915712837 0.0 - vertex 3.71442786878049 0.820778915712837 0.2 - endloop -endfacet -facet normal -0.907181743274203 0.420738974507922 0.0 - outer loop - vertex 3.71442786878049 0.820778915712837 0.0 - vertex 3.73148965038968 0.848556693490615 0.2 - vertex 3.73148965038968 0.848556693490615 0.0 - endloop -endfacet -facet normal -0.640172912233049 0.768230852311372 0.0 - outer loop - vertex 3.75537614464255 0.872981980846936 0.2 - vertex 3.73148965038968 0.848556693490615 0.0 - vertex 3.73148965038968 0.848556693490615 0.2 - endloop -endfacet -facet normal -0.788438815616603 0.615113187981764 0.0 - outer loop - vertex 3.73148965038968 0.848556693490615 0.0 - vertex 3.75537614464255 0.872981980846936 0.2 - vertex 3.75537614464255 0.872981980846936 0.0 - endloop -endfacet -facet normal -0.640172912233049 0.768230852311372 0.0 - outer loop - vertex 3.75537614464255 0.872981980846936 0.2 - vertex 3.78491996648164 0.892887392724331 0.0 - vertex 3.75537614464255 0.872981980846936 0.0 - endloop -endfacet -facet normal -0.474426136288194 0.880295314770365 0.0 - outer loop - vertex 3.78491996648164 0.892887392724331 0.0 - vertex 3.75537614464255 0.872981980846936 0.2 - vertex 3.78491996648164 0.892887392724331 0.2 - endloop -endfacet -facet normal -0.474426136288194 0.880295314770365 0.0 - outer loop - vertex 3.78491996648164 0.892887392724331 0.2 - vertex 3.81895373084945 0.907105544065327 0.0 - vertex 3.78491996648164 0.892887392724331 0.0 - endloop -endfacet -facet normal -0.302036254972224 0.953296439037907 0.0 - outer loop - vertex 3.81895373084945 0.907105544065327 0.0 - vertex 3.78491996648164 0.892887392724331 0.2 - vertex 3.81895373084945 0.907105544065327 0.2 - endloop -endfacet -facet normal -0.302036254972224 0.953296439037907 0.0 - outer loop - vertex 3.81895373084945 0.907105544065327 0.2 - vertex 3.857477437746 0.915636434869925 0.0 - vertex 3.81895373084945 0.907105544065327 0.0 - endloop -endfacet -facet normal -0.141494696370883 0.989939013727064 0.0 - outer loop - vertex 3.857477437746 0.915636434869925 0.0 - vertex 3.81895373084945 0.907105544065327 0.2 - vertex 3.857477437746 0.915636434869925 0.2 - endloop -endfacet -facet normal -0.141494696370883 0.989939013727064 0.0 - outer loop - vertex 3.857477437746 0.915636434869925 0.2 - vertex 3.90049108717129 0.918480065138124 0.0 - vertex 3.857477437746 0.915636434869925 0.0 - endloop -endfacet -facet normal 0.0281793303801236 0.999602883819034 0.0 - outer loop - vertex 3.90049108717129 0.918480065138124 0.0 - vertex 3.857477437746 0.915636434869925 0.2 - vertex 3.90049108717129 0.918480065138124 0.2 - endloop -endfacet -facet normal 0.0281793303801236 0.999602883819034 0.0 - outer loop - vertex 3.90049108717129 0.918480065138124 0.2 - vertex 3.99005047414447 0.907464739467626 0.0 - vertex 3.90049108717129 0.918480065138124 0.0 - endloop -endfacet -facet normal 0.234883143477802 0.972023615407561 0.0 - outer loop - vertex 3.99005047414447 0.907464739467626 0.0 - vertex 3.90049108717129 0.918480065138124 0.2 - vertex 3.99005047414447 0.907464739467626 0.2 - endloop -endfacet -facet normal 0.234883143477802 0.972023615407561 0.0 - outer loop - vertex 3.99005047414447 0.907464739467626 0.2 - vertex 4.06572097222876 0.879686961689848 0.0 - vertex 3.99005047414447 0.907464739467626 0.0 - endloop -endfacet -facet normal 0.344603779779219 0.938748227674426 0.0 - outer loop - vertex 4.06572097222876 0.879686961689848 0.0 - vertex 3.99005047414447 0.907464739467626 0.2 - vertex 4.06572097222876 0.879686961689848 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.06572097222876 0.879686961689848 0.0 - vertex 4.06572097222876 0.783422593873756 0.2 - vertex 4.06572097222876 0.783422593873756 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.06572097222876 0.783422593873756 0.2 - vertex 4.06572097222876 0.879686961689848 0.0 - vertex 4.06572097222876 0.879686961689848 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.06572097222876 0.783422593873756 0.2 - vertex 4.06093170019811 0.783422593873756 0.0 - vertex 4.06572097222876 0.783422593873756 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.06093170019811 0.783422593873756 0.0 - vertex 4.06572097222876 0.783422593873756 0.2 - vertex 4.06093170019811 0.783422593873756 0.2 - endloop -endfacet -facet normal -0.556587638965561 -0.830788902279479 0.0 - outer loop - vertex 4.06093170019811 0.783422593873756 0.2 - vertex 4.02447336686478 0.807847881230078 0.0 - vertex 4.06093170019811 0.783422593873756 0.0 - endloop -endfacet -facet normal -0.489592222603488 -0.871951521339447 0.0 - outer loop - vertex 4.02447336686478 0.807847881230078 0.0 - vertex 4.06093170019811 0.783422593873756 0.2 - vertex 4.02447336686478 0.807847881230078 0.2 - endloop -endfacet -facet normal -0.489592222603488 -0.871951521339447 0.0 - outer loop - vertex 4.02447336686478 0.807847881230078 0.2 - vertex 3.98406388410616 0.826526042149619 0.0 - vertex 4.02447336686478 0.807847881230078 0.0 - endloop -endfacet -facet normal -0.345043802382217 -0.938586583346268 0.0 - outer loop - vertex 3.98406388410616 0.826526042149619 0.0 - vertex 4.02447336686478 0.807847881230078 0.2 - vertex 3.98406388410616 0.826526042149619 0.2 - endloop -endfacet -facet normal -0.345043802382217 -0.938586583346268 0.0 - outer loop - vertex 3.98406388410616 0.826526042149619 0.2 - vertex 3.94149922893374 0.838379490425481 0.0 - vertex 3.98406388410616 0.826526042149619 0.0 - endloop -endfacet -facet normal -0.180697484689396 -0.983538722688093 0.0 - outer loop - vertex 3.94149922893374 0.838379490425481 0.0 - vertex 3.98406388410616 0.826526042149619 0.2 - vertex 3.94149922893374 0.838379490425481 0.2 - endloop -endfacet -facet normal -0.180697484689396 -0.983538722688093 0.0 - outer loop - vertex 3.94149922893374 0.838379490425481 0.2 - vertex 3.89857537835903 0.842330639850768 0.0 - vertex 3.94149922893374 0.838379490425481 0.0 - endloop -endfacet -facet normal 0.0107122258632747 -0.999942622462436 0.0 - outer loop - vertex 3.89857537835903 0.842330639850768 0.0 - vertex 3.94149922893374 0.838379490425481 0.2 - vertex 3.89857537835903 0.842330639850768 0.2 - endloop -endfacet -facet normal 0.0107122258632747 -0.999942622462436 0.0 - outer loop - vertex 3.89857537835903 0.842330639850768 0.2 - vertex 3.85750737069619 0.837661099620883 0.0 - vertex 3.89857537835903 0.842330639850768 0.0 - endloop -endfacet -facet normal 0.24874281702269 -0.968569569509396 0.0 - outer loop - vertex 3.85750737069619 0.837661099620883 0.0 - vertex 3.89857537835903 0.842330639850768 0.2 - vertex 3.85750737069619 0.837661099620883 0.2 - endloop -endfacet -facet normal 0.24874281702269 -0.968569569509396 0.0 - outer loop - vertex 3.85750737069619 0.837661099620883 0.2 - vertex 3.8233838074778 0.823652478931228 0.0 - vertex 3.85750737069619 0.837661099620883 0.0 - endloop -endfacet -facet normal 0.558542313018932 -0.829476030134362 0.0 - outer loop - vertex 3.8233838074778 0.823652478931228 0.0 - vertex 3.85750737069619 0.837661099620883 0.2 - vertex 3.8233838074778 0.823652478931228 0.2 - endloop -endfacet -facet normal 0.558542313018932 -0.829476030134362 0.0 - outer loop - vertex 3.8233838074778 0.823652478931228 0.0 - vertex 3.80039530173068 0.800185045981036 0.2 - vertex 3.80039530173068 0.800185045981036 0.0 - endloop -endfacet -facet normal 0.714358581375118 -0.699779834816444 0.0 - outer loop - vertex 3.80039530173068 0.800185045981036 0.2 - vertex 3.8233838074778 0.823652478931228 0.0 - vertex 3.8233838074778 0.823652478931228 0.2 - endloop -endfacet -facet normal 0.974152703703863 -0.225890482018285 0.0 - outer loop - vertex 3.80039530173068 0.800185045981036 0.0 - vertex 3.79273246648164 0.767139068969542 0.2 - vertex 3.79273246648164 0.767139068969542 0.0 - endloop -endfacet -facet normal 0.99932164254674 -0.0368273639796066 0.0 - outer loop - vertex 3.79273246648164 0.767139068969542 0.2 - vertex 3.80039530173068 0.800185045981036 0.0 - vertex 3.80039530173068 0.800185045981036 0.2 - endloop -endfacet -facet normal 0.99932164254674 -0.0368273639796066 0.0 - outer loop - vertex 3.79273246648164 0.767139068969542 0.0 - vertex 3.79728227491075 0.737864643682186 0.2 - vertex 3.79728227491075 0.737864643682186 0.0 - endloop -endfacet -facet normal 0.933137120913151 0.359520671970215 0.0 - outer loop - vertex 3.79728227491075 0.737864643682186 0.2 - vertex 3.79273246648164 0.767139068969542 0.0 - vertex 3.79273246648164 0.767139068969542 0.2 - endloop -endfacet -facet normal 0.933137120913151 0.359520671970215 0.0 - outer loop - vertex 3.79728227491075 0.737864643682186 0.0 - vertex 3.81093170019811 0.717091176249235 0.2 - vertex 3.81093170019811 0.717091176249235 0.0 - endloop -endfacet -facet normal 0.701287328298952 0.712878729635916 0.0 - outer loop - vertex 3.81093170019811 0.717091176249235 0.2 - vertex 3.79728227491075 0.737864643682186 0.0 - vertex 3.79728227491075 0.737864643682186 0.2 - endloop -endfacet -facet normal 0.701287328298952 0.712878729635916 0.0 - outer loop - vertex 3.81093170019811 0.717091176249235 0.2 - vertex 3.83463859674983 0.702064835253067 0.0 - vertex 3.81093170019811 0.717091176249235 0.0 - endloop -endfacet -facet normal 0.434303289715712 0.900766702616227 0.0 - outer loop - vertex 3.83463859674983 0.702064835253067 0.0 - vertex 3.81093170019811 0.717091176249235 0.2 - vertex 3.83463859674983 0.702064835253067 0.2 - endloop -endfacet -facet normal 0.434303289715712 0.900766702616227 0.0 - outer loop - vertex 3.83463859674983 0.702064835253067 0.2 - vertex 3.86936081897206 0.690031789276055 0.0 - vertex 3.83463859674983 0.702064835253067 0.0 - endloop -endfacet -facet normal 0.27617167833275 0.961108320683404 0.0 - outer loop - vertex 3.86936081897206 0.690031789276055 0.0 - vertex 3.83463859674983 0.702064835253067 0.2 - vertex 3.86936081897206 0.690031789276055 0.2 - endloop -endfacet -facet normal 0.27617167833275 0.961108320683404 0.0 - outer loop - vertex 3.86936081897206 0.690031789276055 0.2 - vertex 3.91414051245865 0.679734854410155 0.0 - vertex 3.86936081897206 0.690031789276055 0.0 - endloop -endfacet -facet normal 0.222179963498852 0.975005673737158 0.0 - outer loop - vertex 3.91414051245865 0.679734854410155 0.0 - vertex 3.86936081897206 0.690031789276055 0.2 - vertex 3.91414051245865 0.679734854410155 0.2 - endloop -endfacet -facet normal 0.222179963498852 0.975005673737158 0.0 - outer loop - vertex 3.91414051245865 0.679734854410155 0.2 - vertex 3.96610411399121 0.668001137935059 0.0 - vertex 3.91414051245865 0.679734854410155 0.0 - endloop -endfacet -facet normal 0.288350612204699 0.95752489494591 0.0 - outer loop - vertex 3.96610411399121 0.668001137935059 0.0 - vertex 3.91414051245865 0.679734854410155 0.2 - vertex 3.96610411399121 0.668001137935059 0.2 - endloop -endfacet -facet normal 0.288350612204699 0.95752489494591 0.0 - outer loop - vertex 3.96610411399121 0.668001137935059 0.2 - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 3.96610411399121 0.668001137935059 0.0 - endloop -endfacet -facet normal 0.493989893056549 0.869467644917267 0.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.0 - vertex 3.96610411399121 0.668001137935059 0.2 - vertex 4.01812758142416 0.648245390808622 0.2 - endloop -endfacet -facet normal 0.493989893056549 0.869467644917267 0.0 - outer loop - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.01812758142416 0.648245390808622 0.0 - endloop -endfacet -facet normal 0.763439764736457 0.645879033271048 0.0 - outer loop - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.01812758142416 0.648245390808622 0.2 - vertex 4.05542403736286 0.61867163601935 0.2 - endloop -endfacet -facet normal 0.763439764736457 0.645879033271048 0.0 - outer loop - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.07787375000654 0.577962823758814 0.2 - vertex 4.07787375000654 0.577962823758814 0.0 - endloop -endfacet -facet normal 0.948633107227256 0.316378298674802 0.0 - outer loop - vertex 4.07787375000654 0.577962823758814 0.2 - vertex 4.05542403736286 0.61867163601935 0.0 - vertex 4.05542403736286 0.61867163601935 0.2 - endloop -endfacet -facet normal 0.948633107227256 0.316378298674802 0.0 - outer loop - vertex 4.07787375000654 0.577962823758814 0.0 - vertex 4.08535698755443 0.524801904218584 0.2 - vertex 4.08535698755443 0.524801904218584 0.0 - endloop -endfacet -facet normal 0.999813856156834 0.0192938600803773 0.0 - outer loop - vertex 4.08535698755443 0.524801904218584 0.2 - vertex 4.07787375000654 0.577962823758814 0.0 - vertex 4.07787375000654 0.577962823758814 0.2 - endloop -endfacet -facet normal 0.999813856156834 0.0192938600803773 0.0 - outer loop - vertex 4.08535698755443 0.524801904218584 0.0 - vertex 4.08194463123259 0.491217134103642 0.2 - vertex 4.08194463123259 0.491217134103642 0.0 - endloop -endfacet -facet normal 0.978774660177288 -0.204939416889078 0.0 - outer loop - vertex 4.08194463123259 0.491217134103642 0.2 - vertex 4.08535698755443 0.524801904218584 0.0 - vertex 4.08535698755443 0.524801904218584 0.2 - endloop -endfacet -facet normal 0.978774660177288 -0.204939416889078 0.0 - outer loop - vertex 4.08194463123259 0.491217134103642 0.0 - vertex 4.07170756226708 0.459428341000193 0.2 - vertex 4.07170756226708 0.459428341000193 0.0 - endloop -endfacet -facet normal 0.912663557218166 -0.408711672607822 0.0 - outer loop - vertex 4.07170756226708 0.459428341000193 0.2 - vertex 4.08194463123259 0.491217134103642 0.0 - vertex 4.08194463123259 0.491217134103642 0.2 - endloop -endfacet -facet normal 0.912663557218166 -0.408711672607822 0.0 - outer loop - vertex 4.07170756226708 0.459428341000193 0.0 - vertex 4.05488524425941 0.430752574716668 0.2 - vertex 4.05488524425941 0.430752574716668 0.0 - endloop -endfacet -facet normal 0.798133217875601 -0.60248100926381 0.0 - outer loop - vertex 4.05488524425941 0.430752574716668 0.2 - vertex 4.07170756226708 0.459428341000193 0.0 - vertex 4.07170756226708 0.459428341000193 0.2 - endloop -endfacet -facet normal 0.798133217875601 -0.60248100926381 0.0 - outer loop - vertex 4.05488524425941 0.430752574716668 0.0 - vertex 4.03171714081114 0.406506885061496 0.2 - vertex 4.03171714081114 0.406506885061496 0.0 - endloop -endfacet -facet normal 0.648537069293553 -0.761183072428787 0.0 - outer loop - vertex 4.03171714081114 0.406506885061496 0.2 - vertex 4.05488524425941 0.430752574716668 0.0 - vertex 4.05488524425941 0.430752574716668 0.2 - endloop -endfacet -facet normal 0.648537069293553 -0.761183072428787 0.0 - outer loop - vertex 4.03171714081114 0.406506885061496 0.2 - vertex 4.00112566571535 0.38543408812663 0.0 - vertex 4.03171714081114 0.406506885061496 0.0 - endloop -endfacet -facet normal 0.489645436592736 -0.871921640070889 0.0 - outer loop - vertex 4.00112566571535 0.38543408812663 0.0 - vertex 4.03171714081114 0.406506885061496 0.2 - vertex 4.00112566571535 0.38543408812663 0.2 - endloop -endfacet -facet normal 0.489645436592736 -0.871921640070889 0.0 - outer loop - vertex 4.00112566571535 0.38543408812663 0.2 - vertex 3.96682250479581 0.370108417628546 0.0 - vertex 4.00112566571535 0.38543408812663 0.0 - endloop -endfacet -facet normal 0.317107169365693 -0.948389710581509 0.0 - outer loop - vertex 3.96682250479581 0.370108417628546 0.0 - vertex 4.00112566571535 0.38543408812663 0.2 - vertex 3.96682250479581 0.370108417628546 0.2 - endloop -endfacet -facet normal 0.317107169365693 -0.948389710581509 0.0 - outer loop - vertex 3.96682250479581 0.370108417628546 0.2 - vertex 3.92605382663489 0.360769337168776 0.0 - vertex 3.96682250479581 0.370108417628546 0.0 - endloop -endfacet -facet normal 0.143198383976245 -0.989694004643148 0.0 - outer loop - vertex 3.92605382663489 0.360769337168776 0.0 - vertex 3.96682250479581 0.370108417628546 0.2 - vertex 3.92605382663489 0.360769337168776 0.2 - endloop -endfacet -facet normal 0.143198383976245 -0.989694004643148 0.0 - outer loop - vertex 3.92605382663489 0.360769337168776 0.2 - vertex 3.87606579981497 0.357656310348852 0.0 - vertex 3.92605382663489 0.360769337168776 0.0 - endloop -endfacet -facet normal -0.0034494236932481 -0.999994050720395 0.0 - outer loop - vertex 3.87606579981497 0.357656310348852 0.0 - vertex 3.92605382663489 0.360769337168776 0.2 - vertex 3.87606579981497 0.357656310348852 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.13684166188393 0.571078245214753 0.2 - vertex 4.13702125958508 0.702962823758814 0.2 - vertex 4.13229185345481 0.63734979693889 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.13702125958508 0.702962823758814 0.2 - vertex 4.13684166188393 0.571078245214753 0.2 - vertex 4.15049108717129 0.514026042149619 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.13702125958508 0.702962823758814 0.2 - vertex 4.15049108717129 0.514026042149619 0.2 - vertex 4.15120947797589 0.758997306517435 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.15120947797589 0.758997306517435 0.2 - vertex 4.15049108717129 0.514026042149619 0.2 - vertex 4.17240200671152 0.466073455942722 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.15120947797589 0.758997306517435 0.2 - vertex 4.17240200671152 0.466073455942722 0.2 - vertex 4.17329999521727 0.80617163601935 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.17329999521727 0.80617163601935 0.2 - vertex 4.17240200671152 0.466073455942722 0.2 - vertex 4.20173629789926 0.427100754793297 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.17329999521727 0.80617163601935 0.2 - vertex 4.20173629789926 0.427100754793297 0.2 - vertex 4.20173629789926 0.845204203069159 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.20173629789926 0.845204203069159 0.2 - vertex 4.20173629789926 0.427100754793297 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.20173629789926 0.845204203069159 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.22568265805252 0.63734979693889 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.22568265805252 0.63734979693889 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.2282419252939 0.592555136977205 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.2282419252939 0.592555136977205 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.23591972701803 0.552998743299044 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.23591972701803 0.552998743299044 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.24871606322493 0.518680615904408 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.24871606322493 0.518680615904408 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.28075928640501 0.375616080463795 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.24871606322493 0.518680615904408 0.2 - vertex 4.28075928640501 0.375616080463795 0.2 - vertex 4.26663093391458 0.489600754793297 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.26663093391458 0.489600754793297 0.2 - vertex 4.28075928640501 0.375616080463795 0.2 - vertex 4.28909561303336 0.466447617820117 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.28909561303336 0.466447617820117 0.2 - vertex 4.28075928640501 0.375616080463795 0.2 - vertex 4.32901120211382 0.362864643682186 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.28909561303336 0.466447617820117 0.2 - vertex 4.32901120211382 0.362864643682186 0.2 - vertex 4.31554137452761 0.449909662839274 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.31554137452761 0.449909662839274 0.2 - vertex 4.32901120211382 0.362864643682186 0.2 - vertex 4.34596821839734 0.439986889850768 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.34596821839734 0.439986889850768 0.2 - vertex 4.32901120211382 0.362864643682186 0.2 - vertex 4.38181292625175 0.358614164754983 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.34596821839734 0.439986889850768 0.2 - vertex 4.38181292625175 0.358614164754983 0.2 - vertex 4.38037614464255 0.436679298854599 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.38037614464255 0.436679298854599 0.2 - vertex 4.38181292625175 0.358614164754983 0.2 - vertex 4.42335986111765 0.441229107283718 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.42335986111765 0.441229107283718 0.2 - vertex 4.38181292625175 0.358614164754983 0.2 - vertex 4.42874779215213 0.362206118777971 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.42335986111765 0.441229107283718 0.2 - vertex 4.42874779215213 0.362206118777971 0.2 - vertex 4.46418840517895 0.454878532571074 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.46418840517895 0.454878532571074 0.2 - vertex 4.42874779215213 0.362206118777971 0.2 - vertex 4.46993553161574 0.372503053643871 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.46418840517895 0.454878532571074 0.2 - vertex 4.46993553161574 0.372503053643871 0.2 - vertex 4.5016644588188 0.475711865904408 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.5016644588188 0.475711865904408 0.2 - vertex 4.46993553161574 0.372503053643871 0.2 - vertex 4.50633399904869 0.385673551728163 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.5016644588188 0.475711865904408 0.2 - vertex 4.50633399904869 0.385673551728163 0.2 - vertex 4.53459070402953 0.501813398471458 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.53459070402953 0.501813398471458 0.2 - vertex 4.50633399904869 0.385673551728163 0.2 - vertex 4.53985890326324 0.400759758624714 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.53459070402953 0.501813398471458 0.2 - vertex 4.53985890326324 0.400759758624714 0.2 - vertex 4.53985890326324 0.501813398471458 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.22568265805252 0.63734979693889 0.2 - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.20173629789926 0.845204203069159 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.22568265805252 0.63734979693889 0.2 - vertex 4.22833172414447 0.68298257950594 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.22833172414447 0.68298257950594 0.2 - vertex 4.23627892242033 0.723137632187933 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.23627892242033 0.723137632187933 0.2 - vertex 4.2495242528801 0.757814954984868 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.2495242528801 0.757814954984868 0.2 - vertex 4.28051982280347 0.899083513413986 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.28051982280347 0.899083513413986 0.2 - vertex 4.2495242528801 0.757814954984868 0.2 - vertex 4.26806771552378 0.787014547896745 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.28051982280347 0.899083513413986 0.2 - vertex 4.26806771552378 0.787014547896745 0.2 - vertex 4.29098138889543 0.810167684869925 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.28051982280347 0.899083513413986 0.2 - vertex 4.29098138889543 0.810167684869925 0.2 - vertex 4.3294302634165 0.913271731804791 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.3294302634165 0.913271731804791 0.2 - vertex 4.29098138889543 0.810167684869925 0.2 - vertex 4.31733735153911 0.826705639850768 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.3294302634165 0.913271731804791 0.2 - vertex 4.31733735153911 0.826705639850768 0.2 - vertex 4.34713560345482 0.836628412839274 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.3294302634165 0.913271731804791 0.2 - vertex 4.34713560345482 0.836628412839274 0.2 - vertex 4.38181292625175 0.918001137935059 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.38181292625175 0.918001137935059 0.2 - vertex 4.34713560345482 0.836628412839274 0.2 - vertex 4.38037614464255 0.839936003835442 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.38181292625175 0.918001137935059 0.2 - vertex 4.38037614464255 0.839936003835442 0.2 - vertex 4.4292267193552 0.832752095789465 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.38181292625175 0.918001137935059 0.2 - vertex 4.4292267193552 0.832752095789465 0.2 - vertex 4.42509597222876 0.914888111115136 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.42509597222876 0.914888111115136 0.2 - vertex 4.4292267193552 0.832752095789465 0.2 - vertex 4.46682250479581 0.905549030655366 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.46682250479581 0.905549030655366 0.2 - vertex 4.4292267193552 0.832752095789465 0.2 - vertex 4.47328802203719 0.815989643682186 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.46682250479581 0.905549030655366 0.2 - vertex 4.47328802203719 0.815989643682186 0.2 - vertex 4.53985890326324 0.876813398471458 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.53985890326324 0.876813398471458 0.2 - vertex 4.47328802203719 0.815989643682186 0.2 - vertex 4.50992595307167 0.794437919544255 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.53985890326324 0.876813398471458 0.2 - vertex 4.50992595307167 0.794437919544255 0.2 - vertex 4.53459070402953 0.775759758624714 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.53985890326324 0.876813398471458 0.2 - vertex 4.53459070402953 0.775759758624714 0.2 - vertex 4.53985890326324 0.775759758624714 0.2 - endloop -endfacet -facet normal -0.00197196685745208 -0.999998055671466 0.0 - outer loop - vertex 4.38181292625175 0.358614164754983 0.2 - vertex 4.32901120211382 0.362864643682186 0.0 - vertex 4.38181292625175 0.358614164754983 0.0 - endloop -endfacet -facet normal -0.168535418585088 -0.985695598388442 0.0 - outer loop - vertex 4.32901120211382 0.362864643682186 0.0 - vertex 4.38181292625175 0.358614164754983 0.2 - vertex 4.32901120211382 0.362864643682186 0.2 - endloop -endfacet -facet normal -0.168535418585088 -0.985695598388442 0.0 - outer loop - vertex 4.32901120211382 0.362864643682186 0.2 - vertex 4.28075928640501 0.375616080463795 0.0 - vertex 4.32901120211382 0.362864643682186 0.0 - endloop -endfacet -facet normal -0.35321427508086 -0.935542450067929 0.0 - outer loop - vertex 4.28075928640501 0.375616080463795 0.0 - vertex 4.32901120211382 0.362864643682186 0.2 - vertex 4.28075928640501 0.375616080463795 0.2 - endloop -endfacet -facet normal -0.35321427508086 -0.935542450067929 0.0 - outer loop - vertex 4.28075928640501 0.375616080463795 0.2 - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.28075928640501 0.375616080463795 0.0 - endloop -endfacet -facet normal -0.54653206616668 -0.837438177211655 0.0 - outer loop - vertex 4.23801503353144 0.396988206900576 0.0 - vertex 4.28075928640501 0.375616080463795 0.2 - vertex 4.23801503353144 0.396988206900576 0.2 - endloop -endfacet -facet normal -0.54653206616668 -0.837438177211655 0.0 - outer loop - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.23801503353144 0.396988206900576 0.0 - endloop -endfacet -facet normal -0.723723054552945 -0.690090530516507 0.0 - outer loop - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.23801503353144 0.396988206900576 0.2 - vertex 4.20173629789926 0.427100754793297 0.2 - endloop -endfacet -facet normal -0.859293185167977 -0.51148335449345 0.0 - outer loop - vertex 4.17240200671152 0.466073455942722 0.2 - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.20173629789926 0.427100754793297 0.2 - endloop -endfacet -facet normal -0.723723054552945 -0.690090530516507 0.0 - outer loop - vertex 4.20173629789926 0.427100754793297 0.0 - vertex 4.17240200671152 0.466073455942722 0.2 - vertex 4.17240200671152 0.466073455942722 0.0 - endloop -endfacet -facet normal -0.945484976783479 -0.325665716151923 0.0 - outer loop - vertex 4.15049108717129 0.514026042149619 0.2 - vertex 4.17240200671152 0.466073455942722 0.0 - vertex 4.17240200671152 0.466073455942722 0.2 - endloop -endfacet -facet normal -0.859293185167977 -0.51148335449345 0.0 - outer loop - vertex 4.17240200671152 0.466073455942722 0.0 - vertex 4.15049108717129 0.514026042149619 0.2 - vertex 4.15049108717129 0.514026042149619 0.0 - endloop -endfacet -facet normal -0.988517345545667 -0.151107437127855 0.0 - outer loop - vertex 4.13684166188393 0.571078245214753 0.2 - vertex 4.15049108717129 0.514026042149619 0.0 - vertex 4.15049108717129 0.514026042149619 0.2 - endloop -endfacet -facet normal -0.945484976783479 -0.325665716151923 0.0 - outer loop - vertex 4.15049108717129 0.514026042149619 0.0 - vertex 4.13684166188393 0.571078245214753 0.2 - vertex 4.13684166188393 0.571078245214753 0.0 - endloop -endfacet -facet normal -0.999998547010283 0.00170469273558899 0.0 - outer loop - vertex 4.13229185345481 0.63734979693889 0.2 - vertex 4.13684166188393 0.571078245214753 0.0 - vertex 4.13684166188393 0.571078245214753 0.2 - endloop -endfacet -facet normal -0.988517345545667 -0.151107437127855 0.0 - outer loop - vertex 4.13684166188393 0.571078245214753 0.0 - vertex 4.13229185345481 0.63734979693889 0.2 - vertex 4.13229185345481 0.63734979693889 0.0 - endloop -endfacet -facet normal -0.987231360085845 0.159292942916666 0.0 - outer loop - vertex 4.13702125958508 0.702962823758814 0.2 - vertex 4.13229185345481 0.63734979693889 0.0 - vertex 4.13229185345481 0.63734979693889 0.2 - endloop -endfacet -facet normal -0.999998547010283 0.00170469273558899 0.0 - outer loop - vertex 4.13229185345481 0.63734979693889 0.0 - vertex 4.13702125958508 0.702962823758814 0.2 - vertex 4.13702125958508 0.702962823758814 0.0 - endloop -endfacet -facet normal -0.941760169938163 0.336285269255199 0.0 - outer loop - vertex 4.15120947797589 0.758997306517435 0.2 - vertex 4.13702125958508 0.702962823758814 0.0 - vertex 4.13702125958508 0.702962823758814 0.2 - endloop -endfacet -facet normal -0.987231360085845 0.159292942916666 0.0 - outer loop - vertex 4.13702125958508 0.702962823758814 0.0 - vertex 4.15120947797589 0.758997306517435 0.2 - vertex 4.15120947797589 0.758997306517435 0.0 - endloop -endfacet -facet normal -0.860889261127337 0.508792374231009 0.0 - outer loop - vertex 4.17329999521727 0.80617163601935 0.2 - vertex 4.15120947797589 0.758997306517435 0.0 - vertex 4.15120947797589 0.758997306517435 0.2 - endloop -endfacet -facet normal -0.941760169938163 0.336285269255199 0.0 - outer loop - vertex 4.15120947797589 0.758997306517435 0.0 - vertex 4.17329999521727 0.80617163601935 0.2 - vertex 4.17329999521727 0.80617163601935 0.0 - endloop -endfacet -facet normal -0.737329141670924 0.675533668178588 0.0 - outer loop - vertex 4.20173629789926 0.845204203069159 0.2 - vertex 4.17329999521727 0.80617163601935 0.0 - vertex 4.17329999521727 0.80617163601935 0.2 - endloop -endfacet -facet normal -0.860889261127337 0.508792374231009 0.0 - outer loop - vertex 4.17329999521727 0.80617163601935 0.0 - vertex 4.20173629789926 0.845204203069159 0.2 - vertex 4.20173629789926 0.845204203069159 0.0 - endloop -endfacet -facet normal -0.737329141670924 0.675533668178588 0.0 - outer loop - vertex 4.20173629789926 0.845204203069159 0.2 - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.20173629789926 0.845204203069159 0.0 - endloop -endfacet -facet normal -0.566370220686766 0.824150940737936 0.0 - outer loop - vertex 4.23723677682646 0.876154873567243 0.0 - vertex 4.20173629789926 0.845204203069159 0.2 - vertex 4.23723677682646 0.876154873567243 0.2 - endloop -endfacet -facet normal -0.566370220686766 0.824150940737936 0.0 - outer loop - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.28051982280347 0.899083513413986 0.0 - vertex 4.23723677682646 0.876154873567243 0.0 - endloop -endfacet -facet normal -0.3753227198207 0.926894198917218 0.0 - outer loop - vertex 4.28051982280347 0.899083513413986 0.0 - vertex 4.23723677682646 0.876154873567243 0.2 - vertex 4.28051982280347 0.899083513413986 0.2 - endloop -endfacet -facet normal -0.3753227198207 0.926894198917218 0.0 - outer loop - vertex 4.28051982280347 0.899083513413986 0.2 - vertex 4.3294302634165 0.913271731804791 0.0 - vertex 4.28051982280347 0.899083513413986 0.0 - endloop -endfacet -facet normal -0.185115133291196 0.982716839901801 0.0 - outer loop - vertex 4.3294302634165 0.913271731804791 0.0 - vertex 4.28051982280347 0.899083513413986 0.2 - vertex 4.3294302634165 0.913271731804791 0.2 - endloop -endfacet -facet normal -0.185115133291196 0.982716839901801 0.0 - outer loop - vertex 4.3294302634165 0.913271731804791 0.2 - vertex 4.38181292625175 0.918001137935059 0.0 - vertex 4.3294302634165 0.913271731804791 0.0 - endloop -endfacet -facet normal -0.00912120952563407 0.999958400903152 0.0 - outer loop - vertex 4.38181292625175 0.918001137935059 0.0 - vertex 4.3294302634165 0.913271731804791 0.2 - vertex 4.38181292625175 0.918001137935059 0.2 - endloop -endfacet -facet normal -0.00912120952563407 0.999958400903152 0.0 - outer loop - vertex 4.38181292625175 0.918001137935059 0.2 - vertex 4.42509597222876 0.914888111115136 0.0 - vertex 4.38181292625175 0.918001137935059 0.0 - endloop -endfacet -facet normal 0.145475165786851 0.989361903521299 0.0 - outer loop - vertex 4.42509597222876 0.914888111115136 0.0 - vertex 4.38181292625175 0.918001137935059 0.2 - vertex 4.42509597222876 0.914888111115136 0.2 - endloop -endfacet -facet normal 0.145475165786851 0.989361903521299 0.0 - outer loop - vertex 4.42509597222876 0.914888111115136 0.2 - vertex 4.46682250479581 0.905549030655366 0.0 - vertex 4.42509597222876 0.914888111115136 0.0 - endloop -endfacet -facet normal 0.293144455107609 0.956068160979992 0.0 - outer loop - vertex 4.46682250479581 0.905549030655366 0.0 - vertex 4.42509597222876 0.914888111115136 0.2 - vertex 4.46682250479581 0.905549030655366 0.2 - endloop -endfacet -facet normal 0.293144455107609 0.956068160979992 0.0 - outer loop - vertex 4.46682250479581 0.905549030655366 0.2 - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.46682250479581 0.905549030655366 0.0 - endloop -endfacet -facet normal 0.366124308864546 0.930565951697385 0.0 - outer loop - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.46682250479581 0.905549030655366 0.2 - vertex 4.53985890326324 0.876813398471458 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.53985890326324 0.775759758624714 0.2 - vertex 4.53985890326324 0.775759758624714 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.53985890326324 0.775759758624714 0.2 - vertex 4.53985890326324 0.876813398471458 0.0 - vertex 4.53985890326324 0.876813398471458 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.53985890326324 0.775759758624714 0.2 - vertex 4.53459070402953 0.775759758624714 0.0 - vertex 4.53985890326324 0.775759758624714 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.53459070402953 0.775759758624714 0.0 - vertex 4.53985890326324 0.775759758624714 0.2 - vertex 4.53459070402953 0.775759758624714 0.2 - endloop -endfacet -facet normal -0.603708660405246 -0.797205025919747 0.0 - outer loop - vertex 4.53459070402953 0.775759758624714 0.2 - vertex 4.50992595307167 0.794437919544255 0.0 - vertex 4.53459070402953 0.775759758624714 0.0 - endloop -endfacet -facet normal -0.556306638945698 -0.830977089614955 0.0 - outer loop - vertex 4.50992595307167 0.794437919544255 0.0 - vertex 4.53459070402953 0.775759758624714 0.2 - vertex 4.50992595307167 0.794437919544255 0.2 - endloop -endfacet -facet normal -0.556306638945698 -0.830977089614955 0.0 - outer loop - vertex 4.50992595307167 0.794437919544255 0.2 - vertex 4.47328802203719 0.815989643682186 0.0 - vertex 4.50992595307167 0.794437919544255 0.0 - endloop -endfacet -facet normal -0.43282617311797 -0.901477400639668 0.0 - outer loop - vertex 4.47328802203719 0.815989643682186 0.0 - vertex 4.50992595307167 0.794437919544255 0.2 - vertex 4.47328802203719 0.815989643682186 0.2 - endloop -endfacet -facet normal -0.43282617311797 -0.901477400639668 0.0 - outer loop - vertex 4.47328802203719 0.815989643682186 0.2 - vertex 4.4292267193552 0.832752095789465 0.0 - vertex 4.47328802203719 0.815989643682186 0.0 - endloop -endfacet -facet normal -0.252022420714891 -0.967721395576747 0.0 - outer loop - vertex 4.4292267193552 0.832752095789465 0.0 - vertex 4.47328802203719 0.815989643682186 0.2 - vertex 4.4292267193552 0.832752095789465 0.2 - endloop -endfacet -facet normal -0.252022420714891 -0.967721395576747 0.0 - outer loop - vertex 4.4292267193552 0.832752095789465 0.2 - vertex 4.38037614464255 0.839936003835442 0.0 - vertex 4.4292267193552 0.832752095789465 0.0 - endloop -endfacet -facet normal -0.0234148588877288 -0.999725834608303 0.0 - outer loop - vertex 4.38037614464255 0.839936003835442 0.0 - vertex 4.4292267193552 0.832752095789465 0.2 - vertex 4.38037614464255 0.839936003835442 0.2 - endloop -endfacet -facet normal -0.0234148588877288 -0.999725834608303 0.0 - outer loop - vertex 4.38037614464255 0.839936003835442 0.2 - vertex 4.34713560345482 0.836628412839274 0.0 - vertex 4.38037614464255 0.839936003835442 0.0 - endloop -endfacet -facet normal 0.208766711475163 -0.977965469830017 0.0 - outer loop - vertex 4.34713560345482 0.836628412839274 0.0 - vertex 4.38037614464255 0.839936003835442 0.2 - vertex 4.34713560345482 0.836628412839274 0.2 - endloop -endfacet -facet normal 0.208766711475163 -0.977965469830017 0.0 - outer loop - vertex 4.34713560345482 0.836628412839274 0.2 - vertex 4.31733735153911 0.826705639850768 0.0 - vertex 4.34713560345482 0.836628412839274 0.0 - endloop -endfacet -facet normal 0.426768496452843 -0.904360907179971 0.0 - outer loop - vertex 4.31733735153911 0.826705639850768 0.0 - vertex 4.34713560345482 0.836628412839274 0.2 - vertex 4.31733735153911 0.826705639850768 0.2 - endloop -endfacet -facet normal 0.426768496452843 -0.904360907179971 0.0 - outer loop - vertex 4.31733735153911 0.826705639850768 0.2 - vertex 4.29098138889543 0.810167684869925 0.0 - vertex 4.31733735153911 0.826705639850768 0.0 - endloop -endfacet -facet normal 0.625279843247521 -0.780400613549449 0.0 - outer loop - vertex 4.29098138889543 0.810167684869925 0.0 - vertex 4.31733735153911 0.826705639850768 0.2 - vertex 4.29098138889543 0.810167684869925 0.2 - endloop -endfacet -facet normal 0.625279843247521 -0.780400613549449 0.0 - outer loop - vertex 4.29098138889543 0.810167684869925 0.0 - vertex 4.26806771552378 0.787014547896745 0.2 - vertex 4.26806771552378 0.787014547896745 0.0 - endloop -endfacet -facet normal 0.781955163451592 -0.623334679246545 0.0 - outer loop - vertex 4.26806771552378 0.787014547896745 0.2 - vertex 4.29098138889543 0.810167684869925 0.0 - vertex 4.29098138889543 0.810167684869925 0.2 - endloop -endfacet -facet normal 0.781955163451592 -0.623334679246545 0.0 - outer loop - vertex 4.26806771552378 0.787014547896745 0.0 - vertex 4.2495242528801 0.757814954984868 0.2 - vertex 4.2495242528801 0.757814954984868 0.0 - endloop -endfacet -facet normal 0.89367395924274 -0.448716898023025 0.0 - outer loop - vertex 4.2495242528801 0.757814954984868 0.2 - vertex 4.26806771552378 0.787014547896745 0.0 - vertex 4.26806771552378 0.787014547896745 0.2 - endloop -endfacet -facet normal 0.89367395924274 -0.448716898023025 0.0 - outer loop - vertex 4.2495242528801 0.757814954984868 0.0 - vertex 4.23627892242033 0.723137632187933 0.2 - vertex 4.23627892242033 0.723137632187933 0.0 - endloop -endfacet -facet normal 0.961021452644306 -0.276473809894227 0.0 - outer loop - vertex 4.23627892242033 0.723137632187933 0.2 - vertex 4.2495242528801 0.757814954984868 0.0 - vertex 4.2495242528801 0.757814954984868 0.2 - endloop -endfacet -facet normal 0.961021452644306 -0.276473809894227 0.0 - outer loop - vertex 4.23627892242033 0.723137632187933 0.0 - vertex 4.22833172414447 0.68298257950594 0.2 - vertex 4.22833172414447 0.68298257950594 0.0 - endloop -endfacet -facet normal 0.991985893896409 -0.126348669603372 0.0 - outer loop - vertex 4.22833172414447 0.68298257950594 0.2 - vertex 4.23627892242033 0.723137632187933 0.0 - vertex 4.23627892242033 0.723137632187933 0.2 - endloop -endfacet -facet normal 0.991985893896409 -0.126348669603372 0.0 - outer loop - vertex 4.22833172414447 0.68298257950594 0.0 - vertex 4.22568265805252 0.63734979693889 0.2 - vertex 4.22568265805252 0.63734979693889 0.0 - endloop -endfacet -facet normal 0.999999895238739 -0.000457736289950238 0.0 - outer loop - vertex 4.22568265805252 0.63734979693889 0.2 - vertex 4.22833172414447 0.68298257950594 0.0 - vertex 4.22833172414447 0.68298257950594 0.2 - endloop -endfacet -facet normal 0.999999895238739 -0.000457736289950238 0.0 - outer loop - vertex 4.22568265805252 0.63734979693889 0.0 - vertex 4.2282419252939 0.592555136977205 0.2 - vertex 4.2282419252939 0.592555136977205 0.0 - endloop -endfacet -facet normal 0.992273219682165 0.124071985160193 0.0 - outer loop - vertex 4.2282419252939 0.592555136977205 0.2 - vertex 4.22568265805252 0.63734979693889 0.0 - vertex 4.22568265805252 0.63734979693889 0.2 - endloop -endfacet -facet normal 0.992273219682165 0.124071985160193 0.0 - outer loop - vertex 4.2282419252939 0.592555136977205 0.0 - vertex 4.23591972701803 0.552998743299044 0.2 - vertex 4.23591972701803 0.552998743299044 0.0 - endloop -endfacet -facet normal 0.962612437510528 0.27088243787673 0.0 - outer loop - vertex 4.23591972701803 0.552998743299044 0.2 - vertex 4.2282419252939 0.592555136977205 0.0 - vertex 4.2282419252939 0.592555136977205 0.2 - endloop -endfacet -facet normal 0.962612437510528 0.27088243787673 0.0 - outer loop - vertex 4.23591972701803 0.552998743299044 0.0 - vertex 4.24871606322493 0.518680615904408 0.2 - vertex 4.24871606322493 0.518680615904408 0.0 - endloop -endfacet -facet normal 0.898470012927288 0.439034891404362 0.0 - outer loop - vertex 4.24871606322493 0.518680615904408 0.2 - vertex 4.23591972701803 0.552998743299044 0.0 - vertex 4.23591972701803 0.552998743299044 0.2 - endloop -endfacet -facet normal 0.898470012927288 0.439034891404362 0.0 - outer loop - vertex 4.24871606322493 0.518680615904408 0.0 - vertex 4.26663093391458 0.489600754793297 0.2 - vertex 4.26663093391458 0.489600754793297 0.0 - endloop -endfacet -facet normal 0.789240434800171 0.614084306977826 0.0 - outer loop - vertex 4.26663093391458 0.489600754793297 0.2 - vertex 4.24871606322493 0.518680615904408 0.0 - vertex 4.24871606322493 0.518680615904408 0.2 - endloop -endfacet -facet normal 0.789240434800171 0.614084306977826 0.0 - outer loop - vertex 4.26663093391458 0.489600754793297 0.0 - vertex 4.28909561303336 0.466447617820117 0.2 - vertex 4.28909561303336 0.466447617820117 0.0 - endloop -endfacet -facet normal 0.628537365803979 0.777779390179629 0.0 - outer loop - vertex 4.28909561303336 0.466447617820117 0.2 - vertex 4.26663093391458 0.489600754793297 0.0 - vertex 4.26663093391458 0.489600754793297 0.2 - endloop -endfacet -facet normal 0.628537365803979 0.777779390179629 0.0 - outer loop - vertex 4.28909561303336 0.466447617820117 0.2 - vertex 4.31554137452761 0.449909662839274 0.0 - vertex 4.28909561303336 0.466447617820117 0.0 - endloop -endfacet -facet normal 0.423267384808038 0.906004812877815 0.0 - outer loop - vertex 4.31554137452761 0.449909662839274 0.0 - vertex 4.28909561303336 0.466447617820117 0.2 - vertex 4.31554137452761 0.449909662839274 0.2 - endloop -endfacet -facet normal 0.423267384808038 0.906004812877815 0.0 - outer loop - vertex 4.31554137452761 0.449909662839274 0.2 - vertex 4.34596821839734 0.439986889850768 0.0 - vertex 4.31554137452761 0.449909662839274 0.0 - endloop -endfacet -facet normal 0.204094833430253 0.978951121847806 0.0 - outer loop - vertex 4.34596821839734 0.439986889850768 0.0 - vertex 4.31554137452761 0.449909662839274 0.2 - vertex 4.34596821839734 0.439986889850768 0.2 - endloop -endfacet -facet normal 0.204094833430253 0.978951121847806 0.0 - outer loop - vertex 4.34596821839734 0.439986889850768 0.2 - vertex 4.38037614464255 0.436679298854599 0.0 - vertex 4.34596821839734 0.439986889850768 0.0 - endloop -endfacet -facet normal -0.00481129071356181 0.999988425673852 0.0 - outer loop - vertex 4.38037614464255 0.436679298854599 0.0 - vertex 4.34596821839734 0.439986889850768 0.2 - vertex 4.38037614464255 0.436679298854599 0.2 - endloop -endfacet -facet normal -0.00481129071356181 0.999988425673852 0.0 - outer loop - vertex 4.38037614464255 0.436679298854599 0.2 - vertex 4.42335986111765 0.441229107283718 0.0 - vertex 4.38037614464255 0.436679298854599 0.0 - endloop -endfacet -facet normal -0.212412834660519 0.977180018047587 0.0 - outer loop - vertex 4.42335986111765 0.441229107283718 0.0 - vertex 4.38037614464255 0.436679298854599 0.2 - vertex 4.42335986111765 0.441229107283718 0.2 - endloop -endfacet -facet normal -0.212412834660519 0.977180018047587 0.0 - outer loop - vertex 4.42335986111765 0.441229107283718 0.2 - vertex 4.46418840517895 0.454878532571074 0.0 - vertex 4.42335986111765 0.441229107283718 0.0 - endloop -endfacet -facet normal -0.40318983395436 0.915116362981154 0.0 - outer loop - vertex 4.46418840517895 0.454878532571074 0.0 - vertex 4.42335986111765 0.441229107283718 0.2 - vertex 4.46418840517895 0.454878532571074 0.2 - endloop -endfacet -facet normal -0.40318983395436 0.915116362981154 0.0 - outer loop - vertex 4.46418840517895 0.454878532571074 0.2 - vertex 4.5016644588188 0.475711865904408 0.0 - vertex 4.46418840517895 0.454878532571074 0.0 - endloop -endfacet -facet normal -0.555388575177809 0.831590963492247 0.0 - outer loop - vertex 4.5016644588188 0.475711865904408 0.0 - vertex 4.46418840517895 0.454878532571074 0.2 - vertex 4.5016644588188 0.475711865904408 0.2 - endloop -endfacet -facet normal -0.555388575177809 0.831590963492247 0.0 - outer loop - vertex 4.5016644588188 0.475711865904408 0.2 - vertex 4.53459070402953 0.501813398471458 0.0 - vertex 4.5016644588188 0.475711865904408 0.0 - endloop -endfacet -facet normal -0.621213734155876 0.783641178407639 0.0 - outer loop - vertex 4.53459070402953 0.501813398471458 0.0 - vertex 4.5016644588188 0.475711865904408 0.2 - vertex 4.53459070402953 0.501813398471458 0.2 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.53459070402953 0.501813398471458 0.2 - vertex 4.53985890326324 0.501813398471458 0.0 - vertex 4.53459070402953 0.501813398471458 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.53985890326324 0.501813398471458 0.0 - vertex 4.53459070402953 0.501813398471458 0.2 - vertex 4.53985890326324 0.501813398471458 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.53985890326324 0.501813398471458 0.0 - vertex 4.53985890326324 0.400759758624714 0.2 - vertex 4.53985890326324 0.400759758624714 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.53985890326324 0.400759758624714 0.2 - vertex 4.53985890326324 0.501813398471458 0.0 - vertex 4.53985890326324 0.501813398471458 0.2 - endloop -endfacet -facet normal 0.410364677328798 -0.911921505175107 0.0 - outer loop - vertex 4.53985890326324 0.400759758624714 0.2 - vertex 4.50633399904869 0.385673551728163 0.0 - vertex 4.53985890326324 0.400759758624714 0.0 - endloop -endfacet -facet normal 0.375577351678058 -0.926791051373769 0.0 - outer loop - vertex 4.50633399904869 0.385673551728163 0.0 - vertex 4.53985890326324 0.400759758624714 0.2 - vertex 4.50633399904869 0.385673551728163 0.2 - endloop -endfacet -facet normal 0.375577351678058 -0.926791051373769 0.0 - outer loop - vertex 4.50633399904869 0.385673551728163 0.2 - vertex 4.46993553161574 0.372503053643871 0.0 - vertex 4.50633399904869 0.385673551728163 0.0 - endloop -endfacet -facet normal 0.291774960866941 -0.956486995317289 0.0 - outer loop - vertex 4.46993553161574 0.372503053643871 0.0 - vertex 4.50633399904869 0.385673551728163 0.2 - vertex 4.46993553161574 0.372503053643871 0.2 - endloop -endfacet -facet normal 0.291774960866941 -0.956486995317289 0.0 - outer loop - vertex 4.46993553161574 0.372503053643871 0.2 - vertex 4.42874779215213 0.362206118777971 0.0 - vertex 4.46993553161574 0.372503053643871 0.0 - endloop -endfacet -facet normal 0.159989675112747 -0.98711868782701 0.0 - outer loop - vertex 4.42874779215213 0.362206118777971 0.0 - vertex 4.46993553161574 0.372503053643871 0.2 - vertex 4.42874779215213 0.362206118777971 0.2 - endloop -endfacet -facet normal 0.159989675112747 -0.98711868782701 0.0 - outer loop - vertex 4.42874779215213 0.362206118777971 0.2 - vertex 4.38181292625175 0.358614164754983 0.0 - vertex 4.42874779215213 0.362206118777971 0.0 - endloop -endfacet -facet normal -0.00197196685745208 -0.999998055671466 0.0 - outer loop - vertex 4.38181292625175 0.358614164754983 0.0 - vertex 4.42874779215213 0.362206118777971 0.2 - vertex 4.38181292625175 0.358614164754983 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.71370947797589 0.370587344831611 0.2 - vertex 4.62367116379964 0.905549030655366 0.2 - vertex 4.62367116379964 0.370587344831611 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.62367116379964 0.905549030655366 0.2 - vertex 4.71370947797589 0.370587344831611 0.2 - vertex 4.71370947797589 0.905549030655366 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.71370947797589 0.370587344831611 0.2 - vertex 4.62367116379964 0.370587344831611 0.0 - vertex 4.71370947797589 0.370587344831611 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.62367116379964 0.370587344831611 0.0 - vertex 4.71370947797589 0.370587344831611 0.2 - vertex 4.62367116379964 0.370587344831611 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.62367116379964 0.905549030655366 0.2 - vertex 4.62367116379964 0.370587344831611 0.0 - vertex 4.62367116379964 0.370587344831611 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.62367116379964 0.370587344831611 0.0 - vertex 4.62367116379964 0.905549030655366 0.2 - vertex 4.62367116379964 0.905549030655366 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.62367116379964 0.905549030655366 0.2 - vertex 4.71370947797589 0.905549030655366 0.0 - vertex 4.62367116379964 0.905549030655366 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.71370947797589 0.905549030655366 0.0 - vertex 4.62367116379964 0.905549030655366 0.2 - vertex 4.71370947797589 0.905549030655366 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.71370947797589 0.905549030655366 0.0 - vertex 4.71370947797589 0.370587344831611 0.2 - vertex 4.71370947797589 0.370587344831611 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.71370947797589 0.370587344831611 0.2 - vertex 4.71370947797589 0.905549030655366 0.0 - vertex 4.71370947797589 0.905549030655366 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.71993553161574 0.995108417628546 0.2 - vertex 4.6174451101598 1.08849922222625 0.2 - vertex 4.6174451101598 0.995108417628546 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.6174451101598 1.08849922222625 0.2 - vertex 4.71993553161574 0.995108417628546 0.2 - vertex 4.71993553161574 1.08849922222625 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.71993553161574 0.995108417628546 0.2 - vertex 4.6174451101598 0.995108417628546 0.0 - vertex 4.71993553161574 0.995108417628546 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.6174451101598 0.995108417628546 0.0 - vertex 4.71993553161574 0.995108417628546 0.2 - vertex 4.6174451101598 0.995108417628546 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.6174451101598 1.08849922222625 0.2 - vertex 4.6174451101598 0.995108417628546 0.0 - vertex 4.6174451101598 0.995108417628546 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.6174451101598 0.995108417628546 0.0 - vertex 4.6174451101598 1.08849922222625 0.2 - vertex 4.6174451101598 1.08849922222625 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.6174451101598 1.08849922222625 0.2 - vertex 4.71993553161574 1.08849922222625 0.0 - vertex 4.6174451101598 1.08849922222625 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.71993553161574 1.08849922222625 0.0 - vertex 4.6174451101598 1.08849922222625 0.2 - vertex 4.71993553161574 1.08849922222625 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.71993553161574 1.08849922222625 0.0 - vertex 4.71993553161574 0.995108417628546 0.2 - vertex 4.71993553161574 0.995108417628546 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.71993553161574 0.995108417628546 0.2 - vertex 4.71993553161574 1.08849922222625 0.0 - vertex 4.71993553161574 1.08849922222625 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.93784740901037 0.370587344831611 0.2 - vertex 4.84780909483413 0.905549030655366 0.2 - vertex 4.84780909483413 0.370587344831611 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.84780909483413 0.905549030655366 0.2 - vertex 4.93784740901037 0.370587344831611 0.2 - vertex 4.93784740901037 0.905549030655366 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.93784740901037 0.370587344831611 0.2 - vertex 4.84780909483413 0.370587344831611 0.0 - vertex 4.93784740901037 0.370587344831611 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.84780909483413 0.370587344831611 0.0 - vertex 4.93784740901037 0.370587344831611 0.2 - vertex 4.84780909483413 0.370587344831611 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.84780909483413 0.905549030655366 0.2 - vertex 4.84780909483413 0.370587344831611 0.0 - vertex 4.84780909483413 0.370587344831611 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.84780909483413 0.370587344831611 0.0 - vertex 4.84780909483413 0.905549030655366 0.2 - vertex 4.84780909483413 0.905549030655366 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.84780909483413 0.905549030655366 0.2 - vertex 4.93784740901037 0.905549030655366 0.0 - vertex 4.84780909483413 0.905549030655366 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.93784740901037 0.905549030655366 0.0 - vertex 4.84780909483413 0.905549030655366 0.2 - vertex 4.93784740901037 0.905549030655366 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.93784740901037 0.905549030655366 0.0 - vertex 4.93784740901037 0.370587344831611 0.2 - vertex 4.93784740901037 0.370587344831611 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.93784740901037 0.370587344831611 0.2 - vertex 4.93784740901037 0.905549030655366 0.0 - vertex 4.93784740901037 0.905549030655366 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.94407346265022 0.995108417628546 0.2 - vertex 4.84158304119428 1.08849922222625 0.2 - vertex 4.84158304119428 0.995108417628546 0.2 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.84158304119428 1.08849922222625 0.2 - vertex 4.94407346265022 0.995108417628546 0.2 - vertex 4.94407346265022 1.08849922222625 0.2 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.94407346265022 0.995108417628546 0.2 - vertex 4.84158304119428 0.995108417628546 0.0 - vertex 4.94407346265022 0.995108417628546 0.0 - endloop -endfacet -facet normal 0.0 -1.0 0.0 - outer loop - vertex 4.84158304119428 0.995108417628546 0.0 - vertex 4.94407346265022 0.995108417628546 0.2 - vertex 4.84158304119428 0.995108417628546 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.84158304119428 1.08849922222625 0.2 - vertex 4.84158304119428 0.995108417628546 0.0 - vertex 4.84158304119428 0.995108417628546 0.2 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.84158304119428 0.995108417628546 0.0 - vertex 4.84158304119428 1.08849922222625 0.2 - vertex 4.84158304119428 1.08849922222625 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.84158304119428 1.08849922222625 0.2 - vertex 4.94407346265022 1.08849922222625 0.0 - vertex 4.84158304119428 1.08849922222625 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.94407346265022 1.08849922222625 0.0 - vertex 4.84158304119428 1.08849922222625 0.2 - vertex 4.94407346265022 1.08849922222625 0.2 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.94407346265022 1.08849922222625 0.0 - vertex 4.94407346265022 0.995108417628546 0.2 - vertex 4.94407346265022 0.995108417628546 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 4.94407346265022 0.995108417628546 0.2 - vertex 4.94407346265022 1.08849922222625 0.0 - vertex 4.94407346265022 1.08849922222625 0.2 - endloop -endfacet -endsolid Untitled-5427e5af diff --git a/embeddable/testfiles/objects_binary.stl b/embeddable/testfiles/objects_binary.stl deleted file mode 100644 index dcb5ab87cc2ac739c52e752ee98139f0e2619e01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36484 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 I 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 I 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.current=1E3*(this.frames/c),this.start=b,this.frames=0);return parseInt(this.current,10)}; -JSM.SwapArrayValues=function(a,b,c){var d=a[b];a[b]=a[c];a[c]=d};JSM.BubbleSort=function(a,b,c){if(2>a.length||void 0===b||null===b)return!1;if(void 0===c||null===c)c=function(b,c){JSM.SwapArrayValues(a,b,c)};var d,e;for(d=0;dJSM.Eps};JSM.IsNegative=function(a){return a<-JSM.Eps};JSM.IsLower=function(a,b){return b-a>JSM.Eps}; -JSM.IsGreater=function(a,b){return a-b>JSM.Eps};JSM.IsEqual=function(a,b){return Math.abs(b-a)a?0:Math.sqrt(a)}var k=a.DistanceTo(b),l=b.DistanceTo(c),m=c.DistanceTo(a);a=a.DistanceTo(g);b=b.DistanceTo(g);g=c.DistanceTo(g);c=h(k,l,m);if(JSM.IsZero(c))return d;k=h(k,a,b);l=h(l,b,g);m=h(m,a,g);d=d.Clone().MultiplyScalar(l);e=e.Clone().MultiplyScalar(m);f=f.Clone().MultiplyScalar(k);f=JSM.CoordAdd(JSM.CoordAdd(d,e),f);f.MultiplyScalar(1/c);return f}; -JSM.MatrixIdentity=function(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]};JSM.MatrixClone=function(a){var b=[];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 b}; -JSM.MatrixTranspose=function(a){var b=[];b[0]=a[0];b[1]=a[4];b[2]=a[8];b[3]=a[12];b[4]=a[1];b[5]=a[5];b[6]=a[9];b[7]=a[13];b[8]=a[2];b[9]=a[6];b[10]=a[10];b[11]=a[14];b[12]=a[3];b[13]=a[7];b[14]=a[11];b[15]=a[15];return b};JSM.MatrixVectorMultiply=function(a,b){var c=b[0],d=b[1],e=b[2],f=b[3],g=a[1],h=a[2],k=a[3],l=a[5],m=a[6],n=a[7],q=a[9],p=a[10],r=a[11],s=a[13],v=a[14],u=a[15],t=[];t[0]=c*a[0]+d*a[4]+e*a[8]+f*a[12];t[1]=c*g+d*l+e*q+f*s;t[2]=c*h+d*m+e*p+f*v;t[3]=c*k+d*n+e*r+f*u;return t}; -JSM.MatrixMultiply=function(a,b){var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],k=a[6],l=a[7],m=a[8],n=a[9],q=a[10],p=a[11],r=a[12],s=a[13],v=a[14],u=a[15],t=b[0],y=b[1],B=b[2],C=b[3],w=b[4],x=b[5],A=b[6],E=b[7],G=b[8],H=b[9],z=b[10],D=b[11],K=b[12],L=b[13],F=b[14],J=b[15],I=[];I[0]=c*t+d*w+e*G+f*K;I[1]=c*y+d*x+e*H+f*L;I[2]=c*B+d*A+e*z+f*F;I[3]=c*C+d*E+e*D+f*J;I[4]=g*t+h*w+k*G+l*K;I[5]=g*y+h*x+k*H+l*L;I[6]=g*B+h*A+k*z+l*F;I[7]=g*C+h*E+k*D+l*J;I[8]=m*t+n*w+q*G+p*K;I[9]=m*y+n*x+q*H+p*L;I[10]=m*B+n*A+ -q*z+p*F;I[11]=m*C+n*E+q*D+p*J;I[12]=r*t+s*w+v*G+u*K;I[13]=r*y+s*x+v*H+u*L;I[14]=r*B+s*A+v*z+u*F;I[15]=r*C+s*E+v*D+u*J;return I};JSM.MatrixDeterminant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],l=a[8],m=a[9],n=a[10],q=a[11],p=a[12],r=a[13],s=a[14];a=a[15];return(b*g-c*f)*(n*a-q*s)-(b*h-d*f)*(m*a-q*r)+(b*k-e*f)*(m*s-n*r)+(c*h-d*g)*(l*a-q*p)-(c*k-e*g)*(l*s-n*p)+(d*k-e*h)*(l*r-m*p)}; -JSM.MatrixInvert=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],k=a[7],l=a[8],m=a[9],n=a[10],q=a[11],p=a[12],r=a[13],s=a[14];a=a[15];var v=b*g-c*f,u=b*h-d*f,t=b*k-e*f,y=c*h-d*g,B=c*k-e*g,C=d*k-e*h,w=l*r-m*p,x=l*s-n*p,A=l*a-q*p,E=m*s-n*r,G=m*a-q*r,H=n*a-q*s,z=v*H-u*G+t*E+y*A-B*x+C*w;if(JSM.IsZero(z))return null;var D=[];D[0]=(g*H-h*G+k*E)/z;D[1]=(d*G-c*H-e*E)/z;D[2]=(r*C-s*B+a*y)/z;D[3]=(n*B-m*C-q*y)/z;D[4]=(h*A-f*H-k*x)/z;D[5]=(b*H-d*A+e*x)/z;D[6]=(s*t-p*C-a*u)/z;D[7]=(l*C-n*t+q* -u)/z;D[8]=(f*G-g*A+k*w)/z;D[9]=(c*A-b*G-e*w)/z;D[10]=(p*B-r*t+a*v)/z;D[11]=(m*t-l*B-q*v)/z;D[12]=(g*x-f*E-h*w)/z;D[13]=(b*E-c*x+d*w)/z;D[14]=(r*u-p*y-s*v)/z;D[15]=(l*y-m*u+n*v)/z;return D};JSM.MatrixTranslation=function(a,b,c){var d=[1,0,0,0,0,1,0,0,0,0,1,0];d[12]=a;d[13]=b;d[14]=c;d[15]=1;return d}; -JSM.MatrixRotation=function(a,b,c){var d=a.Clone().Normalize();a=d.x;var e=d.y,d=d.z,f=a*a,g=e*e,h=d*d,k=Math.sin(b);b=Math.cos(b);var l=[];if(void 0===c||null===c)l[0]=f+(g+h)*b,l[1]=a*e*(1-b)+d*k,l[2]=a*d*(1-b)-e*k,l[3]=0,l[4]=a*e*(1-b)-d*k,l[5]=g+(f+h)*b,l[6]=e*d*(1-b)+a*k,l[7]=0,l[8]=a*d*(1-b)+e*k,l[9]=e*d*(1-b)-a*k,l[10]=h+(f+g)*b,l[11]=0,l[12]=0,l[13]=0,l[14]=0;else{var m=c.x,n=c.y;c=c.z;l[0]=f+(g+h)*b;l[1]=a*e*(1-b)+d*k;l[2]=a*d*(1-b)-e*k;l[3]=0;l[4]=a*e*(1-b)-d*k;l[5]=g+(f+h)*b;l[6]=e*d*(1- -b)+a*k;l[7]=0;l[8]=a*d*(1-b)+e*k;l[9]=e*d*(1-b)-a*k;l[10]=h+(f+g)*b;l[11]=0;l[12]=(m*(g+h)-a*(n*e+c*d))*(1-b)+(n*d-c*e)*k;l[13]=(n*(f+h)-e*(m*a+c*d))*(1-b)+(c*a-m*d)*k;l[14]=(c*(f+g)-d*(m*a+n*e))*(1-b)+(m*e-n*a)*k}l[15]=1;return l}; -JSM.MatrixRotationQuaternion=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=b+b,g=c+c,h=d+d;a=b*f;var k=b*g,b=b*h,l=c*g,c=c*h,d=d*h,f=e*f,g=e*g,e=e*h,h=[];h[0]=1-(l+d);h[1]=k+e;h[2]=b-g;h[3]=0;h[4]=k-e;h[5]=1-(a+d);h[6]=c+f;h[7]=0;h[8]=b+g;h[9]=c-f;h[10]=1-(a+l);h[11]=0;h[12]=0;h[13]=0;h[14]=0;h[15]=1;return h};JSM.MatrixRotationX=function(a){var b=Math.sin(a);a=Math.cos(a);var c=[1,0,0,0,0];c[5]=a;c[6]=b;c[7]=0;c[8]=0;c[9]=-b;c[10]=a;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return c}; -JSM.MatrixRotationY=function(a){var b=Math.sin(a);a=Math.cos(a);var c=[];c[0]=a;c[1]=0;c[2]=-b;c[3]=0;c[4]=0;c[5]=1;c[6]=0;c[7]=0;c[8]=b;c[9]=0;c[10]=a;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return c};JSM.MatrixRotationZ=function(a){var b=Math.sin(a);a=Math.cos(a);var c=[];c[0]=a;c[1]=b;c[2]=0;c[3]=0;c[4]=-b;c[5]=a;c[6]=0;c[7]=0;c[8]=0;c[9]=0;c[10]=1;c[11]=0;c[12]=0;c[13]=0;c[14]=0;c[15]=1;return c}; -JSM.ApplyTransformation=function(a,b){var c=[];c[0]=b.x;c[1]=b.y;c[2]=b.z;c[3]=1;c=JSM.MatrixVectorMultiply(a,c);return new JSM.Coord(c[0],c[1],c[2])};JSM.ApplyRotation=function(a,b){var c=[];c[0]=b.x;c[1]=b.y;c[2]=b.z;c[3]=0;c=JSM.MatrixVectorMultiply(a,c);return new JSM.Coord(c[0],c[1],c[2])};JSM.CoordSystem=function(a,b,c,d){this.origo=a;this.e1=b;this.e2=c;this.e3=d};JSM.CoordSystem.prototype.Set=function(a,b,c,d){this.origo=a;this.e1=b;this.e2=c;this.e3=d}; -JSM.CoordSystem.prototype.ToDirectionVectors=function(){this.e1=JSM.CoordSub(this.e1,this.origo);this.e2=JSM.CoordSub(this.e2,this.origo);this.e3=JSM.CoordSub(this.e3,this.origo);return this};JSM.CoordSystem.prototype.ToAbsoluteCoords=function(){this.e1=JSM.CoordAdd(this.e1,this.origo);this.e2=JSM.CoordAdd(this.e2,this.origo);this.e3=JSM.CoordAdd(this.e3,this.origo);return this}; -JSM.CoordSystem.prototype.Clone=function(){return new JSM.CoordSystem(this.origo.Clone(),this.e1.Clone(),this.e2.Clone(),this.e3.Clone())};JSM.CoordSectorPosition2D={CoordInsideOfSector:0,CoordOnSectorEndCoord:1,CoordOutsideOfSector:2};JSM.SectorSectorPosition2D={SectorsDontIntersect:0,SectorsIntersectCoincident:1,SectorsIntersectEndPoint:2,SectorsIntersectOnePoint:3};JSM.CoordSectorPosition={CoordInsideOfSector:0,CoordOnSectorEndCoord:1,CoordOutsideOfSector:2}; -JSM.Sector2D=function(a,b){this.beg=a;this.end=b};JSM.Sector2D.prototype.Set=function(a,b){this.beg=a;this.end=b};JSM.Sector2D.prototype.GetLength=function(){return this.beg.DistanceTo(this.end)}; -JSM.Sector2D.prototype.CoordPosition=function(a){var b=a.x,c=a.y,d=this.beg.x,e=this.beg.y,f=this.end.x,g=this.end.y,h=this.GetLength();if(JSM.IsZero(h))return a.IsEqual(this.beg)?JSM.CoordSectorPosition2D.CoordOnSectorEndCoord:JSM.CoordSectorPosition2D.CoordOutsideOfSector;a=((b-d)*(f-d)+(c-e)*(g-e))/(h*h);if(JSM.IsLower(a,0)||JSM.IsGreater(a,1))return JSM.CoordSectorPosition2D.CoordOutsideOfSector;e+=a*(g-e);return!JSM.IsEqual(d+a*(f-d),b)||!JSM.IsEqual(e,c)?JSM.CoordSectorPosition2D.CoordOutsideOfSector: -JSM.IsEqual(a,0)||JSM.IsEqual(a,1)?JSM.CoordSectorPosition2D.CoordOnSectorEndCoord:JSM.CoordSectorPosition2D.CoordInsideOfSector}; -JSM.Sector2D.prototype.SectorPosition=function(a,b){function c(a,b,c){return!c.IsEqual(a)&&!c.IsEqual(b)&&JSM.IsLowerOrEqual(c.x,Math.max(a.x,b.x))&&JSM.IsLowerOrEqual(c.y,Math.max(a.y,b.y))&&JSM.IsGreaterOrEqual(c.x,Math.min(a.x,b.x))&&JSM.IsGreaterOrEqual(c.y,Math.min(a.y,b.y))?!0:!1}var d=void 0!==b&&null!==b,e=this.beg,f=this.end,g=a.beg,h=a.end,k=e.IsEqual(g)||e.IsEqual(h),l=f.IsEqual(g)||f.IsEqual(h);if(k&&l)return JSM.SectorSectorPosition2D.SectorsIntersectCoincident;var m=e.x,n=e.y,q=f.x, -p=f.y,r=g.x,s=g.y,v=h.x,u=h.y,t=(v-r)*(n-s)-(u-s)*(m-r),y=(q-m)*(n-s)-(p-n)*(m-r),r=(u-s)*(q-m)-(v-r)*(p-n);if(JSM.IsZero(r)){if(JSM.IsZero(t)&&JSM.IsZero(y)){if(c(e,f,g)||c(e,f,h)||c(g,h,e)||c(g,h,f))return JSM.SectorSectorPosition2D.SectorsIntersectCoincident;if(k)return d&&(b.x=e.x,b.y=e.y),JSM.SectorSectorPosition2D.SectorsIntersectEndPoint;if(l)return d&&(b.x=f.x,b.y=f.y),JSM.SectorSectorPosition2D.SectorsIntersectEndPoint}return JSM.SectorSectorPosition2D.SectorsDontIntersect}g=t/r;y/=r;if(JSM.IsLower(g, -0)||JSM.IsGreater(g,1)||JSM.IsLower(y,0)||JSM.IsGreater(y,1))return JSM.SectorSectorPosition2D.SectorsDontIntersect;if(k)return d&&(b.x=e.x,b.y=e.y),JSM.SectorSectorPosition2D.SectorsIntersectEndPoint;if(l)return d&&(b.x=f.x,b.y=f.y),JSM.SectorSectorPosition2D.SectorsIntersectEndPoint;d&&(b.x=m+g*(q-m),b.y=n+g*(p-n));return JSM.SectorSectorPosition2D.SectorsIntersectOnePoint}; -JSM.Sector2D.prototype.ProjectCoord=function(a){var b=a.x,c=a.y;a=this.beg;var d=this.end,e=a.x,f=a.y,g=d.x,h=d.y,k=(g-e)*(g-e)+(h-f)*(h-f);if(JSM.IsZero(k))return a.Clone();b=((g-e)*(b-e)+(h-f)*(c-f))/k;if(JSM.IsLower(b,0))return a.Clone();if(JSM.IsGreater(b,1))return d.Clone();b=JSM.CoordSub2D(d,a).MultiplyScalar(b);return JSM.CoordAdd2D(a,b)};JSM.Sector2D.prototype.Clone=function(){return new JSM.Sector2D(this.beg.Clone(),this.end.Clone())};JSM.Sector=function(a,b){this.beg=a;this.end=b}; -JSM.Sector.prototype.Set=function(a,b){this.beg=a;this.end=b};JSM.Sector.prototype.GetLength=function(){return this.beg.DistanceTo(this.end)}; -JSM.Sector.prototype.CoordPosition=function(a){var b=a.x,c=a.y,d=a.z,e=this.beg,f=JSM.CoordSub(this.end,this.beg),g=e.x,h=e.y,k=e.z,l=e.x+f.x,m=e.y+f.y,n=e.z+f.z,q=(l-g)*(l-g)+(m-h)*(m-h)+(n-k)*(n-k);if(JSM.IsZero(q))return e.IsEqual(a)?JSM.CoordSectorPosition.CoordOnSectorEndCoord:JSM.CoordSectorPosition.CoordOutsideOfSector;b=((l-g)*(b-g)+(m-h)*(c-h)+(n-k)*(d-k))/q;f=f.Clone().MultiplyScalar(b);e=JSM.CoordAdd(e,f);a=a.DistanceTo(e);return JSM.IsZero(a)?JSM.IsLower(b,0)||JSM.IsGreater(b,1)?JSM.CoordSectorPosition.CoordOutsideOfSector: -JSM.IsEqual(b,0)||JSM.IsEqual(b,1)?JSM.CoordSectorPosition.CoordOnSectorEndCoord:JSM.CoordSectorPosition.CoordInsideOfSector:JSM.CoordSectorPosition.CoordOutsideOfSector};JSM.Sector.prototype.Clone=function(){return new JSM.Sector(this.beg.Clone(),this.end.Clone())};JSM.GetSectorSegmentation2D=function(a,b){var c=JSM.CoordSub2D(a.end,a.beg),d=a.beg.DistanceTo(a.end)/b,e=0,f=[],g,h;for(g=0;g<=b;g++)h=a.beg.Clone().Offset(c,e),f.push(h),e+=d;return f}; -JSM.GetSectorSegmentation=function(a,b){var c=JSM.CoordSub(a.end,a.beg),d=a.beg.DistanceTo(a.end)/b,e=0,f=[],g,h;for(g=0;g<=b;g++)h=a.beg.Clone().Offset(c,e),f.push(h),e+=d;return f};JSM.CoordLinePosition2D={CoordOnLine:0,CoordAtLineLeft:1,CoordAtLineRight:2};JSM.LineLinePosition2D={LinesDontIntersect:0,LinesIntersectsOnePoint:1,LinesIntersectsCoincident:2};JSM.CoordLinePosition={CoordOnLine:0,CoordOutsideOfLine:1};JSM.LineLinePosition={LinesDontIntersect:0,LinesIntersectsOnePoint:1,LinesIntersectsCoincident:2}; -JSM.Line2D=function(a,b){this.start=a;this.direction=b};JSM.Line2D.prototype.Set=function(a,b){this.start=a;this.direction=b};JSM.Line2D.prototype.CoordPosition=function(a){a=this.CoordSignedDistance(a);return JSM.IsPositive(a)?JSM.CoordLinePosition2D.CoordAtLineLeft:JSM.IsNegative(a)?JSM.CoordLinePosition2D.CoordAtLineRight:JSM.CoordLinePosition2D.CoordOnLine};JSM.Line2D.prototype.CoordSignedDistance=function(a){var b=this.start,c=this.direction;return c.x*(a.y-b.y)-c.y*(a.x-b.x)}; -JSM.Line2D.prototype.LinePosition=function(a,b){var c=this.start.x,d=this.start.y,e=this.start.x+this.direction.x,f=this.start.y+this.direction.y,g=a.start.x,h=a.start.y,k=a.start.x+a.direction.x,l=a.start.y+a.direction.y,m=(k-g)*(d-h)-(l-h)*(c-g),n=(e-c)*(d-h)-(f-d)*(c-g),g=(l-h)*(e-c)-(k-g)*(f-d);if(JSM.IsZero(g))return JSM.IsZero(m)&&JSM.IsZero(n)?JSM.LineLinePosition2D.LinesIntersectsCoincident:JSM.LineLinePosition2D.LinesDontIntersect;m/=g;null!==b&&(b.x=c+m*(e-c),b.y=d+m*(f-d));return JSM.LineLinePosition2D.LinesIntersectsOnePoint}; -JSM.Line2D.prototype.Clone=function(){return new JSM.Line2D(this.start.Clone(),this.direction.Clone())};JSM.Line=function(a,b){this.start=a;this.direction=b};JSM.Line.prototype.Set=function(a,b){this.start=a;this.direction=b}; -JSM.Line.prototype.CoordPosition=function(a,b){var c=a.x,d=a.y,e=a.z,f=this.start,g=this.direction,h=f.x,k=f.y,l=f.z,m=f.x+g.x,n=f.y+g.y,q=f.z+g.z,p=(m-h)*(m-h)+(n-k)*(n-k)+(q-l)*(q-l);if(JSM.IsZero(p))return void 0!==b&&b.Set(f.x,f.y,f.z),f.IsEqual(a)?JSM.CoordLinePosition.CoordOnLine:JSM.CoordLinePosition.CoordOutsideOfLine;c=g.Clone().MultiplyScalar(((m-h)*(c-h)+(n-k)*(d-k)+(q-l)*(e-l))/p);f=JSM.CoordAdd(f,c);void 0!==b&&b.Set(f.x,f.y,f.z);f=a.DistanceTo(f);return JSM.IsZero(f)?JSM.CoordLinePosition.CoordOnLine: -JSM.CoordLinePosition.CoordOutsideOfLine};JSM.Line.prototype.ProjectCoord=function(a){var b=a.x,c=a.y,d=a.z;a=this.start;var e=this.direction,f=a.x,g=a.y,h=a.z,k=a.x+e.x,l=a.y+e.y,m=a.z+e.z,n=(k-f)*(k-f)+(l-g)*(l-g)+(m-h)*(m-h);if(JSM.IsZero(n))return a.Clone();b=e.Clone().MultiplyScalar(((k-f)*(b-f)+(l-g)*(c-g)+(m-h)*(d-h))/n);return JSM.CoordAdd(a,b)}; -JSM.Line.prototype.ClosestPoint=function(a,b,c){function d(a,b,c,d,e){return(a[b].x-a[c].x)*(a[d].x-a[e].x)+(a[b].y-a[c].y)*(a[d].y-a[e].y)+(a[b].z-a[c].z)*(a[d].z-a[e].z)}var e=this.direction.Clone().Normalize(),f=this.start,g=JSM.CoordAdd(f,e),h=a.direction.Clone().Normalize();a=a.start;var k=JSM.CoordAdd(a,h),l=[f,g,a,k],m=d(l,1,0,1,0),n=d(l,0,2,1,0),g=d(l,0,2,3,2),k=d(l,3,2,1,0),l=d(l,3,2,3,2),m=m*l-k*k;if(JSM.IsEqual(m,0))return!1;n=(g*k-n*l)/m;g=(g+n*k)/l;void 0!==b&&(e.MultiplyScalar(n),e= -JSM.CoordAdd(f,e),b.Set(e.x,e.y,e.z));void 0!==c&&(h.MultiplyScalar(g),b=JSM.CoordAdd(a,h),c.Set(b.x,b.y,b.z));return!0};JSM.Line.prototype.LinePosition=function(a,b){var c=new JSM.Coord(0,0,0),d=new JSM.Coord(0,0,0);return!this.ClosestPoint(a,c,d)?JSM.LineLinePosition.LinesIntersectsCoincident:c.IsEqual(d)?(void 0!==b&&b.Set(c.x,c.y,c.z),JSM.LineLinePosition.LinesIntersectsOnePoint):JSM.LineLinePosition.LinesDontIntersect}; -JSM.Line.prototype.Clone=function(){return new JSM.Line(this.start.Clone(),this.direction.Clone())};JSM.Box2D=function(a,b){this.min=a;this.max=b};JSM.Box2D.prototype.Set=function(a,b){this.min=a;this.max=b};JSM.Box2D.prototype.GetCenter=function(){return JSM.MidCoord2D(this.min,this.max)};JSM.Box2D.prototype.Clone=function(){return new JSM.Box2D(this.min.Clone(),this.max.Clone())};JSM.Box=function(a,b){this.min=a;this.max=b};JSM.Box.prototype.Set=function(a,b){this.min=a;this.max=b}; -JSM.Box.prototype.GetCenter=function(){return JSM.MidCoord(this.min,this.max)};JSM.Box.prototype.GetSize=function(){return JSM.CoordSub(this.max,this.min)};JSM.Box.prototype.IsCoordInside=function(a){return JSM.IsLower(a.x,this.min.x)||JSM.IsLower(a.y,this.min.y)||JSM.IsLower(a.z,this.min.z)||JSM.IsGreater(a.x,this.max.x)||JSM.IsGreater(a.y,this.max.y)||JSM.IsGreater(a.z,this.max.z)?!1:!0};JSM.Box.prototype.Clone=function(){return new JSM.Box(this.min.Clone(),this.max.Clone())}; -JSM.BoxUnion=function(a,b){var c=new JSM.Coord(JSM.Minimum(a.min.x,b.min.x),JSM.Minimum(a.min.y,b.min.y),JSM.Minimum(a.min.z,b.min.z)),d=new JSM.Coord(JSM.Maximum(a.max.x,b.max.x),JSM.Maximum(a.max.y,b.max.y),JSM.Maximum(a.max.z,b.max.z));return new JSM.Box(c,d)};JSM.Sphere=function(a,b){this.center=a;this.radius=b};JSM.Sphere.prototype.Set=function(a,b){this.center=a;this.radius=b};JSM.Sphere.prototype.GetCenter=function(){return this.center};JSM.Sphere.prototype.GetRadius=function(){return this.radius}; -JSM.Sphere.prototype.Clone=function(){return new JSM.Sphere(this.center.Clone(),this.radius)};JSM.Transformation=function(){this.matrix=JSM.MatrixIdentity()};JSM.Transformation.prototype.GetMatrix=function(){return this.matrix};JSM.Transformation.prototype.SetMatrix=function(a){this.matrix=a};JSM.Transformation.prototype.Append=function(a){this.matrix=JSM.MatrixMultiply(this.matrix,a.matrix)};JSM.Transformation.prototype.Apply=function(a){return JSM.ApplyTransformation(this.matrix,a)}; -JSM.Transformation.prototype.Clone=function(){var a=new JSM.Transformation;a.matrix=JSM.MatrixClone(this.matrix);return a};JSM.IdentityTransformation=function(){var a=new JSM.Transformation;a.matrix=JSM.MatrixIdentity();return a};JSM.TranslationTransformation=function(a){var b=new JSM.Transformation;b.matrix=JSM.MatrixTranslation(a.x,a.y,a.z);return b};JSM.OffsetTransformation=function(a,b){var c=a.Clone().Normalize().Clone().MultiplyScalar(b);return JSM.TranslationTransformation(c)}; -JSM.RotationTransformation=function(a,b,c){var d=new JSM.Transformation;d.matrix=JSM.MatrixRotation(a,b,c);return d};JSM.RotationXTransformation=function(a,b){var c=new JSM.Transformation;void 0===b||null===b?c.matrix=JSM.MatrixRotationX(a):(c.Append(JSM.TranslationTransformation(new JSM.Vector(-b.x,-b.y,-b.z))),c.Append(JSM.RotationXTransformation(a)),c.Append(JSM.TranslationTransformation(new JSM.Vector(b.x,b.y,b.z))));return c}; -JSM.RotationYTransformation=function(a,b){var c=new JSM.Transformation;void 0===b||null===b?c.matrix=JSM.MatrixRotationY(a):(c.Append(JSM.TranslationTransformation(new JSM.Vector(-b.x,-b.y,-b.z))),c.Append(JSM.RotationYTransformation(a)),c.Append(JSM.TranslationTransformation(new JSM.Vector(b.x,b.y,b.z))));return c}; -JSM.RotationZTransformation=function(a,b){var c=new JSM.Transformation;void 0===b||null===b?c.matrix=JSM.MatrixRotationZ(a):(c.Append(JSM.TranslationTransformation(new JSM.Vector(-b.x,-b.y,-b.z))),c.Append(JSM.RotationZTransformation(a)),c.Append(JSM.TranslationTransformation(new JSM.Vector(b.x,b.y,b.z))));return c}; -JSM.RotationXYZTransformation=function(a,b,c,d){var e=new JSM.Transformation;e.Append(JSM.RotationXTransformation(a,d));e.Append(JSM.RotationYTransformation(b,d));e.Append(JSM.RotationZTransformation(c,d));return e};JSM.CoordPlanePosition={CoordOnPlane:0,CoordInFrontOfPlane:1,CoordAtBackOfPlane:2};JSM.LinePlanePosition={LineParallelToPlane:0,LineIntersectsPlane:1};JSM.Plane=function(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d}; -JSM.Plane.prototype.Set=function(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d};JSM.Plane.prototype.GetNormal=function(){return new JSM.Vector(this.a,this.b,this.c)};JSM.Plane.prototype.CoordSignedDistance=function(a){var b=this.a,c=this.b,d=this.c;return(b*a.x+c*a.y+d*a.z+this.d)/Math.sqrt(b*b+c*c+d*d)};JSM.Plane.prototype.CoordDistance=function(a){a=this.CoordSignedDistance(a);return Math.abs(a)}; -JSM.Plane.prototype.ProjectCoord=function(a){var b=a.x,c=a.y,d=a.z,e=this.a,f=this.b,g=this.c,h=this.d,k=this.CoordDistance(a);JSM.IsGreater(e*b+f*c+g*d+h,0)&&(k=-k);b=this.GetNormal().Normalize();return a.Clone().Offset(b,k)};JSM.Plane.prototype.CoordPosition=function(a){a=this.a*a.x+this.b*a.y+this.c*a.z+this.d;return JSM.IsPositive(a)?JSM.CoordPlanePosition.CoordInFrontOfPlane:JSM.IsNegative(a)?JSM.CoordPlanePosition.CoordAtBackOfPlane:JSM.CoordPlanePosition.CoordOnPlane}; -JSM.Plane.prototype.LinePosition=function(a,b){var c=a.direction.Clone().Normalize(),d=a.start.x,e=a.start.y,f=a.start.z,g=this.a,h=this.b,k=this.c,l=this.d,m=g*(d-(a.start.x+c.x))+h*(e-(a.start.y+c.y))+k*(f-(a.start.z+c.z));if(JSM.IsZero(m))return JSM.LinePlanePosition.LineParallelToPlane;void 0!==b&&(c.MultiplyScalar((g*d+h*e+k*f+l)/m),c=JSM.CoordAdd(a.start,c),b.Set(c.x,c.y,c.z));return JSM.LinePlanePosition.LineIntersectsPlane}; -JSM.Plane.prototype.LineIntersection=function(a){var b=a.direction.Clone().Normalize(),c=a.start.x,d=a.start.y,e=a.start.z,f=this.a,g=this.b,h=this.c,k=this.d,l=f*(c-(a.start.x+b.x))+g*(d-(a.start.y+b.y))+h*(e-(a.start.z+b.z));if(JSM.IsZero(l))return null;b.MultiplyScalar((f*c+g*d+h*e+k)/l);return JSM.CoordAdd(a.start,b)};JSM.Plane.prototype.Clone=function(){return new JSM.Plane(this.a,this.b,this.c,this.d)}; -JSM.GetPlaneFromCoordAndDirection=function(a,b){var c=new JSM.Plane,d=b.Clone().Normalize(),e=d.x,f=d.y,d=d.z;c.Set(e,f,d,-(e*a.x+f*a.y+d*a.z));return c};JSM.GetPlaneFromThreeCoords=function(a,b,c){var d=new JSM.Plane,e=(b.y-a.y)*(c.z-a.z)-(c.y-a.y)*(b.z-a.z),f=(b.z-a.z)*(c.x-a.x)-(c.z-a.z)*(b.x-a.x);b=(b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);d.Set(e,f,b,-(e*a.x+f*a.y+b*a.z));return d}; -JSM.CoordPlaneSignedDirectionalDistance=function(a,b,c){var d=b.Clone().Normalize();b=a.x;var e=a.y,f=a.z,g=c.a,h=c.b,k=c.c;c=c.d;var l=g*(b-(a.x+d.x))+h*(e-(a.y+d.y))+k*(f-(a.z+d.z));if(JSM.IsZero(l))return 0;d.MultiplyScalar((g*b+h*e+k*f+c)/l);d=JSM.CoordAdd(a,d);a=a.DistanceTo(d);JSM.IsNegative(g*b+h*e+k*f+c)&&(a=-a);return a};JSM.CoordPlaneDirectionalDistance=function(a,b,c){return Math.abs(JSM.CoordPlaneSignedDirectionalDistance(a,b,c))}; -JSM.MatrixView=function(a,b,c){if(a.IsEqual(b))return JSM.MatrixIdentity();var d=[];b=JSM.CoordSub(a,b).Normalize();c=JSM.VectorCross(c,b).Normalize();var e=JSM.VectorCross(b,c).Normalize();d[0]=c.x;d[1]=e.x;d[2]=b.x;d[3]=0;d[4]=c.y;d[5]=e.y;d[6]=b.y;d[7]=0;d[8]=c.z;d[9]=e.z;d[10]=b.z;d[11]=0;d[12]=-JSM.VectorDot(c,a);d[13]=-JSM.VectorDot(e,a);d[14]=-JSM.VectorDot(b,a);d[15]=1;return d}; -JSM.MatrixPerspective=function(a,b,c,d){var e=[];a=1/Math.tan(a/2);var f=1/(c-d);e[0]=a/b;e[1]=0;e[2]=0;e[3]=0;e[4]=0;e[5]=a;e[6]=0;e[7]=0;e[8]=0;e[9]=0;e[10]=(d+c)*f;e[11]=-1;e[12]=0;e[13]=0;e[14]=2*d*c*f;e[15]=0;return e}; -JSM.Project=function(a,b,c,d,e,f,g,h,k){a=[a.x,a.y,a.z,1];b=JSM.MatrixView(b,c,d);e=JSM.MatrixPerspective(e,f,g,h);e=JSM.MatrixMultiply(b,e);a=JSM.MatrixVectorMultiply(e,a);e=a[3];if(JSM.IsZero(e))return null;f=new JSM.Coord(0,0,0);f.x=(0.5*(a[0]/e)+0.5)*k[2]+k[0];f.y=(0.5*(a[1]/e)+0.5)*k[3]+k[1];f.z=0.5*(a[2]/e)+0.5;return f}; -JSM.Unproject=function(a,b,c,d,e,f,g,h,k){a=[2*((a.x-k[0])/k[2])-1,2*((a.y-k[1])/k[3])-1,2*a.z-1,1];b=JSM.MatrixView(b,c,d);e=JSM.MatrixPerspective(e,f,g,h);e=JSM.MatrixMultiply(b,e);e=JSM.MatrixInvert(e);a=JSM.MatrixVectorMultiply(e,a);if(JSM.IsZero(a[3]))return null;e=new JSM.Coord(0,0,0);e.x=a[0]/a[3];e.y=a[1]/a[3];e.z=a[2]/a[3];return e}; -JSM.ConvexHull2D=function(a){function b(a,b){var c=a.length,d=0,e;for(e=1;ea.length)return c;var d=function(a){var b=a.length,c=JSM.Inf,d=-1,e,f;for(e=0;en)return m;var q=new function(){this.vertices=[];this.edges=[];this.triangles=[]},p;for(p=0;pa)return JSM.Complexity.Invalid;var b=JSM.Complexity.Invalid;if(this.GetOrientation()!=JSM.Orientation.Invalid){var b=JSM.Complexity.Convex,c;for(c=0;ce)return d;var f,g,h,k,l;for(f=0;fb.length)return!1;JSM.BubbleSort(b,function(a,b){return JSM.IsLower(c[a],c[b])},function(a,c){JSM.SwapArrayValues(b,a,c)});return!0}(this.cutPolygon,this.cutVertexIndices,this.cutPolygonVertexDistances)?!1:!0}; -JSM.PolygonCutter.prototype.CalculateEntryVertices=function(){function a(a,b,c){if(a[c]!=JSM.CutVertexType.Cut)return 0;var d=JSM.PrevIndex(c,a.length),k=JSM.NextIndex(c,a.length),l=a[d];a=a[k];c=b[c];d=b[d];b=b[k];if(l==JSM.CutVertexType.Right){if(a==JSM.CutVertexType.Left||a==JSM.CutVertexType.Cut&&JSM.IsLowerOrEqual(c,b))return 1}else if(l==JSM.CutVertexType.Left){if(a==JSM.CutVertexType.Right||a==JSM.CutVertexType.Cut&&JSM.IsGreaterOrEqual(c,b))return-1}else if(l==JSM.CutVertexType.Cut)if(a== -JSM.CutVertexType.Left){if(JSM.IsLowerOrEqual(c,d))return 1}else if(a==JSM.CutVertexType.Right&&JSM.IsGreaterOrEqual(c,d))return-1;return 0}this.entryVertices=[];this.entryVertexTypes=[];var b,c,d;for(b=0;bf))if(3==f)a.push(e.map);else{f=b(e.polygon);if(null===f)return null;e=c(e,f);d.push(e.resultData1);d.push(e.resultData2)}return a}; -JSM.TriangulatePolygon2D=function(a){if(null===a)return null;var b=a.VertexCount();if(3>b)return null;if(3==b)return[[0,1,2]];b=a.GetComplexity();return b===JSM.Complexity.Invalid?null:b==JSM.Complexity.Convex?JSM.TriangulateConvexPolygon(a):JSM.TriangulateConcavePolygon2D(a)};JSM.TriangulatePolygon=function(a){a=a.ToPolygon2D();return JSM.TriangulatePolygon2D(a)}; -JSM.TraverseOctreeNodes=function(a,b){function c(a,b){if(b(a)&&null!==a.children){var f,g;for(f=0;f=this.maxCoordNumInNodes&&this.SplitNode(c))return this.AddCoordToNode(a,c);d=this.coords.length;this.coords.push(a);c.coords.push(d);return d}; -JSM.Octree.prototype.FindNodeForCoord=function(a,b){if(null===b.children)return b;var c=b.box.GetCenter(),d=a.x>c.x,e=a.y>c.y,c=a.z>c.z;return!d&&!e&&!c?this.FindNodeForCoord(a,b.children[0]):d&&!e&&!c?this.FindNodeForCoord(a,b.children[1]):d&&e&&!c?this.FindNodeForCoord(a,b.children[2]):!d&&e&&!c?this.FindNodeForCoord(a,b.children[3]):!d&&!e&&c?this.FindNodeForCoord(a,b.children[4]):d&&!e&&c?this.FindNodeForCoord(a,b.children[5]):d&&e&&c?this.FindNodeForCoord(a,b.children[6]):!d&&e&&c?this.FindNodeForCoord(a, -b.children[7]):null};JSM.Octree.prototype.SplitNode=function(a){var b=this,c=JSM.CreateOctreeChildNodes(a.box,function(c){return b.CreateNewNode(a,c)});if(null===c)return!1;a.children=c;c=a.coords;a.coords=[];var d,e;for(d=0;db.VertexCount())return!1;var d;if(null===a.polygon){d=b.GetNormal();var e=JSM.GetPlaneFromCoordAndDirection(b.GetVertex(0),d);a.polygon=b;void 0!==c&&(a.userData=c);a.plane=e}else{d=[];var f=[],e=[];JSM.CutPolygonWithPlane(b,a.plane,f,d,e)&&(0a.VertexCount()?!1:!0}function b(a,b){var c,g,h,k;for(c=a.length-1;0<=c;c--){g=a[c].GetContour(0);a:{var l=b;h=g.GetOrientation();k=l.GetOrientation();if(h!==k&&(h=l.GetVertex(0),g.CoordPosition(h)==JSM.CoordPolygonPosition2D.Inside)){g=!0;break a}g=!1}if(g)return a[c]}return null}if(null!==this.currentPolygon){if(a(this.currentPolygon)){var c= -b(this.polygons,this.currentPolygon);null===c?(c=new JSM.ContourPolygon2D,c.AddContour(this.currentPolygon),this.polygons.push(c)):c.AddContour(this.currentPolygon)}this.currentPolygon=null}};JSM.Path2D.prototype.PolygonCount=function(){return this.polygons.length};JSM.Path2D.prototype.GetPolygon=function(a){return this.polygons[a]};JSM.Path2D.prototype.GetPolygons=function(){return this.polygons}; -JSM.Path2D.prototype.GetCurrentPolygon=function(){null===this.currentPolygon&&(this.currentPolygon=new JSM.Polygon2D);return this.currentPolygon};JSM.Path2D.prototype.AddPolygonPoint=function(a,b){this.GetCurrentPolygon().AddVertex(this.settings.offset.x+a*this.settings.scale.x,this.settings.offset.y+b*this.settings.scale.y);this.position.Set(a,b);this.positionAdded=!0}; -JSM.HexColorToRGBComponents=function(a){for(var b=a.toString(16);6>b.length;)b="0"+b;a=parseInt(b.substr(0,2),16);var c=parseInt(b.substr(2,2),16),b=parseInt(b.substr(4,2),16);return[a,c,b]};JSM.HexColorToNormalizedRGBComponents=function(a){a=JSM.HexColorToRGBComponents(a);return[a[0]/255,a[1]/255,a[2]/255]};JSM.HexColorToRGBColor=function(a){return parseInt("0x"+a,16)}; -JSM.RGBComponentsToHexColor=function(a,b,c){function d(a){for(a=parseInt(a,10).toString(16);2>a.length;)a="0"+a;return a}a=d(a);b=d(b);c=d(c);return parseInt("0x"+a+b+c,16)};JSM.Material=function(a){this.diffuse=this.ambient=52224;this.shininess=this.specular=0;this.opacity=1;this.reflection=0;this.singleSided=!1;this.pointSize=0.1;this.texture=null;this.textureHeight=this.textureWidth=1;JSM.CopyObjectProperties(a,this,!0)};JSM.MaterialSet=function(){this.materials=[];this.defaultMaterial=new JSM.Material}; -JSM.MaterialSet.prototype.AddMaterial=function(a){this.materials.push(a);return this.materials.length-1};JSM.MaterialSet.prototype.GetMaterial=function(a){return 0>a||a>=this.materials.length?this.defaultMaterial:this.materials[a]};JSM.MaterialSet.prototype.GetDefaultMaterial=function(){return this.defaultMaterial};JSM.MaterialSet.prototype.Count=function(){return this.materials.length};JSM.BodyVertex=function(a){this.position=a};JSM.BodyVertex.prototype.GetPosition=function(){return this.position}; -JSM.BodyVertex.prototype.SetPosition=function(a){this.position=a};JSM.BodyVertex.prototype.Clone=function(){return new JSM.BodyVertex(this.position.Clone())};JSM.BodyPoint=function(a){this.vertex=a;this.material=-1};JSM.BodyPoint.prototype.GetVertexIndex=function(){return this.vertex};JSM.BodyPoint.prototype.SetVertexIndex=function(a){this.vertex=a};JSM.BodyPoint.prototype.HasMaterialIndex=function(){return-1!==this.material};JSM.BodyPoint.prototype.GetMaterialIndex=function(){return this.material}; -JSM.BodyPoint.prototype.SetMaterialIndex=function(a){this.material=a};JSM.BodyPoint.prototype.InheritAttributes=function(a){this.material=a.material};JSM.BodyPoint.prototype.Clone=function(){var a=new JSM.BodyPoint(this.vertex);a.material=this.material;return a};JSM.BodyLine=function(a,b){this.beg=a;this.end=b;this.material=-1};JSM.BodyLine.prototype.GetBegVertexIndex=function(){return this.beg};JSM.BodyLine.prototype.SetBegVertexIndex=function(a){this.beg=a}; -JSM.BodyLine.prototype.GetEndVertexIndex=function(){return this.end};JSM.BodyLine.prototype.SetEndVertexIndex=function(a){this.end=a};JSM.BodyLine.prototype.HasMaterialIndex=function(){return-1!==this.material};JSM.BodyLine.prototype.GetMaterialIndex=function(){return this.material};JSM.BodyLine.prototype.SetMaterialIndex=function(a){this.material=a};JSM.BodyLine.prototype.InheritAttributes=function(a){this.material=a.material}; -JSM.BodyLine.prototype.Clone=function(){var a=new JSM.BodyLine(this.beg,this.end);a.material=this.material;return a};JSM.BodyPolygon=function(a){this.vertices=a;this.curved=this.material=-1};JSM.BodyPolygon.prototype.AddVertexIndex=function(a){this.vertices.push(a)};JSM.BodyPolygon.prototype.InsertVertexIndex=function(a,b){this.vertices.splice(b,0,a)};JSM.BodyPolygon.prototype.GetVertexIndex=function(a){return this.vertices[a]}; -JSM.BodyPolygon.prototype.SetVertexIndex=function(a,b){this.vertices[a]=b};JSM.BodyPolygon.prototype.GetVertexIndices=function(){return this.vertices};JSM.BodyPolygon.prototype.SetVertexIndices=function(a){this.vertices=a};JSM.BodyPolygon.prototype.VertexIndexCount=function(){return this.vertices.length};JSM.BodyPolygon.prototype.HasMaterialIndex=function(){return-1!==this.material};JSM.BodyPolygon.prototype.GetMaterialIndex=function(){return this.material}; -JSM.BodyPolygon.prototype.SetMaterialIndex=function(a){this.material=a};JSM.BodyPolygon.prototype.HasCurveGroup=function(){return-1!==this.curved};JSM.BodyPolygon.prototype.GetCurveGroup=function(){return this.curved};JSM.BodyPolygon.prototype.SetCurveGroup=function(a){this.curved=a};JSM.BodyPolygon.prototype.ReverseVertexIndices=function(){this.vertices.reverse()};JSM.BodyPolygon.prototype.InheritAttributes=function(a){this.material=a.material;this.curved=a.curved}; -JSM.BodyPolygon.prototype.Clone=function(){var a=new JSM.BodyPolygon([]),b;for(b=0;b=a&&f.SetVertexIndex(f.GetVertexIndex()-1);for(e=0;e=a&&f.SetBegVertexIndex(f.GetBegVertexIndex()-1),f.GetEndVertexIndex()>=a&&f.SetEndVertexIndex(f.GetEndVertexIndex()-1));for(e=0;e=a&&g.SetVertexIndex(f,h-1)}for(e=0;ed.GetVertexIndex()||d.GetVertexIndex()>=b)return!1;for(c=0;cd.GetBegVertexIndex()||d.GetBegVertexIndex()>=b||0>d.GetEndVertexIndex()||d.GetEndVertexIndex()>=b)return!1;for(c=0;ce.VertexIndexCount())return!1;for(d=0;de.GetVertexIndex(d)||e.GetVertexIndex(d)>=b)return!1}return!0}; -JSM.CalculateBodyPolygonNormal=function(a,b){var c=a.GetPolygon(b),d=c.VertexIndexCount(),e=new JSM.Vector(0,0,0);if(3<=d){var f,g,h;for(f=0;fb?c[e]=f:c[e]=f+1;f=c[0];d=c[d-1];if(0===f&&f!=d)for(e=0;c[e]==f;e++)c[e]=d;return c}; -JSM.CalculatePolygonCentroid=function(a,b){var c=a.GetPolygon(b),d=c.VertexIndexCount(),e=new JSM.Coord(0,0,0),f;for(f=0;fl;l++)0===l?m=e:1===l?m=f:2===l&&(m=g),n=Math.abs(JSM.VectorDot(b,m)),JSM.IsGreater(n,k)&&(h=l,k=n);if(-1===h)return d;b=null;0===h?b=new JSM.CoordSystem(c.origo,f,g,new JSM.Coord(0,0,0)):1===h?b=new JSM.CoordSystem(c.origo,e,g,new JSM.Coord(0,0,0)):2===h&&(b=new JSM.CoordSystem(c.origo,e,f,new JSM.Coord(0,0,0)));return null=== -b?d:JSM.CalculatePlanarTextureCoord(a,b)};JSM.CalculateCylindricalTextureCoord=function(a,b,c){var d=new JSM.Coord2D(0,0),e=c.e3.Clone().Normalize();if(e.IsCollinearWith(b))return d=JSM.CalculateCubicTextureCoord(a,b,c),[d,0];var f=(new JSM.Line(c.origo,e)).ProjectCoord(a);b=JSM.CoordSignedDistance(c.origo,f,e);var g=c.e1.Clone().Normalize();a=JSM.CoordSub(a,f);e=JSM.GetVectorsFullAngle(a,g,e);c=c.e1.Length();d.x=e*c;d.y=b;return[d,e]}; -JSM.CalculatePolygonPlanarTextureCoords=function(a,b){var c=[],d=a.GetPolygon(b),e=a.GetTextureProjection().GetCoords(),f,g;for(f=0;ff;f++)k=c[h[f]],u.AddVertexIndex(2*b[k[0]]+2*k[1]+1),k=c[h[2-f]],t.AddVertexIndex(2*b[k[0]]+2*k[1]);g.AddPolygon(u);g.AddPolygon(t)}}}var g=new JSM.Body,h=[],k=new JSM.ContourPolygon;k.FromArray(a); -(function(a,b,c,d){var e,f,g,h,k;for(e=0;ew)JSM.Message("Invalid polygon found.");else{var x=void 0,A=void 0,E=void 0,G=void 0,H=void 0,z=void 0,D=void 0,K=void 0,L=void 0,x=!1;void 0!==n.hasConvexPolygons&&null!==n.hasConvexPolygons&&(x=n.hasConvexPolygons);var F=void 0;if(3==w||x)for(F=0;Ff)){var g,n,q,p=null;if(3===f)p=JSM.CalculateBodyPolygonNormal(a,b),g=a.GetVertex(d.GetVertexIndex(0)).position,n=a.GetVertex(d.GetVertexIndex(1)).position, -q=a.GetVertex(d.GetVertexIndex(2)).position,e(p,g,n,q);else if(g=!0,void 0!==c&&c&&(g=!1),p=JSM.CalculateBodyPolygonNormal(a,b),g){g=new JSM.Polygon;for(b=0;bg.mat)g.mat=a.GetDefaultMaterialIndex();if(void 0===g.n0||void 0===g.n1||void 0===g.n2)void 0===g.curve||0>g.curve?(c=d[c],c=b.AddNormal(c.x, -c.y,c.z),g.n0=c,g.n1=c,g.n2=c,g.curve=-1):(g.n0=f(b,g.v0,c,d,e),g.n1=f(b,g.v1,c,d,e),g.n2=f(b,g.v2,c,d,e));if(void 0===g.u0||void 0===g.u1||void 0===g.u2)g.u0=b.AddDefaultUV(),g.u1=b.AddDefaultUV(),g.u2=b.AddDefaultUV()}var c=[],d={},e;for(e=0;eh))if(3==h)f=g.GetVertexIndex(0),h=g.GetVertexIndex(1),l=g.GetVertexIndex(2),b(c,g,f,h,l);else{k= -new JSM.Polygon;for(e=0;ef.mat||f.mat>=e)||d[f.mat].push(a);var q,p;for(a=0;al;l++)JSM.IsLower(f[l],b[l])?(g[l]=-1,h[l]=b[l],k=!1):JSM.IsGreater(f[l],c[l])?(g[l]=1,h[l]=c[l],k=!1):g[l]=0;l=null;if(k)return l={position:d,distance:0};k=[0,0,0];for(l=0;3>l;l++)0!==g[l]&&!JSM.IsZero(e[l])?k[l]=(h[l]-f[l])/e[l]:k[l]=-1;g=0;for(l=1;3>l;l++)JSM.IsLower(k[g],k[l])&&(g=l);if(JSM.IsNegative(k[g]))return null; -var m=[0,0,0];for(l=0;3>l;l++)if(g!=l){if(m[l]=f[l]+k[g]*e[l],JSM.IsLower(m[l],b[l])||JSM.IsGreater(m[l],c[l]))return null}else m[l]=h[l];f=JSM.CoordFromArray(m);d=d.DistanceTo(f);return a.IsLengthReached(d)?null:l={position:f,distance:d}}; -JSM.RayOctreeIntersection=function(a,b,c){var d=null,e=!1,f=null!==c&&void 0!==c;JSM.TraverseOctreeNodes(b,function(b){if(!f&&e||!JSM.RayBoxIntersection(a,b.box.min,b.box.max))return!1;var c;for(c=0;c=this.arrayBuffer.byteLength}; -JSM.BinaryReader.prototype.ReadBoolean=function(){var a=this.dataView.getInt8(this.position);this.position+=1;return a?!0:!1};JSM.BinaryReader.prototype.ReadCharacter=function(){var a=this.dataView.getInt8(this.position);this.position+=1;return a};JSM.BinaryReader.prototype.ReadUnsignedCharacter=function(){var a=this.dataView.getUint8(this.position);this.position+=1;return a}; -JSM.BinaryReader.prototype.ReadInteger16=function(){var a=this.dataView.getInt16(this.position,this.isLittleEndian);this.position+=2;return a};JSM.BinaryReader.prototype.ReadUnsignedInteger16=function(){var a=this.dataView.getUint16(this.position,this.isLittleEndian);this.position+=2;return a};JSM.BinaryReader.prototype.ReadInteger32=function(){var a=this.dataView.getInt32(this.position,this.isLittleEndian);this.position+=4;return a}; -JSM.BinaryReader.prototype.ReadUnsignedInteger32=function(){var a=this.dataView.getUint32(this.position,this.isLittleEndian);this.position+=4;return a};JSM.BinaryReader.prototype.ReadFloat32=function(){var a=this.dataView.getFloat32(this.position,this.isLittleEndian);this.position+=4;return a};JSM.BinaryReader.prototype.ReadDouble64=function(){var a=this.dataView.getFloat64(this.position,this.isLittleEndian);this.position+=8;return a}; -JSM.GetArrayBufferFromURL=function(a,b){var c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="arraybuffer";c.onload=function(){var a=c.response;if(a&&b.onReady)b.onReady(a)};c.onerror=function(){if(b.onError)b.onError()};c.send(null)};JSM.GetArrayBufferFromFile=function(a,b){var c=new FileReader;c.onloadend=function(a){if(a.target.readyState==FileReader.DONE&&b.onReady)b.onReady(a.target.result)};c.onerror=function(){if(b.onError)b.onError()};c.readAsArrayBuffer(a)}; -JSM.GetStringBufferFromURL=function(a,b){var c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="text";c.onload=function(){var a=c.response;if(a&&b.onReady)b.onReady(a)};c.onerror=function(){if(b.onError)b.onError()};c.send(null)};JSM.GetStringBufferFromFile=function(a,b){var c=new FileReader;c.onloadend=function(a){if(a.target.readyState==FileReader.DONE&&b.onReady)b.onReady(a.target.result)};c.onerror=function(){if(b.onError)b.onError()};c.readAsText(a)}; -JSM.LoadMultipleBuffers=function(a,b){function c(a,b,f,g){if(b>=a.length)g(f);else{var h=a[b],k=null,k=h.isFile?h.isArrayBuffer?JSM.GetArrayBufferFromFile:JSM.GetStringBufferFromFile:h.isArrayBuffer?JSM.GetArrayBufferFromURL:JSM.GetStringBufferFromURL;k(h.originalObject,{onReady:function(h){f.push(h);c(a,b+1,f,g)},onError:function(){f.push(null);c(a,b+1,f,g)}})}}c(a,0,[],function(a){b(a)})}; -JSM.Read3dsFile=function(a,b){function c(a,c){if(void 0!==b.onLog&&null!==b.onLog)b.onLog(a,c)}function d(a){for(var b="",c=0,d=0;64>d;){c=a.ReadCharacter();if(0===c)break;b+=String.fromCharCode(c);d+=1}return b}function e(a){var b=[],c;for(c=0;3>c;c++)b[c]=a.ReadFloat32();return b}function f(a,b,c){for(;a.GetPosition()<=b-6;){var d=a,e=c,f=d.ReadUnsignedInteger16(),d=d.ReadUnsignedInteger32();e(f,d)}}if(void 0===b||null===b)b={};(function(a,h){function k(a,b,c){var d=[0,0,0];b=a.GetPosition()+c- -6;var e=!1;f(a,b,function(b,c){b==h.MAT_COLOR?e||(d[0]=a.ReadUnsignedCharacter()/255,d[1]=a.ReadUnsignedCharacter()/255,d[2]=a.ReadUnsignedCharacter()/255):b==h.MAT_LIN_COLOR?(d[0]=a.ReadUnsignedCharacter()/255,d[1]=a.ReadUnsignedCharacter()/255,d[2]=a.ReadUnsignedCharacter()/255,e=!0):b==h.MAT_COLOR_F?e||(d[0]=a.ReadFloat32(),d[1]=a.ReadFloat32(),d[2]=a.ReadFloat32()):b==h.MAT_LIN_COLOR_F?(d[0]=a.ReadFloat32(),d[1]=a.ReadFloat32(),d[2]=a.ReadFloat32(),e=!0):a.Skip(c-6)});return d}function l(a,b, -c){var d=0;b=a.GetPosition()+c-6;f(a,b,function(b,c){b==h.PERCENTAGE?d=a.ReadUnsignedInteger16()/100:b==h.PERCENTAGE_F?d=a.ReadFloat32():a.Skip(c-6)});return d}function m(a,b,c,e){e.texture=null;e.offset=[0,0];e.scale=[1,1];e.rotation=0;b=a.GetPosition()+c-6;f(a,b,function(b,c){b==h.MAT_TEXMAP_NAME?e.texture=d(a):b==h.MAT_TEXMAP_UOFFSET?e.offset[0]=a.ReadFloat32():b==h.MAT_TEXMAP_VOFFSET?e.offset[1]=a.ReadFloat32():b==h.MAT_TEXMAP_USCALE?e.scale[0]=a.ReadFloat32():b==h.MAT_TEXMAP_VSCALE?e.scale[1]= -a.ReadFloat32():b==h.MAT_TEXMAP_ROTATION?e.rotation=a.ReadFloat32():a.Skip(c-6)})}function n(a,e,g){c("Read material chunk ("+e.toString(16)+", "+g+")",2);var n={},p=a.GetPosition()+g-6;f(a,p,function(b,f){b==h.MAT_NAME?(c("Read material name chunk ("+e.toString(16)+", "+g+")",3),n.name=d(a)):b==h.MAT_AMBIENT?(c("Read material ambient chunk ("+e.toString(16)+", "+g+")",3),n.ambient=k(a,b,f)):b==h.MAT_DIFFUSE?(c("Read material diffuse chunk ("+e.toString(16)+", "+g+")",3),n.diffuse=k(a,b,f)):b==h.MAT_SPECULAR? -(c("Read material specular chunk ("+e.toString(16)+", "+g+")",3),n.specular=k(a,b,f)):b==h.MAT_SHININESS?(c("Read material shininess chunk ("+e.toString(16)+", "+g+")",3),n.shininess=l(a,b,f)):b==h.MAT_SHININESS_STRENGTH?(c("Read material shininess strength chunk ("+e.toString(16)+", "+g+")",3),n.shininessStrength=l(a,b,f)):b==h.MAT_TRANSPARENCY?(c("Read material transparency chunk ("+e.toString(16)+", "+g+")",3),n.transparency=l(a,b,f)):b==h.MAT_TEXMAP?(c("Read material texture map chunk ("+e.toString(16)+ -", "+g+")",3),m(a,b,f,n)):(c("Skip chunk ("+b.toString(16)+", "+f+")",3),a.Skip(f-6))});if(void 0!==b.onMaterial&&null!==b.onMaterial)b.onMaterial(n)}function q(a,e,g){c("Read faces chunk ("+e.toString(16)+", "+g+")",4);e=a.GetPosition()+g-6;var k=a.ReadUnsignedInteger16(),l,m,n,p;for(g=0;gg;g++){for(k=0;3>k;k++)f.push(a.ReadFloat32());3>g?f.push(0):f.push(1)}if(void 0!==b.onTransformation&&null!==b.onTransformation)b.onTransformation(f)}else c("Skip chunk ("+d.toString(16)+", "+e+")",4),a.Skip(e-6)})}function r(a,b, -e){c("Read object chunk ("+b.toString(16)+", "+e+")",2);b=a.GetPosition()+e-6;var g=d(a);f(a,b,function(b,d){b==h.OBJ_TRIMESH?p(a,g,b,d):(b==h.OBJ_LIGHT?c("Skip light chunk ("+g+", "+b.toString(16)+", "+d+")",3):b==h.OBJ_CAMERA?c("Skip camera chunk ("+g+", "+b.toString(16)+", "+d+")",3):c("Skip chunk ("+b.toString(16)+", "+d+")",3),a.Skip(d-6))})}function s(a,b,d){c("Read editor chunk ("+b.toString(16)+", "+d+")",1);b=a.GetPosition()+d-6;f(a,b,function(b,d){b==h.EDIT_MATERIAL?n(a,b,d):b==h.EDIT_OBJECT? -r(a,b,d):(c("Skip chunk ("+b.toString(16)+", "+d+")",2),a.Skip(d-6))})}function v(a,g,k){function l(a,b){var c=[];a.Skip(10);var d,f,g,k=a.ReadInteger32();for(d=0;dg;g++)a[0+g]*=c,a[4+g]*=d,a[8+g]*=f;return a}function f(a,b){var c=b[0],d=b[1],e=b[2],g;for(g=0;3>g;g++)a[12+g]+=a[0+g]*c+a[4+g]*d+a[8+g]*e;return a}function g(a,b){var c,d;for(c=0;cp.length)){var s="";for(r=1;rp.length||(h.vertexCount+=1,d(parseFloat(p[1]),parseFloat(p[2]),parseFloat(p[3])));else if("vn"==p[0])4>p.length||(h.normalCount+=1,e(parseFloat(p[1]), -parseFloat(p[2]),parseFloat(p[3])));else if("vt"==p[0])3>p.length||(h.uvCount+=1,f(parseFloat(p[1]),parseFloat(p[2])));else if("f"==p[0]){if(!(4>p.length)){var s=[],v=[],u=[],t;for(r=1;rp.length)&&void 0!== -b.onUseMaterial&&null!==b.onUseMaterial)b.onUseMaterial(p[1])}else if("newmtl"==p[0]){if(!(2>p.length)&&void 0!==b.onNewMaterial&&null!==b.onNewMaterial)b.onNewMaterial(p[1])}else if("Ka"==p[0]||"Kd"==p[0]||"Ks"==p[0])4>p.length||c(p[0],parseFloat(p[1]),parseFloat(p[2]),parseFloat(p[3]));else if("Ns"==p[0]||"Tr"==p[0]||"d"==p[0]){if(!(2>p.length)&&void 0!==b.onMaterialParameter&&null!==b.onMaterialParameter)b.onMaterialParameter(p[0],p[1])}else if("map_Kd"==p[0]){if(!(2>p.length)&&(p=q(a,"map_Kd"), -void 0!==b.onMaterialTexture&&null!==b.onMaterialTexture))b.onMaterialTexture(p)}else"mtllib"==p[0]&&!(2>p.length)&&(p=q(a,"mtllib"),p=g(p.trim()),null!==p&&k(p))}}}function k(a,b){var c=a.split("\n"),d,e;for(d=0;dc||c>=a.length)){var f=b[c];void 0===f&&(f=e(a[c]),b[c]=f);return f}}function e(a,b,c,f){return d(b,c,f,function(b){return a.AddVertex(b.x,b.y,b.z)})}function g(a,b,c,e){return d(b,c,e,function(b){return a.AddNormal(b.x,b.y,b.z)})}function h(a,b,c,e){return d(b,c,e,function(b){return a.AddUV(b.x, -b.y)})}var w,x,A,E,G=b.length==a.length,H=c.length==a.length,z=a.length;for(w=0;wc;c++)b[c]=a.ReadFloat32();return b}if(void 0===b||null===b)b={};var d=new JSM.BinaryReader(a,!0);d.Skip(80);var e=d.ReadUnsignedInteger32(),f,g,h,k,l;for(f=0;fd.length)return-1;var d=[parseFloat(d[2]),parseFloat(d[3]),parseFloat(d[4])],e=[],l,m;for(l=c+1;le.length;l++)if(m=a[l].trim(),0!==m.length&&(m=m.split(/\s+/),0!==m.length&&"vertex"==m[0]))if(4>m.length)break;else m=[parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])],e.push(m);l+=1;if(3!=e.length)return-1; -if(void 0!==b.onFace&&null!==b.onFace)b.onFace(e[0],e[1],e[2],d);return l}return c+1}if(void 0===b||null===b)b={};for(var d=0,e=a.split("\n");db)return!1;a=new JSM.BinaryReader(a,!0);a.Skip(80);a=a.ReadUnsignedInteger32();return b!=50*a+84?!1:!0}; -JSM.ConvertStlToJsonData=function(a,b){var c=new JSM.TriangleModel,d=c.AddBody(new JSM.TriangleBody("Default")),e=c.GetBody(d);null!==a?JSM.ReadBinaryStlFile(a,{onFace:function(a,b,c,d){a=e.AddVertex(a[0],a[1],a[2]);b=e.AddVertex(b[0],b[1],b[2]);c=e.AddVertex(c[0],c[1],c[2]);d=(new JSM.Vector(d[0],d[1],d[2])).Normalize();d=e.AddNormal(d.x,d.y,d.z);e.AddTriangle(a,b,c,d,d,d)}}):null!==b&&JSM.ReadAsciiStlFile(b,{onFace:function(a,b,c,d){a=e.AddVertex(a[0],a[1],a[2]);b=e.AddVertex(b[0],b[1],b[2]);c= -e.AddVertex(c[0],c[1],c[2]);d=(new JSM.Vector(d[0],d[1],d[2])).Normalize();d=e.AddNormal(d.x,d.y,d.z);e.AddTriangle(a,b,c,d,d,d)}});c.Finalize();return JSM.ConvertTriangleModelToJsonData(c)}; -JSM.ReadOffFile=function(a,b){if(void 0===b||null===b)b={};var c={offHeaderFound:!1,infoFound:!1,vertexCount:0,faceCount:0,readVertices:0,readFaces:0},d=a.split("\n"),e,f;for(e=0;e=h+1)){for(var k=[],l=void 0,m=void 0,l=1;l=b)return-1;this.directionalLights.push(a);return this.directionalLights.length-1};JSM.Renderer.prototype.RemoveLight=function(a){a=this.directionalLights.indexOf(a);-1!=a&&this.directionalLights.splice(a,1)};JSM.Renderer.prototype.RemoveLights=function(){this.directionalLights=[]}; -JSM.Renderer.prototype.GetLight=function(a){return this.directionalLights[a]};JSM.Renderer.prototype.AddBody=function(a,b){var c=this.shader;a.EnumerateMeshes(function(a){c.CompileMaterial(a.GetMaterial(),b);c.CompileMesh(a)});this.bodies.push(a)};JSM.Renderer.prototype.AddBodies=function(a,b){var c,d;for(c=0;ca.opacity&&(b+=JSM.RenderMaterialFlags.Transparent);b=d(a,b);b=new JSM.RenderMesh(b);b.SetVertexArray(g);b.SetNormalArray(h);null!==a.texture&&b.SetUVArray(k);f.AddMesh(b)},onTriangle:function(a,b,c,d,e,f,s,v,u){g.push(a.x,a.y,a.z);g.push(b.x,b.y,b.z);g.push(c.x,c.y,c.z);h.push(d.x,d.y,d.z);h.push(e.x,e.y, -e.z);h.push(f.x,f.y,f.z);null!==s&&(null!==v&&null!==u)&&(k.push(s.x,s.y),k.push(v.x,v.y),k.push(u.x,u.y))}});return f};JSM.ConvertModelToRenderBodies=function(a,b){var c=[],d=a.GetMaterialSet(),e,f;for(e=0;eg;g++){h=c[d+g];for(k=0;kthis.cameraFarDistanceLimit)return 0;this.camera.eye.Offset(b,c*a)};JSM.Navigation.prototype.DrawCallback=function(){void 0!==this.drawCallback&&null!==this.drawCallback&&this.drawCallback()}; -JSM.Navigation.prototype.ResizeCallback=function(){void 0!==this.resizeCallback&&null!==this.resizeCallback&&(this.fullscreen&&(this.canvas.width=window.innerWidth,this.canvas.height=window.innerHeight),this.resizeCallback())};JSM.Navigation.prototype.OnMouseDown=function(a){a.preventDefault();this.mouse.Down(a,this.canvas)}; -JSM.Navigation.prototype.OnMouseMove=function(a){a.preventDefault();this.mouse.Move(a,this.canvas);if(this.mouse.down){a=0;if(1==this.mouse.button){if(!this.cameraEnableOrbit)return;a=0.5;this.Orbit(this.mouse.diff.x*a,this.mouse.diff.y*a)}else if(3==this.mouse.button){if(!this.cameraEnablePan)return;a=0.001*this.camera.eye.DistanceTo(this.camera.center);this.Pan(this.mouse.diff.x*a,this.mouse.diff.y*a)}this.DrawCallback()}}; -JSM.Navigation.prototype.OnMouseUp=function(a){a.preventDefault();this.mouse.Up(a,this.canvas)};JSM.Navigation.prototype.OnMouseOut=function(a){a.preventDefault();this.mouse.Out(a,this.canvas)};JSM.Navigation.prototype.OnMouseWheel=function(a){a.preventDefault();if(this.cameraEnableZoom){var b=a;null===b&&(b=window.event);a=0;b.detail?a=-b.detail:b.wheelDelta&&(a=b.wheelDelta/40);b=0.1;0>a&&(b*=-1);this.Zoom(b);this.DrawCallback()}}; -JSM.Navigation.prototype.OnTouchStart=function(a){a.preventDefault();this.touch.Start(a,this.canvas)}; -JSM.Navigation.prototype.OnTouchMove=function(a){a.preventDefault();this.touch.Move(a,this.canvas);if(this.touch.down){a=0;if(1==this.touch.fingers){if(!this.cameraEnableOrbit)return;a=0.5;this.Orbit(this.touch.diff.x*a,this.touch.diff.y*a)}else if(2==this.touch.fingers){if(!this.cameraEnableZoom)return;this.Zoom(0.005*this.touch.diff.x)}else if(3==this.touch.fingers){if(!this.cameraEnablePan)return;a=0.001*this.camera.eye.DistanceTo(this.camera.center);this.Pan(this.touch.diff.x*a,this.touch.diff.y* -a)}this.DrawCallback()}};JSM.Navigation.prototype.OnTouchEnd=function(a){a.preventDefault();this.touch.End(a,this.canvas)};JSM.Navigation.prototype.OnContextMenu=function(a){a.preventDefault()};JSM.Navigation.prototype.OnResize=function(a){a.preventDefault();this.ResizeCallback()};JSM.SoftwareViewer=function(){this.navigation=this.drawMode=this.drawer=this.bodies=this.camera=this.canvas=null};JSM.SoftwareViewer.prototype.Start=function(a,b){return!this.InitCanvas(a)||!this.InitCamera(b)?!1:!0}; -JSM.SoftwareViewer.prototype.InitCanvas=function(a){this.bodies=[];this.canvas=a;if(!this.canvas)return!1;this.canvas instanceof HTMLCanvasElement?this.drawer=new JSM.CanvasDrawer(this.canvas):this.canvas instanceof SVGSVGElement&&(this.drawer=new JSM.SVGDrawer(this.canvas));if(!this.drawer)return!1;this.drawMode="Wireframe";return!0}; -JSM.SoftwareViewer.prototype.InitCamera=function(a){this.camera=JSM.ValueOrDefault(a,new JSM.Camera);if(!this.camera)return!1;this.navigation=new JSM.Navigation;return!this.navigation.Init(this.canvas,this.camera,this.Draw.bind(this),this.Resize.bind(this))?!1:!0};JSM.SoftwareViewer.prototype.AddBody=function(a,b){this.bodies.push([a,b])};JSM.SoftwareViewer.prototype.RemoveBodies=function(){this.bodies=[]}; -JSM.SoftwareViewer.prototype.FitInWindow=function(){var a=this.GetBoundingSphere();this.navigation.FitInWindow(a.GetCenter(),a.GetRadius());this.Draw()};JSM.SoftwareViewer.prototype.GetCenter=function(){return this.GetBoundingBox().GetCenter()}; -JSM.SoftwareViewer.prototype.GetBoundingBox=function(){var a=new JSM.Coord(JSM.Inf,JSM.Inf,JSM.Inf),b=new JSM.Coord(-JSM.Inf,-JSM.Inf,-JSM.Inf),c,d,e,f;for(c=0;cb.position.z?-1:a.position.zt;t++)u[t].z=n-c;t=JSM.GeneratePrism(u,l,c,!0,null);k.Merge(t);if(d)for(t=0;tb&&(e=a,q=!1);for(t=0;tn;n++)r=0===n?q.pgon1:q.pgon2,r=b.GetVertexPosition(d[r]),p=JSM.CoordAdd(p,r);p.MultiplyScalar(0.25)}e.push(b.AddVertex(new JSM.BodyVertex(p)))}})(a,b,c,d,e);(function(a,b,c,d){function e(a,b){b.x=a.x;b.y=a.y;b.z=a.z}function m(a,b,c,d){d.x=(a.x+2*b.x+(c-3)*d.x)/c;d.y=(a.y+2*b.y+ -(c-3)*d.y)/c;d.z=(a.z+2*b.z+(c-3)*d.z)/c}var n=[],q,p;for(p=0;pa?-1:0>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=THREE.Math.euclideanModulo(b,1);c=THREE.Math.clamp(c,0,1);d=THREE.Math.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)){var d=parseFloat(c[1])/ -360,e=parseInt(c[2],10)/100,g=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,g)}}}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+g): -l/(2-e-g);switch(e){case b:f=(c-d)/l+(cg&&c>b?(c=2*Math.sqrt(1+c-g-b),this._w=(l-f)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):g>b?(c=2*Math.sqrt(1+g-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y= -.25*c,this._z=(f+l)/c):(c=2*Math.sqrt(1+b-c-g),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(f+l)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector3);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;this.normalize();return this}}(),inverse:function(){this.conjugate().normalize();return this},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)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,g=a._w,f=b._x,h=b._y,l=b._z,k=b._w;this._x=c*k+g*f+d*l-e*h;this._y=d*k+g*h+e*f-c*l;this._z=e*k+g*l+c*h-d*f;this._w=g*k-c*f-d*h-e*l;this.onChangeCallback();return this},multiplyVector3:function(a){console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."); -return a.applyQuaternion(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,g=this._w,f=g*a._w+c*a._x+d*a._y+e*a._z;0>f?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,f=-f):this.copy(a);if(1<=f)return this._w=g,this._x=c,this._y=d,this._z=e,this;var h=Math.acos(f),l=Math.sqrt(1-f*f);if(.001>Math.abs(l))return this._w=.5*(g+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;f=Math.sin((1-b)*h)/l;h= -Math.sin(b*h)/l;this._w=g*f+this._w*h;this._x=c*f+this._x*h;this._y=d*f+this._y*h;this._z=e*f+this._z*h;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(){}};THREE.Quaternion.slerp=function(a,b,c,d){return c.copy(a).slerp(b,d)};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0}; -THREE.Vector2.prototype={constructor:THREE.Vector2,get width(){return this.x},set width(a){this.x=a},get height(){return this.y},set height(a){this.y=a},set:function(a,b){this.x=a;this.y=b;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);}},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){isFinite(a)?(this.x*=a,this.y*=a):this.y=this.x=0;return this},divide:function(a){this.x/=a.x; -this.y/=a.y;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);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,b;return function(c,d){void 0===a&&(a=new THREE.Vector2,b=new THREE.Vector2);a.set(c,c);b.set(d,d);return this.clamp(a, -b)}}(),clampLength:function(a,b){var c=this.length();this.multiplyScalar(Math.max(a,Math.min(b,c))/c);return this},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)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)},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.multiplyScalar(a/ -this.length())},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){this.subVectors(b,a).multiplyScalar(c).add(a);return this},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},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y= -a.array[b+1];return this},rotateAround:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=this.x-a.x,g=this.y-a.y;this.x=e*c-g*d+a.x;this.y=e*d+g*c+a.y;return this}};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},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);}},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){isFinite(a)?(this.x*=a,this.y*=a,this.z*=a):this.z=this.y=this.x=0;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;return function(b){!1===b instanceof THREE.Euler&&console.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order.");void 0===a&&(a=new THREE.Quaternion);this.applyQuaternion(a.setFromEuler(b)); -return this}}(),applyAxisAngle:function(){var a;return function(b,c){void 0===a&&(a=new THREE.Quaternion);this.applyQuaternion(a.setFromAxisAngle(b,c));return this}}(),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;this.x=a[0]*b+a[4]*c+a[8]*d+a[12];this.y=a[1]*b+a[5]*c+a[9]*d+a[13];this.z=a[2]*b+a[6]*c+a[10]*d+a[14]; -return this},applyProjection: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,g=a.y,f=a.z;a=a.w;var h=a*b+g*d-f*c,l=a*c+f*b-e*d,k=a*d+e*c-g*b,b=-e*b-g*c-f*d;this.x=h*a+b*-e+l*-f-k*-g;this.y=l*a+b*-g+k*-e-h*-f;this.z=k*a+b*-f+h*-g-l*-e;return this},project:function(){var a; -return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyProjection(a)}}(),unproject:function(){var a;return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyProjection(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;this.normalize(); -return this},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,b;return function(c,d){void 0===a&&(a=new THREE.Vector3,b=new THREE.Vector3);a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();this.multiplyScalar(Math.max(a,Math.min(b,c))/c);return this},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this}, -round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z}, -length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.multiplyScalar(a/this.length())},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){this.subVectors(b,a).multiplyScalar(c).add(a);return this},cross:function(a,b){if(void 0!== -b)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y=e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,g=b.x,f=b.y,h=b.z;this.x=d*h-e*f;this.y=e*g-c*h;this.z=c*f-d*g;return this},projectOnVector:function(){var a,b;return function(c){void 0===a&&(a=new THREE.Vector3);a.copy(c).normalize();b=this.dot(a);return this.copy(a).multiplyScalar(b)}}(), -projectOnPlane:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/(this.length()*a.length());return Math.acos(THREE.Math.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},setEulerFromRotationMatrix:function(a,b){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(a,b){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(a){console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().");return this.setFromMatrixPosition(a)}, -getScaleFromMatrix:function(a){console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().");return this.setFromMatrixScale(a)},getColumnFromMatrix:function(a,b){console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().");return this.setFromMatrixColumn(a,b)},setFromMatrixPosition:function(a){this.x=a.elements[12];this.y=a.elements[13];this.z=a.elements[14];return this},setFromMatrixScale:function(a){var b=this.set(a.elements[0], -a.elements[1],a.elements[2]).length(),c=this.set(a.elements[4],a.elements[5],a.elements[6]).length();a=this.set(a.elements[8],a.elements[9],a.elements[10]).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){var c=4*a,d=b.elements;this.x=d[c];this.y=d[c+1];this.z=d[c+2];return this},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},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];return this}};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},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);}},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){isFinite(a)?(this.x*=a,this.y*=a,this.z*=a,this.w*=a):this.w=this.z=this.y=this.x=0;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){var b,c,d;a=a.elements;var e=a[0];d=a[4];var g=a[8],f=a[1],h=a[5],l=a[9];c=a[2];b=a[6];var k=a[10];if(.01>Math.abs(d-f)&&.01>Math.abs(g-c)&&.01>Math.abs(l-b)){if(.1>Math.abs(d+f)&&.1>Math.abs(g+c)&&.1>Math.abs(l+b)&&.1>Math.abs(e+ -h+k-3))return this.set(1,0,0,0),this;a=Math.PI;e=(e+1)/2;h=(h+1)/2;k=(k+1)/2;d=(d+f)/4;g=(g+c)/4;l=(l+b)/4;e>h&&e>k?.01>e?(b=0,d=c=.707106781):(b=Math.sqrt(e),c=d/b,d=g/b):h>k?.01>h?(b=.707106781,c=0,d=.707106781):(c=Math.sqrt(h),b=d/c,d=l/c):.01>k?(c=b=.707106781,d=0):(d=Math.sqrt(k),b=g/d,c=l/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-l)*(b-l)+(g-c)*(g-c)+(f-d)*(f-d));.001>Math.abs(a)&&(a=1);this.x=(b-l)/a;this.y=(g-c)/a;this.z=(f-d)/a;this.w=Math.acos((e+h+k-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 THREE.Vector4,b=new THREE.Vector4);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),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)},lengthManhattan: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())},setLength:function(a){return this.multiplyScalar(a/this.length())},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){this.subVectors(b,a).multiplyScalar(c).add(a);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];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},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];this.w=a.array[b+3];return this}}; -THREE.Euler=function(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||THREE.Euler.DefaultOrder};THREE.Euler.RotationOrders="XYZ YZX ZXY XZY YXZ ZYX".split(" ");THREE.Euler.DefaultOrder="XYZ"; -THREE.Euler.prototype={constructor:THREE.Euler,get x(){return this._x},set x(a){this._x=a;this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a;this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a;this.onChangeCallback()},get order(){return this._order},set order(a){this._order=a;this.onChangeCallback()},set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._order=d||this._order;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x, -this._y,this._z,this._order)},copy:function(a){this._x=a._x;this._y=a._y;this._z=a._z;this._order=a._order;this.onChangeCallback();return this},setFromRotationMatrix:function(a,b,c){var d=THREE.Math.clamp,e=a.elements;a=e[0];var g=e[4],f=e[8],h=e[1],l=e[5],k=e[9],m=e[2],p=e[6],e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(-k,e),this._z=Math.atan2(-g,a)):(this._x=Math.atan2(p,l),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(k,-1,1)),.99999>Math.abs(k)? -(this._y=Math.atan2(f,e),this._z=Math.atan2(h,l)):(this._y=Math.atan2(-m,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(p,-1,1)),.99999>Math.abs(p)?(this._y=Math.atan2(-m,e),this._z=Math.atan2(-g,l)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(m,-1,1)),.99999>Math.abs(m)?(this._x=Math.atan2(p,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-g,l))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-k,l),this._y=Math.atan2(-m,a)):(this._x= -0,this._y=Math.atan2(f,e))):"XZY"===b?(this._z=Math.asin(-d(g,-1,1)),.99999>Math.abs(g)?(this._x=Math.atan2(p,l),this._y=Math.atan2(f,a)):(this._x=Math.atan2(-k,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;return function(b,c,d){void 0===a&&(a=new THREE.Matrix4);a.makeRotationFromQuaternion(b);this.setFromRotationMatrix(a,c,d);return this}}(),setFromVector3:function(a, -b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new THREE.Quaternion;return function(b){a.setFromEuler(this);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 THREE.Vector3(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}};THREE.Line3=function(a,b){this.start=void 0!==a?a:new THREE.Vector3;this.end=void 0!==b?b:new THREE.Vector3}; -THREE.Line3.prototype={constructor:THREE.Line3,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},center:function(a){return(a||new THREE.Vector3).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){return(a||new THREE.Vector3).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){var c=b||new THREE.Vector3;return this.delta(c).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);var e=b.dot(b),e=b.dot(a)/e;d&&(e=THREE.Math.clamp(e,0,1));return e}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);c=c||new THREE.Vector3;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)}};THREE.Box2=function(a,b){this.min=void 0!==a?a:new THREE.Vector2(Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector2(-Infinity,-Infinity)}; -THREE.Box2.prototype={constructor:THREE.Box2,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.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?!0:!1},getParameter:function(a,b){return(b||new THREE.Vector2).set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.y -this.max.y?!1:!0},clampPoint:function(a,b){return(b||new THREE.Vector2).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new THREE.Vector2;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)}};THREE.Box3=function(a,b){this.min=void 0!==a?a:new THREE.Vector3(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector3(-Infinity,-Infinity,-Infinity)}; -THREE.Box3.prototype={constructor:THREE.Box3,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;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?!0:!1},getParameter:function(a,b){return(b||new THREE.Vector3).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))},isIntersectionBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.zthis.max.z?!1:!0},clampPoint:function(a,b){return(b||new THREE.Vector3).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new THREE.Vector3;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a= -new THREE.Vector3;return function(b){b=b||new THREE.Sphere;b.center=this.center();b.radius=.5*this.size(a).length();return b}}(),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},applyMatrix4:function(){var a=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];return function(b){a[0].set(this.min.x,this.min.y, -this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b);a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b);a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.makeEmpty();this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a); -this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&&a.max.equals(this.max)}};THREE.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]);0this.determinant()&&(f=-f);c.x=g[12];c.y=g[13];c.z=g[14];b.elements.set(this.elements);c=1/f;var g=1/h,k=1/l;b.elements[0]*=c;b.elements[1]*= -c;b.elements[2]*=c;b.elements[4]*=g;b.elements[5]*=g;b.elements[6]*=g;b.elements[8]*=k;b.elements[9]*=k;b.elements[10]*=k;d.setFromRotationMatrix(b);e.x=f;e.y=h;e.z=l;return this}}(),makeFrustum:function(a,b,c,d,e,g){var f=this.elements;f[0]=2*e/(b-a);f[4]=0;f[8]=(b+a)/(b-a);f[12]=0;f[1]=0;f[5]=2*e/(d-c);f[9]=(d+c)/(d-c);f[13]=0;f[2]=0;f[6]=0;f[10]=-(g+e)/(g-e);f[14]=-2*g*e/(g-e);f[3]=0;f[7]=0;f[11]=-1;f[15]=0;return this},makePerspective:function(a,b,c,d){a=c*Math.tan(THREE.Math.degToRad(.5*a)); -var e=-a;return this.makeFrustum(e*b,a*b,e,a,c,d)},makeOrthographic:function(a,b,c,d,e,g){var f=this.elements,h=b-a,l=c-d,k=g-e;f[0]=2/h;f[4]=0;f[8]=0;f[12]=-((b+a)/h);f[1]=0;f[5]=2/l;f[9]=0;f[13]=-((c+d)/l);f[2]=0;f[6]=0;f[10]=-2/k;f[14]=-((g+e)/k);f[3]=0;f[7]=0;f[11]=0;f[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){this.elements.set(a);return this},toArray:function(){var a=this.elements;return[a[0], -a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]]}};THREE.Ray=function(a,b){this.origin=void 0!==a?a:new THREE.Vector3;this.direction=void 0!==b?b:new THREE.Vector3}; -THREE.Ray.prototype={constructor:THREE.Ray,set:function(a,b){this.origin.copy(a);this.direction.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.origin.copy(a.origin);this.direction.copy(a.direction);return this},at:function(a,b){return(b||new THREE.Vector3).copy(this.direction).multiplyScalar(a).add(this.origin)},recast:function(){var a=new THREE.Vector3;return function(b){this.origin.copy(this.at(b,a));return this}}(),closestPointToPoint:function(a, -b){var c=b||new THREE.Vector3;c.subVectors(a,this.origin);var d=c.dot(this.direction);return 0>d?c.copy(this.origin):c.copy(this.direction).multiplyScalar(d).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new THREE.Vector3;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 THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,g,f){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),k=c.dot(this.direction),m=-c.dot(b),p=c.lengthSq(),n=Math.abs(1-l*l),q;0=-q?e<=q?(h=1/n,d*=h,e*=h,l=d*(d+l*e+2*k)+e*(l*d+e+2*m)+p):(e=h,d=Math.max(0,-(l*e+k)),l=-d*d+e*(e+2*m)+p):(e=-h,d=Math.max(0,-(l*e+k)), -l=-d*d+e*(e+2*m)+p):e<=-q?(d=Math.max(0,-(-l*h+k)),e=0g)return null;g=Math.sqrt(g-e);e=d-g;d+=g;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),isIntersectionPlane:function(a){var b=a.distanceToPoint(this.origin);return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},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){var c=this.distanceToPlane(a);return null===c?null:this.at(c,b)},isIntersectionBox:function(){var a=new THREE.Vector3;return function(b){return null!==this.intersectBox(b,a)}}(),intersectBox:function(a,b){var c,d,e,g,f;d=1/this.direction.x;g=1/this.direction.y;f=1/this.direction.z;var h=this.origin;0<=d?(c=(a.min.x-h.x)*d,d*=a.max.x-h.x):(c=(a.max.x-h.x)*d,d*=a.min.x-h.x);0<=g?(e=(a.min.y-h.y)*g,g*=a.max.y-h.y):(e=(a.max.y-h.y)*g,g*=a.min.y- -h.y);if(c>g||e>d)return null;if(e>c||c!==c)c=e;if(gf||e>d)return null;if(e>c||c!==c)c=e;if(fd?null:this.at(0<=c?c:d,b)},intersectTriangle:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3,d=new THREE.Vector3;return function(e,g,f,h,l){b.subVectors(g,e);c.subVectors(f,e);d.crossVectors(b,c);g=this.direction.dot(d);if(0g)h=-1, -g=-g;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;f=h*this.direction.dot(b.cross(a));if(0>f||e+f>g)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/g,l)}}(),applyMatrix4:function(a){this.direction.add(this.origin).applyMatrix4(a);this.origin.applyMatrix4(a);this.direction.sub(this.origin);this.direction.normalize();return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}}; -THREE.Sphere=function(a,b){this.center=void 0!==a?a:new THREE.Vector3;this.radius=void 0!==b?b:0}; -THREE.Sphere.prototype={constructor:THREE.Sphere,set:function(a,b){this.center.copy(a);this.radius=b;return this},setFromPoints:function(){var a=new THREE.Box3;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).center(d);for(var e=0,g=0,f=b.length;g=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},clampPoint:function(a,b){var c=this.center.distanceToSquared(a),d=b||new THREE.Vector3;d.copy(a);c>this.radius*this.radius&&(d.sub(this.center).normalize(),d.multiplyScalar(this.radius).add(this.center)); -return d},getBoundingBox:function(a){a=a||new THREE.Box3;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}}; -THREE.Frustum=function(a,b,c,d,e,g){this.planes=[void 0!==a?a:new THREE.Plane,void 0!==b?b:new THREE.Plane,void 0!==c?c:new THREE.Plane,void 0!==d?d:new THREE.Plane,void 0!==e?e:new THREE.Plane,void 0!==g?g:new THREE.Plane]}; -THREE.Frustum.prototype={constructor:THREE.Frustum,set:function(a,b,c,d,e,g){var f=this.planes;f[0].copy(a);f[1].copy(b);f[2].copy(c);f[3].copy(d);f[4].copy(e);f[5].copy(g);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],g=c[3],f=c[4],h=c[5],l=c[6],k=c[7],m=c[8],p=c[9],n=c[10],q=c[11],s=c[12],t=c[13],v=c[14], -c=c[15];b[0].setComponents(g-a,k-f,q-m,c-s).normalize();b[1].setComponents(g+a,k+f,q+m,c+s).normalize();b[2].setComponents(g+d,k+h,q+p,c+t).normalize();b[3].setComponents(g-d,k-h,q-p,c-t).normalize();b[4].setComponents(g-e,k-l,q-n,c-v).normalize();b[5].setComponents(g+e,k+l,q+n,c+v).normalize();return this},intersectsObject:function(){var a=new THREE.Sphere;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere);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 g=d[e];a.x=0f&&0>g)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}};THREE.Plane=function(a,b){this.normal=void 0!==a?a:new THREE.Vector3(1,0,0);this.constant=void 0!==b?b:0}; -THREE.Plane.prototype={constructor:THREE.Plane,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 THREE.Vector3,b=new THREE.Vector3;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d, -c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a, -b){return this.orthoPoint(a,b).sub(a).negate()},orthoPoint:function(a,b){var c=this.distanceToPoint(a);return(b||new THREE.Vector3).copy(this.normal).multiplyScalar(c)},isIntersectionLine:function(a){var b=this.distanceToPoint(a.start);a=this.distanceToPoint(a.end);return 0>b&&0a&&0g||1e;e++)8===e||13===e||18===e||23===e?b[e]="-":14===e?b[e]="4":(2>=c&&(c=33554432+16777216*Math.random()|0),d=c&15,c>>=4,b[e]=a[19===e?d&3|8:d]);return b.join("")}}(),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)},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)},random16:function(){return(65280*Math.random()+255*Math.random())/65535},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(){var a=Math.PI/180;return function(b){return b*a}}(), -radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},nearestPowerOfTwo:function(a){return Math.pow(2,Math.round(Math.log(a)/Math.LN2))},nextPowerOfTwo:function(a){a--;a|=a>>1;a|=a>>2;a|=a>>4;a|=a>>8;a|=a>>16;a++;return a}}; -THREE.Spline=function(a){function b(a,b,c,d,e,g,f){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*f+(-3*(b-c)-2*a-d)*g+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,g,f,h,l,k,m,p,n;this.initFromArray=function(a){this.points=[];for(var b=0;bthis.points.length-2?this.points.length-1:g+1;c[3]=g>this.points.length-3?this.points.length-1:g+ -2;k=this.points[c[0]];m=this.points[c[1]];p=this.points[c[2]];n=this.points[c[3]];h=f*f;l=f*h;d.x=b(k.x,m.x,p.x,n.x,f,h,l);d.y=b(k.y,m.y,p.y,n.y,f,h,l);d.z=b(k.z,m.z,p.z,n.z,f,h,l);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a=b.x+b.y}}(); -THREE.Triangle.prototype={constructor:THREE.Triangle,set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},area:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a, -this.b);return.5*a.cross(b).length()}}(),midpoint:function(a){return(a||new THREE.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return THREE.Triangle.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new THREE.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return THREE.Triangle.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return THREE.Triangle.containsPoint(a,this.a,this.b,this.c)}, -equals:function(a){return a.a.equals(this.a)&&a.b.equals(this.b)&&a.c.equals(this.c)}};THREE.Channels=function(){this.mask=1};THREE.Channels.prototype={constructor:THREE.Channels,set:function(a){this.mask=1<d;d++)if(e[d]===e[(d+1)%3]){a.push(g);break}for(g=a.length-1;0<=g;g--)for(e=a[g],this.faces.splice(e, -1),c=0,f=this.faceVertexUvs.length;cthis.duration)for(a=0;a=e.referenceCount&&(e.unbind(),delete this.propertyBindingMap[d])}return this},findActionByName:function(a){for(var b=0;b=c.weight)&&c.enabled)for(var g=0;gc?a:b},lerp_boolean_immediate:function(a,b,c){return a},lerp_string:function(a,b,c){return.5>c?a:b},lerp_string_immediate:function(a,b,c){return a},getLerpFunc:function(a,b){if(void 0===a||null===a)throw Error("examplarValue is null");switch(typeof a){case "object":if(a.lerp)return THREE.AnimationUtils.lerp_object;if(a.slerp)return THREE.AnimationUtils.slerp_object;break;case "number":return THREE.AnimationUtils.lerp_number;case "boolean":return b?THREE.AnimationUtils.lerp_boolean:THREE.AnimationUtils.lerp_boolean_immediate; -case "string":return b?THREE.AnimationUtils.lerp_string:THREE.AnimationUtils.lerp_string_immediate}}};THREE.KeyframeTrack=function(a,b){if(void 0===a)throw Error("track name is undefined");if(void 0===b||0===b.length)throw Error("no keys in track named "+a);this.name=a;this.keys=b;this.lastIndex=0;this.validate();this.optimize()}; -THREE.KeyframeTrack.prototype={constructor:THREE.KeyframeTrack,getAt:function(a){for(;this.lastIndex=this.keys[this.lastIndex].time;)this.lastIndex++;for(;0=this.keys.length)return this.setResult(this.keys[this.keys.length-1].value),this.result;if(0===this.lastIndex)return this.setResult(this.keys[0].value),this.result;var b=this.keys[this.lastIndex-1];this.setResult(b.value);if(b.constantToNext)return this.result; -var c=this.keys[this.lastIndex];return this.result=this.lerpValues(this.result,c.value,(a-b.time)/(c.time-b.time))},shift:function(a){if(0!==a)for(var b=0;b=b)e++;else break;0c.time){console.error(" key.time is less than previous key time, out of order keys", -this,b,c,a);return}a=c}return this}},optimize:function(){var a=[],b=this.keys[0];a.push(b);THREE.AnimationUtils.getEqualsFunc(b.value);for(var c=1;cthis.cumulativeWeight){var a= -1-this.cumulativeWeight;this.cumulativeValue=this.lerpValue(this.cumulativeValue,this.originalValue,a/(this.cumulativeWeight+a))}this.setValue(this.cumulativeValue)&&this.triggerDirty&&this.triggerDirty();this.cumulativeValue=null;this.cumulativeWeight=0}}}; -THREE.PropertyBinding.parseTrackName=function(a){var b=/^(([\w]+\/)*)([\w-\d]+)?(\.([\w]+)(\[([\w\d\[\]\_. ]+)\])?)?(\.([\w.]+)(\[([\w\d\[\]\_. ]+)\])?)$/,c=b.exec(a);if(!c)throw Error("cannot parse trackName at all: "+a);c.index===b.lastIndex&&b.lastIndex++;b={directoryName:c[1],nodeName:c[3],objectName:c[5],objectIndex:c[7],propertyName:c[9],propertyIndex:c[11]};if(null===b.propertyName||0===b.propertyName.length)throw Error("can not parse propertyName from trackName: "+a);return b}; -THREE.PropertyBinding.findNode=function(a,b){function c(a){for(var c=0;cc?a:b};THREE.StringKeyframeTrack.prototype.compareValues=function(a,b){return a===b};THREE.StringKeyframeTrack.prototype.clone=function(){for(var a=[],b=0;bc?a:b};THREE.BooleanKeyframeTrack.prototype.compareValues=function(a,b){return a===b};THREE.BooleanKeyframeTrack.prototype.clone=function(){for(var a=[],b=0;bl.opacity&&(l.transparent=!0);c.setTextures(h);return c.parse(l)}}()};THREE.Loader.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},get:function(a){for(var b=this.handlers,c=0,d=b.length;cf;f++)n=w[l++],u=v[2*n],n=v[2*n+1],u=new THREE.Vector2(u,n),2!==f&&c.faceVertexUvs[d][h].push(u),0!==f&&c.faceVertexUvs[d][h+1].push(u);p&&(p=3*w[l++],q.normal.set(D[p++],D[p++],D[p]),t.normal.copy(q.normal));if(s)for(d=0;4>d;d++)p=3*w[l++],s=new THREE.Vector3(D[p++],D[p++],D[p]),2!==d&&q.vertexNormals.push(s),0!==d&&t.vertexNormals.push(s); -m&&(m=w[l++],m=x[m],q.color.setHex(m),t.color.setHex(m));if(b)for(d=0;4>d;d++)m=w[l++],m=x[m],2!==d&&q.vertexColors.push(new THREE.Color(m)),0!==d&&t.vertexColors.push(new THREE.Color(m));c.faces.push(q);c.faces.push(t)}else{q=new THREE.Face3;q.a=w[l++];q.b=w[l++];q.c=w[l++];h&&(h=w[l++],q.materialIndex=h);h=c.faces.length;if(d)for(d=0;df;f++)n=w[l++],u=v[2*n],n=v[2*n+1],u=new THREE.Vector2(u,n),c.faceVertexUvs[d][h].push(u);p&&(p=3*w[l++],q.normal.set(D[p++], -D[p++],D[p]));if(s)for(d=0;3>d;d++)p=3*w[l++],s=new THREE.Vector3(D[p++],D[p++],D[p]),q.vertexNormals.push(s);m&&(m=w[l++],q.color.setHex(x[m]));if(b)for(d=0;3>d;d++)m=w[l++],q.vertexColors.push(new THREE.Color(x[m]));c.faces.push(q)}})(d);(function(){var b=void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,f=a.skinWeights.length;dthis.opacity&&(b.opacity=this.opacity);!0===this.transparent&&(b.transparent=this.transparent);0a.x||1a.x?0:1;break;case THREE.MirroredRepeatWrapping:1===Math.abs(Math.floor(a.x)%2)?a.x=Math.ceil(a.x)-a.x:a.x-=Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case THREE.MirroredRepeatWrapping:1===Math.abs(Math.floor(a.y)% -2)?a.y=Math.ceil(a.y)-a.y:a.y-=Math.floor(a.y)}this.flipY&&(a.y=1-a.y)}}};THREE.EventDispatcher.prototype.apply(THREE.Texture.prototype);THREE.TextureIdCount=0;THREE.CanvasTexture=function(a,b,c,d,e,g,f,h,l){THREE.Texture.call(this,a,b,c,d,e,g,f,h,l);this.needsUpdate=!0};THREE.CanvasTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CanvasTexture.prototype.constructor=THREE.CanvasTexture; -THREE.CubeTexture=function(a,b,c,d,e,g,f,h,l){b=void 0!==b?b:THREE.CubeReflectionMapping;THREE.Texture.call(this,a,b,c,d,e,g,f,h,l);this.images=a;this.flipY=!1};THREE.CubeTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CubeTexture.prototype.constructor=THREE.CubeTexture;THREE.CubeTexture.prototype.copy=function(a){THREE.Texture.prototype.copy.call(this,a);this.images=a.images;return this}; -THREE.CompressedTexture=function(a,b,c,d,e,g,f,h,l,k,m){THREE.Texture.call(this,null,g,f,h,l,k,d,e,m);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1};THREE.CompressedTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CompressedTexture.prototype.constructor=THREE.CompressedTexture; -THREE.DataTexture=function(a,b,c,d,e,g,f,h,l,k,m){THREE.Texture.call(this,null,g,f,h,l,k,d,e,m);this.image={data:a,width:b,height:c};this.magFilter=void 0!==l?l:THREE.NearestFilter;this.minFilter=void 0!==k?k:THREE.NearestFilter;this.generateMipmaps=this.flipY=!1};THREE.DataTexture.prototype=Object.create(THREE.Texture.prototype);THREE.DataTexture.prototype.constructor=THREE.DataTexture; -THREE.VideoTexture=function(a,b,c,d,e,g,f,h,l){function k(){requestAnimationFrame(k);a.readyState===a.HAVE_ENOUGH_DATA&&(m.needsUpdate=!0)}THREE.Texture.call(this,a,b,c,d,e,g,f,h,l);this.generateMipmaps=!1;var m=this;k()};THREE.VideoTexture.prototype=Object.create(THREE.Texture.prototype);THREE.VideoTexture.prototype.constructor=THREE.VideoTexture;THREE.Group=function(){THREE.Object3D.call(this);this.type="Group"};THREE.Group.prototype=Object.create(THREE.Object3D.prototype); -THREE.Group.prototype.constructor=THREE.Group;THREE.Points=function(a,b){THREE.Object3D.call(this);this.type="Points";this.geometry=void 0!==a?a:new THREE.Geometry;this.material=void 0!==b?b:new THREE.PointsMaterial({color:16777215*Math.random()})};THREE.Points.prototype=Object.create(THREE.Object3D.prototype);THREE.Points.prototype.constructor=THREE.Points; -THREE.Points.prototype.raycast=function(){var a=new THREE.Matrix4,b=new THREE.Ray;return function(c,d){function e(a,e){var f=b.distanceSqToPoint(a);if(fc.far||d.push({distance:k,distanceToRay:Math.sqrt(f),point:h.clone(),index:e,face:null,object:g})}}var g=this,f=g.geometry,h=c.params.Points.threshold;a.getInverse(this.matrixWorld);b.copy(c.ray).applyMatrix4(a);if(null===f.boundingBox||!1!== -b.isIntersectionBox(f.boundingBox)){var h=h/((this.scale.x+this.scale.y+this.scale.z)/3),l=h*h,h=new THREE.Vector3;if(f instanceof THREE.BufferGeometry){var k=f.index,f=f.attributes.position.array;if(null!==k)for(var m=k.array,k=0,p=m.length;kg||(m.applyMatrix4(this.matrixWorld),t=d.ray.origin.distanceTo(m),td.far||e.push({distance:t,point:k.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this}))}else for(q=q.position.array,n=0,s=q.length/3-1;ng||(m.applyMatrix4(this.matrixWorld),t=d.ray.origin.distanceTo(m),td.far||e.push({distance:t,point:k.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this}))}else if(f instanceof THREE.Geometry)for(h=f.vertices,l=h.length,n=0;ng||(m.applyMatrix4(this.matrixWorld),t=d.ray.origin.distanceTo(m),td.far||e.push({distance:t,point:k.clone().applyMatrix4(this.matrixWorld), -index:n,face:null,faceIndex:null,object:this}))}}}();THREE.Line.prototype.clone=function(){return(new this.constructor(this.geometry,this.material)).copy(this)};THREE.LineStrip=0;THREE.LinePieces=1;THREE.LineSegments=function(a,b){THREE.Line.call(this,a,b);this.type="LineSegments"};THREE.LineSegments.prototype=Object.create(THREE.Line.prototype);THREE.LineSegments.prototype.constructor=THREE.LineSegments; -THREE.Mesh=function(a,b){THREE.Object3D.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new THREE.Geometry;this.material=void 0!==b?b:new THREE.MeshBasicMaterial({color:16777215*Math.random()});this.updateMorphTargets()};THREE.Mesh.prototype=Object.create(THREE.Object3D.prototype);THREE.Mesh.prototype.constructor=THREE.Mesh; -THREE.Mesh.prototype.updateMorphTargets=function(){if(void 0!==this.geometry.morphTargets&&0b.far?null:{distance:c,point:u.clone(), -object:a}}function c(c,d,e,g,k,m,p,u){f.fromArray(g,3*m);h.fromArray(g,3*p);l.fromArray(g,3*u);if(c=b(c,d,e,f,h,l,v))k&&(n.fromArray(k,2*m),q.fromArray(k,2*p),s.fromArray(k,2*u),c.uv=a(v,f,h,l,n,q,s)),c.face=new THREE.Face3(m,p,u,THREE.Triangle.normal(f,h,l)),c.faceIndex=m;return c}var d=new THREE.Matrix4,e=new THREE.Ray,g=new THREE.Sphere,f=new THREE.Vector3,h=new THREE.Vector3,l=new THREE.Vector3,k=new THREE.Vector3,m=new THREE.Vector3,p=new THREE.Vector3,n=new THREE.Vector2,q=new THREE.Vector2, -s=new THREE.Vector2,t=new THREE.Vector3,v=new THREE.Vector3,u=new THREE.Vector3;return function(u,t){var x=this.geometry,B=this.material;if(void 0!==B){null===x.boundingSphere&&x.computeBoundingSphere();var y=this.matrixWorld;g.copy(x.boundingSphere);g.applyMatrix4(y);if(!1!==u.ray.isIntersectionSphere(g)&&(d.getInverse(y),e.copy(u.ray).applyMatrix4(d),null===x.boundingBox||!1!==e.isIntersectionBox(x.boundingBox))){var z,A;if(x instanceof THREE.BufferGeometry){var J,F,B=x.index,y=x.attributes,x=y.position.array; -void 0!==y.uv&&(z=y.uv.array);if(null!==B)for(var y=B.array,C=0,N=y.length;C=d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break;for(;ethis.scale.x*this.scale.y||c.push({distance:Math.sqrt(d),point:this.position,face:null,object:this})}}();THREE.Sprite.prototype.clone=function(){return(new this.constructor(this.material)).copy(this)};THREE.Particle=THREE.Sprite; -THREE.LensFlare=function(a,b,c,d,e){THREE.Object3D.call(this);this.lensFlares=[];this.positionScreen=new THREE.Vector3;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,c,d,e)};THREE.LensFlare.prototype=Object.create(THREE.Object3D.prototype);THREE.LensFlare.prototype.constructor=THREE.LensFlare; -THREE.LensFlare.prototype.add=function(a,b,c,d,e,g){void 0===b&&(b=-1);void 0===c&&(c=0);void 0===g&&(g=1);void 0===e&&(e=new THREE.Color(16777215));void 0===d&&(d=THREE.NormalBlending);c=Math.min(c,Math.max(0,c));this.lensFlares.push({texture:a,size:b,distance:c,x:0,y:0,z:0,scale:1,rotation:0,opacity:g,color:e,blending:d})}; -THREE.LensFlare.prototype.updateLensFlares=function(){var a,b=this.lensFlares.length,c,d=2*-this.positionScreen.x,e=2*-this.positionScreen.y;for(a=0;a dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );", -THREE.ShaderChunk.logdepthbuf_fragment,THREE.ShaderChunk.color_fragment,"\toutgoingLight = diffuseColor.rgb;",THREE.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2E3},opacity:{type:"f",value:1}},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.begin_vertex,THREE.ShaderChunk.morphtarget_vertex, -THREE.ShaderChunk.project_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;\nuniform float mFar;\nuniform float opacity;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\t#else\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\t#endif\n\tfloat color = 1.0 - smoothstep( mNear, mFar, depth );\n\tgl_FragColor = vec4( vec3( color ), opacity );\n}"].join("\n")}, -normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvNormal = normalize( normalMatrix * normal );",THREE.ShaderChunk.begin_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.project_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;\nvarying vec3 vNormal;",THREE.ShaderChunk.common, -THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", -THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},equirect:{uniforms:{tEquirect:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;", -THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );", -THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.begin_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.project_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common, -THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {",THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}, -distanceRGBA:{uniforms:{lightPos:{type:"v3",value:new THREE.Vector3(0,0,0)}},vertexShader:["varying vec4 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.begin_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.project_vertex,THREE.ShaderChunk.worldpos_vertex,"vWorldPosition = worldPosition;\n}"].join("\n"),fragmentShader:["uniform vec3 lightPos;\nvarying vec4 vWorldPosition;", -THREE.ShaderChunk.common,"vec4 pack1K ( float depth ) {\n depth /= 1000.0;\n const vec4 bitSh = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bitMsk = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = fract( depth * bitSh );\n\tres -= res.xxyz * bitMsk;\n\treturn res; \n}\nfloat unpack1K ( vec4 color ) {\n\tconst vec4 bitSh = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n\treturn dot( color, bitSh ) * 1000.0;\n}\nvoid main () {\n\tgl_FragColor = pack1K( length( vWorldPosition.xyz - lightPos.xyz ) );\n}"].join("\n")}}; -THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===G&&(a*=d,b*=d,c*=d);r.clearColor(a,b,c,d)}function c(){I.init();r.viewport(na,oa,pa,qa);b(U.r,U.g,U.b,X)}function d(){ra=Aa=null;sa="";ta=-1;wa=!0;I.reset()}function e(a){a.preventDefault();d();c();W.clear()}function g(a){a=a.target;a.removeEventListener("dispose",g);a:{var b=W.get(a);if(a.image&&b.__image__webglTextureCube)r.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;r.deleteTexture(b.__webglTexture)}W.delete(a)}la.textures--} -function f(a){a=a.target;a.removeEventListener("dispose",f);var b=W.get(a),c=W.get(a.texture);if(a&&void 0!==c.__webglTexture){r.deleteTexture(c.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(c=0;6>c;c++)r.deleteFramebuffer(b.__webglFramebuffer[c]),r.deleteRenderbuffer(b.__webglRenderbuffer[c]);else r.deleteFramebuffer(b.__webglFramebuffer),r.deleteRenderbuffer(b.__webglRenderbuffer);W.delete(a.texture);W.delete(a)}la.textures--}function h(a){a=a.target;a.removeEventListener("dispose", -h);l(a);W.delete(a)}function l(a){var b=W.get(a).program;a.program=void 0;void 0!==b&&ua.releaseProgram(b)}function k(a,b){return b[0]-a[0]}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,b,c,d,e){var f;c.transparent? -(d=Z,f=++fa):(d=ca,f=++ga);f=d[f];void 0!==f?(f.id=a.id,f.object=a,f.geometry=b,f.material=c,f.z=V.z,f.group=e):(f={id:a.id,object:a,geometry:b,material:c,z:V.z,group:e},d.push(f))}function q(a,b){if(!1!==a.visible){if(0!==(a.channels.mask&b.channels.mask))if(a instanceof THREE.Light)da.push(a);else if(a instanceof THREE.Sprite)ea.push(a);else if(a instanceof THREE.LensFlare)ja.push(a);else if(a instanceof THREE.ImmediateRenderObject)!0===aa.sortObjects&&(V.setFromMatrixPosition(a.matrixWorld),V.applyProjection(xa)), -n(a,null,a.material,V.z,null);else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Points)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),!1===a.frustumCulled||!0===Ba.intersectsObject(a)){var c=a.material;if(!0===c.visible){!0===aa.sortObjects&&(V.setFromMatrixPosition(a.matrixWorld),V.applyProjection(xa));var d=va.update(a);if(c instanceof THREE.MeshFaceMaterial)for(var e=d.groups,f=c.materials,c=0,g=e.length;c=ha.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ha.maxTextures);ya+=1;return a}function D(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function x(a,b,c){c?(r.texParameteri(a,r.TEXTURE_WRAP_S,N(b.wrapS)),r.texParameteri(a,r.TEXTURE_WRAP_T,N(b.wrapT)),r.texParameteri(a,r.TEXTURE_MAG_FILTER, -N(b.magFilter)),r.texParameteri(a,r.TEXTURE_MIN_FILTER,N(b.minFilter))):(r.texParameteri(a,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(a,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.",b),r.texParameteri(a,r.TEXTURE_MAG_FILTER,C(b.magFilter)),r.texParameteri(a,r.TEXTURE_MIN_FILTER,C(b.minFilter)), -b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.",b));!(c=S.get("EXT_texture_filter_anisotropic"))||b.type===THREE.FloatType&&null===S.get("OES_texture_float_linear")||b.type===THREE.HalfFloatType&&null===S.get("OES_texture_half_float_linear")||!(1b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function y(a){return THREE.Math.isPowerOfTwo(a.width)&& -THREE.Math.isPowerOfTwo(a.height)}function z(a,b){var c=W.get(a);if(6===a.image.length)if(0h;h++)f[h]=!aa.autoScaleCubemaps|| -d||e?e?a.image[h].image:a.image[h]:B(a.image[h],ha.maxCubemapSize);var k=y(f[0]),l=N(a.format),n=N(a.type);x(r.TEXTURE_CUBE_MAP,a,k);for(h=0;6>h;h++)if(d)for(var m,q=f[h].mipmaps,p=0,s=q.length;pd;d++)c.__webglFramebuffer[d]=r.createFramebuffer(),c.__webglRenderbuffer[d]=r.createRenderbuffer(),I.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+d,0,g,a.width,a.height,0,g,h,null),J(c.__webglFramebuffer[d],a,r.TEXTURE_CUBE_MAP_POSITIVE_X+d),F(c.__webglRenderbuffer[d],a);a.texture.generateMipmaps&&e&&r.generateMipmap(r.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=r.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer: -r.createRenderbuffer(),I.bindTexture(r.TEXTURE_2D,d.__webglTexture),x(r.TEXTURE_2D,a.texture,e),I.texImage2D(r.TEXTURE_2D,0,g,a.width,a.height,0,g,h,null),J(c.__webglFramebuffer,a,r.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,c.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,c.__webglRenderbuffer):F(c.__webglRenderbuffer, -a),a.texture.generateMipmaps&&e&&r.generateMipmap(r.TEXTURE_2D);b?I.bindTexture(r.TEXTURE_CUBE_MAP,null):I.bindTexture(r.TEXTURE_2D,null);r.bindRenderbuffer(r.RENDERBUFFER,null);r.bindFramebuffer(r.FRAMEBUFFER,null)}a?(c=W.get(a),d=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,e=a.height,h=g=0):(d=null,c=pa,e=qa,g=na,h=oa);d!==za&&(r.bindFramebuffer(r.FRAMEBUFFER,d),r.viewport(g,h,c,e),za=d);b&&(d=W.get(a.texture),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0, -r.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,d.__webglTexture,0));Da=c;Ea=e};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else{var g=W.get(a).__webglFramebuffer;if(g){var h=!1;g!==za&&(r.bindFramebuffer(r.FRAMEBUFFER,g),h=!0);try{var k=a.texture;k.format!==THREE.RGBAFormat&&N(k.format)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."): -k.type===THREE.UnsignedByteType||N(k.type)===r.getParameter(r.IMPLEMENTATION_COLOR_READ_TYPE)||k.type===THREE.FloatType&&S.get("WEBGL_color_buffer_float")||k.type===THREE.HalfFloatType&&S.get("EXT_color_buffer_half_float")?r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE?r.readPixels(b,c,d,e,N(k.format),N(k.type),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&& -r.bindFramebuffer(r.FRAMEBUFFER,za)}}}};this.supportsFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).");return S.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");return S.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."); -return S.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).");return S.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");return S.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax= -function(){console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");return S.get("EXT_blend_minmax")};this.supportsVertexTextures=function(){return ha.vertexTextures};this.supportsInstancedArrays=function(){console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).");return S.get("ANGLE_instanced_arrays")};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")}; -this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return $.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");$.enabled=a}}, -shadowMapType:{get:function(){return $.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");$.type=a}},shadowMapCullFace:{get:function(){return $.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");$.cullFace=a}},shadowMapDebug:{get:function(){return $.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");$.debug=a}}})}; -THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();this.width=a;this.height=b;c=c||{};void 0===c.minFilter&&(c.minFilter=THREE.LinearFilter);this.texture=new THREE.Texture(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy);this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.shareDepthFrom=void 0!==c.shareDepthFrom?c.shareDepthFrom:null}; -THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,get wrapS(){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.");return this.texture.wrapS},set wrapS(a){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.");this.texture.wrapS=a},get wrapT(){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.");return this.texture.wrapT},set wrapT(a){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.");this.texture.wrapT=a}, -get magFilter(){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.");return this.texture.magFilter},set magFilter(a){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.");this.texture.magFilter=a},get minFilter(){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.");return this.texture.minFilter},set minFilter(a){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.");this.texture.minFilter=a},get anisotropy(){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."); -return this.texture.anisotropy},set anisotropy(a){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.");this.texture.anisotropy=a},get offset(){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset.");return this.texture.offset},set offset(a){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset.");this.texture.offset=a},get repeat(){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat.");return this.texture.repeat},set repeat(a){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."); -this.texture.repeat=a},get format(){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format.");return this.texture.format},set format(a){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format.");this.texture.format=a},get type(){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type.");return this.texture.type},set type(a){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type.");this.texture.type=a},get generateMipmaps(){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."); -return this.texture.generateMipmaps},set generateMipmaps(a){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.");this.texture.generateMipmaps=a},setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose()},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.shareDepthFrom= -a.shareDepthFrom;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube; -THREE.WebGLBufferRenderer=function(a,b,c){var d;this.setMode=function(a){d=a};this.render=function(b,g){a.drawArrays(d,b,g);c.calls++;c.vertices+=g;d===a.TRIANGLES&&(c.faces+=g/3)};this.renderInstances=function(a){var c=b.get("ANGLE_instanced_arrays");if(null===c)console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{var f=a.attributes.position;f instanceof THREE.InterleavedBufferAttribute?c.drawArraysInstancedANGLE(d, -0,f.data.count,a.maxInstancedCount):c.drawArraysInstancedANGLE(d,0,f.count,a.maxInstancedCount)}}}; -THREE.WebGLIndexedBufferRenderer=function(a,b,c){var d,e,g;this.setMode=function(a){d=a};this.setIndex=function(c){c.array instanceof Uint32Array&&b.get("OES_element_index_uint")?(e=a.UNSIGNED_INT,g=4):(e=a.UNSIGNED_SHORT,g=2)};this.render=function(b,h){a.drawElements(d,h,e,b*g);c.calls++;c.vertices+=h;d===a.TRIANGLES&&(c.faces+=h/3)};this.renderInstances=function(a){var c=b.get("ANGLE_instanced_arrays");null===c?console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."): -c.drawElementsInstancedANGLE(d,a.index.array.length,e,0,a.maxInstancedCount)}}; -THREE.WebGLExtensions=function(a){var b={};this.get=function(c){if(void 0!==b[c])return b[c];var d;switch(c){case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"); -break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}; -THREE.WebGLCapabilities=function(a,b,c){function d(b){if("highp"===b){if(0c){var d=b;b=c;c=d}d=a[b];return void 0===d?(a[b]=[c],!0):-1===d.indexOf(c)?(d.push(c),!0):!1}var g=new THREE.WebGLGeometries(a,b,c);this.getAttributeBuffer=function(a){return a instanceof THREE.InterleavedBufferAttribute?b.get(a.data).__webglBuffer:b.get(a).__webglBuffer};this.getWireframeAttribute= -function(c){var g=b.get(c);if(void 0!==g.wireframe)return g.wireframe;var l=[],k=c.index,m=c.attributes;c=m.position;if(null!==k)for(var m={},k=k.array,p=0,n=k.length;p 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n")); -x.compileShader(K);x.compileShader(E);x.attachShader(M,K);x.attachShader(M,E);x.linkProgram(M);A=M;u=x.getAttribLocation(A,"position");w=x.getAttribLocation(A,"uv");c=x.getUniformLocation(A,"uvOffset");d=x.getUniformLocation(A,"uvScale");e=x.getUniformLocation(A,"rotation");g=x.getUniformLocation(A,"scale");f=x.getUniformLocation(A,"color");h=x.getUniformLocation(A,"map");l=x.getUniformLocation(A,"opacity");k=x.getUniformLocation(A,"modelViewMatrix");m=x.getUniformLocation(A,"projectionMatrix");p= -x.getUniformLocation(A,"fogType");n=x.getUniformLocation(A,"fogDensity");q=x.getUniformLocation(A,"fogNear");s=x.getUniformLocation(A,"fogFar");t=x.getUniformLocation(A,"fogColor");v=x.getUniformLocation(A,"alphaTest");M=document.createElement("canvas");M.width=8;M.height=8;K=M.getContext("2d");K.fillStyle="white";K.fillRect(0,0,8,8);J=new THREE.Texture(M);J.needsUpdate=!0}x.useProgram(A);B.initAttributes();B.enableAttribute(u);B.enableAttribute(w);B.disableUnusedAttributes();B.disable(x.CULL_FACE); -B.enable(x.BLEND);x.bindBuffer(x.ARRAY_BUFFER,y);x.vertexAttribPointer(u,2,x.FLOAT,!1,16,0);x.vertexAttribPointer(w,2,x.FLOAT,!1,16,8);x.bindBuffer(x.ELEMENT_ARRAY_BUFFER,z);x.uniformMatrix4fv(m,!1,Q.projectionMatrix.elements);B.activeTexture(x.TEXTURE0);x.uniform1i(h,0);K=M=0;(E=L.fog)?(x.uniform3f(t,E.color.r,E.color.g,E.color.b),E instanceof THREE.Fog?(x.uniform1f(q,E.near),x.uniform1f(s,E.far),x.uniform1i(p,1),K=M=1):E instanceof THREE.FogExp2&&(x.uniform1f(n,E.density),x.uniform1i(p,2),K=M=2)): -(x.uniform1i(p,0),K=M=0);for(var E=0,O=b.length;Ec)return null;var d=[],e=[],g=[],f,h,l;if(0=k--){console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()");break}f=h;c<=f&&(f=0);h=f+1;c<=h&&(h=0);l=h+1;c<=l&&(l=0);var m;a:{var p= -m=void 0,n=void 0,q=void 0,s=void 0,t=void 0,v=void 0,u=void 0,w=void 0,p=a[e[f]].x,n=a[e[f]].y,q=a[e[h]].x,s=a[e[h]].y,t=a[e[l]].x,v=a[e[l]].y;if(Number.EPSILON>(q-p)*(v-n)-(s-n)*(t-p))m=!1;else{var D=void 0,x=void 0,B=void 0,y=void 0,z=void 0,A=void 0,J=void 0,F=void 0,C=void 0,N=void 0,C=F=J=w=u=void 0,D=t-q,x=v-s,B=p-t,y=n-v,z=q-p,A=s-n;for(m=0;m=-Number.EPSILON&& -F>=-Number.EPSILON&&J>=-Number.EPSILON)){m=!1;break a}m=!0}}if(m){d.push([a[e[f]],a[e[h]],a[e[l]]]);g.push([e[f],e[h],e[l]]);f=h;for(l=h+1;lNumber.EPSILON){if(0A||A> -z)return[];k=l*m-k*p;if(0>k||k>z)return[]}else{if(0d?[]:k===d?f?[]:[g]:a<=d?[g,h]:[g,l]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return Math.abs(a)>Number.EPSILON?(b=g*c-d*b,0f&&(f=d);var g=a+1;g>d&&(g=0);d=e(h[a],h[f],h[g],k[b]);if(!d)return!1;d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;cQ){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(p=F;ph;h++)k=l[h].x+":"+l[h].y,k=m[k],void 0!==k&&(l[h]=k);return p.concat()},isClockWise:function(a){return 0>THREE.ShapeUtils.area(a)},b2:function(){return function(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}}(),b3:function(){return function(a,b,c,d,e){var g= -1-a,f=1-a;return g*g*g*b+3*f*f*a*c+3*(1-a)*a*a*d+a*a*a*e}}()};THREE.Audio=function(a){THREE.Object3D.call(this);this.type="Audio";this.context=a.context;this.source=this.context.createBufferSource();this.source.onended=this.onEnded.bind(this);this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.panner=this.context.createPanner();this.panner.connect(this.gain);this.autoplay=!1;this.startTime=0;this.playbackRate=1;this.isPlaying=!1};THREE.Audio.prototype=Object.create(THREE.Object3D.prototype); -THREE.Audio.prototype.constructor=THREE.Audio;THREE.Audio.prototype.load=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a,!0);c.responseType="arraybuffer";c.onload=function(a){b.context.decodeAudioData(this.response,function(a){b.source.buffer=a;b.autoplay&&b.play()})};c.send();return this}; -THREE.Audio.prototype.play=function(){if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else{var a=this.context.createBufferSource();a.buffer=this.source.buffer;a.loop=this.source.loop;a.onended=this.source.onended;a.start(0,this.startTime);a.playbackRate.value=this.playbackRate;this.isPlaying=!0;this.source=a;this.connect()}};THREE.Audio.prototype.pause=function(){this.source.stop();this.startTime=this.context.currentTime}; -THREE.Audio.prototype.stop=function(){this.source.stop();this.startTime=0};THREE.Audio.prototype.connect=function(){void 0!==this.filter?(this.source.connect(this.filter),this.filter.connect(this.panner)):this.source.connect(this.panner)};THREE.Audio.prototype.disconnect=function(){void 0!==this.filter?(this.source.disconnect(this.filter),this.filter.disconnect(this.panner)):this.source.disconnect(this.panner)}; -THREE.Audio.prototype.setFilter=function(a){!0===this.isPlaying?(this.disconnect(),this.filter=a,this.connect()):this.filter=a};THREE.Audio.prototype.getFilter=function(){return this.filter};THREE.Audio.prototype.setPlaybackRate=function(a){this.playbackRate=a;!0===this.isPlaying&&(this.source.playbackRate.value=this.playbackRate)};THREE.Audio.prototype.getPlaybackRate=function(){return this.playbackRate};THREE.Audio.prototype.onEnded=function(){this.isPlaying=!1}; -THREE.Audio.prototype.setLoop=function(a){this.source.loop=a};THREE.Audio.prototype.getLoop=function(){return this.source.loop};THREE.Audio.prototype.setRefDistance=function(a){this.panner.refDistance=a};THREE.Audio.prototype.getRefDistance=function(){return this.panner.refDistance};THREE.Audio.prototype.setRolloffFactor=function(a){this.panner.rolloffFactor=a};THREE.Audio.prototype.getRolloffFactor=function(){return this.panner.rolloffFactor}; -THREE.Audio.prototype.setVolume=function(a){this.gain.gain.value=a};THREE.Audio.prototype.getVolume=function(){return this.gain.gain.value};THREE.Audio.prototype.updateMatrixWorld=function(){var a=new THREE.Vector3;return function(b){THREE.Object3D.prototype.updateMatrixWorld.call(this,b);a.setFromMatrixPosition(this.matrixWorld);this.panner.setPosition(a.x,a.y,a.z)}}();THREE.AudioListener=function(){THREE.Object3D.call(this);this.type="AudioListener";this.context=new (window.AudioContext||window.webkitAudioContext)}; -THREE.AudioListener.prototype=Object.create(THREE.Object3D.prototype);THREE.AudioListener.prototype.constructor=THREE.AudioListener; -THREE.AudioListener.prototype.updateMatrixWorld=function(){var a=new THREE.Vector3,b=new THREE.Quaternion,c=new THREE.Vector3,d=new THREE.Vector3;return function(e){THREE.Object3D.prototype.updateMatrixWorld.call(this,e);e=this.context.listener;var g=this.up;this.matrixWorld.decompose(a,b,c);d.set(0,0,-1).applyQuaternion(b);e.setPosition(a.x,a.y,a.z);e.setOrientation(d.x,d.y,d.z,g.x,g.y,g.z)}}();THREE.Curve=function(){}; -THREE.Curve.prototype={constructor:THREE.Curve,getPoint:function(a){console.warn("THREE.Curve: Warning, getPoint() not implemented!");return null},getPointAt:function(a){a=this.getUtoTmapping(a);return this.getPoint(a)},getPoints:function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPoint(b/a));return c},getSpacedPoints:function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPointAt(b/a));return c},getLength:function(){var a=this.getLengths();return a[a.length-1]},getLengths:function(a){a|| -(a=this.__arcLengthDivisions?this.__arcLengthDivisions:200);if(this.cacheArcLengths&&this.cacheArcLengths.length===a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b=[],c,d=this.getPoint(0),e,g=0;b.push(0);for(e=1;e<=a;e++)c=this.getPoint(e/a),g+=c.distanceTo(d),b.push(g),d=c;return this.cacheArcLengths=b},updateArcLengths:function(){this.needsUpdate=!0;this.getLengths()},getUtoTmapping:function(a,b){var c=this.getLengths(),d=0,e=c.length,g;g=b?b:a*c[e-1];for(var f=0,h=e- -1,l;f<=h;)if(d=Math.floor(f+(h-f)/2),l=c[d]-g,0>l)f=d+1;else if(0b&&(b=0);1=b)return a=this.curves[d],b=1-(c[d]-b)/a.getLength(),a.getPointAt(b);d++}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;for(var a=[],b=0,c=0,d=this.curves.length;cNumber.EPSILON){if(0>l&&(g=b[f],k=-k,h=b[e],l=-l),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=l*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x|| -g.x<=a.x&&a.x<=h.x))return!0}return d}var e=THREE.ShapeUtils.isClockWise,g=function(a){for(var b=[],c=new THREE.Path,d=0,e=a.length;db.length-2?b.length-1:c+1],b=b[c>b.length-3?b.length-1:c+2],c=THREE.CurveUtils.interpolate;return new THREE.Vector2(c(d.x,e.x,g.x,b.x,a),c(d.y,e.y,g.y,b.y,a))};THREE.EllipseCurve=function(a,b,c,d,e,g,f,h){this.aX=a;this.aY=b;this.xRadius=c;this.yRadius=d;this.aStartAngle=e;this.aEndAngle=g;this.aClockwise=f;this.aRotation=h||0};THREE.EllipseCurve.prototype=Object.create(THREE.Curve.prototype); -THREE.EllipseCurve.prototype.constructor=THREE.EllipseCurve; -THREE.EllipseCurve.prototype.getPoint=function(a){var b=this.aEndAngle-this.aStartAngle;0>b&&(b+=2*Math.PI);b>2*Math.PI&&(b-=2*Math.PI);b=!0===this.aClockwise?this.aEndAngle+(1-a)*(2*Math.PI-b):this.aStartAngle+a*b;a=this.aX+this.xRadius*Math.cos(b);var c=this.aY+this.yRadius*Math.sin(b);if(0!==this.aRotation){var b=Math.cos(this.aRotation),d=Math.sin(this.aRotation),e=a;a=(e-this.aX)*b-(c-this.aY)*d+this.aX;c=(e-this.aX)*d+(c-this.aY)*b+this.aY}return new THREE.Vector2(a,c)}; -THREE.ArcCurve=function(a,b,c,d,e,g){THREE.EllipseCurve.call(this,a,b,c,c,d,e,g)};THREE.ArcCurve.prototype=Object.create(THREE.EllipseCurve.prototype);THREE.ArcCurve.prototype.constructor=THREE.ArcCurve;THREE.LineCurve3=THREE.Curve.create(function(a,b){this.v1=a;this.v2=b},function(a){var b=new THREE.Vector3;b.subVectors(this.v2,this.v1);b.multiplyScalar(a);b.add(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=THREE.ShapeUtils.b2;return new THREE.Vector3(b(a,this.v0.x,this.v1.x,this.v2.x),b(a,this.v0.y,this.v1.y,this.v2.y),b(a,this.v0.z,this.v1.z,this.v2.z))}); -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=THREE.ShapeUtils.b3;return new THREE.Vector3(b(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x),b(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y),b(a,this.v0.z,this.v1.z,this.v2.z,this.v3.z))}); -THREE.SplineCurve3=THREE.Curve.create(function(a){console.warn("THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3");this.points=void 0==a?[]:a},function(a){var b=this.points;a*=b.length-1;var c=Math.floor(a);a-=c;var d=b[0==c?c:c-1],e=b[c],g=b[c>b.length-2?b.length-1:c+1],b=b[c>b.length-3?b.length-1:c+2],c=THREE.CurveUtils.interpolate;return new THREE.Vector3(c(d.x,e.x,g.x,b.x,a),c(d.y,e.y,g.y,b.y,a),c(d.z,e.z,g.z,b.z,a))}); -THREE.CatmullRomCurve3=function(){function a(){}var b=new THREE.Vector3,c=new a,d=new a,e=new a;a.prototype.init=function(a,b,c,d){this.c0=a;this.c1=c;this.c2=-3*a+3*b-2*c-d;this.c3=2*a-2*b+c+d};a.prototype.initNonuniformCatmullRom=function(a,b,c,d,e,m,p){a=((b-a)/e-(c-a)/(e+m)+(c-b)/m)*m;d=((c-b)/m-(d-b)/(m+p)+(d-c)/p)*m;this.init(b,c,a,d)};a.prototype.initCatmullRom=function(a,b,c,d,e){this.init(b,c,e*(c-a),e*(d-b))};a.prototype.calc=function(a){var b=a*a;return this.c0+this.c1*a+this.c2*b+this.c3* -b*a};return THREE.Curve.create(function(a){this.points=a||[]},function(a){var f=this.points,h,l;l=f.length;2>l&&console.log("duh, you need at least 2 points");a*=l-1;h=Math.floor(a);a-=h;0===a&&h===l-1&&(h=l-2,a=1);var k,m,p;0===h?(b.subVectors(f[0],f[1]).add(f[0]),k=b):k=f[h-1];m=f[h];p=f[h+1];h+2h&&(h=1);1E-4>l&&(l=h);1E-4>n&&(n=h);c.initNonuniformCatmullRom(k.x,m.x,p.x,f.x,l,h,n);d.initNonuniformCatmullRom(k.y,m.y,p.y,f.y,l,h,n);e.initNonuniformCatmullRom(k.z,m.z,p.z,f.z,l,h,n)}else"catmullrom"===this.type&&(l=void 0!==this.tension?this.tension:.5,c.initCatmullRom(k.x,m.x,p.x,f.x,l),d.initCatmullRom(k.y,m.y,p.y,f.y,l),e.initCatmullRom(k.z,m.z,p.z,f.z,l));return new THREE.Vector3(c.calc(a),d.calc(a),e.calc(a))})}(); -THREE.ClosedSplineCurve3=THREE.Curve.create(function(a){this.points=void 0==a?[]:a},function(a){var b=this.points;a*=b.length-0;var c=Math.floor(a);a-=c;var c=c+(0n;n++){e[0]=p[f[n]];e[1]=p[f[(n+1)%3]];e.sort(c);var q=e.toString();void 0===g[q]?g[q]={vert1:e[0],vert2:e[1],face1:k, -face2:void 0}:g[q].face2=k}e=[];for(q in g)if(f=g[q],void 0===f.face2||h[f.face1].normal.dot(h[f.face2].normal)<=d)k=l[f.vert1],e.push(k.x),e.push(k.y),e.push(k.z),k=l[f.vert2],e.push(k.x),e.push(k.y),e.push(k.z);this.addAttribute("position",new THREE.BufferAttribute(new Float32Array(e),3))};THREE.EdgesGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.EdgesGeometry.prototype.constructor=THREE.EdgesGeometry; -THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=Array.isArray(a)?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;THREE.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;dNumber.EPSILON){var k=Math.sqrt(h),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/l-h)*g-(c.y+f/l-b)*f)/(d*g-e*f);c=h+d*f-a.x;a=b+e*f-a.y;d=c*c+a*a;if(2>=d)return new THREE.Vector2(c,a);d=Math.sqrt(d/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?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(G=a.length;0<=--G;){c=G;d=G-1;0>d&&(d=a.length-1);for(var e=0,f=q+2*m,e=0;eMath.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y, -1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===Array.isArray(a)&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;cNumber.EPSILON&&(h.normalize(),d=Math.acos(THREE.Math.clamp(e[k-1].dot(e[k]),-1,1)),g[k].applyMatrix4(l.makeRotationAxis(h,d))),f[k].crossVectors(e[k],g[k]);if(c)for(d=Math.acos(THREE.Math.clamp(g[0].dot(g[b-1]),-1,1)),d/=b-1,0c&&1===a.x&&(a=new THREE.Vector2(a.x-1,a.y));0===b.x&&0===b.z&&(a=new THREE.Vector2(c/ -2/Math.PI+.5,a.y));return a.clone()}THREE.Geometry.call(this);this.type="PolyhedronGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;for(var l=this,k=0,m=a.length;kq&&(.2>d&&(b[0].x+=1),.2>a&&(b[1].x+=1),.2>p&&(b[2].x+=1));k=0;for(m=this.vertices.length;kp;p++){c[0]=m[e[p]];c[1]=m[e[(p+1)%3]];c.sort(b);var n=c.toString();void 0===d[n]&&(l[2*h]=c[0],l[2*h+1]=c[1],d[n]=!0,h++)}c=new Float32Array(6*h);a=0;for(k=h;ap;p++)d=g[l[2*a+p]],h=6*a+3*p,c[h+0]=d.x,c[h+1]=d.y, -c[h+2]=d.z;this.addAttribute("position",new THREE.BufferAttribute(c,3))}else if(a instanceof THREE.BufferGeometry){if(null!==a.index){k=a.index.array;g=a.attributes.position;e=a.drawcalls;h=0;0===e.length&&a.addGroup(0,k.length);l=new Uint32Array(2*k.length);f=0;for(m=e.length;fp;p++)c[0]=k[a+p],c[1]=k[a+(p+1)%3],c.sort(b),n=c.toString(),void 0===d[n]&&(l[2*h]=c[0],l[2*h+1]=c[1],d[n]=!0,h++)}c=new Float32Array(6*h);a=0;for(k= -h;ap;p++)h=6*a+3*p,d=l[2*a+p],c[h+0]=g.getX(d),c[h+1]=g.getY(d),c[h+2]=g.getZ(d)}else for(g=a.attributes.position.array,h=g.length/3,l=h/3,c=new Float32Array(6*h),a=0,k=l;ap;p++)h=18*a+6*p,l=9*a+3*p,c[h+0]=g[l],c[h+1]=g[l+1],c[h+2]=g[l+2],d=9*a+(p+1)%3*3,c[h+3]=g[d],c[h+4]=g[d+1],c[h+5]=g[d+2];this.addAttribute("position",new THREE.BufferAttribute(c,3))}};THREE.WireframeGeometry.prototype=Object.create(THREE.BufferGeometry.prototype); -THREE.WireframeGeometry.prototype.constructor=THREE.WireframeGeometry;THREE.AxisHelper=function(a){a=a||1;var b=new Float32Array([0,0,0,a,0,0,0,0,0,0,a,0,0,0,0,0,0,a]),c=new Float32Array([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1]);a=new THREE.BufferGeometry;a.addAttribute("position",new THREE.BufferAttribute(b,3));a.addAttribute("color",new THREE.BufferAttribute(c,3));b=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});THREE.LineSegments.call(this,a,b)};THREE.AxisHelper.prototype=Object.create(THREE.LineSegments.prototype); -THREE.AxisHelper.prototype.constructor=THREE.AxisHelper; -THREE.ArrowHelper=function(){var a=new THREE.Geometry;a.vertices.push(new THREE.Vector3(0,0,0),new THREE.Vector3(0,1,0));var b=new THREE.CylinderGeometry(0,.5,1,5,1);b.translate(0,-.5,0);return function(c,d,e,g,f,h){THREE.Object3D.call(this);void 0===g&&(g=16776960);void 0===e&&(e=1);void 0===f&&(f=.2*e);void 0===h&&(h=.2*f);this.position.copy(d);fc.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))}}(); -THREE.ArrowHelper.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);bd;d++)c.faces[d].color=this.colors[4>d?0:1];d=new THREE.MeshBasicMaterial({vertexColors:THREE.FaceColors,wireframe:!0});this.lightSphere=new THREE.Mesh(c,d);this.add(this.lightSphere);this.update()}; -THREE.HemisphereLightHelper.prototype=Object.create(THREE.Object3D.prototype);THREE.HemisphereLightHelper.prototype.constructor=THREE.HemisphereLightHelper;THREE.HemisphereLightHelper.prototype.dispose=function(){this.lightSphere.geometry.dispose();this.lightSphere.material.dispose()}; -THREE.HemisphereLightHelper.prototype.update=function(){var a=new THREE.Vector3;return function(){this.colors[0].copy(this.light.color).multiplyScalar(this.light.intensity);this.colors[1].copy(this.light.groundColor).multiplyScalar(this.light.intensity);this.lightSphere.lookAt(a.setFromMatrixPosition(this.light.matrixWorld).negate());this.lightSphere.geometry.colorsNeedUpdate=!0}}(); -THREE.PointLightHelper=function(a,b){this.light=a;this.light.updateMatrixWorld();var c=new THREE.SphereGeometry(b,4,2),d=new THREE.MeshBasicMaterial({wireframe:!0,fog:!1});d.color.copy(this.light.color).multiplyScalar(this.light.intensity);THREE.Mesh.call(this,c,d);this.matrix=this.light.matrixWorld;this.matrixAutoUpdate=!1};THREE.PointLightHelper.prototype=Object.create(THREE.Mesh.prototype);THREE.PointLightHelper.prototype.constructor=THREE.PointLightHelper; -THREE.PointLightHelper.prototype.dispose=function(){this.geometry.dispose();this.material.dispose()};THREE.PointLightHelper.prototype.update=function(){this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)}; -THREE.SkeletonHelper=function(a){this.bones=this.getBoneList(a);for(var b=new THREE.Geometry,c=0;ch.end&&(h.end=g);c||(c=l)}}for(l in d)h=d[l],this.createAnimation(l,h.start,h.end,a);this.firstAnimation=c}; -THREE.MorphBlendMesh.prototype.setAnimationDirectionForward=function(a){if(a=this.animationsMap[a])a.direction=1,a.directionBackwards=!1};THREE.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(a){if(a=this.animationsMap[a])a.direction=-1,a.directionBackwards=!0};THREE.MorphBlendMesh.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)}; -THREE.MorphBlendMesh.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)};THREE.MorphBlendMesh.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)};THREE.MorphBlendMesh.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)};THREE.MorphBlendMesh.prototype.getAnimationTime=function(a){var b=0;if(a=this.animationsMap[a])b=a.time;return b}; -THREE.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1;if(a=this.animationsMap[a])b=a.duration;return b};THREE.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("THREE.MorphBlendMesh: animation["+a+"] undefined in .playAnimation()")};THREE.MorphBlendMesh.prototype.stopAnimation=function(a){if(a=this.animationsMap[a])a.active=!1}; -THREE.MorphBlendMesh.prototype.update=function(a){for(var b=0,c=this.animationsList.length;bd.duration||0>d.time)d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time&&(d.time=0,d.directionBackwards=!1)}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var g=d.start+THREE.Math.clamp(Math.floor(d.time/e),0,d.length-1),f=d.weight;g!==d.currentFrame&& -(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*f,this.morphTargetInfluences[g]=0,d.lastFrame=d.currentFrame,d.currentFrame=g);e=d.time%e/e;d.directionBackwards&&(e=1-e);d.currentFrame!==d.lastFrame?(this.morphTargetInfluences[d.currentFrame]=e*f,this.morphTargetInfluences[d.lastFrame]=(1-e)*f):this.morphTargetInfluences[d.currentFrame]=f}}}; diff --git a/tools/build.py b/tools/build.py deleted file mode 100644 index 3932675..0000000 --- a/tools/build.py +++ /dev/null @@ -1,72 +0,0 @@ -import os -import sys -import shutil -import re - -currentPath = os.path.dirname (os.path.abspath (__file__)) -os.chdir (currentPath) - -extensions = [ - #{ - # 'name' : 'ExampleExtension', - # 'path' : 'extensions/example/example.js' - #} -] - -def PrintInfo (message): - print ('Info: ' + message) - -def PrintError (error): - print ('Error: ' + error) - -def ReplaceInFile (filePath, source, dest): - file = open (filePath, 'rb') - content = file.read (); - file.close () - content = re.sub (source, dest, content, flags = re.MULTILINE | re.DOTALL) - file = open (filePath, 'wb') - file.write (content); - file.close () - -def BuildWebSite (rootFolder, resultFolder, extensions): - targetFolder = os.path.join (resultFolder, 'website') - shutil.copytree (os.path.join (rootFolder, 'website'), targetFolder) - shutil.copytree (os.path.join (rootFolder, 'jsmodeler'), os.path.join (targetFolder, 'jsmodeler')) - indexFilePath = os.path.join (targetFolder, 'index.html') - importerAppFilePath = os.path.join (targetFolder, 'include', 'importerapp.js') - ReplaceInFile (indexFilePath, 'var useAnalytics = false;', 'var useAnalytics = true;') - ReplaceInFile (indexFilePath, '../jsmodeler/', 'jsmodeler/') - extensionIncludes = '' - for extension in extensions: - extensionIncludes += '\r\n\t' - ReplaceInFile (indexFilePath, '\<\!\-\- ExtensionIncludes \-\-\>.*\<\!\-\- ExtensionIncludesEnd \-\-\>', extensionIncludes) - extensionIncludes = '' - for extension in extensions: - extensionIncludes += 'importerApp.AddExtension (new ' + extension['name'] + ' ());\r\n\t' - ReplaceInFile (importerAppFilePath, '\/\/ ExtensionIncludes.*\/\/ ExtensionIncludesEnd', extensionIncludes) - -def BuildEmbeddable (rootFolder, resultFolder): - targetFolder = os.path.join (resultFolder, 'embeddable') - shutil.copytree (os.path.join (rootFolder, 'embeddable'), targetFolder) - shutil.copytree (os.path.join (rootFolder, 'jsmodeler'), os.path.join (targetFolder, 'jsmodeler')) - indexFilePath = os.path.join (targetFolder, 'multiple.html') - ReplaceInFile (indexFilePath, '../jsmodeler/', 'jsmodeler/') - indexFilePath = os.path.join (targetFolder, 'fullscreen.html') - ReplaceInFile (indexFilePath, '../jsmodeler/', 'jsmodeler/') - -def Main (): - rootFolder = os.path.abspath ('..') - resultFolder = os.path.join (rootFolder, 'build') - if os.path.exists (resultFolder): - shutil.rmtree (resultFolder) - os.mkdir (resultFolder) - - PrintInfo ('Building website to folder <' + resultFolder + '>.') - BuildWebSite (rootFolder, resultFolder, extensions) - - PrintInfo ('Building embeddable example to folder <' + resultFolder + '>.') - BuildEmbeddable (rootFolder, resultFolder) - - return 0 - -sys.exit (Main ()) diff --git a/tools/eyeicon.svg b/tools/eyeicon.svg deleted file mode 100644 index 3317792..0000000 --- a/tools/eyeicon.svg +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/tools/jshintcode.py b/tools/jshintcode.py deleted file mode 100644 index 0a747dc..0000000 --- a/tools/jshintcode.py +++ /dev/null @@ -1,38 +0,0 @@ -import os -import sys -import re - -currentPath = os.path.dirname (os.path.abspath (__file__)) -os.chdir (currentPath) - -def PrintInfo (message): - print ('Info: ' + message) - -def PrintError (error): - print ('Error: ' + error) - -def JSHintFolder (folderPath): - configFilePath = 'jshintconfig.json' - result = os.system ('jshint --config ' + configFilePath + ' ' + folderPath) - if result != 0: - return False - return True - -def Main (): - sourcesPath = os.path.abspath ('../website/include') - PrintInfo ('JSHint folder <' + sourcesPath + '>.') - succeeded = JSHintFolder (sourcesPath) - if not succeeded: - PrintError ('Found JSHint errors.'); - return 1 - - sourcesPath = os.path.abspath ('../embeddable/include') - PrintInfo ('JSHint folder <' + sourcesPath + '>.') - succeeded = JSHintFolder (sourcesPath) - if not succeeded: - PrintError ('Found JSHint errors.'); - return 1 - - return 0 - -sys.exit (Main ()) diff --git a/tools/jshintconfig.json b/tools/jshintconfig.json deleted file mode 100644 index 051343c..0000000 --- a/tools/jshintconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "maxerr" : 50, - "curly" : true, - "forin" : true, - "latedef" : true, - "nonew" : true, - "quotmark" : true, - "unused" : true, - "funcscope" : true, - "lastsemic" : true, - "loopfunc" : true, - "shadow" : true, - "globals" : { - "JSM" : false, - "THREE" : false, - "requestAnimationFrame" : false - } -} diff --git a/website/.htaccess b/website/.htaccess deleted file mode 100644 index 6645d97..0000000 --- a/website/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ -RewriteEngine On -RewriteCond %{HTTPS} off -RewriteRule (.*) https://3dviewer.net/$1 [R=301,L] diff --git a/website/extensions/example/example.js b/website/extensions/example/example.js deleted file mode 100644 index d6cbdcb..0000000 --- a/website/extensions/example/example.js +++ /dev/null @@ -1,21 +0,0 @@ -ExampleExtension = function () -{ - this.ext = null; -}; - -ExampleExtension.prototype.IsEnabled = function () -{ - - return true; -}; - -ExampleExtension.prototype.Init = function (extensionInterface) -{ - this.ext = extensionInterface; - var buttonsDiv = this.ext.GetButtonsDiv () - var buttonImage = $('').addClass ('topbutton').attr ('src', 'extensions/example/example.png').attr ('title', 'Example button.').appendTo (buttonsDiv); - var myThis = this; - buttonImage.click (function () { - alert (JSON.stringify (myThis.ext.GetModelJson ())); - }); -}; diff --git a/website/extensions/example/example.png b/website/extensions/example/example.png deleted file mode 100644 index 4b000f1eee2f38445c6b9bf977e761c1ecc6e963..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=Dj`L74IQk1J+CL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(JriMvj3Yob)t)Yn zAs*g$&u-*pP~>58{Plif)Sq2n_HcYQ;ykFL{nJM2kyX!KgR;Xnc$3Y0iqHKxy4!M>kQrsR8aIUNt( ur>e;z8~$_Jk^<&qc@n!5-?VKE@8N%7yCA0SymmRz84RATelF{r5}E){tz6Rp diff --git a/website/images/back.png b/website/images/back.png deleted file mode 100644 index 0655e6bddc59eae5c09e70077070a493fe65712b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBNrh2+K zhIn|togB#3pdjF4Td)4gXx`Bq1=%L06WVx#ilyS^pR3OC|dl zpFDoUrulJ6`=pGC6EnnB@4jzSUC&Z2@0ok3>A}P+bJw}7`&6K&QQ-MbdO;~in#x4u z?MqHf6VaKdV0+T%)17HozU#i=6|-S#yq9rOTi`{nh-9Nfe#rr~^XBjQO;61b(A#BL W8?@;9-Z?-AGI+ZBxvX!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBN=6kw0 zhIn|to$Srmpupo|xnKR0(HvG;r>zQKoFjHTP!(=2`{mQ)sJwJZ8t2}lQ~o>WOC|dl zYi5_+X_XFdXS1CYm;U4Kj|rhhuTng-v!+L>1TCNRpsU^ZB)7z$xbR8*J@;(;t{gn4 zyYj}QE>)p(D-0$FU03~CGbicR%(CO`b_s$CHGZNDQk%F0W|?v_u-P&_c^R>=$$aU) f%6bh=BgL49D~@e?GoNoB(5Vcbu6{1-oD!M!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_&OvZsq< zh=u>s2?se37zi9TI{kM4rL&J7xi3&zWE$fjAK1Ob`x3{LyS?)qB165DHDo=MHOdt_ z7u2x-Q_?tppzp_=`*DW?4qWinOU%e|YrH7zX8$oeCtz7}vyrUyl$SRaoVi%V5U93p V;c3aEzk${!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J<}BT2$0F1o-U3d z7XEL0Jh>PQIGAg@|Nl>}>gw>$>^?5XCNxKbVcy0Ct6nS+-Wbqp^TkHYD)YO7=bL%& s9EENuUu`Z)S^wkl%a5F!A6F}I&!|+7xxMpj8qiP%Pgg&ebxsLQ0EAUSi2wiq diff --git a/website/images/fitinwindow.png b/website/images/fitinwindow.png deleted file mode 100644 index 1660173f2c4d2cf20571db53afc67e40ad889908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&$#E=^Z=lm)t)Yn zAs*gWCk1k`DDpV({V!|V?R>;zTl7{wy*2!wl-K(vs;$*ns#DC8Z&<8u`TWq9<)8oL zdj8n`vS{`)o|UQ>mzlFZSgaDXEt+AO>SEWL{vQR?R5y2DmEW1inL1lb!s7W)j=2S# zL8^+6@~4IzJYad={YA}G4J~HAjE+*z?;5WKKD061SFY2)*(m<{(A7z6g>*N#x_{uB tv24!c<)=^nRsAEn_fB*9-m`P2$URFAJ#J~!I1}h>22WQ%mvv4FO#mUMay|e6 diff --git a/website/images/fitinwindowsmall.png b/website/images/fitinwindowsmall.png deleted file mode 100644 index 260472e78d78d80c41156e9f0bcc5f728ee77484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^{2!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXCmy7aRjKQz|+Ms z#KM1RKO_y7OOY)+HA9!z^X$!+c47fX`T1Vc?(?waYOZ*5yTYtEm|x{q{9 z4LU3M`k!WUR0zv)`RQ=KU8imPlI3po`McBCpF2}@M@6D+Z~VjB1i_DWA`a?GmXXCO hKi5}AxP5nf!gyAHZJX%y+FqdD44$rjF6*2UngGc*P^JI? diff --git a/website/images/fixup.png b/website/images/fixup.png deleted file mode 100644 index 93503a842ea677551dda1baf525b80b76df68adf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=DjGK$vmro+3}6phSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7io^j8!=>b4Bi#%N% zLp;2%P6*^`HQ-^{`(L(tnw^r`k+&`3igh~-?2~tK%N3uy?s${;R9=9V$gb56D{XW` z1GFrYdx9^-vU<5EGoM?USN`i>BIikFs}R*+MU@_$ycX9v)qt!MO1q!VdvW@yVs}ls zORe0+e73!owkNyll|?mnLri>D|6k;-kyzq|$FW;ZN3=NhmtWLN7R+zhBt7Nsf;Vib d`k#L=-ae7jv`~8aL!fIJJYD@<);T3K0RRP!lvI6;>1s;*b z3=Dj`L74IQk1J+CL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J>y=Lzv)0Vi#%N% zLp;2%P6*^`HQ-^{oASPXik*_$k+&`3igh~-?2~tK%N3uy?s${;R9=9V$gb56D{XW` z1GFrYdx9^-vU<5EGoM?USN`i>BIikFs}R*+MU@_$ycX9v)qt!MO1q!VdvW@yVs}ls zORe0+e73!owkNyll|?mnLri>D|6k;-kyzq|$FW;ZN3=NhmtWLN7R+zhBt7Nsf;Vib d`k#L=mOlF&eD~6XbwJlLc)I$ztaD0e0syCVY&8G? diff --git a/website/images/front.png b/website/images/front.png deleted file mode 100644 index a958bcad36c463d8a779b56c775613578134abe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=DkxK$!8B)5ZfpL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBNmUy~2 zhIn|togB!=q{!o9xnKR0(Hz#fyjK@SXL$el(Cis^M#(r|IQiqHsN$cVYZ4#+SI&>h z&b9s`Y5($&^~%1OGahTseJOwJ9e8q0vF8@gem9lX=M)aA@4NF*YQcw@nwtI38%mF@ zQMq9=sZn`n{|aL@m4|0ktiO21FPg7gA#m~h_752@3>8;I6^vv=86^2Q1!B%{99S;g lE3)a!uan>TwxHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap diff --git a/website/images/hidden.png b/website/images/hidden.png deleted file mode 100644 index f1973683f57bd59bafea8a77d79b0c2b781fbe25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;JKBXv6>j0lrB@K~y+Tt&&SiLQxRMuPHsCB509@<{L#? zxQzl^+6RcDecO--g37h~HuVV#dhgpsw9uusDOywnMO2VQgs*;MbM-3Jq8j*d&dh&i z&fIg4@gEil1jgV73L5&I(ZB&KP=qSvRQlFz(P*?k7z~EO;cy@liS%e(nmOT68wnY3 zsN7_2G#K&w{p%o~@yL42nq@6O9yaiwKpH(jQfr&d>-EMFkDvl23YUm=s%&tOi})#+ zQ{57asoZ3CikHE>iz@qh5n{1eJN_tsk~OEg9B4MZgNa%fF`0nCmL)-&T_+L=huiJ$ zVt-=QK(1j5%9fbyQ?#?mb3hu8&|Dih;hU#GZ8BI8It=n#l~b_V&)aSvtJE`LcOXt3^64MnwY0> zhGcoz7a))M49?*NJqv06jZ4d$4RK!^32RV)$e4`@Iy@fFAk7Bw?O)*^j0W-pglP@^ b!3^UQ`i05rK-m8V00000NkvXXu0mjfwD!lvI6;>1s;*b z3=Dj`L74IQk1J+CL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J<}BT2$0EHo-U3d z7XEY3T;y#~;BgI1OSJfQf5Ed!S41ijo<5e~-Ya6fTaCXwYwfccPbUc-j{hjL>~U;I zs-;z{#I(ih1r9$jQk=$|;>6RepXRj3{-(mK`4Z>&w_Nji=yz<6qif%9)wDJ)rLtd- aWVQJ>W>`p^Wc>{C3xlVtpUXO@geCy2Lr@3+ diff --git a/website/images/info.png b/website/images/info.png deleted file mode 100644 index 8b819ce3af2fd844fb3189ac4f50cc33cfd11d56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_!3HG7B;uuk6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(K&H|6fVg?4j!ywFfJby(BP*9@8HKHUqKdq!Zu_%?HATcwqL@zJ3M8QPQ zK+m}6+4KOQnlGL%jv*HQTd#O?9WoGLdm!ha!4bDkL4?IofQA17BiB6#fn7zfPd&J{ zR{Old4j~qPf&ZPJCm!d&J=T~%apsu`cHC=CLrt=HvMml@wK^!|bxpbAll2SUU5B}! zZ87&Y$r3mDx9RM!#jcCPJP!+$nkY+{F;>mgi{PDSFliG9d)d5mtg9n~HM|mCz@HVT|i#WT>Bl1t_1H+q7b|#pvo(fc{H_3M%ci3hvkkXp0Ph2UyKttY5*l(70 zvG|nSzmhb!9R{2=exA ZA#0Lce5%r^y+Hpnc)I$ztaD0e0svWPj9UNz diff --git a/website/images/left.png b/website/images/left.png deleted file mode 100644 index 1c55d9bee686f4722579494c648feec4f8f41900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=DkxK$!8B)5ZfpL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBNW_h|e zhIn|to$SchpuodYxnKX2@t&noPLI2$Y-?#|SIhJ%*{*D;#;s(O&bjxf(SP@QCeMA0 zgRkFc;Wl6B$0?WYp%nRM#eH8ELC$A(ldiQetzU9>h0wlFhi7VXGwiuO^?|01x};~t z^J#l-O!_M1GWm>8Y^Jxtnu}>?_`GbG*oxQndF)|w+w_i)U71Pk&P1n@tlH0i0v1b7 bzQo$qb8OS|M{Qq$u4M3Z^>bP0l+XkKIAdn= diff --git a/website/images/opened.png b/website/images/opened.png deleted file mode 100644 index 1deeff9404e30f235ed6ff2773b6b956024f8829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_&OlBbJf zh=u>sGmKmf3L-3l=O6uD|0J@`Cm_Q2;iL~N;^onye-|Y>9d2pk!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXWa8_dH_&Ox~Gd{ zh==#v^MPCk3^xiEcHnR_NU0tAc zeA*Q#VZL=qmHZB!|9n^b3nPjY?i}94tk|}c-RWoJfoW3~Jd=+8BOS73+uWO+ZnJm) Uy04{~544iO)78&qol`;+0DTiv^8f$< diff --git a/website/images/right.png b/website/images/right.png deleted file mode 100644 index 9745e8dbdd11537a69b49d31da9b5a57a2065895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=DkxK$!8B)5ZfpL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBNW_!9g zhIn|to$SchpuodYxnKX2@t&noPLG|uGCA4#eKr|pZC`A-Owz^Vtk{;Llm09F&njLv z^@?fnq1NdE?rh4FjH>VUru?{Da6((KQR}7e-=KaL)@3dIHN~nL1)irk7sNX2aK5*h z)TW$yL&?!?($p)zVlK_ko+9~Fx9vfL`+)^Vu1-{3-yqnz`*5=$qwqTq#aU7IHTF|P cXHSv4wdL5R_*)5cfzD*`boFyt=akR{01@YCEdT%j diff --git a/website/images/top.png b/website/images/top.png deleted file mode 100644 index faa426c126a5f4d0e6923fd24894aed5d5946821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEa{HEjtmSN`?>!lvI6;>1s;*b z3=DkxK$!8B)5ZfpL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J>#Bd(*uBNW_h|e zhIn|to$Schs=(u7xnKR0(VV5rT3&UuZfj}fjx+js@%$NMLp5$Cqs=V25ufUxcov^C znQWC@EZ%o{?gW=(%0iOvp5OOA+z{S$Sl%-`%iUH;CUuw4zo+);L2L|rmV2FIU2xag zP4?cMN#fC;k~&#lilzm<-nL}#HIDKR4eke8tcy-)CmfQslMpm`*e9}R<=3;H9ea(` bmU1`GIJRjCyVHN5D;Ydp{an^LB{Ts5Yp-a@ diff --git a/website/images/visible.png b/website/images/visible.png deleted file mode 100644 index 5ee7a527bb448a8cb079a2658358f89849bd8e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;JKBXv6>j0hvieK~y+T)sj0)15pr#ca!)+6hUQGl5Db% zY)BD=6e1R})XHCBDQBc!oGn zsDlXcfv*EkU|zIMlMP551_aWqQY;o@@p!xs|61i`>usrFQyc$FaBF2udd)=)Z{=MYy1OU+M~1|jlM z?ygWMbm5').addClass ('dialogbutton').html (button.text).appendTo (parent); - buttonDiv.click (function () { - button.callback (dialog); - }); - } - - if (this.dialogDiv !== null) { - this.Close (); - } - - this.dialogDiv = $('
').addClass ('dialog').appendTo ($('body')); - $('
').addClass ('dialogtitle').html (parameters.title).appendTo (this.dialogDiv); - this.contentDiv = $('
').addClass ('dialogcontent').appendTo (this.dialogDiv); - if (parameters.text !== null && parameters.text !== undefined) { - this.contentDiv.html (parameters.text); - } - var buttonsDiv = $('
').addClass ('dialogbuttons').appendTo (this.dialogDiv); - - var i, button; - for (i = 0; i < parameters.buttons.length; i++) { - button = parameters.buttons[i]; - AddButton (this, buttonsDiv, button); - } - - document.addEventListener ('click', this.MouseClick.bind (this), true); - this.Resize (); -}; - -FloatingDialog.prototype.Close = function () -{ - if (this.dialogDiv === null) { - return; - } - - this.dialogDiv.remove (); - this.dialogDiv = null; - $('body').unbind ('click'); -}; - -FloatingDialog.prototype.GetContentDiv = function () -{ - return this.contentDiv; -}; - -FloatingDialog.prototype.Resize = function () -{ - if (this.dialogDiv === null) { - return; - } - - this.dialogDiv.css ('left', ((document.body.clientWidth - this.dialogDiv.width ()) / 2.0) + 'px'); - this.dialogDiv.css ('top', ((document.body.clientHeight - this.dialogDiv.height ()) / 3.0) + 'px'); -}; - -FloatingDialog.prototype.MouseClick = function (clickEvent) -{ - if (this.dialogDiv === null) { - return; - } - - var dialogClicked = false; - var target = clickEvent.target; - while (target !== null) { - if (target === this.dialogDiv.get ()[0]) { - dialogClicked = true; - } - target = target.parentElement; - } - - if (!dialogClicked) { - this.Close (); - } -}; - -FloatingControl = function () -{ - this.parent = null; - this.controlDiv = null; - this.contentDiv = null; -}; - -FloatingControl.prototype.Open = function (parameters) -{ - if (this.controlDiv !== null) { - this.Close (); - } - this.parent = parameters.parent; - this.controlDiv = $('
').addClass ('control').appendTo ($('body')); - this.contentDiv = $('
').addClass ('controlcontent').html (parameters.text).appendTo (this.controlDiv); - this.Resize (); -}; - -FloatingControl.prototype.Close = function () -{ - if (this.controlDiv === null) { - return; - } - - this.controlDiv.remove (); - this.controlDiv = null; -}; - -FloatingControl.prototype.Resize = function () -{ - if (this.controlDiv === null) { - return; - } - - this.controlDiv.css ('left', (this.parent.offset ().left + (this.parent.width () - this.controlDiv.width ()) / 2.0) + 'px'); - this.controlDiv.css ('top', (this.parent.offset ().top + (this.parent.height () - this.controlDiv.height ()) / 3.0) + 'px'); -}; diff --git a/website/include/importerapp.css b/website/include/importerapp.css deleted file mode 100644 index 19adc03..0000000 --- a/website/include/importerapp.css +++ /dev/null @@ -1,265 +0,0 @@ -html, body -{ - color : #222222; - background : #dddddd; - font-size : 12px; - font-family : Arial, cursive; - margin : 0px; - padding : 0px; - width : 100%; - height : 100%; -} - -#nosupport -{ - width : 450px; - margin : 0px auto; - padding : 10px; - text-align : center; -} - -#nosupport div.nosupporterror -{ - color : #aa0000; - background : transparent; - font-size : 14px; - margin-bottom : 10px; -} - -#top -{ - color : #dddddd; - background : linear-gradient(#333333, #111111) #222222; - overflow : auto; -} - -#buttons -{ - overflow : auto; - float : left; -} - -#extbuttons -{ - overflow : auto; - float : right; -} - -#logo -{ - color : #ffffff; - background : linear-gradient(#0095c6, #006d91) #008ab8; - font-size : 14px; - text-align : center; - text-decoration : none; - width : 240px; - padding : 5px 0px; - margin : 6px; - box-shadow: 0px 0px 5px #000000; - cursor : pointer; - float : left; -} - -span.version -{ - margin-left : 5px; - font-size : 10px; -} - -div.topbutton -{ - cursor : pointer; - display : block; - float : left; -} - -img.topbutton -{ - width : 25px; - height : 25px; - padding : 7px 4px; - cursor : pointer; - display : block; - float : left; -} - -div.extbutton -{ - color : #000000; - background : linear-gradient(#dddddd, #bbbbbb) #cccccc; - border-radius : 5px; - padding : 5px 10px; - margin : 6px; - cursor : pointer; - display : block; - float : left; -} - -div.extbutton img -{ - margin-right : 5px; - display : block; - float : left; -} - -#left -{ - color : #222222; - background : #cccccc; - width : 250px; - float : left; - overflow : auto; -} - -#menu -{ - margin : 5px; -} - -div.menuitem -{ - padding : 1px 3px; - margin-bottom : 2px; - text-overflow : ellipsis; - white-space : nowrap; - overflow : hidden; -} - -div.menuitem.highlighted -{ - background : #95cae4; - padding : 0px 2px; - border : 1px solid #008ab8; -} - -div.menuitemcontent -{ - margin-left : 15px; - margin-bottom : 5px; -} - -div.menutext -{ - padding : 2px; - margin-left : 3px; - float : left; -} - -img.menubutton -{ - padding : 1px; - float : left; - cursor : pointer; - border : 0px; - display : block; -} - -div.colorbutton -{ - width : 14px; - height : 14px; - border : 1px solid #222222; - float : left; -} - -div.progressbarborder -{ - height : 20px; - border : 1px solid #222222; -} - -div.progressbarcontent -{ - color : #ffffff; - background : #279b61; - height : 20px; -} - -table.infotable -{ - border-collapse : collapse; -} - -table.infotable td -{ - background : #d0d0d0; - padding : 4px 5px; - border : 1px solid #aaaaaa; -} - -div.submenubuttons -{ - -} - -div.submenubuttons img.submenubutton -{ - padding : 3px; - margin-right : 3px; - cursor : pointer; -} - -div.importerdialog -{ - width : 450px; -} - -div.welcometitle -{ - font-size : 19px; - text-align : center; - margin : 20px 0px; -} - -div.welcometext -{ - text-align : center; - margin : 20px 0px; -} - -div.welcometextformats -{ - text-align : center; - font-size : 17px; - margin : 25px 0px; -} - -canvas -{ - display : block; -} - -a -{ - color : #225588; - background : transparent; - text-decoration : none; -} - -a:hover -{ - text-decoration : underline; -} - -@media only screen and (max-device-width : 600px) -{ - #logo - { - display : none; - } - - #left - { - display : none; - } - - #extbuttons - { - display : none; - } - - div.importerdialog - { - width : 80%; - } -} diff --git a/website/include/importerapp.js b/website/include/importerapp.js deleted file mode 100644 index 65aa394..0000000 --- a/website/include/importerapp.js +++ /dev/null @@ -1,755 +0,0 @@ -ExtensionInterface = function (app) -{ - this.app = app; -}; - -ExtensionInterface.prototype.GetButtonsDiv = function () -{ - return this.app.extensionButtons.GetButtonsDiv (); -}; - -ExtensionInterface.prototype.GetModelJson = function () -{ - return this.app.viewer.GetJsonData (); -}; - -ImporterApp = function () -{ - this.canvas = null; - this.viewer = null; - this.fileNames = null; - this.inGenerate = false; - this.meshesGroup = null; - this.materialMenuItems = null; - this.meshMenuItems = null; - this.extensions = []; - this.importerButtons = null; - this.extensionButtons = null; - this.introControl = null; - this.floatingDialog = null; - this.isMobile = null; - this.readyForTest = null; -}; - -ImporterApp.prototype.Init = function () -{ - if (!JSM.IsWebGLEnabled () || !JSM.IsFileApiEnabled ()) { - while (document.body.lastChild) { - document.body.removeChild (document.body.lastChild); - } - - var div = $('
').addClass ('nosupport').appendTo ($('body')); - div.html ([ - '
', - this.GetWelcomeText (), - '
You need a browser which supports the following technologies: WebGL, WebGLRenderingContext, File, FileReader, FileList, Blob, URL.
', - '
' - ].join ('')); - return; - } - - var myThis = this; - var top = $('#top'); - this.importerButtons = new ImporterButtons (top); - this.importerButtons.AddLogo ('Online 3D Viewer v 0.6.6'); - this.importerButtons.AddButton ('images/openfile.png', 'Open File', function () { myThis.OpenFile (); }); - this.importerButtons.AddButton ('images/fitinwindow.png', 'Fit In Window', function () { myThis.FitInWindow (); }); - this.importerButtons.AddToggleButton ('images/fixup.png', 'images/fixupgray.png', 'Enable/Disable Fixed Up Vector', function () { myThis.SetFixUp (); }); - this.importerButtons.AddButton ('images/top.png', 'Set Up Vector (Z)', function () { myThis.SetNamedView ('z'); }); - this.importerButtons.AddButton ('images/bottom.png', 'Set Up Vector (-Z)', function () { myThis.SetNamedView ('-z'); }); - this.importerButtons.AddButton ('images/front.png', 'Set Up Vector (Y)', function () { myThis.SetNamedView ('y'); }); - this.importerButtons.AddButton ('images/back.png', 'Set Up Vector (-Y)', function () { myThis.SetNamedView ('-y'); }); - this.importerButtons.AddButton ('images/left.png', 'Set Up Vector (X)', function () { myThis.SetNamedView ('x'); }); - this.importerButtons.AddButton ('images/right.png', 'Set Up Vector (-X)', function () { myThis.SetNamedView ('-x'); }); - - this.extensionButtons = new ExtensionButtons (top); - this.introControl = new FloatingControl (); - this.floatingDialog = new FloatingDialog (); - - var match = window.matchMedia ('(max-device-width : 600px)'); - this.isMobile = match.matches; - - window.addEventListener ('resize', this.Resize.bind (this), false); - this.Resize (); - - var canvasName = 'modelcanvas'; - this.canvas = $('#' + canvasName); - this.RegisterCanvasClick (); - - window.addEventListener ('dragover', this.DragOver.bind (this), false); - window.addEventListener ('drop', this.Drop.bind (this), false); - - var fileInput = document.getElementById ('file'); - fileInput.addEventListener ('change', this.FileSelected.bind (this), false); - - window.onhashchange = this.LoadFilesFromHash.bind (this); - var hasHashModel = this.LoadFilesFromHash (); - if (!hasHashModel && !this.isMobile) { - this.ShowIntroControl (); - } - - this.viewer = new ImporterViewer (); - this.viewer.Init (canvasName); -}; - -ImporterApp.prototype.ClearReadyForTest = function () -{ - if (this.readyForTest !== null) { - this.readyForTest.remove (); - this.readyForTest = null; - } -}; - -ImporterApp.prototype.SetReadyForTest = function () -{ - this.readyForTest = $('
').attr ('id', 'readyfortest').hide ().appendTo ($('body')); -}; - -ImporterApp.prototype.AddExtension = function (extension) -{ - if (!extension.IsEnabled ()) { - return; - } - - var extInterface = new ExtensionInterface (this); - extension.Init (extInterface); -}; - -ImporterApp.prototype.ShowIntroControl = function () -{ - var dialogText = [ - '
', - this.GetWelcomeText (), - '
', - ].join (''); - this.introControl.Open ({ - parent : this.canvas, - text : dialogText - }); - this.Resize (); -}; - -ImporterApp.prototype.HideIntroControl = function () -{ - this.introControl.Close (); - this.Resize (); -}; - -ImporterApp.prototype.GetWelcomeText = function () -{ - var welcomeText = [ - '
Welcome to Online 3D Viewer!
', - '
Here you can view your local 3D models online. You have three ways to open a file. Use the open button above to select files, simply drag and drop files to this browser window, or define the url of the files as location hash.
', - '
Supported formats: 3ds, obj, stl, off.
', - '
Powered by Three.js and JSModeler.
', - '
', - ].join (''); - return welcomeText; -}; - -ImporterApp.prototype.Resize = function () -{ - function SetWidth (elem, value) - { - elem.width = value; - elem.style.width = value + 'px'; - } - - function SetHeight (elem, value) - { - elem.height = value; - elem.style.height = value + 'px'; - } - - var top = document.getElementById ('top'); - var left = document.getElementById ('left'); - var canvas = document.getElementById ('modelcanvas'); - var height = document.body.clientHeight - top.offsetHeight; - - SetHeight (left, height); - SetHeight (canvas, height); - SetWidth (canvas, document.body.clientWidth - left.offsetWidth); - - this.introControl.Resize (); - this.floatingDialog.Resize (); -}; - -ImporterApp.prototype.JsonLoaded = function (progressBar) -{ - this.Generate (progressBar); -}; - -ImporterApp.prototype.GenerateMenu = function () -{ - function AddDefaultGroup (menu, name, id) - { - var group = menu.AddGroup (name, { - id : id, - openCloseButton : { - title : 'Show/Hide ' + name - } - }); - return group; - } - - function AddInformation (infoGroup, jsonData) - { - var infoTable = new InfoTable (infoGroup.GetContentDiv ()); - - var materialCount = jsonData.materials.length; - var vertexCount = 0; - var triangleCount = 0; - - var i, j, mesh, triangles; - for (i = 0; i < jsonData.meshes.length; i++) { - mesh = jsonData.meshes[i]; - vertexCount += mesh.vertices.length / 3; - for (j = 0; j < mesh.triangles.length; j++) { - triangles = mesh.triangles[j]; - triangleCount += triangles.parameters.length / 9; - } - } - - infoTable.AddRow ('Material count', materialCount); - infoTable.AddRow ('Vertex count', vertexCount); - infoTable.AddRow ('Triangle count', triangleCount); - } - - function AddMaterial (importerApp, importerMenu, materialsGroup, materialIndex, material) - { - var materialMenuItem = materialsGroup.AddSubItem (material.name, { - openCloseButton : { - title : 'Show/Hide Information', - onOpen : function (contentDiv, material) { - contentDiv.empty (); - var materialButtons = $('
').addClass ('submenubuttons').appendTo (contentDiv); - var highlightButton = $('').addClass ('submenubutton').attr ('src', 'images/highlightmesh.png').attr ('title', 'Highlight Meshes By Material').appendTo (materialButtons); - highlightButton.click (function () { - importerApp.HighlightMeshesByMaterial (materialIndex); - }); - var fitInWindowButton = $('').addClass ('submenubutton').attr ('src', 'images/fitinwindowsmall.png').attr ('title', 'Fit Meshes In Window By Material').appendTo (materialButtons); - fitInWindowButton.click (function () { - importerApp.FitMeshesByMaterialInWindow (materialIndex); - }); - var table = new InfoTable (contentDiv); - table.AddColorRow ('Ambient', material.ambient); - table.AddColorRow ('Diffuse', material.diffuse); - table.AddColorRow ('Specular', material.specular); - table.AddRow ('Shininess', material.shininess.toFixed (2)); - table.AddRow ('Opacity', material.opacity.toFixed (2)); - }, - userData : material - } - }); - return materialMenuItem; - } - - function AddMesh (importerApp, importerMenu, meshesGroup, mesh, meshIndex) - { - function AddMeshButtons (importerApp, contentDiv, meshName, meshIndex) - { - function CopyToClipboard (text) { - var input = document.createElement ('input'); - input.style.position = 'absolute'; - input.style.left = '0'; - input.style.top = '0'; - input.setAttribute ('value', text); - document.body.appendChild (input); - input.select (); - document.execCommand ('copy'); - document.body.removeChild(input); - } - - var meshButtons = $('
').addClass ('submenubuttons').appendTo (contentDiv); - var fitInWindowButton = $('').addClass ('submenubutton').attr ('src', 'images/fitinwindowsmall.png').attr ('title', 'Fit Mesh In Window').appendTo (meshButtons); - fitInWindowButton.click (function () { - importerApp.FitMeshInWindow (meshIndex); - }); - var highlightButton = $('').addClass ('submenubutton').attr ('src', 'images/highlightmesh.png').attr ('title', 'Highlight Mesh').appendTo (meshButtons); - highlightButton.click (function () { - importerApp.HighlightMesh (meshIndex); - }); - var copyNameToClipboardButton = $('').addClass ('submenubutton').attr ('src', 'images/copytoclipboard.png').attr ('title', 'Copy Mesh Name To Clipboard').appendTo (meshButtons); - copyNameToClipboardButton.click (function () { - CopyToClipboard (meshName); - }); - } - - var visibleImage = null; - var meshMenuItem = meshesGroup.AddSubItem (mesh.name, { - id : 'meshmenuitem-' + meshIndex.toString (), - openCloseButton : { - title : 'Show/Hide Details', - onOpen : function (contentDiv, mesh) { - contentDiv.empty (); - - AddMeshButtons (importerApp, contentDiv, mesh.name, meshIndex); - var table = new InfoTable (contentDiv); - - var min = new JSM.Coord (JSM.Inf, JSM.Inf, JSM.Inf); - var max = new JSM.Coord (-JSM.Inf, -JSM.Inf, -JSM.Inf); - var i, vertex; - for (i = 0; i < mesh.vertices.length; i = i + 3) { - vertex = new JSM.Coord (mesh.vertices[i], mesh.vertices[i + 1], mesh.vertices[i + 2]); - min.x = JSM.Minimum (min.x, vertex.x); - min.y = JSM.Minimum (min.y, vertex.y); - min.z = JSM.Minimum (min.z, vertex.z); - max.x = JSM.Maximum (max.x, vertex.x); - max.y = JSM.Maximum (max.y, vertex.y); - max.z = JSM.Maximum (max.z, vertex.z); - } - table.AddRow ('X Size', (max.x - min.x).toFixed (2)); - table.AddRow ('Y Size', (max.y - min.y).toFixed (2)); - table.AddRow ('Z Size', (max.z - min.z).toFixed (2)); - - var triangleCount = 0; - var triangles; - for (i = 0; i < mesh.triangles.length; i++) { - triangles = mesh.triangles[i]; - triangleCount += triangles.parameters.length / 9; - } - - table.AddRow ('Vertex count', mesh.vertices.length / 3); - table.AddRow ('Triangle count', triangleCount); - }, - userData : mesh - }, - userButtons : [ - { - id : 'showhidemesh-' + meshIndex, - title : 'Show/Hide Mesh', - onCreate : function (image) { - image.attr ('src', 'images/visible.png'); - visibleImage = image; - }, - onClick : function (image, meshIndex) { - importerApp.ShowHideMesh (meshIndex); - }, - onCtrlClick : function (image, meshIndex) { - importerApp.IsolateMesh (meshIndex); - }, - userData : meshIndex - } - ] - }); - - meshMenuItem.isVisible = true; - meshMenuItem.visibleImage = visibleImage; - return meshMenuItem; - } - - var jsonData = this.viewer.GetJsonData (); - var menu = $('#menu'); - var importerMenu = new ImporterMenu (menu); - - var filesGroup = AddDefaultGroup (importerMenu, 'Files', 'filesmenuitem'); - filesGroup.AddSubItem (this.fileNames.main); - var i; - for (i = 0; i < this.fileNames.requested.length; i++) { - filesGroup.AddSubItem (this.fileNames.requested[i]); - } - - if (this.fileNames.missing.length > 0) { - var missingFilesGroup = AddDefaultGroup (importerMenu, 'Missing Files', 'missingfilesmenuitem'); - for (i = 0; i < this.fileNames.missing.length; i++) { - missingFilesGroup.AddSubItem (this.fileNames.missing[i]); - } - } - - var infoGroup = AddDefaultGroup (importerMenu, 'Information', 'informationmenuitem'); - AddInformation (infoGroup, jsonData); - - this.materialMenuItems = []; - var materialsGroup = AddDefaultGroup (importerMenu, 'Materials', 'materialsmenuitem'); - var material, materialMenuItem; - for (i = 0; i < jsonData.materials.length; i++) { - material = jsonData.materials[i]; - materialMenuItem = AddMaterial (this, importerMenu, materialsGroup, i, material); - this.materialMenuItems.push (materialMenuItem); - } - - this.meshesGroup = AddDefaultGroup (importerMenu, 'Meshes', 'meshesmenuitem'); - this.meshMenuItems = []; - var mesh, meshMenuItem; - for (i = 0; i < jsonData.meshes.length; i++) { - mesh = jsonData.meshes[i]; - meshMenuItem = AddMesh (this, importerMenu, this.meshesGroup, mesh, i); - this.meshMenuItems.push (meshMenuItem); - } - - this.Resize (); -}; - -ImporterApp.prototype.GenerateError = function (errorMessage) -{ - this.viewer.RemoveMeshes (); - var menu = $('#menu'); - menu.empty (); - - this.floatingDialog.Open ({ - title : 'Error', - text : '
' + errorMessage + '
', - buttons : [ - { - text : 'ok', - callback : function (dialog) { - dialog.Close (); - } - } - ] - }); -}; - -ImporterApp.prototype.Generate = function (progressBar) -{ - function ShowMeshes (importerApp, progressBar, merge) - { - importerApp.inGenerate = true; - var environment = { - onStart : function (taskCount) { - progressBar.Init (taskCount); - }, - onProgress : function (currentTask) { - progressBar.Step (currentTask + 1); - }, - onFinish : function () { - importerApp.GenerateMenu (); - importerApp.inGenerate = false; - importerApp.SetReadyForTest (); - importerApp.viewer.Draw (); - } - }; - - if (merge) { - var jsonData = importerApp.viewer.GetJsonData (); - importerApp.viewer.SetJsonData (JSM.MergeJsonDataMeshes (jsonData)); - } - importerApp.viewer.ShowAllMeshes (environment); - } - - var jsonData = this.viewer.GetJsonData (); - if (jsonData.materials.length === 0 || jsonData.meshes.length === 0) { - this.GenerateError ('Failed to open file. Maybe something is wrong with your file.'); - this.SetReadyForTest (); - return; - } - - var myThis = this; - if (jsonData.meshes.length > 250) { - this.floatingDialog.Open ({ - title : 'Information', - text : '
The model contains a large number of meshes. It can cause performance problems. Would you like to merge meshes?
', - buttons : [ - { - text : 'yes', - callback : function (dialog) { - ShowMeshes (myThis, progressBar, true); - dialog.Close (); - } - }, - { - text : 'no', - callback : function (dialog) { - ShowMeshes (myThis, progressBar, false); - dialog.Close (); - } - } - ] - }); - } else { - ShowMeshes (myThis, progressBar, false); - } -}; - -ImporterApp.prototype.FitInWindow = function () -{ - this.viewer.FitInWindow (); -}; - -ImporterApp.prototype.FitMeshInWindow = function (meshIndex) -{ - this.viewer.FitMeshInWindow (meshIndex); -}; - -ImporterApp.prototype.FitMeshesByMaterialInWindow = function (materialIndex) -{ - var meshIndices = this.viewer.GetMeshesByMaterial (materialIndex); - if (meshIndices.length === 0) { - return; - } - this.viewer.FitMeshesInWindow (meshIndices); -}; - -ImporterApp.prototype.SetFixUp = function () -{ - this.viewer.SetFixUp (); -}; - -ImporterApp.prototype.SetNamedView = function (viewName) -{ - this.viewer.SetNamedView (viewName); -}; - -ImporterApp.prototype.SetView = function (viewType) -{ - this.viewer.SetView (viewType); -}; - -ImporterApp.prototype.ShowHideMesh = function (meshIndex) -{ - var meshMenuItem = this.meshMenuItems[meshIndex]; - this.ShowHideMeshInternal (meshIndex, !meshMenuItem.isVisible); - this.viewer.Draw (); -}; - -ImporterApp.prototype.IsolateMesh = function (meshIndex) -{ - var i, meshMenuItem; - - var onlyThisVisible = true; - if (!this.meshMenuItems[meshIndex].isVisible) { - onlyThisVisible = false; - } else { - for (i = 0; i < this.meshMenuItems.length; i++) { - meshMenuItem = this.meshMenuItems[i]; - if (meshMenuItem.isVisible && i !== meshIndex) { - onlyThisVisible = false; - break; - } - } - } - - var i; - for (i = 0; i < this.meshMenuItems.length; i++) { - if (onlyThisVisible) { - this.ShowHideMeshInternal (i, true); - } else { - if (i == meshIndex) { - this.ShowHideMeshInternal (i, true); - } else { - this.ShowHideMeshInternal (i, false); - } - } - } - - this.viewer.Draw (); -}; - -ImporterApp.prototype.ShowHideMeshInternal = function (meshIndex, isVisible) -{ - var meshMenuItem = this.meshMenuItems[meshIndex]; - meshMenuItem.isVisible = isVisible; - meshMenuItem.visibleImage.attr ('src', meshMenuItem.isVisible ? 'images/visible.png' : 'images/hidden.png'); - this.viewer.ShowMesh (meshIndex, meshMenuItem.isVisible); -}; - -ImporterApp.prototype.HighlightMeshInternal = function (meshIndex, highlight) -{ - var meshMenuItem = this.meshMenuItems[meshIndex]; - meshMenuItem.Highlight (highlight); - this.viewer.HighlightMesh (meshIndex, highlight); -}; - -ImporterApp.prototype.ProcessFiles = function (fileList, isUrl) -{ - this.ClearReadyForTest (); - this.HideIntroControl (); - this.floatingDialog.Close (); - if (this.inGenerate) { - return; - } - - var userFiles = fileList; - if (userFiles.length === 0) { - return; - } - - this.fileNames = null; - - var myThis = this; - var processorFunc = JSM.ConvertFileListToJsonData; - if (isUrl) { - processorFunc = JSM.ConvertURLListToJsonData; - } - - var menu = $('#menu'); - menu.empty (); - if (isUrl) { - menu.html ('Downloading files...'); - } else { - menu.html ('Loading files...'); - } - - processorFunc (userFiles, { - onError : function () { - myThis.GenerateError ('No readable file found. You can open 3ds, obj, stl, and off files.'); - myThis.SetReadyForTest (); - return; - }, - onReady : function (fileNames, jsonData) { - myThis.fileNames = fileNames; - myThis.viewer.SetJsonData (jsonData); - menu.empty (); - var progressBar = new ImporterProgressBar (menu); - myThis.JsonLoaded (progressBar); - } - }); -}; - -ImporterApp.prototype.RegisterCanvasClick = function () -{ - var myThis = this; - var mousePosition = null; - this.canvas.mousedown (function () { - mousePosition = [event.pageX, event.pageY]; - }); - this.canvas.mouseup (function (event) { - var mouseMoved = (mousePosition == null || event.pageX != mousePosition[0] || event.pageY != mousePosition[1]); - if (!mouseMoved) { - var x = event.pageX - $(this).offset ().left; - var y = event.pageY - $(this).offset ().top; - myThis.OnCanvasClick (x, y); - } - mousePosition = null; - }); -}; - -ImporterApp.prototype.ScrollMeshIntoView = function (meshIndex) -{ - if (meshIndex == -1) { - return; - } - var menuItem = this.meshMenuItems[meshIndex]; - menuItem.menuItemDiv.get (0).scrollIntoView (); -}; - -ImporterApp.prototype.HighlightMesh = function (meshIndex) -{ - var i, menuItem, highlight; - if (meshIndex != -1) { - for (i = 0; i < this.meshMenuItems.length; i++) { - menuItem = this.meshMenuItems[i]; - highlight = false; - if (i == meshIndex) { - if (!menuItem.IsHighlighted ()) { - this.HighlightMeshInternal (i, true); - } else { - this.HighlightMeshInternal (i, false); - } - } - } - } else { - for (i = 0; i < this.meshMenuItems.length; i++) { - menuItem = this.meshMenuItems[i]; - if (menuItem.IsHighlighted ()) { - this.HighlightMeshInternal (i, false); - } - } - } - - this.viewer.Draw (); -}; - -ImporterApp.prototype.HighlightMeshesByMaterial = function (materialIndex) -{ - var meshIndices = this.viewer.GetMeshesByMaterial (materialIndex); - if (meshIndices.length === 0) { - return; - } - - var i, meshIndex, meshMenuItem; - this.HighlightMesh (-1); - for (i = 0; i < meshIndices.length; i++) { - meshIndex = meshIndices[i]; - meshMenuItem = this.meshMenuItems[meshIndex]; - this.HighlightMeshInternal (meshIndex, true); - } - - this.meshesGroup.SetOpen (true); - this.ScrollMeshIntoView (meshIndices[0]); - this.viewer.Draw (); -}; - -ImporterApp.prototype.OnCanvasClick = function (x, y) -{ - if (this.meshMenuItems == null) { - return; - } - var objects = this.viewer.GetMeshesUnderPosition (x, y); - var meshIndex = -1; - if (objects.length > 0) { - meshIndex = objects[0].originalJsonMeshIndex; - this.meshesGroup.SetOpen (true); - } - - this.HighlightMesh (meshIndex); - this.ScrollMeshIntoView (meshIndex); -}; - -ImporterApp.prototype.DragOver = function (event) -{ - event.stopPropagation (); - event.preventDefault (); - event.dataTransfer.dropEffect = 'copy'; -}; - -ImporterApp.prototype.Drop = function (event) -{ - event.stopPropagation (); - event.preventDefault (); - this.ResetHash (); - this.ProcessFiles (event.dataTransfer.files, false); -}; - -ImporterApp.prototype.FileSelected = function (event) -{ - event.stopPropagation (); - event.preventDefault (); - this.ResetHash (); - this.ProcessFiles (event.target.files, false); -}; - -ImporterApp.prototype.OpenFile = function () -{ - var fileInput = document.getElementById ('file'); - fileInput.click (); -}; - -ImporterApp.prototype.ResetHash = function () -{ - if (window.location.hash.length > 1) { - window.location.hash = ''; - } -}; - -ImporterApp.prototype.LoadFilesFromHash = function () -{ - if (window.location.hash.length < 2) { - return false; - } - - var fileInput = $('#file'); - var hash = window.location.hash; - if (hash == '#testmode') { - fileInput.css ('display', ''); - fileInput.css ('position', 'absolute'); - fileInput.css ('right', '10px'); - fileInput.css ('bottom', '10px'); - return false; - } - - fileInput.css ('display', 'none'); - var hash = hash.substr (1, hash.length - 1); - var fileList = hash.split (','); - this.ProcessFiles (fileList, true); - return true; -}; - -window.onload = function () -{ - var importerApp = new ImporterApp (); - importerApp.Init (); - // ExtensionIncludes - importerApp.AddExtension (new ExampleExtension ()); - // ExtensionIncludesEnd -}; diff --git a/website/include/importermenu.js b/website/include/importermenu.js deleted file mode 100644 index a3f36d9..0000000 --- a/website/include/importermenu.js +++ /dev/null @@ -1,234 +0,0 @@ -function IsSet (val) -{ - return val !== undefined && val !== null; -} - -InfoTable = function (parent) -{ - this.table = $('').addClass ('infotable').appendTo (parent); -}; - -InfoTable.prototype.AddRow = function (name, value) -{ - var tableRow = $('').appendTo (this.table); - $('').appendTo (this.table); - $('r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"
').html (name).appendTo (tableRow); - $('').html (value).appendTo (tableRow); -}; - -InfoTable.prototype.AddColorRow = function (name, color) -{ - var tableRow = $('
').html (name).appendTo (tableRow); - - var valueColumn = document.createElement ('td'); - var valueColumn = $('').appendTo (tableRow); - - var colorDiv = $('
').addClass ('colorbutton').appendTo (valueColumn); - colorDiv.attr ('title', '(' + color[0] + ', ' + color[1] + ', ' + color[2] + ')'); - var hexColor = JSM.RGBComponentsToHexColor (color[0] * 255.0, color[1] * 255.0, color[2] * 255.0); - var colorString = hexColor.toString (16); - while (colorString.length < 6) { - colorString = '0' + colorString; - } - colorDiv.css ('background', '#' + colorString); -}; - -ImporterMenuItem = function (parentDiv, name, parameters) -{ - this.parentDiv = parentDiv; - this.parameters = parameters; - - this.menuItemDiv = null; - this.isOpen = null; - this.openCloseImage = null; - this.contentDiv = null; - - this.Initialize (name); -}; - -ImporterMenuItem.prototype.Initialize = function (name) -{ - this.menuItemDiv = $('
').addClass ('menuitem').appendTo (this.parentDiv); - if (IsSet (this.parameters)) { - if (IsSet (this.parameters.id)) { - this.menuItemDiv.attr ('id', this.parameters.id); - } - if (IsSet (this.parameters.openCloseButton)) { - this.AddOpenCloseButton (); - } - if (IsSet (this.parameters.userButtons)) { - var i, userButton; - for (i = 0; i < this.parameters.userButtons.length; i++) { - userButton = this.parameters.userButtons[i]; - this.AddUserButton (userButton); - } - } - } - - var menuItemTextDiv = $('
').addClass ('menuitem').html (name).attr ('title', name).appendTo (this.menuItemDiv); - if (IsSet (this.parameters) && IsSet (this.parameters.openCloseButton)) { - menuItemTextDiv.css ('cursor', 'pointer'); - } -}; - -ImporterMenuItem.prototype.AddSubItem = function (name, parameters) -{ - return new ImporterMenuItem (this.contentDiv, name, parameters); -}; - -ImporterMenuItem.prototype.GetContentDiv = function () -{ - return this.contentDiv; -}; - -ImporterMenuItem.prototype.AddOpenCloseButton = function () -{ - var myThis = this; - this.isOpen = false; - this.contentDiv = $('
').addClass ('menuitemcontent').hide ().appendTo (this.parentDiv); - this.openCloseImage = $('').addClass ('menubutton').attr ('title', this.parameters.openCloseButton.title).appendTo (this.menuItemDiv); - this.openCloseImage.attr ('src', 'images/closed.png'); - this.menuItemDiv.click (function () { - myThis.SetOpen (!myThis.isOpen); - }); -}; - -ImporterMenuItem.prototype.AddUserButton = function (userButton) -{ - var userImage = $('').addClass ('menubutton').attr ('title', userButton.title).appendTo (this.menuItemDiv); - if (IsSet (userButton.id)) { - userImage.attr ('id', userButton.id); - } - if (IsSet (userButton.onCreate)) { - userButton.onCreate (userImage, userButton.userData); - } - if (IsSet (userButton.onClick) || IsSet (userButton.onCtrlClick)) { - userImage.click (function (event) { - event.stopPropagation (); - if (event.ctrlKey && IsSet (userButton.onCtrlClick)) { - userButton.onCtrlClick (userImage, userButton.userData); - } else if (IsSet (userButton.onClick)) { - userButton.onClick (userImage, userButton.userData); - } - }); - } -}; - -ImporterMenuItem.prototype.SetOpen = function (isOpen) -{ - this.isOpen = isOpen; - if (this.isOpen) { - if (IsSet (this.parameters.openCloseButton.onOpen)) { - this.parameters.openCloseButton.onOpen (this.contentDiv, this.parameters.openCloseButton.userData); - } - this.contentDiv.show (); - this.openCloseImage.attr ('src', 'images/opened.png'); - } else { - if (IsSet (this.parameters.openCloseButton.onClose)) { - this.parameters.openCloseButton.onClose (this.contentDiv, this.parameters.openCloseButton.userData); - } - this.contentDiv.hide (); - this.openCloseImage.attr ('src', 'images/closed.png'); - } -}; - -ImporterMenuItem.prototype.Highlight = function (highlight) -{ - if (highlight) { - this.menuItemDiv.addClass ('highlighted'); - } else { - this.menuItemDiv.removeClass ('highlighted'); - } -}; - -ImporterMenuItem.prototype.IsHighlighted = function () -{ - return this.menuItemDiv.hasClass ('highlighted'); -}; - -ImporterMenu = function (parentDiv) -{ - this.parentDiv = parentDiv; - this.parentDiv.empty (); -}; - -ImporterMenu.prototype.AddGroup = function (name, parameters) -{ - return new ImporterMenuItem (this.parentDiv, name, parameters); -}; - -ImporterButtons = function (parent) -{ - this.buttonsDiv = $('
').attr ('id', 'buttons').appendTo (parent); -}; - -ImporterButtons.prototype.AddLogo = function (title) -{ - var logoDiv = $('
').attr ('id', 'logo').html (title).appendTo (this.buttonsDiv); - logoDiv.click (function () { - location.hash = ''; - location.reload (); - }); -}; - -ImporterButtons.prototype.AddButton = function (image, title, onClick) -{ - var buttonImage = $('').addClass ('topbutton').attr ('src', image).attr ('title', title).appendTo (this.buttonsDiv); - buttonImage.click (function () { - onClick (); - }); -}; - -ImporterButtons.prototype.AddToggleButton = function (image, toggleImage, title, onClick) -{ - var buttonImage = $('').addClass ('topbutton').attr ('src', image).attr ('title', title).appendTo (this.buttonsDiv); - var isOn = true; - buttonImage.click (function () { - isOn = !isOn; - if (isOn) { - buttonImage.attr ('src', image); - } else { - buttonImage.attr ('src', toggleImage); - } - onClick (); - }); -}; - -ExtensionButtons = function (parent) -{ - this.buttonsDiv = $('
').attr ('id', 'extbuttons').appendTo (parent); -}; - -ExtensionButtons.prototype.GetButtonsDiv = function () -{ - return this.buttonsDiv; -}; - -ImporterProgressBar = function (parent) -{ - this.parent = parent; - this.borderDiv = null; - this.contentDiv = null; - this.maxCount = null; - this.maxWidth = null; -}; - -ImporterProgressBar.prototype.Init = function (maxCount) -{ - this.borderDiv = $('
').addClass ('progressbarborder').appendTo (this.parent); - this.contentDiv = $('
').addClass ('progressbarcontent').appendTo (this.borderDiv); - - this.maxCount = maxCount; - this.maxWidth = this.borderDiv.width (); - this.Step (0); -}; - -ImporterProgressBar.prototype.Step = function (count) -{ - var step = this.maxWidth / this.maxCount; - var width = count * step; - if (count == this.maxCount) { - width = this.maxWidth; - } - this.contentDiv.width (width); -}; diff --git a/website/include/importerviewer.js b/website/include/importerviewer.js deleted file mode 100644 index bd04aa0..0000000 --- a/website/include/importerviewer.js +++ /dev/null @@ -1,212 +0,0 @@ -ImporterViewer = function () -{ - this.viewer = null; - this.jsonData = null; -}; - -ImporterViewer.prototype.Init = function (canvasName) -{ - var viewerSettings = { - cameraEyePosition : [8.0, -6.0, 4.0], - cameraCenterPosition : [0.0, 0.0, 0.0], - cameraUpVector : [0, 0, 1] - }; - - this.viewer = new JSM.ThreeViewer (); - var canvas = document.getElementById (canvasName); - if (!this.viewer.Start (canvas, viewerSettings)) { - return false; - } - this.viewer.navigation.SetNearDistanceLimit (0.1); - this.viewer.navigation.SetFarDistanceLimit (100000.0); - this.viewer.SetClearColor (0xdddddd); - this.viewer.Draw (); - - return true; -}; - -ImporterViewer.prototype.GetJsonData = function () -{ - return this.jsonData; -}; - -ImporterViewer.prototype.SetJsonData = function (jsonData) -{ - this.jsonData = jsonData; -}; - -ImporterViewer.prototype.RemoveMeshes = function () -{ - this.viewer.RemoveMeshes (); -}; - -ImporterViewer.prototype.ShowAllMeshes = function (inEnvironment) -{ - this.RemoveMeshes (); - - var myThis = this; - var currentMeshIndex = 0; - var environment = { - onStart : function (taskCount/*, meshes*/) { - inEnvironment.onStart (taskCount); - myThis.viewer.EnableDraw (false); - }, - onProgress : function (currentTask, meshes) { - while (currentMeshIndex < meshes.length) { - myThis.viewer.AddMesh (meshes[currentMeshIndex]); - currentMeshIndex = currentMeshIndex + 1; - } - inEnvironment.onProgress (currentTask); - }, - onFinish : function (meshes) { - myThis.AdjustClippingPlanes (50.0); - myThis.FitInWindow (); - myThis.viewer.EnableDraw (true); - myThis.viewer.Draw (); - inEnvironment.onFinish (meshes); - } - }; - - JSM.ConvertJSONDataToThreeMeshes (this.jsonData, this.Draw.bind (this), environment); -}; - -ImporterViewer.prototype.GetMeshesUnderPosition = function (x, y) -{ - var objects = this.viewer.GetObjectsUnderPosition (x, y); - var meshes = []; - var i; - for (i = 0; i < objects.length; i++) { - if (objects[i].object instanceof THREE.Mesh) { - meshes.push (objects[i].object); - } - } - return meshes; -}; - -ImporterViewer.prototype.ShowMesh = function (index, show) -{ - this.viewer.scene.traverse (function (current) { - if (current instanceof THREE.Mesh) { - if (current.originalJsonMeshIndex == index) { - if (show) { - current.visible = true; - } else { - current.visible = false; - } - } - } - }); -}; - -ImporterViewer.prototype.GetMeshesByMaterial = function (materialIndex) -{ - var meshIndices = []; - this.viewer.scene.traverse (function (current) { - if (current instanceof THREE.Mesh) { - if (current.originalJsonMaterialIndex == materialIndex) { - if (meshIndices.length === 0 || meshIndices[meshIndices.length - 1] != current.originalJsonMeshIndex) { - meshIndices.push (current.originalJsonMeshIndex); - } - } - } - }); - return meshIndices; -}; - -ImporterViewer.prototype.HighlightMesh = function (index, highlight) -{ - this.viewer.scene.traverse (function (current) { - if (current instanceof THREE.Mesh) { - if (current.originalJsonMeshIndex == index) { - if (highlight) { - current.material.emissive.setHex (0x555555); - } else { - current.material.emissive.setHex (0); - } - } - } - }); -}; - -ImporterViewer.prototype.FitInWindow = function () -{ - this.viewer.FitInWindow (); -}; - -ImporterViewer.prototype.FitMeshInWindow = function (index) -{ - var meshes = []; - this.viewer.scene.traverse (function (current) { - if (current instanceof THREE.Mesh) { - if (current.originalJsonMeshIndex == index) { - meshes.push (current); - } - } - }); - this.viewer.FitMeshesInWindow (meshes); -}; - -ImporterViewer.prototype.FitMeshesInWindow = function (meshIndices) -{ - var meshes = []; - this.viewer.scene.traverse (function (current) { - if (current instanceof THREE.Mesh) { - if (meshIndices.indexOf (current.originalJsonMeshIndex) != -1) { - meshes.push (current); - } - } - }); - this.viewer.FitMeshesInWindow (meshes); -}; - -ImporterViewer.prototype.AdjustClippingPlanes = function () -{ - if (this.viewer.MeshCount () > 0) { - this.viewer.AdjustClippingPlanes (50.0); - } -}; - -ImporterViewer.prototype.SetFixUp = function () -{ - this.viewer.navigation.EnableFixUp (!this.viewer.navigation.cameraFixUp); -}; - -ImporterViewer.prototype.SetNamedView = function (viewName) -{ - var eye, center, up; - if (viewName == 'z') { - eye = new JSM.Coord (1.0, 0.0, 0.0); - center = new JSM.Coord (0.0, 0.0, 0.0); - up = new JSM.Coord (0.0, 0.0, 1.0); - } else if (viewName == '-z') { - eye = new JSM.Coord (-1.0, 0.0, 0.0); - center = new JSM.Coord (0.0, 0.0, 0.0); - up = new JSM.Coord (0.0, 0.0, -1.0); - } else if (viewName == 'y') { - eye = new JSM.Coord (1.0, 0.0, 0.0); - center = new JSM.Coord (0.0, 0.0, 0.0); - up = new JSM.Coord (0.0, 1.0, 0.0); - } else if (viewName == '-y') { - eye = new JSM.Coord (-1.0, 0.0, 0.0); - center = new JSM.Coord (0.0, 0.0, 0.0); - up = new JSM.Coord (0.0, -1.0, 0.0); - } else if (viewName == 'x') { - eye = new JSM.Coord (0.0, 1.0, 0.0); - center = new JSM.Coord (0.0, 0.0, 0.0); - up = new JSM.Coord (1.0, 0.0, 0.0); - } else if (viewName == '-x') { - eye = new JSM.Coord (0.0, -1.0, 0.0); - center = new JSM.Coord (0.0, 0.0, 0.0); - up = new JSM.Coord (-1.0, 0.0, 0.0); - } else { - return; - } - - this.viewer.cameraMove.Set (eye, center, up); - this.viewer.FitInWindow (); -}; - -ImporterViewer.prototype.Draw = function () -{ - this.viewer.Draw (); -}; diff --git a/website/index.html b/website/index.html deleted file mode 100644 index 95a27af..0000000 --- a/website/index.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Online 3D Viewer - - - - -
-
-
- -
- - - - - diff --git a/website/jquery/jquery-1.12.4.js b/website/jquery/jquery-1.12.4.js deleted file mode 100644 index e836475..0000000 --- a/website/jquery/jquery-1.12.4.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; -}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/
"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("