[
  {
    "path": ".gitignore",
    "content": "dist\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 Alexander Perrin\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Ballooning with Three.js\nThis was developed as a study into procedural terrains, buffer geometry optimisation and shadow mappers with Three.js and WebGL.\nI had some grand plans for the application, but they were never realised so it's probably more useful to just release it as it is for others to take a look!\nThere are plenty of issues with it and it's pretty rough having been developed over 2 years ago now, but if it's some use to anyone that's great.\n\nExample at https://alexanderperrin.com.au/triangles/ballooning.\n\nUse the arrow keys or the left and right sides of the screen on touch devices to move the balloon.\n\n## Features\n- Procedurally generated infinite terrain & tree placement\n- Happy flapping birds\n- Shoreline boathouse placement\n- Pleasant mountain ballooning\n- Statically batched tree rendering\n- Runs on desktop and mobile\n\n## Development\nFeel free to have a dig around in the code and change things. I've setup a [webpack](https://webpack.js.org/) development environment with hot module replacement that you can use to quickly iterate the application.\n- Ensure that you have node and npm installed on your machine. You can follow the official instructions at https://www.npmjs.com/get-npm\n- Clone the repository into your desired project folder\n- Run `npm install` from within the project folder to install dependencies\n- Ensure webpack-cli is either available globally or installed locally (`npm install --save-dev webpack-cli`)\n- Run `npm start`. This will spin up a webpack development server running at http://localhost:8080\n- Change the code you like and see what happens!\n\n## Building\n- Run `npm run build` to build a production ready version of the web app.\n- Contents will be processed into /dist, which you can upload to your web server.\n\n## License\nMIT\n\n## Warranty\nNone whatsoever.\n"
  },
  {
    "path": "bundle.js",
    "content": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t__webpack_require__(1);\n\t(function webpackMissingModule() { throw new Error(\"Cannot find module \\\"run\\\"\"); }());\n\t(function webpackMissingModule() { throw new Error(\"Cannot find module \\\"dev\\\"\"); }());\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {'use strict';\n\n\tvar _Detector = __webpack_require__(3);\n\n\tvar _Detector2 = _interopRequireDefault(_Detector);\n\n\tvar _player = __webpack_require__(5);\n\n\tvar _player2 = _interopRequireDefault(_player);\n\n\tvar _terrainPatch = __webpack_require__(7);\n\n\tvar _terrainPatch2 = _interopRequireDefault(_terrainPatch);\n\n\tvar _heightmap = __webpack_require__(8);\n\n\tvar _heightmap2 = _interopRequireDefault(_heightmap);\n\n\tvar _bird = __webpack_require__(10);\n\n\tvar _bird2 = _interopRequireDefault(_bird);\n\n\tvar _mathf = __webpack_require__(6);\n\n\tvar _mathf2 = _interopRequireDefault(_mathf);\n\n\tvar _jquery = __webpack_require__(11);\n\n\tvar _jquery2 = _interopRequireDefault(_jquery);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\t__webpack_require__(12);\n\t__webpack_require__(13);\n\t__webpack_require__(14);\n\n\t(function () {\n\n\t  // Rendering\n\t  var SHADOW_MAP_WIDTH = 1024;\n\t  var SHADOW_MAP_HEIGHT = 1024;\n\t  var SHADOW_CAM_SIZE = 512;\n\t  var SHADOW_CAM_STEP = 16;\n\n\t  // File\n\t  var IMAGE_PATH = 'static/images/';\n\t  var MESH_PATH = 'static/meshes/';\n\n\t  var meshFiles = ['tree.json', 'balloon.json', 'boat01.json'];\n\t  var imageFiles = [];\n\n\t  var objectLoader = new THREE.ObjectLoader();\n\n\t  // Data storage\n\t  var meshes = {};\n\t  var textures = {};\n\n\t  // Birds\n\t  var BIRD_COUNT = 40;\n\t  var BIRD_SPAWN_DISTANCE = -200;\n\t  var BIRD_RESPAWN_DISTANCE = 512;\n\t  var BIRD_MAX_RESPAWN_TIME = 10;\n\t  var birdsVisible = false;\n\t  var birds = [];\n\n\t  // Lights, camera and helpers\n\t  var renderer = void 0,\n\t      scene = void 0,\n\t      cameraControls = void 0,\n\t      sun = void 0,\n\t      // Directional light\n\t  cameraAnchor = void 0,\n\t      // Camera base rotator\n\t  gameCamera = void 0,\n\t      // Game view camera\n\t  renderCamera = void 0,\n\t      // Currently rendering camera\n\t  editorCamera = void 0,\n\t      // Utility view camera\n\t  lightAnchor = void 0,\n\t      // Used for containing sun object and target in more managable unit\n\t  lightPosIndex = void 0,\n\t      // Used for tracking movment of light\n\t  lightShadowOffset = void 0,\n\t      // Used for offsetting shadow camera matrix\n\t  clock = void 0,\n\t      _this = void 0,\n\t      loadingMessage = void 0,\n\t      player = void 0;\n\n\t  // Debug rays\n\t  var rays = [];\n\n\t  // Terrain\n\t  var TERRAIN_PATCH_WIDTH = 64;\n\t  var TERRAIN_PATCH_HEIGHT = 64;\n\t  var TERRAIN_PATCHES_X = 5;\n\t  var TERRAIN_PATCHES_Z = 12;\n\t  var TERRAIN_OFFSET_X = -(TERRAIN_PATCH_WIDTH * TERRAIN_PATCHES_X) * 0.5;\n\t  var TERRAIN_OFFSET_Z = -128;\n\t  var TREES_PER_TERRAIN = 50;\n\t  var WATER_HEIGHT = -15.0;\n\t  var heightmap = new _heightmap2.default({\n\t    noiseOffset: {\n\t      x: -TERRAIN_OFFSET_X,\n\t      y: -TERRAIN_OFFSET_Z\n\t    },\n\t    height: 50,\n\t    scale: 100\n\t  });\n\t  var terrainPatches = [];\n\t  var waterPlane = void 0;\n\t  // Used for tracking terrain regeneration requirement\n\t  var terrainGridIndex = {\n\t    x: 0,\n\t    y: 0\n\t  };\n\n\t  // Shaders\n\t  var standardShader = void 0;\n\n\t  // Input\n\t  var input = {\n\t    x: 0,\n\t    y: 0\n\t  };\n\n\t  /**\n\t   * @summary Window focus detection.\n\t   * @description Stops the animation clock when window is inactive.\n\t   */\n\t  (function () {\n\t    var hidden = \"hidden\";\n\n\t    // Standards:\n\t    if (hidden in document) document.addEventListener(\"visibilitychange\", onchange);else if ((hidden = \"mozHidden\") in document) document.addEventListener(\"mozvisibilitychange\", onchange);else if ((hidden = \"webkitHidden\") in document) document.addEventListener(\"webkitvisibilitychange\", onchange);else if ((hidden = \"msHidden\") in document) document.addEventListener(\"msvisibilitychange\", onchange);\n\t    // IE 9 and lower:\n\t    else if (\"onfocusin\" in document) document.onfocusin = document.onfocusout = onchange;\n\t      // All others:\n\t      else window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;\n\n\t    function onchange(evt) {\n\t      if (document[hidden]) {\n\t        if (clock !== undefined) {\n\t          clock.stop();\n\t        }\n\t      } else {\n\t        if (clock !== undefined) {\n\t          clock.start();\n\t        }\n\t      }\n\t      var v = \"visible\",\n\t          h = \"hidden\",\n\t          evtMap = {\n\t        focus: v,\n\t        focusin: v,\n\t        pageshow: v,\n\t        blur: h,\n\t        focusout: h,\n\t        pagehide: h\n\t      };\n\n\t      evt = evt || window.event;\n\t      if (evt.type in evtMap) document.body.className = evtMap[evt.type];else document.body.className = this[hidden] ? \"hidden\" : \"visible\";\n\t    }\n\n\t    // set the initial state (but only if browser supports the Page Visibility API)\n\t    if (document[hidden] !== undefined) onchange({\n\t      type: document[hidden] ? \"blur\" : \"focus\"\n\t    });\n\t  })();\n\n\t  /**\n\t   * Gets the device pixel ratio.\n\t   * @return float the ratio\n\t   */\n\t  var getDevicePixelRatio = function getDevicePixelRatio() {\n\t    return window.devicePixelRatio || 1;\n\t  };\n\n\t  /**\n\t   * Adds an event to the object\n\t   * @param {object}   object   object to add event to\n\t   * @param {string}   type     event type\n\t   * @param {Function} callback event handler\n\t   */\n\t  var addEvent = function addEvent(object, type, callback) {\n\t    if (object === null || typeof object === 'undefined') return;\n\t    if (object.addEventListener) {\n\t      object.addEventListener(type, callback, false);\n\t    } else if (object.attachEvent) {\n\t      object.attachEvent('on' + type, callback);\n\t    } else {\n\t      object['on' + type] = callback;\n\t    }\n\t  };\n\n\t  var updateRenderCamera = function updateRenderCamera() {\n\t    var width = window.innerWidth;\n\t    var height = window.innerHeight;\n\t    renderCamera.aspect = width / height;\n\t    renderCamera.updateProjectionMatrix();\n\t  };\n\n\t  /**\n\t   * Resize function\n\t   * @param  double width\n\t   * @param  double height\n\t   */\n\t  var resize = function resize() {\n\t    var width = window.innerWidth;\n\t    var height = window.innerHeight;\n\t    var devicePixelRatio = getDevicePixelRatio();\n\t    renderer.setSize(width * devicePixelRatio, height * devicePixelRatio);\n\n\t    // Update canvas\n\t    var canvas = renderer.domElement;\n\t    canvas.width = width * devicePixelRatio;\n\t    canvas.height = height * devicePixelRatio;\n\t    canvas.style.width = width + 'px';\n\t    canvas.style.height = height + 'px';\n\n\t    updateRenderCamera();\n\t  };\n\n\t  /**\n\t   * Shifts the terrain by given units\n\t   * @param  {[type]} x terrain units to shift in x\n\t   * @param  {[type]} y terrain units to shift in y\n\t   */\n\t  var shiftTerrain = function shiftTerrain(x, y) {\n\t    // Shift forward\n\t    for (var i = 0; i < y; ++i) {\n\t      for (var j = 0; j < TERRAIN_PATCHES_X; ++j) {\n\t        var tp = terrainPatches[terrainGridIndex.y % TERRAIN_PATCHES_Z][j];\n\t        tp.position.z += TERRAIN_PATCH_HEIGHT * TERRAIN_PATCHES_Z;\n\t        tp.rebuild(scene);\n\t      }\n\t    }\n\t    // Shift right\n\t    for (var _i = 0; _i < x; ++_i) {\n\t      for (var _j = 0; _j < TERRAIN_PATCHES_Z; ++_j) {\n\t        var _tp = terrainPatches[_j][terrainGridIndex.x % TERRAIN_PATCHES_X];\n\t        _tp.position.x += TERRAIN_PATCH_WIDTH * TERRAIN_PATCHES_X;\n\t        _tp.rebuild(scene);\n\t      }\n\t    }\n\t    terrainGridIndex.x += x;\n\t    terrainGridIndex.y += y;\n\t    waterPlane.position.z += TERRAIN_PATCH_HEIGHT * y;\n\t  };\n\n\t  /**\n\t   * Terrain grid index to world position transformation\n\t   * @param  {int} x terrain index x\n\t   * @param  {int} y terrain index y\n\t   * @return {vec3}   world position\n\t   */\n\t  var terrainGridToWorld = function terrainGridToWorld(x, y) {\n\t    return {\n\t      x: x * TERRAIN_PATCH_WIDTH,\n\t      y: 0,\n\t      z: y * TERRAIN_PATCH_HEIGHT\n\t    };\n\t  };\n\n\t  /**\n\t   * World position to terrain grid index transformation\n\t   * @param  {vec3} pos world position\n\t   * @return {vec2}     terrain index\n\t   */\n\t  var worldToTerrainGrid = function worldToTerrainGrid(pos) {\n\t    return {\n\t      x: Math.round(pos.x / TERRAIN_PATCH_WIDTH),\n\t      y: Math.round(pos.z / TERRAIN_PATCH_HEIGHT)\n\t    };\n\t  };\n\n\t  /// Gets a random position on the entire landscape\n\t  var getRandomPositionOnLandscape = function getRandomPositionOnLandscape() {\n\t    return {\n\t      x: getRandomArbitrary(0, TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH) + TERRAIN_OFFSET_X,\n\t      y: 0,\n\t      z: getRandomArbitrary(0, TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT) + TERRAIN_OFFSET_Z\n\t    };\n\t  };\n\n\t  var getLandscapeMidpoint = function getLandscapeMidpoint() {\n\t    return {\n\t      x: TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH / 2 + TERRAIN_OFFSET_X\n\t    };\n\t  };\n\n\t  var getLandscapeWidth = function getLandscapeWidth() {\n\t    return TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH;\n\t  };\n\n\t  var getLandscapeDepth = function getLandscapeDepth() {\n\t    return TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT;\n\t  };\n\n\t  /// Redraw the view\n\t  var render = function render() {\n\t    renderer.render(scene, renderCamera);\n\t  };\n\n\t  /**\n\t   * Parses a shader from the THREE shader chunk library\n\t   * @param  {[type]} shaderStr [description]\n\t   * @return {[type]}           [description]\n\t   */\n\t  var getShader = function getShader(shaderStr) {\n\t    return shaderStr.replace(/#include\\s+(\\S+)/gi, function (match, p1) {\n\t      p1 = p1.substr(1, p1.length - 2);\n\t      var chunk = THREE.ShaderChunk[p1];\n\t      return chunk ? chunk : \"\";\n\t    });\n\t  };\n\n\t  var loadMeshes = function loadMeshes() {\n\n\t    loadingMessage.html('geometry');\n\n\t    return new Promise(function (resolve) {\n\t      var numFiles = meshFiles.length;\n\t      if (numFiles === 0) {\n\t        resolve();\n\t      }\n\t      meshFiles.forEach(function (v) {\n\t        objectLoader.load(MESH_PATH + v, function (obj) {\n\t          var name = obj.name;\n\t          meshes[name] = obj;\n\t          numFiles--;\n\t          if (numFiles === 0) {\n\t            resolve();\n\t          }\n\t        });\n\t      });\n\t    });\n\t  };\n\n\t  /**\n\t   * Loads the textures specified in the textures URL array.\n\t   */\n\t  var loadTextures = function loadTextures() {\n\n\t    loadingMessage.html('images');\n\n\t    return new Promise(function (resolve) {\n\t      var numFiles = imageFiles.length;\n\t      if (numFiles === 0) {\n\t        resolve();\n\t      }\n\t      imageFiles.forEach(function (v) {\n\t        var texture = new THREE.Texture();\n\t        var image = new Image();\n\t        image.onload = function () {\n\t          texture.image = image;\n\t          texture.needsUpdate = true;\n\t          texture.name = v;\n\t          textures[v] = texture;\n\t          numFiles--;\n\t          if (numFiles === 0) {\n\t            resolve();\n\t          }\n\t        };\n\t        image.src = IMAGE_PATH + v;\n\t      });\n\t    });\n\t  };\n\n\t  /**\n\t   * Initialises the THREE WebGL renderer and appends to DOM.\n\t   * @return {[type]} [description]\n\t   */\n\t  var initRenderer = function initRenderer() {\n\t    var _ref;\n\n\t    renderer = new THREE.WebGLRenderer({\n\t      antialias: false\n\t    });\n\t    renderer.setClearColor('white', 1);\n\t    renderer.shadowMap.enabled = true;\n\t    renderer.shadowMap.autoUpdate = false;\n\t    renderer.shadowMap.needsUpdate = true;\n\t    renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n\t    document.getElementById('canvas-container').appendChild(renderer.domElement);\n\n\t    var mat = new THREE.ShaderMaterial((_ref = {\n\t      lights: true,\n\t      uniforms: THREE.ShaderLib.phong.uniforms\n\t    }, _defineProperty(_ref, 'uniforms', THREE.UniformsUtils.merge([THREE.ShaderLib.phong.uniforms, {\n\t      xFogColor: {\n\t        type: 'c',\n\t        value: new THREE.Color(0xFFFFFF)\n\t      }\n\t    }])), _defineProperty(_ref, 'shading', THREE.FlatShading), _defineProperty(_ref, 'fog', true), _defineProperty(_ref, 'vertexShader', standardShader.vertexShader), _defineProperty(_ref, 'fragmentShader', standardShader.fragmentShader), _defineProperty(_ref, 'vertexColors', THREE.VertexColors), _ref));\n\n\t    // Assign materials\n\t    Object.keys(meshes).forEach(function (v) {\n\t      var m = meshes[v];\n\t      m.material = mat;\n\t    });\n\t  };\n\n\t  /**\n\t   * Initialises the base scene objects and helpers.\n\t   */\n\t  var initScene = function initScene() {\n\n\t    console.log('initialising scene');\n\n\t    scene = new THREE.Scene();\n\n\t    lightShadowOffset = new THREE.Object3D();\n\n\t    // Used for storing sun camera and target\n\t    lightAnchor = new THREE.Object3D();\n\t    scene.add(lightAnchor);\n\t    lightAnchor.add(lightShadowOffset);\n\n\t    // Used for transforming light and shadow cameras\n\t    var lightMatrix = new THREE.Matrix4();\n\t    var rotation = new THREE.Quaternion();\n\t    rotation.setFromEuler(new THREE.Euler(THREE.Math.degToRad(35), THREE.Math.degToRad(-135), 0, 'YXZ'));\n\t    lightMatrix.compose(new THREE.Vector3(0, 128, 0), rotation, new THREE.Vector3(1, 1, 1));\n\n\t    // Lights\n\t    sun = new THREE.DirectionalLight(0xffffff, 1.5);\n\t    sun.position.set(0, 0, 0);\n\t    sun.target.position.set(0, 0, 128);\n\t    scene.add(new THREE.AmbientLight(0xeeeeFF, 0.5));\n\t    scene.fog = new THREE.Fog(0xdaf0fb, 350, 950);\n\t    var hemiLight = new THREE.HemisphereLight(0xFFFFFF, 0xFFED00, 0.25);\n\t    hemiLight.position.set(0, 500, 0);\n\t    scene.add(hemiLight);\n\n\t    // Shadows\n\t    sun.castShadow = true;\n\t    sun.shadow.mapSize.width = SHADOW_MAP_WIDTH;\n\t    sun.shadow.mapSize.height = SHADOW_MAP_HEIGHT;\n\t    var sCamSize = SHADOW_CAM_SIZE;\n\t    sun.shadow.camera.right = -sCamSize / 2;\n\t    sun.shadow.camera.left = sCamSize / 2;\n\t    sun.shadow.camera.top = sCamSize / 2;\n\t    sun.shadow.camera.bottom = -sCamSize / 2;\n\t    sun.shadow.camera.far = 512;\n\t    sun.shadow.camera.near = -512;\n\t    sun.shadow.bias = -0.0025;\n\n\t    // Shadow camera position texel snapping compensator\n\t    lightShadowOffset.add(sun);\n\t    lightShadowOffset.add(sun.target);\n\t    lightAnchor.applyMatrix(lightMatrix);\n\t    lightPosIndex = lightAnchor.position.z;\n\t    lightAnchor.position.z += 400;\n\n\t    window.flight.scene = scene;\n\t  };\n\n\t  var initShaders = function initShaders() {\n\t    standardShader = {\n\t      vertexShader: getShader(__webpack_require__(15)),\n\t      fragmentShader: getShader(__webpack_require__(16))\n\t    };\n\t  };\n\n\t  var initTerrain = function initTerrain() {\n\n\t    // Shader uniforms\n\t    var uniforms = {\n\t      cliffColor: {\n\t        type: 'c',\n\t        value: new THREE.Color(0x555555)\n\t      },\n\t      grassColor: {\n\t        type: 'c',\n\t        value: new THREE.Color(0x475905)\n\t      },\n\t      sandColor: {\n\t        type: 'c',\n\t        value: new THREE.Color(0x886633)\n\t      },\n\t      steps: {\n\t        type: 'f',\n\t        value: 1.0\n\t      },\n\t      waterHeight: {\n\t        type: 'f',\n\t        value: WATER_HEIGHT + 0.5\n\t      },\n\t      xFogColor: {\n\t        type: 'c',\n\t        value: new THREE.Color(0xFFFFFF)\n\t      },\n\t      threshold: {\n\t        type: 'f',\n\t        value: 0.25\n\t      }\n\t    };\n\n\t    // Materials\n\t    var landscapeMaterial = new THREE.ShaderMaterial({\n\t      lights: true,\n\t      uniforms: THREE.UniformsUtils.merge([THREE.ShaderLib.phong.uniforms, uniforms]),\n\t      shading: THREE.FlatShading,\n\t      fog: true,\n\t      vertexShader: getShader(__webpack_require__(17)),\n\t      fragmentShader: getShader(__webpack_require__(18))\n\t    });\n\n\t    // Terrain patches\n\t    for (var i = 0; i < TERRAIN_PATCHES_Z; ++i) {\n\t      terrainPatches[i] = [];\n\t      for (var j = 0; j < TERRAIN_PATCHES_X; ++j) {\n\t        var tp = new _terrainPatch2.default({\n\t          width: TERRAIN_PATCH_WIDTH,\n\t          height: TERRAIN_PATCH_HEIGHT,\n\t          position: new THREE.Vector3(TERRAIN_PATCH_WIDTH * j + TERRAIN_OFFSET_X, 0, TERRAIN_PATCH_HEIGHT * i + TERRAIN_OFFSET_Z),\n\t          heightmap: heightmap,\n\t          material: landscapeMaterial\n\t        });\n\t        tp.receiveShadow = true;\n\t        tp.castShadow = true;\n\t        tp.addScatterObject({\n\t          mesh: meshes['tree'],\n\t          count: TREES_PER_TERRAIN,\n\t          minSize: {\n\t            x: 0.25,\n\t            y: 0.4,\n\t            z: 0.25\n\t          },\n\t          maxSize: {\n\t            x: 0.5,\n\t            y: 0.5,\n\t            z: 0.5\n\t          },\n\t          lockXZScale: true,\n\t          minHeight: -10,\n\t          maxHeight: 100,\n\t          maxSlope: 0.6\n\t        });\n\t        terrainPatches[i][j] = tp;\n\t        scene.add(terrainPatches[i][j]);\n\t      }\n\t    }\n\n\t    // River plane\n\t    var riverMaterial = new THREE.MeshPhongMaterial({\n\t      color: 0x2f5d63\n\t    });\n\t    var riverMesh = new THREE.PlaneGeometry(TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH, TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT * 2, 1, 1);\n\t    waterPlane = new THREE.Mesh(riverMesh, riverMaterial);\n\t    waterPlane.position.y = -15;\n\t    waterPlane.rotation.x = -Math.PI / 2.0;\n\t    waterPlane.position.z = -TERRAIN_OFFSET_X;\n\t    scene.add(waterPlane);\n\t  };\n\n\t  var initPlayer = function initPlayer() {\n\t    var obj = meshes['balloon'];\n\t    player = new _player2.default();\n\t    player.position.set(0, 100, 0);\n\t    player.add(obj);\n\t    scene.add(player);\n\t  };\n\n\t  var initCameras = function initCameras() {\n\t    // Game camera\n\t    gameCamera = new THREE.PerspectiveCamera(15.0, window.innerWidth / window.innerHeight, 100, 10000);\n\t    cameraAnchor = new THREE.Object3D();\n\t    cameraAnchor.position.set(TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH / 2, 0, TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT / 2);\n\t    cameraAnchor.updateMatrix();\n\t    cameraAnchor.add(gameCamera);\n\t    gameCamera.position.set(100, 250, -300);\n\t    gameCamera.lookAt(new THREE.Vector3(0, 100, 0));\n\t    scene.add(cameraAnchor);\n\n\t    // Editor camera\n\t    editorCamera = gameCamera.clone();\n\t    cameraControls = new THREE.OrbitControls(editorCamera, renderer.domElement);\n\t    cameraControls.target.set(0, 0, TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT / 2);\n\t    editorCamera.position.set(-250, 350, -250);\n\t    cameraControls.update();\n\n\t    renderCamera = gameCamera;\n\t  };\n\n\t  var respawnBirds = function respawnBirds() {\n\t    var spawnWidth = getLandscapeWidth() * 0.25;\n\t    var bunchFactor = _mathf2.default.randRange(0.2, 1);\n\t    var flockPosition = new THREE.Vector3(_mathf2.default.randRange(-spawnWidth, spawnWidth), _mathf2.default.randRange(64, 128), player.position.z + BIRD_SPAWN_DISTANCE);\n\t    var birdPos = void 0;\n\t    for (var i = 0; i < BIRD_COUNT; ++i) {\n\t      birdPos = flockPosition.clone().add(new THREE.Vector3(_mathf2.default.randRange(-32, 32) * bunchFactor, _mathf2.default.randRange(-16, 16) * bunchFactor, _mathf2.default.randRange(-48, 48) * bunchFactor));\n\t      birds[i].position.copy(birdPos);\n\t    }\n\t    // Loop this function every so often\n\t    setTimeout(respawnBirds, 30000 + _mathf2.default.randRange(0, 20000));\n\t  };\n\n\t  var initBirds = function initBirds() {\n\t    for (var i = 0; i < BIRD_COUNT; ++i) {\n\t      var bird = new _bird2.default();\n\t      scene.add(bird);\n\t      birds.push(bird);\n\t    }\n\t    respawnBirds();\n\t  };\n\n\t  var init = function init() {\n\n\t    window.flight = {};\n\t    clock = new THREE.Clock(true);\n\t    window.flight.clock = clock;\n\t    window.flight.input = 0;\n\t    window.flight.debug = {};\n\t    window.flight.debug.drawRay = drawRay;\n\n\t    initShaders();\n\t    initRenderer();\n\t    initScene();\n\t    initPlayer();\n\t    initCameras();\n\t    initBirds();\n\t    initTerrain();\n\n\t    var a = new THREE.AxisHelper(20);\n\t    a.position.set(0, 0, 0);\n\t    scene.add(a);\n\n\t    // Events\n\t    addEvent(window, 'resize', resize);\n\n\t    addEvent(window, 'keydown', function (e) {\n\t      // Inputs\n\t      if (e.keyCode === 39) {\n\t        input.x = 1.0;\n\t      } else if (e.keyCode === 37) {\n\t        input.x = -1.0;\n\t      } else if (e.keyCode === 32) {\n\t        // Camera switching\n\t        if (renderCamera === editorCamera) {\n\t          renderCamera = gameCamera;\n\t        } else {\n\t          renderCamera = editorCamera;\n\t        }\n\t      }\n\t    });\n\n\t    window.addEventListener('touchmove', function (e) {\n\t      console.log(e);\n\t      // Prevent scroll behaviour\n\t      if (!event.target.classList.contains('scrollable')) {\n\t        event.preventDefault();\n\t      }\n\t    });\n\n\t    window.addEventListener('mousewheel', function (e) {\n\t      // Disable mouse wheel scrolling\n\t      e.preventDefault();\n\t    });\n\n\t    addEvent(window, 'touchstart', function (e) {\n\t      var mp = window.innerWidth / 2;\n\t      var p = e.touches[0].clientX;\n\t      if (p - mp < 0) {\n\t        // Go left\n\t        input.x = -1;\n\t      } else if (p - mp > 0) {\n\t        // Go right\n\t        input.x = 1;\n\t      }\n\t    });\n\n\t    window.addEventListener('touchend', function () {\n\t      input.x = 0;\n\t    });\n\n\t    addEvent(window, 'keyup', function (e) {\n\t      // Inputs\n\t      if (e.keyCode === 39) {\n\t        input.x = 0;\n\t      } else if (e.keyCode === 37) {\n\t        input.x = 0;\n\t      }\n\t    });\n\n\t    resize();\n\n\t    (0, _jquery2.default)('#loader').fadeOut('slow');\n\n\t    console.log('initialisation complete');\n\t  };\n\n\t  var drawRay = function drawRay(position, direction, color) {\n\t    var material = new THREE.LineBasicMaterial({\n\t      color: color\n\t    });\n\n\t    var geometry = new THREE.Geometry();\n\t    geometry.vertices.push(new THREE.Vector3(), direction.clone());\n\n\t    var line = new THREE.Line(geometry, material);\n\t    line.position.copy(position);\n\t    rays.push(line);\n\t    scene.add(line);\n\t  };\n\n\t  var idle = function idle() {\n\n\t    console.log('idle');\n\n\t    console.log('dt');\n\t    console.log(clock);\n\n\t    var dt = clock.getDelta();\n\t    console.log('dt 2');\n\t    return;\n\t    window.flight.deltaTime = dt;\n\t    window.flight.input = input;\n\t    window.flight.time = clock.getElapsedTime();\n\n\t    // Update shadow camera position\n\t    lightAnchor.position.z = player.position.z + 256;\n\t    if (Math.round(lightAnchor.position.z) - lightPosIndex > SHADOW_CAM_STEP) {\n\t      lightPosIndex = Math.round(lightAnchor.position.z);\n\t      lightAnchor.updateMatrixWorld();\n\t      // Snap the shadow camera matrix to the nearest texel to prevent shadow swimming\n\t      var lPos = new THREE.Vector3(0, 0, 0); // Real shadow cam position\n\t      var lPos2 = new THREE.Vector3(0, 0, 0); // Texel snapped cam position\n\t      lightAnchor.worldToLocal(lPos);\n\t      lPos2.set(lPos.x, lPos.y, lPos.z);\n\t      var tSize = SHADOW_CAM_SIZE / SHADOW_MAP_WIDTH;\n\t      lPos2.x = Math.round(lPos2.x / tSize) * tSize;\n\t      lPos2.y = Math.round(lPos2.y / tSize) * tSize;\n\t      lightShadowOffset.position.set(lPos.x - lPos2.x, lPos.y - lPos2.y, 0);\n\t      renderer.shadowMap.needsUpdate = true;\n\t    }\n\n\t    console.log('shadow camera moved');\n\n\t    if (player) {\n\t      player.update();\n\t      player.gridPos = worldToTerrainGrid(player.position);\n\t      // Check for terrain shift\n\t      while (player.gridPos.y > terrainGridIndex.y) {\n\t        shiftTerrain(0, 1);\n\t      }\n\t      cameraAnchor.position.set(player.position.x, 0, player.position.z);\n\t      if (cameraAnchor.position.x > 60) {\n\t        cameraAnchor.position.x = 60;\n\t      } else if (cameraAnchor.position.x < -60) {\n\t        cameraAnchor.position.x = -60;\n\t      }\n\t    }\n\n\t    console.log('player moved');\n\n\t    // Animate birds\n\t    var avBirdPos = new THREE.Vector3();\n\t    birds.forEach(function (b) {\n\t      avBirdPos.add(b.position);\n\t    });\n\t    avBirdPos.divideScalar(birds.length);\n\t    // Basic flocking\n\t    birds.forEach(function (b) {\n\t      b.update(dt, avBirdPos, player);\n\t    });\n\n\t    requestAnimationFrame(idle);\n\t    console.log('rendering');\n\t    render();\n\n\t    // Remove the rays\n\t    rays.forEach(function (r) {\n\t      scene.remove(r);\n\t    });\n\t  };\n\n\t  (0, _jquery2.default)(document).ready(function () {\n\n\t    loadingMessage = (0, _jquery2.default)('#loading-message');\n\n\t    if (!_Detector2.default.webgl || !_Detector2.default.canvas) {\n\t      (0, _jquery2.default)('.label').html(\"My apologies, your device doesn't support WebGL, which is what this thing relies on! Try updating it, or try another one.\");\n\t    } else {\n\t      loadingMessage.html('code');\n\t      loadTextures().then(loadMeshes).then(init).then(idle);\n\t    }\n\t  });\n\n\t  _this = this;\n\t})();\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// File:src/Three.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tvar THREE = { REVISION: '78' };\n\n\t//\n\n\tif ( true ) {\n\n\t\t!(__WEBPACK_AMD_DEFINE_FACTORY__ = (THREE), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\t} else if ( 'undefined' !== typeof exports && 'undefined' !== typeof module ) {\n\n\t\tmodule.exports = THREE;\n\n\t}\n\n\t// Polyfills\n\n\tif ( Number.EPSILON === undefined ) {\n\n\t\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n\t}\n\n\t//\n\n\tif ( Math.sign === undefined ) {\n\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\t\tMath.sign = function ( x ) {\n\n\t\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t\t};\n\n\t}\n\n\tif ( Function.prototype.name === undefined ) {\n\n\t\t// Missing in IE9-11.\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\t\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\t\tget: function () {\n\n\t\t\t\treturn this.toString().match( /^\\s*function\\s*(\\S*)\\s*\\(/ )[ 1 ];\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tif ( Object.assign === undefined ) {\n\n\t\t// Missing in IE.\n\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t\t( function () {\n\n\t\t\tObject.assign = function ( target ) {\n\n\t\t\t\t'use strict';\n\n\t\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t\t}\n\n\t\t\t\tvar output = Object( target );\n\n\t\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\n\t\t\t};\n\n\t\t} )();\n\n\t}\n\n\t//\n\n\tObject.assign( THREE, {\n\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button\n\n\t\tMOUSE: { LEFT: 0, MIDDLE: 1, RIGHT: 2 },\n\n\t\t// GL STATE CONSTANTS\n\n\t\tCullFaceNone: 0,\n\t\tCullFaceBack: 1,\n\t\tCullFaceFront: 2,\n\t\tCullFaceFrontBack: 3,\n\n\t\tFrontFaceDirectionCW: 0,\n\t\tFrontFaceDirectionCCW: 1,\n\n\t\t// SHADOWING TYPES\n\n\t\tBasicShadowMap: 0,\n\t\tPCFShadowMap: 1,\n\t\tPCFSoftShadowMap: 2,\n\n\t\t// MATERIAL CONSTANTS\n\n\t\t// side\n\n\t\tFrontSide: 0,\n\t\tBackSide: 1,\n\t\tDoubleSide: 2,\n\n\t\t// shading\n\n\t\tFlatShading: 1,\n\t\tSmoothShading: 2,\n\n\t\t// colors\n\n\t\tNoColors: 0,\n\t\tFaceColors: 1,\n\t\tVertexColors: 2,\n\n\t\t// blending modes\n\n\t\tNoBlending: 0,\n\t\tNormalBlending: 1,\n\t\tAdditiveBlending: 2,\n\t\tSubtractiveBlending: 3,\n\t\tMultiplyBlending: 4,\n\t\tCustomBlending: 5,\n\n\t\t// custom blending equations\n\t\t// (numbers start from 100 not to clash with other\n\t\t// mappings to OpenGL constants defined in Texture.js)\n\n\t\tAddEquation: 100,\n\t\tSubtractEquation: 101,\n\t\tReverseSubtractEquation: 102,\n\t\tMinEquation: 103,\n\t\tMaxEquation: 104,\n\n\t\t// custom blending destination factors\n\n\t\tZeroFactor: 200,\n\t\tOneFactor: 201,\n\t\tSrcColorFactor: 202,\n\t\tOneMinusSrcColorFactor: 203,\n\t\tSrcAlphaFactor: 204,\n\t\tOneMinusSrcAlphaFactor: 205,\n\t\tDstAlphaFactor: 206,\n\t\tOneMinusDstAlphaFactor: 207,\n\n\t\t// custom blending source factors\n\n\t\t//ZeroFactor: 200,\n\t\t//OneFactor: 201,\n\t\t//SrcAlphaFactor: 204,\n\t\t//OneMinusSrcAlphaFactor: 205,\n\t\t//DstAlphaFactor: 206,\n\t\t//OneMinusDstAlphaFactor: 207,\n\t\tDstColorFactor: 208,\n\t\tOneMinusDstColorFactor: 209,\n\t\tSrcAlphaSaturateFactor: 210,\n\n\t\t// depth modes\n\n\t\tNeverDepth: 0,\n\t\tAlwaysDepth: 1,\n\t\tLessDepth: 2,\n\t\tLessEqualDepth: 3,\n\t\tEqualDepth: 4,\n\t\tGreaterEqualDepth: 5,\n\t\tGreaterDepth: 6,\n\t\tNotEqualDepth: 7,\n\n\n\t\t// TEXTURE CONSTANTS\n\n\t\tMultiplyOperation: 0,\n\t\tMixOperation: 1,\n\t\tAddOperation: 2,\n\n\t\t// Tone Mapping modes\n\n\t\tNoToneMapping: 0, // do not do any tone mapping, not even exposure (required for special purpose passes.)\n\t\tLinearToneMapping: 1, // only apply exposure.\n\t\tReinhardToneMapping: 2,\n\t\tUncharted2ToneMapping: 3, // John Hable\n\t\tCineonToneMapping: 4, // optimized filmic operator by Jim Hejl and Richard Burgess-Dawson\n\n\t\t// Mapping modes\n\n\t\tUVMapping: 300,\n\n\t\tCubeReflectionMapping: 301,\n\t\tCubeRefractionMapping: 302,\n\n\t\tEquirectangularReflectionMapping: 303,\n\t\tEquirectangularRefractionMapping: 304,\n\n\t\tSphericalReflectionMapping: 305,\n\t\tCubeUVReflectionMapping: 306,\n\t\tCubeUVRefractionMapping: 307,\n\n\t\t// Wrapping modes\n\n\t\tRepeatWrapping: 1000,\n\t\tClampToEdgeWrapping: 1001,\n\t\tMirroredRepeatWrapping: 1002,\n\n\t\t// Filters\n\n\t\tNearestFilter: 1003,\n\t\tNearestMipMapNearestFilter: 1004,\n\t\tNearestMipMapLinearFilter: 1005,\n\t\tLinearFilter: 1006,\n\t\tLinearMipMapNearestFilter: 1007,\n\t\tLinearMipMapLinearFilter: 1008,\n\n\t\t// Data types\n\n\t\tUnsignedByteType: 1009,\n\t\tByteType: 1010,\n\t\tShortType: 1011,\n\t\tUnsignedShortType: 1012,\n\t\tIntType: 1013,\n\t\tUnsignedIntType: 1014,\n\t\tFloatType: 1015,\n\t\tHalfFloatType: 1025,\n\n\t\t// Pixel types\n\n\t\t//UnsignedByteType: 1009,\n\t\tUnsignedShort4444Type: 1016,\n\t\tUnsignedShort5551Type: 1017,\n\t\tUnsignedShort565Type: 1018,\n\n\t\t// Pixel formats\n\n\t\tAlphaFormat: 1019,\n\t\tRGBFormat: 1020,\n\t\tRGBAFormat: 1021,\n\t\tLuminanceFormat: 1022,\n\t\tLuminanceAlphaFormat: 1023,\n\t\t// THREE.RGBEFormat handled as THREE.RGBAFormat in shaders\n\t\tRGBEFormat: THREE.RGBAFormat, //1024;\n\t\tDepthFormat: 1026,\n\n\t\t// DDS / ST3C Compressed texture formats\n\n\t\tRGB_S3TC_DXT1_Format: 2001,\n\t\tRGBA_S3TC_DXT1_Format: 2002,\n\t\tRGBA_S3TC_DXT3_Format: 2003,\n\t\tRGBA_S3TC_DXT5_Format: 2004,\n\n\t\t// PVRTC compressed texture formats\n\n\t\tRGB_PVRTC_4BPPV1_Format: 2100,\n\t\tRGB_PVRTC_2BPPV1_Format: 2101,\n\t\tRGBA_PVRTC_4BPPV1_Format: 2102,\n\t\tRGBA_PVRTC_2BPPV1_Format: 2103,\n\n\t\t// ETC compressed texture formats\n\n\t\tRGB_ETC1_Format: 2151,\n\n\t\t// Loop styles for AnimationAction\n\n\t\tLoopOnce: 2200,\n\t\tLoopRepeat: 2201,\n\t\tLoopPingPong: 2202,\n\n\t\t// Interpolation\n\n\t\tInterpolateDiscrete: 2300,\n\t\tInterpolateLinear: 2301,\n\t\tInterpolateSmooth: 2302,\n\n\t\t// Interpolant ending modes\n\n\t\tZeroCurvatureEnding: 2400,\n\t\tZeroSlopeEnding: 2401,\n\t\tWrapAroundEnding: 2402,\n\n\t\t// Triangle Draw modes\n\n\t\tTrianglesDrawMode: 0,\n\t\tTriangleStripDrawMode: 1,\n\t\tTriangleFanDrawMode: 2,\n\n\t\t// Texture Encodings\n\n\t\tLinearEncoding: 3000, // No encoding at all.\n\t\tsRGBEncoding: 3001,\n\t\tGammaEncoding: 3007, // uses GAMMA_FACTOR, for backwards compatibility with WebGLRenderer.gammaInput/gammaOutput\n\n\t\t// The following Texture Encodings are for RGB-only (no alpha) HDR light emission sources.\n\t\t// These encodings should not specified as output encodings except in rare situations.\n\t\tRGBEEncoding: 3002, // AKA Radiance.\n\t\tLogLuvEncoding: 3003,\n\t\tRGBM7Encoding: 3004,\n\t\tRGBM16Encoding: 3005,\n\t\tRGBDEncoding: 3006, // MaxRange is 256.\n\n\t\t// Depth packing strategies\n\n\t\tBasicDepthPacking: 3200, // for writing to float textures for high precision or for visualizing results in RGB buffers\n\t\tRGBADepthPacking: 3201 // for packing into RGBA buffers.\n\n\t} );\n\n\t// File:src/math/Color.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Color = function ( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t};\n\n\tTHREE.Color.prototype = {\n\n\t\tconstructor: THREE.Color,\n\n\t\tr: 1, g: 1, b: 1,\n\n\t\tset: function ( value ) {\n\n\t\t\tif ( value instanceof THREE.Color ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.r = scalar;\n\t\t\tthis.g = scalar;\n\t\t\tthis.b = scalar;\n\n\t\t},\n\n\t\tsetHex: function ( hex ) {\n\n\t\t\thex = Math.floor( hex );\n\n\t\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetRGB: function ( r, g, b ) {\n\n\t\t\tthis.r = r;\n\t\t\tthis.g = g;\n\t\t\tthis.b = b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetHSL: function () {\n\n\t\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\t\tif ( t < 0 ) t += 1;\n\t\t\t\tif ( t > 1 ) t -= 1;\n\t\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\t\th = THREE.Math.euclideanModulo( h, 1 );\n\t\t\t\ts = THREE.Math.clamp( s, 0, 1 );\n\t\t\t\tl = THREE.Math.clamp( l, 0, 1 );\n\n\t\t\t\tif ( s === 0 ) {\n\n\t\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetStyle: function ( style ) {\n\n\t\t\tfunction handleAlpha( string ) {\n\n\t\t\t\tif ( string === undefined ) return;\n\n\t\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tvar m;\n\n\t\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t\t// rgb / hsl\n\n\t\t\t\tvar color;\n\t\t\t\tvar name = m[ 1 ];\n\t\t\t\tvar components = m[ 2 ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'rgb':\n\t\t\t\t\tcase 'rgba':\n\n\t\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'hsl':\n\t\t\t\t\tcase 'hsla':\n\n\t\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t\t// hex color\n\n\t\t\t\tvar hex = m[ 1 ];\n\t\t\t\tvar size = hex.length;\n\n\t\t\t\tif ( size === 3 ) {\n\n\t\t\t\t\t// #ff0\n\t\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t\t// #ff0000\n\t\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( style && style.length > 0 ) {\n\n\t\t\t\t// color keywords\n\t\t\t\tvar hex = THREE.ColorKeywords[ style ];\n\n\t\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t\t// red\n\t\t\t\t\tthis.setHex( hex );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// unknown color\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t\t},\n\n\t\tcopy: function ( color ) {\n\n\t\t\tthis.r = color.r;\n\t\t\tthis.g = color.g;\n\t\t\tthis.b = color.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tconvertGammaToLinear: function () {\n\n\t\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\t\tthis.r = r * r;\n\t\t\tthis.g = g * g;\n\t\t\tthis.b = b * b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tconvertLinearToGamma: function () {\n\n\t\t\tthis.r = Math.sqrt( this.r );\n\t\t\tthis.g = Math.sqrt( this.g );\n\t\t\tthis.b = Math.sqrt( this.b );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetHex: function () {\n\n\t\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t\t},\n\n\t\tgetHexString: function () {\n\n\t\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t\t},\n\n\t\tgetHSL: function ( optionalTarget ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\t\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\n\n\t\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\t\tvar max = Math.max( r, g, b );\n\t\t\tvar min = Math.min( r, g, b );\n\n\t\t\tvar hue, saturation;\n\t\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\t\tif ( min === max ) {\n\n\t\t\t\thue = 0;\n\t\t\t\tsaturation = 0;\n\n\t\t\t} else {\n\n\t\t\t\tvar delta = max - min;\n\n\t\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\t\tswitch ( max ) {\n\n\t\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t\t}\n\n\t\t\t\thue /= 6;\n\n\t\t\t}\n\n\t\t\thsl.h = hue;\n\t\t\thsl.s = saturation;\n\t\t\thsl.l = lightness;\n\n\t\t\treturn hsl;\n\n\t\t},\n\n\t\tgetStyle: function () {\n\n\t\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t\t},\n\n\t\toffsetHSL: function ( h, s, l ) {\n\n\t\t\tvar hsl = this.getHSL();\n\n\t\t\thsl.h += h; hsl.s += s; hsl.l += l;\n\n\t\t\tthis.setHSL( hsl.h, hsl.s, hsl.l );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( color ) {\n\n\t\t\tthis.r += color.r;\n\t\t\tthis.g += color.g;\n\t\t\tthis.b += color.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddColors: function ( color1, color2 ) {\n\n\t\t\tthis.r = color1.r + color2.r;\n\t\t\tthis.g = color1.g + color2.g;\n\t\t\tthis.b = color1.b + color2.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.r += s;\n\t\t\tthis.g += s;\n\t\t\tthis.b += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( color ) {\n\n\t\t\tthis.r *= color.r;\n\t\t\tthis.g *= color.g;\n\t\t\tthis.b *= color.b;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( s ) {\n\n\t\t\tthis.r *= s;\n\t\t\tthis.g *= s;\n\t\t\tthis.b *= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerp: function ( color, alpha ) {\n\n\t\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( c ) {\n\n\t\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.r = array[ offset ];\n\t\t\tthis.g = array[ offset + 1 ];\n\t\t\tthis.b = array[ offset + 2 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.r;\n\t\t\tarray[ offset + 1 ] = this.g;\n\t\t\tarray[ offset + 2 ] = this.b;\n\n\t\t\treturn array;\n\n\t\t}\n\n\t};\n\n\tTHREE.ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\n\t// File:src/math/Quaternion.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Quaternion = function ( x, y, z, w ) {\n\n\t\tthis._x = x || 0;\n\t\tthis._y = y || 0;\n\t\tthis._z = z || 0;\n\t\tthis._w = ( w !== undefined ) ? w : 1;\n\n\t};\n\n\tTHREE.Quaternion.prototype = {\n\n\t\tconstructor: THREE.Quaternion,\n\n\t\tget x () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset x ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tget y () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset y ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tget z () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset z ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tget w () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset w ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tset: function ( x, y, z, w ) {\n\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._w = w;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t\t},\n\n\t\tcopy: function ( quaternion ) {\n\n\t\t\tthis._x = quaternion.x;\n\t\t\tthis._y = quaternion.y;\n\t\t\tthis._z = quaternion.z;\n\t\t\tthis._w = quaternion.w;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromEuler: function ( euler, update ) {\n\n\t\t\tif ( euler instanceof THREE.Euler === false ) {\n\n\t\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t\t//\tcontent/SpinCalc.m\n\n\t\t\tvar c1 = Math.cos( euler._x / 2 );\n\t\t\tvar c2 = Math.cos( euler._y / 2 );\n\t\t\tvar c3 = Math.cos( euler._z / 2 );\n\t\t\tvar s1 = Math.sin( euler._x / 2 );\n\t\t\tvar s2 = Math.sin( euler._y / 2 );\n\t\t\tvar s3 = Math.sin( euler._z / 2 );\n\n\t\t\tvar order = euler.order;\n\n\t\t\tif ( order === 'XYZ' ) {\n\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t\t} else if ( order === 'YZX' ) {\n\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t\t} else if ( order === 'XZY' ) {\n\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t\t}\n\n\t\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t\t// assumes axis is normalized\n\n\t\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\t\tthis._x = axis.x * s;\n\t\t\tthis._y = axis.y * s;\n\t\t\tthis._z = axis.z * s;\n\t\t\tthis._w = Math.cos( halfAngle );\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromRotationMatrix: function ( m ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tvar te = m.elements,\n\n\t\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\t\ttrace = m11 + m22 + m33,\n\t\t\t\ts;\n\n\t\t\tif ( trace > 0 ) {\n\n\t\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\t\tthis._w = 0.25 / s;\n\t\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\t\tthis._x = 0.25 * s;\n\t\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t\t} else if ( m22 > m33 ) {\n\n\t\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\t\tthis._y = 0.25 * s;\n\t\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t\t} else {\n\n\t\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\t\tthis._z = 0.25 * s;\n\n\t\t\t}\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromUnitVectors: function () {\n\n\t\t\t// http://lolengine.net/blog/2014/02/24/quaternion-from-two-vectors-final\n\n\t\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\t\tvar v1, r;\n\n\t\t\tvar EPS = 0.000001;\n\n\t\t\treturn function setFromUnitVectors( vFrom, vTo ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\n\t\t\t\tr = vFrom.dot( vTo ) + 1;\n\n\t\t\t\tif ( r < EPS ) {\n\n\t\t\t\t\tr = 0;\n\n\t\t\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\t\t\tv1.set( - vFrom.y, vFrom.x, 0 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv1.set( 0, - vFrom.z, vFrom.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv1.crossVectors( vFrom, vTo );\n\n\t\t\t\t}\n\n\t\t\t\tthis._x = v1.x;\n\t\t\t\tthis._y = v1.y;\n\t\t\t\tthis._z = v1.z;\n\t\t\t\tthis._w = r;\n\n\t\t\t\treturn this.normalize();\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tinverse: function () {\n\n\t\t\treturn this.conjugate().normalize();\n\n\t\t},\n\n\t\tconjugate: function () {\n\n\t\t\tthis._x *= - 1;\n\t\t\tthis._y *= - 1;\n\t\t\tthis._z *= - 1;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\tvar l = this.length();\n\n\t\t\tif ( l === 0 ) {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = 1;\n\n\t\t\t} else {\n\n\t\t\t\tl = 1 / l;\n\n\t\t\t\tthis._x = this._x * l;\n\t\t\t\tthis._y = this._y * l;\n\t\t\t\tthis._z = this._z * l;\n\t\t\t\tthis._w = this._w * l;\n\n\t\t\t}\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( q, p ) {\n\n\t\t\tif ( p !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t\t}\n\n\t\t\treturn this.multiplyQuaternions( this, q );\n\n\t\t},\n\n\t\tpremultiply: function ( q ) {\n\n\t\t\treturn this.multiplyQuaternions( q, this );\n\n\t\t},\n\n\t\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tslerp: function ( qb, t ) {\n\n\t\t\tif ( t === 0 ) return this;\n\t\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\t\tthis._w = - qb._w;\n\t\t\t\tthis._x = - qb._x;\n\t\t\t\tthis._y = - qb._y;\n\t\t\t\tthis._z = - qb._z;\n\n\t\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t\t} else {\n\n\t\t\t\tthis.copy( qb );\n\n\t\t\t}\n\n\t\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\t\tthis._w = w;\n\t\t\t\tthis._x = x;\n\t\t\t\tthis._y = y;\n\t\t\t\tthis._z = z;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\n\n\t\t\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\n\n\t\t\t\tthis._w = 0.5 * ( w + this._w );\n\t\t\t\tthis._x = 0.5 * ( x + this._x );\n\t\t\t\tthis._y = 0.5 * ( y + this._y );\n\t\t\t\tthis._z = 0.5 * ( z + this._z );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( quaternion ) {\n\n\t\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis._x = array[ offset ];\n\t\t\tthis._y = array[ offset + 1 ];\n\t\t\tthis._z = array[ offset + 2 ];\n\t\t\tthis._w = array[ offset + 3 ];\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this._x;\n\t\t\tarray[ offset + 1 ] = this._y;\n\t\t\tarray[ offset + 2 ] = this._z;\n\t\t\tarray[ offset + 3 ] = this._w;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tonChange: function ( callback ) {\n\n\t\t\tthis.onChangeCallback = callback;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tonChangeCallback: function () {}\n\n\t};\n\n\tObject.assign( THREE.Quaternion, {\n\n\t\tslerp: function( qa, qb, qm, t ) {\n\n\t\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t\t},\n\n\t\tslerpFlat: function(\n\t\t\t\tdst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\t\tvar s = 1 - t,\n\n\t\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t\t}\n\n\t\t\t\tvar tDir = t * dir;\n\n\t\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t\t// Normalize in case we just did a lerp:\n\t\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\t\tx0 *= f;\n\t\t\t\t\ty0 *= f;\n\t\t\t\t\tz0 *= f;\n\t\t\t\t\tw0 *= f;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdst[ dstOffset ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\n\t\t}\n\n\t} );\n\n\t// File:src/math/Vector2.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author egraether / http://egraether.com/\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t */\n\n\tTHREE.Vector2 = function ( x, y ) {\n\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\n\t};\n\n\tTHREE.Vector2.prototype = {\n\n\t\tconstructor: THREE.Vector2,\n\n\t\tget width() {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset width( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t},\n\n\t\tget height() {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset height( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t},\n\n\t\t//\n\n\t\tset: function ( x, y ) {\n\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetX: function ( x ) {\n\n\t\t\tthis.x = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( y ) {\n\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponent: function ( index, value ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: this.x = value; break;\n\t\t\t\tcase 1: this.y = value; break;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetComponent: function ( index ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: return this.x;\n\t\t\t\tcase 1: return this.y;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.x, this.y );\n\n\t\t},\n\n\t\tcopy: function ( v ) {\n\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\t\treturn this.addVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScaledVector: function ( v, s ) {\n\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\t\treturn this.subVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubScalar: function ( s ) {\n\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( v ) {\n\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( scalar ) {\n\n\t\t\tif ( isFinite( scalar ) ) {\n\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\n\t\t\t} else {\n\n\t\t\t\tthis.x = 0;\n\t\t\t\tthis.y = 0;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivide: function ( v ) {\n\n\t\t\tthis.x /= v.x;\n\t\t\tthis.y /= v.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivideScalar: function ( scalar ) {\n\n\t\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t\t},\n\n\t\tmin: function ( v ) {\n\n\t\t\tthis.x = Math.min( this.x, v.x );\n\t\t\tthis.y = Math.min( this.y, v.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmax: function ( v ) {\n\n\t\t\tthis.x = Math.max( this.x, v.x );\n\t\t\tthis.y = Math.max( this.y, v.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclamp: function ( min, max ) {\n\n\t\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclampScalar: function () {\n\n\t\t\tvar min, max;\n\n\t\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\t\tif ( min === undefined ) {\n\n\t\t\t\t\tmin = new THREE.Vector2();\n\t\t\t\t\tmax = new THREE.Vector2();\n\n\t\t\t\t}\n\n\t\t\t\tmin.set( minVal, minVal );\n\t\t\t\tmax.set( maxVal, maxVal );\n\n\t\t\t\treturn this.clamp( min, max );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclampLength: function ( min, max ) {\n\n\t\t\tvar length = this.length();\n\n\t\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t\t},\n\n\t\tfloor: function () {\n\n\t\t\tthis.x = Math.floor( this.x );\n\t\t\tthis.y = Math.floor( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tceil: function () {\n\n\t\t\tthis.x = Math.ceil( this.x );\n\t\t\tthis.y = Math.ceil( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tround: function () {\n\n\t\t\tthis.x = Math.round( this.x );\n\t\t\tthis.y = Math.round( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\troundToZero: function () {\n\n\t\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.x = - this.x;\n\t\t\tthis.y = - this.y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this.x * v.x + this.y * v.y;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this.x * this.x + this.y * this.y;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t\t},\n\n\t\tlengthManhattan: function() {\n\n\t\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\treturn this.divideScalar( this.length() );\n\n\t\t},\n\n\t\tangle: function () {\n\n\t\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\t\treturn angle;\n\n\t\t},\n\n\t\tdistanceTo: function ( v ) {\n\n\t\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t\t},\n\n\t\tdistanceToSquared: function ( v ) {\n\n\t\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\t\treturn dx * dx + dy * dy;\n\n\t\t},\n\n\t\tsetLength: function ( length ) {\n\n\t\t\treturn this.multiplyScalar( length / this.length() );\n\n\t\t},\n\n\t\tlerp: function ( v, alpha ) {\n\n\t\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t\t},\n\n\t\tequals: function ( v ) {\n\n\t\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.x = array[ offset ];\n\t\t\tthis.y = array[ offset + 1 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.x;\n\t\t\tarray[ offset + 1 ] = this.y;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tindex = index * attribute.itemSize + offset;\n\n\t\t\tthis.x = attribute.array[ index ];\n\t\t\tthis.y = attribute.array[ index + 1 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trotateAround: function ( center, angle ) {\n\n\t\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\t\tvar x = this.x - center.x;\n\t\t\tvar y = this.y - center.y;\n\n\t\t\tthis.x = x * c - y * s + center.x;\n\t\t\tthis.y = x * s + y * c + center.y;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Vector3.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author *kile / http://kile.stravaganza.org/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author egraether / http://egraether.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tTHREE.Vector3 = function ( x, y, z ) {\n\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\t\tthis.z = z || 0;\n\n\t};\n\n\tTHREE.Vector3.prototype = {\n\n\t\tconstructor: THREE.Vector3,\n\n\t\tset: function ( x, y, z ) {\n\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\tthis.z = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetX: function ( x ) {\n\n\t\t\tthis.x = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( y ) {\n\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetZ: function ( z ) {\n\n\t\t\tthis.z = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponent: function ( index, value ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: this.x = value; break;\n\t\t\t\tcase 1: this.y = value; break;\n\t\t\t\tcase 2: this.z = value; break;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetComponent: function ( index ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: return this.x;\n\t\t\t\tcase 1: return this.y;\n\t\t\t\tcase 2: return this.z;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t\t},\n\n\t\tcopy: function ( v ) {\n\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\tthis.z = v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\t\treturn this.addVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\tthis.z += v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\tthis.z += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\tthis.z = a.z + b.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScaledVector: function ( v, s ) {\n\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\tthis.z += v.z * s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\t\treturn this.subVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\tthis.z -= v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubScalar: function ( s ) {\n\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\tthis.z -= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\tthis.z = a.z - b.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiply: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x *= v.x;\n\t\t\tthis.y *= v.y;\n\t\t\tthis.z *= v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( scalar ) {\n\n\t\t\tif ( isFinite( scalar ) ) {\n\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\tthis.z *= scalar;\n\n\t\t\t} else {\n\n\t\t\t\tthis.x = 0;\n\t\t\t\tthis.y = 0;\n\t\t\t\tthis.z = 0;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x * b.x;\n\t\t\tthis.y = a.y * b.y;\n\t\t\tthis.z = a.z * b.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyEuler: function () {\n\n\t\t\tvar quaternion;\n\n\t\t\treturn function applyEuler( euler ) {\n\n\t\t\t\tif ( euler instanceof THREE.Euler === false ) {\n\n\t\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( quaternion === undefined ) quaternion = new THREE.Quaternion();\n\n\t\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyAxisAngle: function () {\n\n\t\t\tvar quaternion;\n\n\t\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\t\tif ( quaternion === undefined ) quaternion = new THREE.Quaternion();\n\n\t\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyMatrix3: function ( m ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyMatrix4: function ( m ) {\n\n\t\t\t// input: THREE.Matrix4 affine matrix\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ]  * z + e[ 12 ];\n\t\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ]  * z + e[ 13 ];\n\t\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyProjection: function ( m ) {\n\n\t\t\t// input: THREE.Matrix4 projection matrix\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\t\t\tvar d = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); // perspective divide\n\n\t\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ]  * z + e[ 12 ] ) * d;\n\t\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ]  * z + e[ 13 ] ) * d;\n\t\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * d;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyQuaternion: function ( q ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t\t// calculate quat * vector\n\n\t\t\tvar ix =  qw * x + qy * z - qz * y;\n\t\t\tvar iy =  qw * y + qz * x - qx * z;\n\t\t\tvar iz =  qw * z + qx * y - qy * x;\n\t\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t\t// calculate result * inverse quat\n\n\t\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tproject: function () {\n\n\t\t\tvar matrix;\n\n\t\t\treturn function project( camera ) {\n\n\t\t\t\tif ( matrix === undefined ) matrix = new THREE.Matrix4();\n\n\t\t\t\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\n\t\t\t\treturn this.applyProjection( matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tunproject: function () {\n\n\t\t\tvar matrix;\n\n\t\t\treturn function unproject( camera ) {\n\n\t\t\t\tif ( matrix === undefined ) matrix = new THREE.Matrix4();\n\n\t\t\t\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\n\t\t\t\treturn this.applyProjection( matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttransformDirection: function ( m ) {\n\n\t\t\t// input: THREE.Matrix4 affine matrix\n\t\t\t// vector interpreted as a direction\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ]  * z;\n\t\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ]  * z;\n\t\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\t\treturn this.normalize();\n\n\t\t},\n\n\t\tdivide: function ( v ) {\n\n\t\t\tthis.x /= v.x;\n\t\t\tthis.y /= v.y;\n\t\t\tthis.z /= v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivideScalar: function ( scalar ) {\n\n\t\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t\t},\n\n\t\tmin: function ( v ) {\n\n\t\t\tthis.x = Math.min( this.x, v.x );\n\t\t\tthis.y = Math.min( this.y, v.y );\n\t\t\tthis.z = Math.min( this.z, v.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmax: function ( v ) {\n\n\t\t\tthis.x = Math.max( this.x, v.x );\n\t\t\tthis.y = Math.max( this.y, v.y );\n\t\t\tthis.z = Math.max( this.z, v.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclamp: function ( min, max ) {\n\n\t\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclampScalar: function () {\n\n\t\t\tvar min, max;\n\n\t\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\t\tif ( min === undefined ) {\n\n\t\t\t\t\tmin = new THREE.Vector3();\n\t\t\t\t\tmax = new THREE.Vector3();\n\n\t\t\t\t}\n\n\t\t\t\tmin.set( minVal, minVal, minVal );\n\t\t\t\tmax.set( maxVal, maxVal, maxVal );\n\n\t\t\t\treturn this.clamp( min, max );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclampLength: function ( min, max ) {\n\n\t\t\tvar length = this.length();\n\n\t\t\treturn this.multiplyScalar( Math.max( min, Math.min( max, length ) ) / length );\n\n\t\t},\n\n\t\tfloor: function () {\n\n\t\t\tthis.x = Math.floor( this.x );\n\t\t\tthis.y = Math.floor( this.y );\n\t\t\tthis.z = Math.floor( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tceil: function () {\n\n\t\t\tthis.x = Math.ceil( this.x );\n\t\t\tthis.y = Math.ceil( this.y );\n\t\t\tthis.z = Math.ceil( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tround: function () {\n\n\t\t\tthis.x = Math.round( this.x );\n\t\t\tthis.y = Math.round( this.y );\n\t\t\tthis.z = Math.round( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\troundToZero: function () {\n\n\t\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.x = - this.x;\n\t\t\tthis.y = - this.y;\n\t\t\tthis.z = - this.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t\t},\n\n\t\tlengthManhattan: function () {\n\n\t\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\treturn this.divideScalar( this.length() );\n\n\t\t},\n\n\t\tsetLength: function ( length ) {\n\n\t\t\treturn this.multiplyScalar( length / this.length() );\n\n\t\t},\n\n\t\tlerp: function ( v, alpha ) {\n\n\t\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t\t},\n\n\t\tcross: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\t\treturn this.crossVectors( v, w );\n\n\t\t\t}\n\n\t\t\tvar x = this.x, y = this.y, z = this.z;\n\n\t\t\tthis.x = y * v.z - z * v.y;\n\t\t\tthis.y = z * v.x - x * v.z;\n\t\t\tthis.z = x * v.y - y * v.x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcrossVectors: function ( a, b ) {\n\n\t\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\t\tthis.x = ay * bz - az * by;\n\t\t\tthis.y = az * bx - ax * bz;\n\t\t\tthis.z = ax * by - ay * bx;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tprojectOnVector: function ( vector ) {\n\n\t\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\t\t\n\t\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\t\t\n\t\t},\n\n\t\tprojectOnPlane: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\n\t\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\t\treturn this.sub( v1 );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\treflect: function () {\n\n\t\t\t// reflect incident vector off plane orthogonal to normal\n\t\t\t// normal is assumed to have unit length\n\n\t\t\tvar v1;\n\n\t\t\treturn function reflect( normal ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\n\t\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tangleTo: function ( v ) {\n\n\t\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t\t// clamp, to handle numerical problems\n\n\t\t\treturn Math.acos( THREE.Math.clamp( theta, - 1, 1 ) );\n\n\t\t},\n\n\t\tdistanceTo: function ( v ) {\n\n\t\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t\t},\n\n\t\tdistanceToSquared: function ( v ) {\n\n\t\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t\t},\n\n\t\tsetFromSpherical: function( s ) {\n\n\t\t\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\n\n\t\t\tthis.x = sinPhiRadius * Math.sin( s.theta );\n\t\t\tthis.y = Math.cos( s.phi ) * s.radius;\n\t\t\tthis.z = sinPhiRadius * Math.cos( s.theta );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrixPosition: function ( m ) {\n\n\t\t\treturn this.setFromMatrixColumn( m, 3 );\n\n\t\t},\n\n\t\tsetFromMatrixScale: function ( m ) {\n\n\t\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tthis.x = sx;\n\t\t\tthis.y = sy;\n\t\t\tthis.z = sz;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\t\tif ( typeof m === 'number' ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).' );\n\t\t\t\tvar temp = m\n\t\t\t\tm = index;\n\t\t\t\tindex = temp;\n\n\t\t\t}\n\n\t\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t\t},\n\n\t\tequals: function ( v ) {\n\n\t\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.x = array[ offset ];\n\t\t\tthis.y = array[ offset + 1 ];\n\t\t\tthis.z = array[ offset + 2 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.x;\n\t\t\tarray[ offset + 1 ] = this.y;\n\t\t\tarray[ offset + 2 ] = this.z;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tindex = index * attribute.itemSize + offset;\n\n\t\t\tthis.x = attribute.array[ index ];\n\t\t\tthis.y = attribute.array[ index + 1 ];\n\t\t\tthis.z = attribute.array[ index + 2 ];\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Vector4.js\n\n\t/**\n\t * @author supereggbert / http://www.paulbrunt.co.uk/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author egraether / http://egraether.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tTHREE.Vector4 = function ( x, y, z, w ) {\n\n\t\tthis.x = x || 0;\n\t\tthis.y = y || 0;\n\t\tthis.z = z || 0;\n\t\tthis.w = ( w !== undefined ) ? w : 1;\n\n\t};\n\n\tTHREE.Vector4.prototype = {\n\n\t\tconstructor: THREE.Vector4,\n\n\t\tset: function ( x, y, z, w ) {\n\n\t\t\tthis.x = x;\n\t\t\tthis.y = y;\n\t\t\tthis.z = z;\n\t\t\tthis.w = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetScalar: function ( scalar ) {\n\n\t\t\tthis.x = scalar;\n\t\t\tthis.y = scalar;\n\t\t\tthis.z = scalar;\n\t\t\tthis.w = scalar;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetX: function ( x ) {\n\n\t\t\tthis.x = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( y ) {\n\n\t\t\tthis.y = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetZ: function ( z ) {\n\n\t\t\tthis.z = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetW: function ( w ) {\n\n\t\t\tthis.w = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponent: function ( index, value ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: this.x = value; break;\n\t\t\t\tcase 1: this.y = value; break;\n\t\t\t\tcase 2: this.z = value; break;\n\t\t\t\tcase 3: this.w = value; break;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetComponent: function ( index ) {\n\n\t\t\tswitch ( index ) {\n\n\t\t\t\tcase 0: return this.x;\n\t\t\t\tcase 1: return this.y;\n\t\t\t\tcase 2: return this.z;\n\t\t\t\tcase 3: return this.w;\n\t\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t\t},\n\n\t\tcopy: function ( v ) {\n\n\t\t\tthis.x = v.x;\n\t\t\tthis.y = v.y;\n\t\t\tthis.z = v.z;\n\t\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\t\treturn this.addVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x += v.x;\n\t\t\tthis.y += v.y;\n\t\t\tthis.z += v.z;\n\t\t\tthis.w += v.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScalar: function ( s ) {\n\n\t\t\tthis.x += s;\n\t\t\tthis.y += s;\n\t\t\tthis.z += s;\n\t\t\tthis.w += s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x + b.x;\n\t\t\tthis.y = a.y + b.y;\n\t\t\tthis.z = a.z + b.z;\n\t\t\tthis.w = a.w + b.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddScaledVector: function ( v, s ) {\n\n\t\t\tthis.x += v.x * s;\n\t\t\tthis.y += v.y * s;\n\t\t\tthis.z += v.z * s;\n\t\t\tthis.w += v.w * s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsub: function ( v, w ) {\n\n\t\t\tif ( w !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\t\treturn this.subVectors( v, w );\n\n\t\t\t}\n\n\t\t\tthis.x -= v.x;\n\t\t\tthis.y -= v.y;\n\t\t\tthis.z -= v.z;\n\t\t\tthis.w -= v.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubScalar: function ( s ) {\n\n\t\t\tthis.x -= s;\n\t\t\tthis.y -= s;\n\t\t\tthis.z -= s;\n\t\t\tthis.w -= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsubVectors: function ( a, b ) {\n\n\t\t\tthis.x = a.x - b.x;\n\t\t\tthis.y = a.y - b.y;\n\t\t\tthis.z = a.z - b.z;\n\t\t\tthis.w = a.w - b.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( scalar ) {\n\n\t\t\tif ( isFinite( scalar ) ) {\n\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\tthis.z *= scalar;\n\t\t\t\tthis.w *= scalar;\n\n\t\t\t} else {\n\n\t\t\t\tthis.x = 0;\n\t\t\t\tthis.y = 0;\n\t\t\t\tthis.z = 0;\n\t\t\t\tthis.w = 0;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyMatrix4: function ( m ) {\n\n\t\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\t\tvar e = m.elements;\n\n\t\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdivideScalar: function ( scalar ) {\n\n\t\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t\t},\n\n\t\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t\t// q is assumed to be normalized\n\n\t\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\t\tif ( s < 0.0001 ) {\n\n\t\t\t\t this.x = 1;\n\t\t\t\t this.y = 0;\n\t\t\t\t this.z = 0;\n\n\t\t\t} else {\n\n\t\t\t\t this.x = q.x / s;\n\t\t\t\t this.y = q.y / s;\n\t\t\t\t this.z = q.z / s;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\t\tte = m.elements,\n\n\t\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t\t// singularity found\n\t\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t\t}\n\n\t\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\t\tangle = Math.PI;\n\n\t\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\t\ty = xy / x;\n\t\t\t\t\t\tz = xz / x;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\t\ty = 0;\n\t\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\t\tx = xy / y;\n\t\t\t\t\t\tz = yz / y;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\t\tz = 0;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\t\tx = xz / z;\n\t\t\t\t\t\ty = yz / z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.set( x, y, z, angle );\n\n\t\t\t\treturn this; // return 180 deg rotation\n\n\t\t\t}\n\n\t\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t                   ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t                   ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\t\tthis.x = ( m32 - m23 ) / s;\n\t\t\tthis.y = ( m13 - m31 ) / s;\n\t\t\tthis.z = ( m21 - m12 ) / s;\n\t\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmin: function ( v ) {\n\n\t\t\tthis.x = Math.min( this.x, v.x );\n\t\t\tthis.y = Math.min( this.y, v.y );\n\t\t\tthis.z = Math.min( this.z, v.z );\n\t\t\tthis.w = Math.min( this.w, v.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmax: function ( v ) {\n\n\t\t\tthis.x = Math.max( this.x, v.x );\n\t\t\tthis.y = Math.max( this.y, v.y );\n\t\t\tthis.z = Math.max( this.z, v.z );\n\t\t\tthis.w = Math.max( this.w, v.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclamp: function ( min, max ) {\n\n\t\t\t// This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n\t\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclampScalar: function () {\n\n\t\t\tvar min, max;\n\n\t\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\t\tif ( min === undefined ) {\n\n\t\t\t\t\tmin = new THREE.Vector4();\n\t\t\t\t\tmax = new THREE.Vector4();\n\n\t\t\t\t}\n\n\t\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\t\treturn this.clamp( min, max );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tfloor: function () {\n\n\t\t\tthis.x = Math.floor( this.x );\n\t\t\tthis.y = Math.floor( this.y );\n\t\t\tthis.z = Math.floor( this.z );\n\t\t\tthis.w = Math.floor( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tceil: function () {\n\n\t\t\tthis.x = Math.ceil( this.x );\n\t\t\tthis.y = Math.ceil( this.y );\n\t\t\tthis.z = Math.ceil( this.z );\n\t\t\tthis.w = Math.ceil( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tround: function () {\n\n\t\t\tthis.x = Math.round( this.x );\n\t\t\tthis.y = Math.round( this.y );\n\t\t\tthis.z = Math.round( this.z );\n\t\t\tthis.w = Math.round( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\troundToZero: function () {\n\n\t\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.x = - this.x;\n\t\t\tthis.y = - this.y;\n\t\t\tthis.z = - this.z;\n\t\t\tthis.w = - this.w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdot: function ( v ) {\n\n\t\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t\t},\n\n\t\tlengthSq: function () {\n\n\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t\t},\n\n\t\tlength: function () {\n\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t\t},\n\n\t\tlengthManhattan: function () {\n\n\t\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\treturn this.divideScalar( this.length() );\n\n\t\t},\n\n\t\tsetLength: function ( length ) {\n\n\t\t\treturn this.multiplyScalar( length / this.length() );\n\n\t\t},\n\n\t\tlerp: function ( v, alpha ) {\n\n\t\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t\t},\n\n\t\tequals: function ( v ) {\n\n\t\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t\t},\n\n\t\tfromArray: function ( array, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.x = array[ offset ];\n\t\t\tthis.y = array[ offset + 1 ];\n\t\t\tthis.z = array[ offset + 2 ];\n\t\t\tthis.w = array[ offset + 3 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this.x;\n\t\t\tarray[ offset + 1 ] = this.y;\n\t\t\tarray[ offset + 2 ] = this.z;\n\t\t\tarray[ offset + 3 ] = this.w;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tindex = index * attribute.itemSize + offset;\n\n\t\t\tthis.x = attribute.array[ index ];\n\t\t\tthis.y = attribute.array[ index + 1 ];\n\t\t\tthis.z = attribute.array[ index + 2 ];\n\t\t\tthis.w = attribute.array[ index + 3 ];\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Euler.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Euler = function ( x, y, z, order ) {\n\n\t\tthis._x = x || 0;\n\t\tthis._y = y || 0;\n\t\tthis._z = z || 0;\n\t\tthis._order = order || THREE.Euler.DefaultOrder;\n\n\t};\n\n\tTHREE.Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\n\tTHREE.Euler.DefaultOrder = 'XYZ';\n\n\tTHREE.Euler.prototype = {\n\n\t\tconstructor: THREE.Euler,\n\n\t\tget x () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset x ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tget y () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset y ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tget z () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset z ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tget order () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset order ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t},\n\n\t\tset: function ( x, y, z, order ) {\n\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\t\t\tthis._order = order || this._order;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t\t},\n\n\t\tcopy: function ( euler ) {\n\n\t\t\tthis._x = euler._x;\n\t\t\tthis._y = euler._y;\n\t\t\tthis._z = euler._z;\n\t\t\tthis._order = euler._order;\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\t\tvar clamp = THREE.Math.clamp;\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tvar te = m.elements;\n\t\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\t\torder = order || this._order;\n\n\t\t\tif ( order === 'XYZ' ) {\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t} else if ( order === 'YZX' ) {\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t} else if ( order === 'XZY' ) {\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t\t}\n\n\t\t\tthis._order = order;\n\n\t\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromQuaternion: function () {\n\n\t\t\tvar matrix;\n\n\t\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\t\tif ( matrix === undefined ) matrix = new THREE.Matrix4();\n\n\t\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetFromVector3: function ( v, order ) {\n\n\t\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t\t},\n\n\t\treorder: function () {\n\n\t\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t\tvar q = new THREE.Quaternion();\n\n\t\t\treturn function reorder( newOrder ) {\n\n\t\t\t\tq.setFromEuler( this );\n\t\t\t\t\n\t\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tequals: function ( euler ) {\n\n\t\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t\t},\n\n\t\tfromArray: function ( array ) {\n\n\t\t\tthis._x = array[ 0 ];\n\t\t\tthis._y = array[ 1 ];\n\t\t\tthis._z = array[ 2 ];\n\t\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\t\tthis.onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tarray[ offset ] = this._x;\n\t\t\tarray[ offset + 1 ] = this._y;\n\t\t\tarray[ offset + 2 ] = this._z;\n\t\t\tarray[ offset + 3 ] = this._order;\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\ttoVector3: function ( optionalResult ) {\n\n\t\t\tif ( optionalResult ) {\n\n\t\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t\t} else {\n\n\t\t\t\treturn new THREE.Vector3( this._x, this._y, this._z );\n\n\t\t\t}\n\n\t\t},\n\n\t\tonChange: function ( callback ) {\n\n\t\t\tthis.onChangeCallback = callback;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tonChangeCallback: function () {}\n\n\t};\n\n\t// File:src/math/Line3.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Line3 = function ( start, end ) {\n\n\t\tthis.start = ( start !== undefined ) ? start : new THREE.Vector3();\n\t\tthis.end = ( end !== undefined ) ? end : new THREE.Vector3();\n\n\t};\n\n\tTHREE.Line3.prototype = {\n\n\t\tconstructor: THREE.Line3,\n\n\t\tset: function ( start, end ) {\n\n\t\t\tthis.start.copy( start );\n\t\t\tthis.end.copy( end );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( line ) {\n\n\t\t\tthis.start.copy( line.start );\n\t\t\tthis.end.copy( line.end );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcenter: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t\t},\n\n\t\tdelta: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.subVectors( this.end, this.start );\n\n\t\t},\n\n\t\tdistanceSq: function () {\n\n\t\t\treturn this.start.distanceToSquared( this.end );\n\n\t\t},\n\n\t\tdistance: function () {\n\n\t\t\treturn this.start.distanceTo( this.end );\n\n\t\t},\n\n\t\tat: function ( t, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t\t},\n\n\t\tclosestPointToPointParameter: function () {\n\n\t\t\tvar startP = new THREE.Vector3();\n\t\t\tvar startEnd = new THREE.Vector3();\n\n\t\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\t\tstartP.subVectors( point, this.start );\n\t\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\t\tif ( clampToLine ) {\n\n\t\t\t\t\tt = THREE.Math.clamp( t, 0, 1 );\n\n\t\t\t\t}\n\n\t\t\t\treturn t;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\n\n\t\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\n\n\t\t},\n\n\t\tapplyMatrix4: function ( matrix ) {\n\n\t\t\tthis.start.applyMatrix4( matrix );\n\t\t\tthis.end.applyMatrix4( matrix );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( line ) {\n\n\t\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Box2.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Box2 = function ( min, max ) {\n\n\t\tthis.min = ( min !== undefined ) ? min : new THREE.Vector2( + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new THREE.Vector2( - Infinity, - Infinity );\n\n\t};\n\n\tTHREE.Box2.prototype = {\n\n\t\tconstructor: THREE.Box2,\n\n\t\tset: function ( min, max ) {\n\n\t\t\tthis.min.copy( min );\n\t\t\tthis.max.copy( max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPoints: function ( points ) {\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCenterAndSize: function () {\n\n\t\t\tvar v1 = new THREE.Vector2();\n\n\t\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( box ) {\n\n\t\t\tthis.min.copy( box.min );\n\t\t\tthis.max.copy( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeEmpty: function () {\n\n\t\t\tthis.min.x = this.min.y = + Infinity;\n\t\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tisEmpty: function () {\n\n\t\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t\t},\n\n\t\tcenter: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector2();\n\t\t\treturn result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t\t},\n\n\t\tsize: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector2();\n\t\t\treturn result.subVectors( this.max, this.min );\n\n\t\t},\n\n\t\texpandByPoint: function ( point ) {\n\n\t\t\tthis.min.min( point );\n\t\t\tthis.max.max( point );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByVector: function ( vector ) {\n\n\t\t\tthis.min.sub( vector );\n\t\t\tthis.max.add( vector );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByScalar: function ( scalar ) {\n\n\t\t\tthis.min.addScalar( - scalar );\n\t\t\tthis.max.addScalar( scalar );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t\t     point.y < this.min.y || point.y > this.max.y ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tcontainsBox: function ( box ) {\n\n\t\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t\t     ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t},\n\n\t\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t\t// This can potentially have a divide by zero if the box\n\t\t\t// has a size dimension of 0.\n\n\t\t\tvar result = optionalTarget || new THREE.Vector2();\n\n\t\t\treturn result.set(\n\t\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t\t);\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\t// using 6 splitting planes to rule out intersections.\n\n\t\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t     box.max.y < this.min.y || box.min.y > this.max.y ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tclampPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector2();\n\t\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t\t},\n\n\t\tdistanceToPoint: function () {\n\n\t\t\tvar v1 = new THREE.Vector2();\n\n\t\t\treturn function distanceToPoint( point ) {\n\n\t\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersect: function ( box ) {\n\n\t\t\tthis.min.max( box.min );\n\t\t\tthis.max.min( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunion: function ( box ) {\n\n\t\t\tthis.min.min( box.min );\n\t\t\tthis.max.max( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.min.add( offset );\n\t\t\tthis.max.add( offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( box ) {\n\n\t\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Box3.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tTHREE.Box3 = function ( min, max ) {\n\n\t\tthis.min = ( min !== undefined ) ? min : new THREE.Vector3( + Infinity, + Infinity, + Infinity );\n\t\tthis.max = ( max !== undefined ) ? max : new THREE.Vector3( - Infinity, - Infinity, - Infinity );\n\n\t};\n\n\tTHREE.Box3.prototype = {\n\n\t\tconstructor: THREE.Box3,\n\n\t\tset: function ( min, max ) {\n\n\t\t\tthis.min.copy( min );\n\t\t\tthis.max.copy( max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromArray: function ( array ) {\n\n\t\t\tvar minX = + Infinity;\n\t\t\tvar minY = + Infinity;\n\t\t\tvar minZ = + Infinity;\n\n\t\t\tvar maxX = - Infinity;\n\t\t\tvar maxY = - Infinity;\n\t\t\tvar maxZ = - Infinity;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar x = array[ i ];\n\t\t\t\tvar y = array[ i + 1 ];\n\t\t\t\tvar z = array[ i + 2 ];\n\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\t\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t\t}\n\n\t\t\tthis.min.set( minX, minY, minZ );\n\t\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\t},\n\n\t\tsetFromPoints: function ( points ) {\n\n\t\t\tthis.makeEmpty();\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCenterAndSize: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetFromObject: function () {\n\n\t\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t\t// accounting for both the object's, and children's, world transforms\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function setFromObject( object ) {\n\n\t\t\t\tvar scope = this;\n\n\t\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\t\tthis.makeEmpty();\n\n\t\t\t\tobject.traverse( function ( node ) {\n\n\t\t\t\t\tvar geometry = node.geometry;\n\n\t\t\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\t\t\tif ( geometry instanceof THREE.Geometry ) {\n\n\t\t\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( geometry instanceof THREE.BufferGeometry && geometry.attributes[ 'position' ] !== undefined ) {\n\n\t\t\t\t\t\t\tvar positions = geometry.attributes[ 'position' ].array;\n\n\t\t\t\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\t\tv1.fromArray( positions, i );\n\t\t\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( box ) {\n\n\t\t\tthis.min.copy( box.min );\n\t\t\tthis.max.copy( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeEmpty: function () {\n\n\t\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tisEmpty: function () {\n\n\t\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t\t},\n\n\t\tcenter: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t\t},\n\n\t\tsize: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.subVectors( this.max, this.min );\n\n\t\t},\n\n\t\texpandByPoint: function ( point ) {\n\n\t\t\tthis.min.min( point );\n\t\t\tthis.max.max( point );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByVector: function ( vector ) {\n\n\t\t\tthis.min.sub( vector );\n\t\t\tthis.max.add( vector );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\texpandByScalar: function ( scalar ) {\n\n\t\t\tthis.min.addScalar( - scalar );\n\t\t\tthis.max.addScalar( scalar );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\tif ( point.x < this.min.x || point.x > this.max.x ||\n\t\t\t\t\t point.y < this.min.y || point.y > this.max.y ||\n\t\t\t\t\t point.z < this.min.z || point.z > this.max.z ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tcontainsBox: function ( box ) {\n\n\t\t\tif ( ( this.min.x <= box.min.x ) && ( box.max.x <= this.max.x ) &&\n\t\t\t\t ( this.min.y <= box.min.y ) && ( box.max.y <= this.max.y ) &&\n\t\t\t\t ( this.min.z <= box.min.z ) && ( box.max.z <= this.max.z ) ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t},\n\n\t\tgetParameter: function ( point, optionalTarget ) {\n\n\t\t\t// This can potentially have a divide by zero if the box\n\t\t\t// has a size dimension of 0.\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\treturn result.set(\n\t\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t\t);\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\t// using 6 splitting planes to rule out intersections.\n\n\t\t\tif ( box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\t\t\t box.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\t\t\t box.max.z < this.min.z || box.min.z > this.max.z ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tintersectsSphere: ( function () {\n\n\t\t\tvar closestPoint;\n\n\t\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t\tif ( closestPoint === undefined ) closestPoint = new THREE.Vector3();\n\n\t\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\tintersectsPlane: function ( plane ) {\n\n\t\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\t\tvar min, max;\n\n\t\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t\t} else {\n\n\t\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t\t}\n\n\t\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t\t} else {\n\n\t\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t\t}\n\n\t\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t\t} else {\n\n\t\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t\t}\n\n\t\t\treturn ( min <= plane.constant && max >= plane.constant );\n\n\t\t},\n\n\t\tclampPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.copy( point ).clamp( this.min, this.max );\n\n\t\t},\n\n\t\tdistanceToPoint: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function distanceToPoint( point ) {\n\n\t\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetBoundingSphere: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function getBoundingSphere( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new THREE.Sphere();\n\n\t\t\t\tresult.center = this.center();\n\t\t\t\tresult.radius = this.size( v1 ).length() * 0.5;\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersect: function ( box ) {\n\n\t\t\tthis.min.max( box.min );\n\t\t\tthis.max.min( box.max );\n\n\t\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\t\tif( this.isEmpty() ) this.makeEmpty();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tunion: function ( box ) {\n\n\t\t\tthis.min.min( box.min );\n\t\t\tthis.max.max( box.max );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyMatrix4: function () {\n\n\t\t\tvar points = [\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3(),\n\t\t\t\tnew THREE.Vector3()\n\t\t\t];\n\n\t\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t\t// transform of empty box is an empty box.\n\t\t\t\tif( this.isEmpty() ) return this;\n\n\t\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\t// 111\n\n\t\t\t\tthis.setFromPoints( points );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.min.add( offset );\n\t\t\tthis.max.add( offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( box ) {\n\n\t\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Matrix3.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author bhouston / http://clara.io\n\t * @author tschw\n\t */\n\n\tTHREE.Matrix3 = function () {\n\n\t\tthis.elements = new Float32Array( [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t] );\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t};\n\n\tTHREE.Matrix3.prototype = {\n\n\t\tconstructor: THREE.Matrix3,\n\n\t\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tidentity: function () {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0,\n\t\t\t\t0, 1, 0,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().fromArray( this.elements );\n\n\t\t},\n\n\t\tcopy: function ( m ) {\n\n\t\t\tvar me = m.elements;\n\n\t\t\tthis.set(\n\n\t\t\t\tme[ 0 ], me[ 3 ], me[ 6 ],\n\t\t\t\tme[ 1 ], me[ 4 ], me[ 7 ],\n\t\t\t\tme[ 2 ], me[ 5 ], me[ 8 ]\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrix4: function( m ) {\n\n\t\t\tvar me = m.elements;\n\n\t\t\tthis.set(\n\n\t\t\t\tme[ 0 ], me[ 4 ], me[  8 ],\n\t\t\t\tme[ 1 ], me[ 5 ], me[  9 ],\n\t\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyToVector3Array: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\t\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\t\tv1.fromArray( array, j );\n\t\t\t\t\tv1.applyMatrix3( this );\n\t\t\t\t\tv1.toArray( array, j );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyToBuffer: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\t\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\t\tbuffer.setXYZ( v1.x, v1.y, v1.z );\n\n\t\t\t\t}\n\n\t\t\t\treturn buffer;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmultiplyScalar: function ( s ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdeterminant: function () {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t\t},\n\n\t\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\t\tif ( matrix instanceof THREE.Matrix4 ) {\n\n\t\t\t\tconsole.error( \"THREE.Matrix3.getInverse no longer takes a Matrix4 argument.\" );\n\n\t\t\t}\n\n\t\t\tvar me = matrix.elements,\n\t\t\t\tte = this.elements,\n\n\t\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\t\tif ( det === 0 ) {\n\n\t\t\t\tvar msg = \"THREE.Matrix3.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\t\tif ( throwOnDegenerate || false ) {\n\n\t\t\t\t\tthrow new Error( msg );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( msg );\n\n\t\t\t\t}\n\n\t\t\t\treturn this.identity();\n\t\t\t}\n\t\t\t\n\t\t\tvar detInv = 1 / det;\n\n\t\t\tte[ 0 ] = t11 * detInv;\n\t\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\t\tte[ 3 ] = t12 * detInv;\n\t\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\t\tte[ 6 ] = t13 * detInv;\n\t\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttranspose: function () {\n\n\t\t\tvar tmp, m = this.elements;\n\n\t\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\t\treturn this.toArray( array, offset );\n\n\t\t},\n\n\t\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t\t},\n\n\t\ttransposeIntoArray: function ( r ) {\n\n\t\t\tvar m = this.elements;\n\n\t\t\tr[ 0 ] = m[ 0 ];\n\t\t\tr[ 1 ] = m[ 3 ];\n\t\t\tr[ 2 ] = m[ 6 ];\n\t\t\tr[ 3 ] = m[ 1 ];\n\t\t\tr[ 4 ] = m[ 4 ];\n\t\t\tr[ 5 ] = m[ 7 ];\n\t\t\tr[ 6 ] = m[ 2 ];\n\t\t\tr[ 7 ] = m[ 5 ];\n\t\t\tr[ 8 ] = m[ 8 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tfromArray: function ( array ) {\n\n\t\t\tthis.elements.set( array );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tvar te = this.elements;\n\n\t\t\tarray[ offset ] = te[ 0 ];\n\t\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\t\tarray[ offset + 8 ]  = te[ 8 ];\n\n\t\t\treturn array;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Matrix4.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author supereggbert / http://www.paulbrunt.co.uk/\n\t * @author philogb / http://blog.thejit.org/\n\t * @author jordi_ros / http://plattsoft.com\n\t * @author D1plo1d / http://github.com/D1plo1d\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author timknip / http://www.floorplanner.com/\n\t * @author bhouston / http://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tTHREE.Matrix4 = function () {\n\n\t\tthis.elements = new Float32Array( [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t] );\n\n\t\tif ( arguments.length > 0 ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t\t}\n\n\t};\n\n\tTHREE.Matrix4.prototype = {\n\n\t\tconstructor: THREE.Matrix4,\n\n\t\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tidentity: function () {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, 0,\n\t\t\t\t0, 1, 0, 0,\n\t\t\t\t0, 0, 1, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new THREE.Matrix4().fromArray( this.elements );\n\n\t\t},\n\n\t\tcopy: function ( m ) {\n\n\t\t\tthis.elements.set( m.elements );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyPosition: function ( m ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tte[ 12 ] = me[ 12 ];\n\t\t\tte[ 13 ] = me[ 13 ];\n\t\t\tte[ 14 ] = me[ 14 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\t\tthis.set(\n\t\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t\t0,       0,       0,       1\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\textractRotation: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function extractRotation( m ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\n\t\t\t\tvar te = this.elements;\n\t\t\t\tvar me = m.elements;\n\n\t\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\n\t\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\n\t\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmakeRotationFromEuler: function ( euler ) {\n\n\t\t\tif ( euler instanceof THREE.Euler === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = - c * f;\n\t\t\t\tte[ 8 ] = d;\n\n\t\t\t\tte[ 1 ] = af + be * d;\n\t\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\t\tte[ 9 ] = - b * c;\n\n\t\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\t\tte[ 6 ] = be + af * d;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\t\tte[ 0 ] = ce + df * b;\n\t\t\t\tte[ 4 ] = de * b - cf;\n\t\t\t\tte[ 8 ] = a * d;\n\n\t\t\t\tte[ 1 ] = a * f;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = - b;\n\n\t\t\t\tte[ 2 ] = cf * b - de;\n\t\t\t\tte[ 6 ] = df + ce * b;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\t\tte[ 0 ] = ce - df * b;\n\t\t\t\tte[ 4 ] = - a * f;\n\t\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\t\tte[ 1 ] = cf + de * b;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\t\tte[ 2 ] = - a * d;\n\t\t\t\tte[ 6 ] = b;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = be * d - af;\n\t\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\t\tte[ 1 ] = c * f;\n\t\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\t\tte[ 2 ] = - d;\n\t\t\t\tte[ 6 ] = b * c;\n\t\t\t\tte[ 10 ] = a * c;\n\n\t\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\t\tte[ 1 ] = f;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = - b * e;\n\n\t\t\t\tte[ 2 ] = - d * e;\n\t\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\t\tte[ 0 ] = c * e;\n\t\t\t\tte[ 4 ] = - f;\n\t\t\t\tte[ 8 ] = d * e;\n\n\t\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\t\tte[ 5 ] = a * e;\n\t\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\t\tte[ 6 ] = b * e;\n\t\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t\t}\n\n\t\t\t// last column\n\t\t\tte[ 3 ] = 0;\n\t\t\tte[ 7 ] = 0;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\t// bottom row\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationFromQuaternion: function ( q ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar x = q.x, y = q.y, z = q.z, w = q.w;\n\t\t\tvar x2 = x + x, y2 = y + y, z2 = z + z;\n\t\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\t\tte[ 0 ] = 1 - ( yy + zz );\n\t\t\tte[ 4 ] = xy - wz;\n\t\t\tte[ 8 ] = xz + wy;\n\n\t\t\tte[ 1 ] = xy + wz;\n\t\t\tte[ 5 ] = 1 - ( xx + zz );\n\t\t\tte[ 9 ] = yz - wx;\n\n\t\t\tte[ 2 ] = xz - wy;\n\t\t\tte[ 6 ] = yz + wx;\n\t\t\tte[ 10 ] = 1 - ( xx + yy );\n\n\t\t\t// last column\n\t\t\tte[ 3 ] = 0;\n\t\t\tte[ 7 ] = 0;\n\t\t\tte[ 11 ] = 0;\n\n\t\t\t// bottom row\n\t\t\tte[ 12 ] = 0;\n\t\t\tte[ 13 ] = 0;\n\t\t\tte[ 14 ] = 0;\n\t\t\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tlookAt: function () {\n\n\t\t\tvar x, y, z;\n\n\t\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\t\tif ( x === undefined ) {\n\n\t\t\t\t\tx = new THREE.Vector3();\n\t\t\t\t\ty = new THREE.Vector3();\n\t\t\t\t\tz = new THREE.Vector3();\n\n\t\t\t\t}\n\n\t\t\t\tvar te = this.elements;\n\n\t\t\t\tz.subVectors( eye, target ).normalize();\n\n\t\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t\tz.z = 1;\n\n\t\t\t\t}\n\n\t\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t\tz.z += 0.0001;\n\t\t\t\t\tx.crossVectors( up, z ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\ty.crossVectors( z, x );\n\n\n\t\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmultiply: function ( m, n ) {\n\n\t\t\tif ( n !== undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t\t}\n\n\t\t\treturn this.multiplyMatrices( this, m );\n\n\t\t},\n\n\t\tpremultiply: function ( m ) {\n\n\t\t\treturn this.multiplyMatrices( m, this );\n\n\t\t},\n\n\t\tmultiplyMatrices: function ( a, b ) {\n\n\t\t\tvar ae = a.elements;\n\t\t\tvar be = b.elements;\n\t\t\tvar te = this.elements;\n\n\t\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyToArray: function ( a, b, r ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tthis.multiplyMatrices( a, b );\n\n\t\t\tr[ 0 ] = te[ 0 ]; r[ 1 ] = te[ 1 ]; r[ 2 ] = te[ 2 ]; r[ 3 ] = te[ 3 ];\n\t\t\tr[ 4 ] = te[ 4 ]; r[ 5 ] = te[ 5 ]; r[ 6 ] = te[ 6 ]; r[ 7 ] = te[ 7 ];\n\t\t\tr[ 8 ]  = te[ 8 ]; r[ 9 ]  = te[ 9 ]; r[ 10 ] = te[ 10 ]; r[ 11 ] = te[ 11 ];\n\t\t\tr[ 12 ] = te[ 12 ]; r[ 13 ] = te[ 13 ]; r[ 14 ] = te[ 14 ]; r[ 15 ] = te[ 15 ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmultiplyScalar: function ( s ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tapplyToVector3Array: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function applyToVector3Array( array, offset, length ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\t\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\t\tif ( length === undefined ) length = array.length;\n\n\t\t\t\tfor ( var i = 0, j = offset; i < length; i += 3, j += 3 ) {\n\n\t\t\t\t\tv1.fromArray( array, j );\n\t\t\t\t\tv1.applyMatrix4( this );\n\t\t\t\t\tv1.toArray( array, j );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyToBuffer: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function applyToBuffer( buffer, offset, length ) {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\t\t\t\tif ( offset === undefined ) offset = 0;\n\t\t\t\tif ( length === undefined ) length = buffer.length / buffer.itemSize;\n\n\t\t\t\tfor ( var i = 0, j = offset; i < length; i ++, j ++ ) {\n\n\t\t\t\t\tv1.x = buffer.getX( j );\n\t\t\t\t\tv1.y = buffer.getY( j );\n\t\t\t\t\tv1.z = buffer.getZ( j );\n\n\t\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\t\tbuffer.setXYZ( v1.x, v1.y, v1.z );\n\n\t\t\t\t}\n\n\t\t\t\treturn buffer;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tdeterminant: function () {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t\t//TODO: make this more efficient\n\t\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\t\treturn (\n\t\t\t\tn41 * (\n\t\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t\t - n13 * n24 * n32\n\t\t\t\t\t - n14 * n22 * n33\n\t\t\t\t\t + n12 * n24 * n33\n\t\t\t\t\t + n13 * n22 * n34\n\t\t\t\t\t - n12 * n23 * n34\n\t\t\t\t) +\n\t\t\t\tn42 * (\n\t\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t\t - n11 * n24 * n33\n\t\t\t\t\t + n14 * n21 * n33\n\t\t\t\t\t - n13 * n21 * n34\n\t\t\t\t\t + n13 * n24 * n31\n\t\t\t\t\t - n14 * n23 * n31\n\t\t\t\t) +\n\t\t\t\tn43 * (\n\t\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t\t - n11 * n22 * n34\n\t\t\t\t\t - n14 * n21 * n32\n\t\t\t\t\t + n12 * n21 * n34\n\t\t\t\t\t + n14 * n22 * n31\n\t\t\t\t\t - n12 * n24 * n31\n\t\t\t\t) +\n\t\t\t\tn44 * (\n\t\t\t\t\t- n13 * n22 * n31\n\t\t\t\t\t - n11 * n23 * n32\n\t\t\t\t\t + n11 * n22 * n33\n\t\t\t\t\t + n13 * n21 * n32\n\t\t\t\t\t - n12 * n21 * n33\n\t\t\t\t\t + n12 * n23 * n31\n\t\t\t\t)\n\n\t\t\t);\n\n\t\t},\n\n\t\ttranspose: function () {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar tmp;\n\n\t\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset is deprecated \" +\n\t\t\t\t\t\"- just use .toArray instead.\" );\n\n\t\t\treturn this.toArray( array, offset );\n\n\t\t},\n\n\t\tgetPosition: function () {\n\n\t\t\tvar v1;\n\n\t\t\treturn function getPosition() {\n\n\t\t\t\tif ( v1 === undefined ) v1 = new THREE.Vector3();\n\t\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\n\t\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tsetPosition: function ( v ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tte[ 12 ] = v.x;\n\t\t\tte[ 13 ] = v.y;\n\t\t\tte[ 14 ] = v.z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\t\tvar te = this.elements,\n\t\t\t\tme = m.elements,\n\n\t\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\t\tif ( det === 0 ) {\n\n\t\t\t\tvar msg = \"THREE.Matrix4.getInverse(): can't invert matrix, determinant is 0\";\n\n\t\t\t\tif ( throwOnDegenerate || false ) {\n\n\t\t\t\t\tthrow new Error( msg );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( msg );\n\n\t\t\t\t}\n\n\t\t\t\treturn this.identity();\n\n\t\t\t}\n\t\t\t\n\t\t\tvar detInv = 1 / det;\n\n\t\t\tte[ 0 ] = t11 * detInv;\n\t\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\t\tte[ 4 ] = t12 * detInv;\n\t\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\t\tte[ 8 ] = t13 * detInv;\n\t\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\t\tte[ 12 ] = t14 * detInv;\n\t\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tscale: function ( v ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetMaxScaleOnAxis: function () {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t\t},\n\n\t\tmakeTranslation: function ( x, y, z ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationX: function ( theta ) {\n\n\t\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0,  0, 0,\n\t\t\t\t0, c, - s, 0,\n\t\t\t\t0, s,  c, 0,\n\t\t\t\t0, 0,  0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationY: function ( theta ) {\n\n\t\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\t\tthis.set(\n\n\t\t\t\t c, 0, s, 0,\n\t\t\t\t 0, 1, 0, 0,\n\t\t\t\t- s, 0, c, 0,\n\t\t\t\t 0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationZ: function ( theta ) {\n\n\t\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\t\tthis.set(\n\n\t\t\t\tc, - s, 0, 0,\n\t\t\t\ts,  c, 0, 0,\n\t\t\t\t0,  0, 1, 0,\n\t\t\t\t0,  0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\t\tvar c = Math.cos( angle );\n\t\t\tvar s = Math.sin( angle );\n\t\t\tvar t = 1 - c;\n\t\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\t\tvar tx = t * x, ty = t * y;\n\n\t\t\tthis.set(\n\n\t\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\t return this;\n\n\t\t},\n\n\t\tmakeScale: function ( x, y, z ) {\n\n\t\t\tthis.set(\n\n\t\t\t\tx, 0, 0, 0,\n\t\t\t\t0, y, 0, 0,\n\t\t\t\t0, 0, z, 0,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcompose: function ( position, quaternion, scale ) {\n\n\t\t\tthis.makeRotationFromQuaternion( quaternion );\n\t\t\tthis.scale( scale );\n\t\t\tthis.setPosition( position );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdecompose: function () {\n\n\t\t\tvar vector, matrix;\n\n\t\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tvector = new THREE.Vector3();\n\t\t\t\t\tmatrix = new THREE.Matrix4();\n\n\t\t\t\t}\n\n\t\t\t\tvar te = this.elements;\n\n\t\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t\t// if determine is negative, we need to invert one scale\n\t\t\t\tvar det = this.determinant();\n\t\t\t\tif ( det < 0 ) {\n\n\t\t\t\t\tsx = - sx;\n\n\t\t\t\t}\n\n\t\t\t\tposition.x = te[ 12 ];\n\t\t\t\tposition.y = te[ 13 ];\n\t\t\t\tposition.z = te[ 14 ];\n\n\t\t\t\t// scale the rotation part\n\n\t\t\t\tmatrix.elements.set( this.elements ); // at this point matrix is incomplete so we can't use .copy()\n\n\t\t\t\tvar invSX = 1 / sx;\n\t\t\t\tvar invSY = 1 / sy;\n\t\t\t\tvar invSZ = 1 / sz;\n\n\t\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\t\tscale.x = sx;\n\t\t\t\tscale.y = sy;\n\t\t\t\tscale.z = sz;\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar x = 2 * near / ( right - left );\n\t\t\tvar y = 2 * near / ( top - bottom );\n\n\t\t\tvar a = ( right + left ) / ( right - left );\n\t\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\t\tvar c = - ( far + near ) / ( far - near );\n\t\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tmakePerspective: function ( fov, aspect, near, far ) {\n\n\t\t\tvar ymax = near * Math.tan( THREE.Math.DEG2RAD * fov * 0.5 );\n\t\t\tvar ymin = - ymax;\n\t\t\tvar xmin = ymin * aspect;\n\t\t\tvar xmax = ymax * aspect;\n\n\t\t\treturn this.makeFrustum( xmin, xmax, ymin, ymax, near, far );\n\n\t\t},\n\n\t\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar w = 1.0 / ( right - left );\n\t\t\tvar h = 1.0 / ( top - bottom );\n\t\t\tvar p = 1.0 / ( far - near );\n\n\t\t\tvar x = ( right + left ) * w;\n\t\t\tvar y = ( top + bottom ) * h;\n\t\t\tvar z = ( far + near ) * p;\n\n\t\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( matrix ) {\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = matrix.elements;\n\n\t\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tfromArray: function ( array ) {\n\n\t\t\tthis.elements.set( array );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoArray: function ( array, offset ) {\n\n\t\t\tif ( array === undefined ) array = [];\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tvar te = this.elements;\n\n\t\t\tarray[ offset ] = te[ 0 ];\n\t\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\t\tarray[ offset + 8 ]  = te[ 8 ];\n\t\t\tarray[ offset + 9 ]  = te[ 9 ];\n\t\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\t\treturn array;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Ray.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Ray = function ( origin, direction ) {\n\n\t\tthis.origin = ( origin !== undefined ) ? origin : new THREE.Vector3();\n\t\tthis.direction = ( direction !== undefined ) ? direction : new THREE.Vector3();\n\n\t};\n\n\tTHREE.Ray.prototype = {\n\n\t\tconstructor: THREE.Ray,\n\n\t\tset: function ( origin, direction ) {\n\n\t\t\tthis.origin.copy( origin );\n\t\t\tthis.direction.copy( direction );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( ray ) {\n\n\t\t\tthis.origin.copy( ray.origin );\n\t\t\tthis.direction.copy( ray.direction );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tat: function ( t, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t\t},\n\n\t\tlookAt: function ( v ) {\n\n\t\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trecast: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function recast( t ) {\n\n\t\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclosestPointToPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\tresult.subVectors( point, this.origin );\n\t\t\tvar directionDistance = result.dot( this.direction );\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn result.copy( this.origin );\n\n\t\t\t}\n\n\t\t\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t},\n\n\t\tdistanceToPoint: function ( point ) {\n\n\t\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t\t},\n\n\t\tdistanceSqToPoint: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t\t// point behind the ray\n\n\t\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t\t}\n\n\t\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\t\treturn v1.distanceToSquared( point );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tdistanceSqToSegment: function () {\n\n\t\t\tvar segCenter = new THREE.Vector3();\n\t\t\tvar segDir = new THREE.Vector3();\n\t\t\tvar diff = new THREE.Vector3();\n\n\t\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t\t// defined by v0 and v1\n\t\t\t\t// It can also set two optional targets :\n\t\t\t\t// - The closest point on the ray\n\t\t\t\t// - The closest point on the segment\n\n\t\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\t\tvar c = diff.lengthSq();\n\t\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\t\tif ( det > 0 ) {\n\n\t\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\t\textDet = segExtent * det;\n\n\t\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 5\n\n\t\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t\t}\n\n\t\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t\t}\n\n\t\t\t\treturn sqrDist;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectSphere: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function intersectSphere( sphere, optionalTarget ) {\n\n\t\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\t\tvar tca = v1.dot( this.direction );\n\t\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\t\tvar t0 = tca - thc;\n\n\t\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\t\tvar t1 = tca + thc;\n\n\t\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t\t// test to see if t0 is behind the ray:\n\t\t\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t\t\t// in order to always return an intersect point that is in front of the ray.\n\t\t\t\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\n\n\t\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\t\treturn this.at( t0, optionalTarget );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\n\n\t\t},\n\n\t\tdistanceToPlane: function ( plane ) {\n\n\t\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\t\treturn 0;\n\n\t\t\t\t}\n\n\t\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t\t// Return if the ray never intersects the plane\n\n\t\t\treturn t >= 0 ? t :  null;\n\n\t\t},\n\n\t\tintersectPlane: function ( plane, optionalTarget ) {\n\n\t\t\tvar t = this.distanceToPlane( plane );\n\n\t\t\tif ( t === null ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\treturn this.at( t, optionalTarget );\n\n\t\t},\n\n\n\n\t\tintersectsPlane: function ( plane ) {\n\n\t\t\t// check if the ray lies on the plane first\n\n\t\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\t\tif ( distToPoint === 0 ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\t\treturn false;\n\n\t\t},\n\n\t\tintersectBox: function ( box, optionalTarget ) {\n\n\t\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\t\tvar invdirx = 1 / this.direction.x,\n\t\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\t\tvar origin = this.origin;\n\n\t\t\tif ( invdirx >= 0 ) {\n\n\t\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t\t} else {\n\n\t\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t\t}\n\n\t\t\tif ( invdiry >= 0 ) {\n\n\t\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t\t} else {\n\n\t\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t\t}\n\n\t\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\t\tif ( invdirz >= 0 ) {\n\n\t\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t\t} else {\n\n\t\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t\t}\n\n\t\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t\t//return point closest to the ray (positive side)\n\n\t\t\tif ( tmax < 0 ) return null;\n\n\t\t\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\n\n\t\t},\n\n\t\tintersectsBox: ( function () {\n\n\t\t\tvar v = new THREE.Vector3();\n\n\t\t\treturn function intersectsBox( box ) {\n\n\t\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\tintersectTriangle: function () {\n\n\t\t\t// Compute the offset origin, edges, and normal.\n\t\t\tvar diff = new THREE.Vector3();\n\t\t\tvar edge1 = new THREE.Vector3();\n\t\t\tvar edge2 = new THREE.Vector3();\n\t\t\tvar normal = new THREE.Vector3();\n\n\t\t\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\n\n\t\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\t\tedge1.subVectors( b, a );\n\t\t\t\tedge2.subVectors( c, a );\n\t\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\t\tvar sign;\n\n\t\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\t\tsign = 1;\n\n\t\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\t\tsign = - 1;\n\t\t\t\t\tDdN = - DdN;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\tdiff.subVectors( this.origin, a );\n\t\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t\t// b1 < 0, no intersection\n\t\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t\t// b2 < 0, no intersection\n\t\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\t// b1+b2 > 1, no intersection\n\t\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\t// Line intersects triangle, check if ray does.\n\t\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t\t// t < 0, no intersection\n\t\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t\t// Ray intersects triangle.\n\t\t\t\treturn this.at( QdN / DdN, optionalTarget );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tapplyMatrix4: function ( matrix4 ) {\n\n\t\t\tthis.direction.add( this.origin ).applyMatrix4( matrix4 );\n\t\t\tthis.origin.applyMatrix4( matrix4 );\n\t\t\tthis.direction.sub( this.origin );\n\t\t\tthis.direction.normalize();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( ray ) {\n\n\t\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Sphere.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Sphere = function ( center, radius ) {\n\n\t\tthis.center = ( center !== undefined ) ? center : new THREE.Vector3();\n\t\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n\t};\n\n\tTHREE.Sphere.prototype = {\n\n\t\tconstructor: THREE.Sphere,\n\n\t\tset: function ( center, radius ) {\n\n\t\t\tthis.center.copy( center );\n\t\t\tthis.radius = radius;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPoints: function () {\n\n\t\t\tvar box = new THREE.Box3();\n\n\t\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\t\tvar center = this.center;\n\n\t\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbox.setFromPoints( points ).center( center );\n\n\t\t\t\t}\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( sphere ) {\n\n\t\t\tthis.center.copy( sphere.center );\n\t\t\tthis.radius = sphere.radius;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tempty: function () {\n\n\t\t\treturn ( this.radius <= 0 );\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t\t},\n\n\t\tdistanceToPoint: function ( point ) {\n\n\t\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t\t},\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\treturn box.intersectsSphere( this );\n\n\t\t},\n\n\t\tintersectsPlane: function ( plane ) {\n\n\t\t\t// We use the following equation to compute the signed distance from\n\t\t\t// the center of the sphere to the plane.\n\t\t\t//\n\t\t\t// distance = q * n - d\n\t\t\t//\n\t\t\t// If this distance is greater than the radius of the sphere,\n\t\t\t// then there is no intersection.\n\n\t\t\treturn Math.abs( this.center.dot( plane.normal ) - plane.constant ) <= this.radius;\n\n\t\t},\n\n\t\tclampPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\tresult.copy( point );\n\n\t\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t\tresult.sub( this.center ).normalize();\n\t\t\t\tresult.multiplyScalar( this.radius ).add( this.center );\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\tgetBoundingBox: function ( optionalTarget ) {\n\n\t\t\tvar box = optionalTarget || new THREE.Box3();\n\n\t\t\tbox.set( this.center, this.center );\n\t\t\tbox.expandByScalar( this.radius );\n\n\t\t\treturn box;\n\n\t\t},\n\n\t\tapplyMatrix4: function ( matrix ) {\n\n\t\t\tthis.center.applyMatrix4( matrix );\n\t\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.center.add( offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( sphere ) {\n\n\t\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Frustum.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Frustum = function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tthis.planes = [\n\n\t\t\t( p0 !== undefined ) ? p0 : new THREE.Plane(),\n\t\t\t( p1 !== undefined ) ? p1 : new THREE.Plane(),\n\t\t\t( p2 !== undefined ) ? p2 : new THREE.Plane(),\n\t\t\t( p3 !== undefined ) ? p3 : new THREE.Plane(),\n\t\t\t( p4 !== undefined ) ? p4 : new THREE.Plane(),\n\t\t\t( p5 !== undefined ) ? p5 : new THREE.Plane()\n\n\t\t];\n\n\t};\n\n\tTHREE.Frustum.prototype = {\n\n\t\tconstructor: THREE.Frustum,\n\n\t\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tplanes[ 0 ].copy( p0 );\n\t\t\tplanes[ 1 ].copy( p1 );\n\t\t\tplanes[ 2 ].copy( p2 );\n\t\t\tplanes[ 3 ].copy( p3 );\n\t\t\tplanes[ 4 ].copy( p4 );\n\t\t\tplanes[ 5 ].copy( p5 );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( frustum ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromMatrix: function ( m ) {\n\n\t\t\tvar planes = this.planes;\n\t\t\tvar me = m.elements;\n\t\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tintersectsObject: function () {\n\n\t\t\tvar sphere = new THREE.Sphere();\n\n\t\t\treturn function intersectsObject( object ) {\n\n\t\t\t\tvar geometry = object.geometry;\n\n\t\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsSprite: function () {\n\n\t\t\tvar sphere = new THREE.Sphere();\n\n\t\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\tvar planes = this.planes;\n\t\t\tvar center = sphere.center;\n\t\t\tvar negRadius = - sphere.radius;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t},\n\n\t\tintersectsBox: function () {\n\n\t\t\tvar p1 = new THREE.Vector3(),\n\t\t\t\tp2 = new THREE.Vector3();\n\n\t\t\treturn function intersectsBox( box ) {\n\n\t\t\t\tvar planes = this.planes;\n\n\t\t\t\tfor ( var i = 0; i < 6 ; i ++ ) {\n\n\t\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\t\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\n\t\t\t\t\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\t\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\n\t\t\t\t\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\t\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\n\t\t\t\t\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\t\tvar d1 = plane.distanceToPoint( p1 );\n\t\t\t\t\tvar d2 = plane.distanceToPoint( p2 );\n\n\t\t\t\t\t// if both outside plane, no intersection\n\n\t\t\t\t\tif ( d1 < 0 && d2 < 0 ) {\n\n\t\t\t\t\t\treturn false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t};\n\n\t\t}(),\n\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Plane.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Plane = function ( normal, constant ) {\n\n\t\tthis.normal = ( normal !== undefined ) ? normal : new THREE.Vector3( 1, 0, 0 );\n\t\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n\t};\n\n\tTHREE.Plane.prototype = {\n\n\t\tconstructor: THREE.Plane,\n\n\t\tset: function ( normal, constant ) {\n\n\t\t\tthis.normal.copy( normal );\n\t\t\tthis.constant = constant;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetComponents: function ( x, y, z, w ) {\n\n\t\t\tthis.normal.set( x, y, z );\n\t\t\tthis.constant = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\t\tthis.normal.copy( normal );\n\t\t\tthis.constant = - point.dot( this.normal );\t// must be this.normal, not normal, as this.normal is normalized\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromCoplanarPoints: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\t\t\tvar v2 = new THREE.Vector3();\n\n\t\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( plane ) {\n\n\t\t\tthis.normal.copy( plane.normal );\n\t\t\tthis.constant = plane.constant;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\t\tthis.constant *= inverseNormalLength;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnegate: function () {\n\n\t\t\tthis.constant *= - 1;\n\t\t\tthis.normal.negate();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdistanceToPoint: function ( point ) {\n\n\t\t\treturn this.normal.dot( point ) + this.constant;\n\n\t\t},\n\n\t\tdistanceToSphere: function ( sphere ) {\n\n\t\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t\t},\n\n\t\tprojectPoint: function ( point, optionalTarget ) {\n\n\t\t\treturn this.orthoPoint( point, optionalTarget ).sub( point ).negate();\n\n\t\t},\n\n\t\torthoPoint: function ( point, optionalTarget ) {\n\n\t\t\tvar perpendicularMagnitude = this.distanceToPoint( point );\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.copy( this.normal ).multiplyScalar( perpendicularMagnitude );\n\n\t\t},\n\n\t\tintersectLine: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function intersectLine( line, optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\t\tvar direction = line.delta( v1 );\n\n\t\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t\t// line is coplanar, return origin\n\t\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\t\treturn result.copy( line.start );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\t\treturn undefined;\n\n\t\t\t\t}\n\n\t\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\t\treturn undefined;\n\n\t\t\t\t}\n\n\t\t\t\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tintersectsLine: function ( line ) {\n\n\t\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\t\tvar startSign = this.distanceToPoint( line.start );\n\t\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t\t},\n\n\t\tintersectsBox: function ( box ) {\n\n\t\t\treturn box.intersectsPlane( this );\n\n\t\t},\n\n\t\tintersectsSphere: function ( sphere ) {\n\n\t\t\treturn sphere.intersectsPlane( this );\n\n\t\t},\n\n\t\tcoplanarPoint: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t\t},\n\n\t\tapplyMatrix4: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\t\t\tvar m1 = new THREE.Matrix3();\n\n\t\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\t\t// transform normal based on theory here:\n\t\t\t\t// http://www.songho.ca/opengl/gl_normaltransform.html\n\t\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\t\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t// recalculate constant (like in setFromNormalAndCoplanarPoint)\n\t\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function ( offset ) {\n\n\t\t\tthis.constant = this.constant - offset.dot( this.normal );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tequals: function ( plane ) {\n\n\t\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Spherical.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n\t *\n\t * The poles (phi) are at the positive and negative y axis.\n\t * The equator starts at positive z.\n\t */\n\n\tTHREE.Spherical = function ( radius, phi, theta ) {\n\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\t\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\n\n\t\treturn this;\n\n\t};\n\n\tTHREE.Spherical.prototype = {\n\n\t\tconstructor: THREE.Spherical,\n\n\t\tset: function ( radius, phi, theta ) {\n\n\t\t\tthis.radius = radius;\n\t\t\tthis.phi = phi;\n\t\t\tthis.theta = theta;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( other ) {\n\n\t\t\tthis.radius.copy( other.radius );\n\t\t\tthis.phi.copy( other.phi );\n\t\t\tthis.theta.copy( other.theta );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// restrict phi to be betwee EPS and PI-EPS\n\t\tmakeSafe: function() {\n\n\t\t\tvar EPS = 0.000001;\n\t\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromVector3: function( vec3 ) {\n\n\t\t\tthis.radius = vec3.length();\n\n\t\t\tif ( this.radius === 0 ) {\n\n\t\t\t\tthis.theta = 0;\n\t\t\t\tthis.phi = 0;\n\n\t\t\t} else {\n\n\t\t\t\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\n\t\t\t\tthis.phi = Math.acos( THREE.Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t};\n\n\t// File:src/math/Math.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Math = {\n\n\t\tDEG2RAD: Math.PI / 180,\n\t\tRAD2DEG: 180 / Math.PI,\n\n\t\tgenerateUUID: function () {\n\n\t\t\t// http://www.broofa.com/Tools/Math.uuid.htm\n\n\t\t\tvar chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split( '' );\n\t\t\tvar uuid = new Array( 36 );\n\t\t\tvar rnd = 0, r;\n\n\t\t\treturn function generateUUID() {\n\n\t\t\t\tfor ( var i = 0; i < 36; i ++ ) {\n\n\t\t\t\t\tif ( i === 8 || i === 13 || i === 18 || i === 23 ) {\n\n\t\t\t\t\t\tuuid[ i ] = '-';\n\n\t\t\t\t\t} else if ( i === 14 ) {\n\n\t\t\t\t\t\tuuid[ i ] = '4';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( rnd <= 0x02 ) rnd = 0x2000000 + ( Math.random() * 0x1000000 ) | 0;\n\t\t\t\t\t\tr = rnd & 0xf;\n\t\t\t\t\t\trnd = rnd >> 4;\n\t\t\t\t\t\tuuid[ i ] = chars[ ( i === 19 ) ? ( r & 0x3 ) | 0x8 : r ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn uuid.join( '' );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tclamp: function ( value, min, max ) {\n\n\t\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t\t},\n\n\t\t// compute euclidian modulo of m % n\n\t\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\t\teuclideanModulo: function ( n, m ) {\n\n\t\t\treturn ( ( n % m ) + m ) % m;\n\n\t\t},\n\n\t\t// Linear mapping from range <a1, a2> to range <b1, b2>\n\n\t\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t\t},\n\n\t\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\t\tsmoothstep: function ( x, min, max ) {\n\n\t\t\tif ( x <= min ) return 0;\n\t\t\tif ( x >= max ) return 1;\n\n\t\t\tx = ( x - min ) / ( max - min );\n\n\t\t\treturn x * x * ( 3 - 2 * x );\n\n\t\t},\n\n\t\tsmootherstep: function ( x, min, max ) {\n\n\t\t\tif ( x <= min ) return 0;\n\t\t\tif ( x >= max ) return 1;\n\n\t\t\tx = ( x - min ) / ( max - min );\n\n\t\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t\t},\n\n\t\trandom16: function () {\n\n\t\t\tconsole.warn( 'THREE.Math.random16() has been deprecated. Use Math.random() instead.' );\n\t\t\treturn Math.random();\n\n\t\t},\n\n\t\t// Random integer from <low, high> interval\n\n\t\trandInt: function ( low, high ) {\n\n\t\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t\t},\n\n\t\t// Random float from <low, high> interval\n\n\t\trandFloat: function ( low, high ) {\n\n\t\t\treturn low + Math.random() * ( high - low );\n\n\t\t},\n\n\t\t// Random float from <-range/2, range/2> interval\n\n\t\trandFloatSpread: function ( range ) {\n\n\t\t\treturn range * ( 0.5 - Math.random() );\n\n\t\t},\n\n\t\tdegToRad: function ( degrees ) {\n\n\t\t\treturn degrees * THREE.Math.DEG2RAD;\n\n\t\t},\n\n\t\tradToDeg: function ( radians ) {\n\n\t\t\treturn radians * THREE.Math.RAD2DEG;\n\n\t\t},\n\n\t\tisPowerOfTwo: function ( value ) {\n\n\t\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t\t},\n\n\t\tnearestPowerOfTwo: function ( value ) {\n\n\t\t\treturn Math.pow( 2, Math.round( Math.log( value ) / Math.LN2 ) );\n\n\t\t},\n\n\t\tnextPowerOfTwo: function ( value ) {\n\n\t\t\tvalue --;\n\t\t\tvalue |= value >> 1;\n\t\t\tvalue |= value >> 2;\n\t\t\tvalue |= value >> 4;\n\t\t\tvalue |= value >> 8;\n\t\t\tvalue |= value >> 16;\n\t\t\tvalue ++;\n\n\t\t\treturn value;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Spline.js\n\n\t/**\n\t * Spline from Tween.js, slightly optimized (and trashed)\n\t * http://sole.github.com/tween.js/examples/05_spline.html\n\t *\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Spline = function ( points ) {\n\n\t\tthis.points = points;\n\n\t\tvar c = [], v3 = { x: 0, y: 0, z: 0 },\n\t\tpoint, intPoint, weight, w2, w3,\n\t\tpa, pb, pc, pd;\n\n\t\tthis.initFromArray = function ( a ) {\n\n\t\t\tthis.points = [];\n\n\t\t\tfor ( var i = 0; i < a.length; i ++ ) {\n\n\t\t\t\tthis.points[ i ] = { x: a[ i ][ 0 ], y: a[ i ][ 1 ], z: a[ i ][ 2 ] };\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getPoint = function ( k ) {\n\n\t\t\tpoint = ( this.points.length - 1 ) * k;\n\t\t\tintPoint = Math.floor( point );\n\t\t\tweight = point - intPoint;\n\n\t\t\tc[ 0 ] = intPoint === 0 ? intPoint : intPoint - 1;\n\t\t\tc[ 1 ] = intPoint;\n\t\t\tc[ 2 ] = intPoint  > this.points.length - 2 ? this.points.length - 1 : intPoint + 1;\n\t\t\tc[ 3 ] = intPoint  > this.points.length - 3 ? this.points.length - 1 : intPoint + 2;\n\n\t\t\tpa = this.points[ c[ 0 ] ];\n\t\t\tpb = this.points[ c[ 1 ] ];\n\t\t\tpc = this.points[ c[ 2 ] ];\n\t\t\tpd = this.points[ c[ 3 ] ];\n\n\t\t\tw2 = weight * weight;\n\t\t\tw3 = weight * w2;\n\n\t\t\tv3.x = interpolate( pa.x, pb.x, pc.x, pd.x, weight, w2, w3 );\n\t\t\tv3.y = interpolate( pa.y, pb.y, pc.y, pd.y, weight, w2, w3 );\n\t\t\tv3.z = interpolate( pa.z, pb.z, pc.z, pd.z, weight, w2, w3 );\n\n\t\t\treturn v3;\n\n\t\t};\n\n\t\tthis.getControlPointsArray = function () {\n\n\t\t\tvar i, p, l = this.points.length,\n\t\t\t\tcoords = [];\n\n\t\t\tfor ( i = 0; i < l; i ++ ) {\n\n\t\t\t\tp = this.points[ i ];\n\t\t\t\tcoords[ i ] = [ p.x, p.y, p.z ];\n\n\t\t\t}\n\n\t\t\treturn coords;\n\n\t\t};\n\n\t\t// approximate length by summing linear segments\n\n\t\tthis.getLength = function ( nSubDivisions ) {\n\n\t\t\tvar i, index, nSamples, position,\n\t\t\t\tpoint = 0, intPoint = 0, oldIntPoint = 0,\n\t\t\t\toldPosition = new THREE.Vector3(),\n\t\t\t\ttmpVec = new THREE.Vector3(),\n\t\t\t\tchunkLengths = [],\n\t\t\t\ttotalLength = 0;\n\n\t\t\t// first point has 0 length\n\n\t\t\tchunkLengths[ 0 ] = 0;\n\n\t\t\tif ( ! nSubDivisions ) nSubDivisions = 100;\n\n\t\t\tnSamples = this.points.length * nSubDivisions;\n\n\t\t\toldPosition.copy( this.points[ 0 ] );\n\n\t\t\tfor ( i = 1; i < nSamples; i ++ ) {\n\n\t\t\t\tindex = i / nSamples;\n\n\t\t\t\tposition = this.getPoint( index );\n\t\t\t\ttmpVec.copy( position );\n\n\t\t\t\ttotalLength += tmpVec.distanceTo( oldPosition );\n\n\t\t\t\toldPosition.copy( position );\n\n\t\t\t\tpoint = ( this.points.length - 1 ) * index;\n\t\t\t\tintPoint = Math.floor( point );\n\n\t\t\t\tif ( intPoint !== oldIntPoint ) {\n\n\t\t\t\t\tchunkLengths[ intPoint ] = totalLength;\n\t\t\t\t\toldIntPoint = intPoint;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// last point ends with total length\n\n\t\t\tchunkLengths[ chunkLengths.length ] = totalLength;\n\n\t\t\treturn { chunks: chunkLengths, total: totalLength };\n\n\t\t};\n\n\t\tthis.reparametrizeByArcLength = function ( samplingCoef ) {\n\n\t\t\tvar i, j,\n\t\t\t\tindex, indexCurrent, indexNext,\n\t\t\t\trealDistance,\n\t\t\t\tsampling, position,\n\t\t\t\tnewpoints = [],\n\t\t\t\ttmpVec = new THREE.Vector3(),\n\t\t\t\tsl = this.getLength();\n\n\t\t\tnewpoints.push( tmpVec.copy( this.points[ 0 ] ).clone() );\n\n\t\t\tfor ( i = 1; i < this.points.length; i ++ ) {\n\n\t\t\t\t//tmpVec.copy( this.points[ i - 1 ] );\n\t\t\t\t//linearDistance = tmpVec.distanceTo( this.points[ i ] );\n\n\t\t\t\trealDistance = sl.chunks[ i ] - sl.chunks[ i - 1 ];\n\n\t\t\t\tsampling = Math.ceil( samplingCoef * realDistance / sl.total );\n\n\t\t\t\tindexCurrent = ( i - 1 ) / ( this.points.length - 1 );\n\t\t\t\tindexNext = i / ( this.points.length - 1 );\n\n\t\t\t\tfor ( j = 1; j < sampling - 1; j ++ ) {\n\n\t\t\t\t\tindex = indexCurrent + j * ( 1 / sampling ) * ( indexNext - indexCurrent );\n\n\t\t\t\t\tposition = this.getPoint( index );\n\t\t\t\t\tnewpoints.push( tmpVec.copy( position ).clone() );\n\n\t\t\t\t}\n\n\t\t\t\tnewpoints.push( tmpVec.copy( this.points[ i ] ).clone() );\n\n\t\t\t}\n\n\t\t\tthis.points = newpoints;\n\n\t\t};\n\n\t\t// Catmull-Rom\n\n\t\tfunction interpolate( p0, p1, p2, p3, t, t2, t3 ) {\n\n\t\t\tvar v0 = ( p2 - p0 ) * 0.5,\n\t\t\t\tv1 = ( p3 - p1 ) * 0.5;\n\n\t\t\treturn ( 2 * ( p1 - p2 ) + v0 + v1 ) * t3 + ( - 3 * ( p1 - p2 ) - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Triangle.js\n\n\t/**\n\t * @author bhouston / http://clara.io\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Triangle = function ( a, b, c ) {\n\n\t\tthis.a = ( a !== undefined ) ? a : new THREE.Vector3();\n\t\tthis.b = ( b !== undefined ) ? b : new THREE.Vector3();\n\t\tthis.c = ( c !== undefined ) ? c : new THREE.Vector3();\n\n\t};\n\n\tTHREE.Triangle.normal = function () {\n\n\t\tvar v0 = new THREE.Vector3();\n\n\t\treturn function normal( a, b, c, optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\tresult.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\tresult.cross( v0 );\n\n\t\t\tvar resultLengthSq = result.lengthSq();\n\t\t\tif ( resultLengthSq > 0 ) {\n\n\t\t\t\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn result.set( 0, 0, 0 );\n\n\t\t};\n\n\t}();\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tTHREE.Triangle.barycoordFromPoint = function () {\n\n\t\tvar v0 = new THREE.Vector3();\n\t\tvar v1 = new THREE.Vector3();\n\t\tvar v2 = new THREE.Vector3();\n\n\t\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\n\n\t\t\tv0.subVectors( c, a );\n\t\t\tv1.subVectors( b, a );\n\t\t\tv2.subVectors( point, a );\n\n\t\t\tvar dot00 = v0.dot( v0 );\n\t\t\tvar dot01 = v0.dot( v1 );\n\t\t\tvar dot02 = v0.dot( v2 );\n\t\t\tvar dot11 = v1.dot( v1 );\n\t\t\tvar dot12 = v1.dot( v2 );\n\n\t\t\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\t// collinear or singular triangle\n\t\t\tif ( denom === 0 ) {\n\n\t\t\t\t// arbitrary location outside of triangle?\n\t\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\t\treturn result.set( - 2, - 1, - 1 );\n\n\t\t\t}\n\n\t\t\tvar invDenom = 1 / denom;\n\t\t\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\t\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t\t// barycentric coordinates must always sum to 1\n\t\t\treturn result.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}();\n\n\tTHREE.Triangle.containsPoint = function () {\n\n\t\tvar v1 = new THREE.Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tvar result = THREE.Triangle.barycoordFromPoint( point, a, b, c, v1 );\n\n\t\t\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\n\n\t\t};\n\n\t}();\n\n\tTHREE.Triangle.prototype = {\n\n\t\tconstructor: THREE.Triangle,\n\n\t\tset: function ( a, b, c ) {\n\n\t\t\tthis.a.copy( a );\n\t\t\tthis.b.copy( b );\n\t\t\tthis.c.copy( c );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\t\tthis.a.copy( points[ i0 ] );\n\t\t\tthis.b.copy( points[ i1 ] );\n\t\t\tthis.c.copy( points[ i2 ] );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( triangle ) {\n\n\t\t\tthis.a.copy( triangle.a );\n\t\t\tthis.b.copy( triangle.b );\n\t\t\tthis.c.copy( triangle.c );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tarea: function () {\n\n\t\t\tvar v0 = new THREE.Vector3();\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function area() {\n\n\t\t\t\tv0.subVectors( this.c, this.b );\n\t\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tmidpoint: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t\t},\n\n\t\tnormal: function ( optionalTarget ) {\n\n\t\t\treturn THREE.Triangle.normal( this.a, this.b, this.c, optionalTarget );\n\n\t\t},\n\n\t\tplane: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Plane();\n\n\t\t\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t\t},\n\n\t\tbarycoordFromPoint: function ( point, optionalTarget ) {\n\n\t\t\treturn THREE.Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\n\n\t\t},\n\n\t\tcontainsPoint: function ( point ) {\n\n\t\t\treturn THREE.Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t\t},\n\n\t\tclosestPointToPoint: function () {\n\n\t\t\tvar plane, edgeList, projectedPoint, closestPoint;\n\n\t\t\treturn function closestPointToPoint( point, optionalTarget ) {\n\n\t\t\t\tif ( plane === undefined ) {\n\n\t\t\t\t\tplane = new THREE.Plane();\n\t\t\t\t\tedgeList = [ new THREE.Line3(), new THREE.Line3(), new THREE.Line3() ];\n\t\t\t\t\tprojectedPoint = new THREE.Vector3();\n\t\t\t\t\tclosestPoint = new THREE.Vector3();\n\n\t\t\t\t}\n\n\t\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\t\t\t\tvar minDistance = Infinity;\n\n\t\t\t\t// project the point onto the plane of the triangle\n\n\t\t\t\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\n\t\t\t\tplane.projectPoint( point, projectedPoint );\n\n\t\t\t\t// check if the projection lies within the triangle\n\n\t\t\t\tif( this.containsPoint( projectedPoint ) === true ) {\n\n\t\t\t\t\t// if so, this is the closest point\n\n\t\t\t\t\tresult.copy( projectedPoint );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\n\n\t\t\t\t\tedgeList[ 0 ].set( this.a, this.b );\n\t\t\t\t\tedgeList[ 1 ].set( this.b, this.c );\n\t\t\t\t\tedgeList[ 2 ].set( this.c, this.a );\n\n\t\t\t\t\tfor( var i = 0; i < edgeList.length; i ++ ) {\n\n\t\t\t\t\t\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\n\n\t\t\t\t\t\tvar distance = projectedPoint.distanceToSquared( closestPoint );\n\n\t\t\t\t\t\tif( distance < minDistance ) {\n\n\t\t\t\t\t\t\tminDistance = distance;\n\n\t\t\t\t\t\t\tresult.copy( closestPoint );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tequals: function ( triangle ) {\n\n\t\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t\t}\n\n\t};\n\n\t// File:src/math/Interpolant.js\n\n\t/**\n\t * Abstract base class of interpolants over parametric samples.\n\t *\n\t * The parameter domain is one dimensional, typically the time or a path\n\t * along a curve defined by the data.\n\t *\n\t * The sample values can have any dimensionality and derived classes may\n\t * apply special interpretations to the data.\n\t *\n\t * This class provides the interval seek in a Template Method, deferring\n\t * the actual interpolation to derived classes.\n\t *\n\t * Time complexity is O(1) for linear access crossing at most two points\n\t * and O(log N) for random access, where N is the number of positions.\n\t *\n\t * References:\n\t *\n\t * \t\thttp://www.oodesign.com/template-method-pattern.html\n\t *\n\t * @author tschw\n\t */\n\n\tTHREE.Interpolant = function(\n\t\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t};\n\n\tTHREE.Interpolant.prototype = {\n\n\t\tconstructor: THREE.Interpolant,\n\n\t\tevaluate: function( t ) {\n\n\t\t\tvar pp = this.parameterPositions,\n\t\t\t\ti1 = this._cachedIndex,\n\n\t\t\t\tt1 = pp[   i1   ],\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\tvalidate_interval: {\n\n\t\t\t\tseek: {\n\n\t\t\t\t\tvar right;\n\n\t\t\t\t\tlinear_scan: {\n\t//- See http://jsperf.com/comparison-to-undefined/3\n\t//- slower code:\n\t//-\n\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ;) {\n\n\t\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t\t}\n\n\t//- slower code:\n\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ;) {\n\n\t\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t\t} // linear scan\n\n\t\t\t\t\t// binary search\n\n\t\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tt1 = pp[   i1   ];\n\t\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t\t// check boundary cases, again\n\n\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t\t}\n\n\t\t\t\t} // seek\n\n\t\t\t\tthis._cachedIndex = i1;\n\n\t\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t\t} // validate_interval\n\n\t\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t\t},\n\n\t\tsettings: null, // optional, subclass-specific settings structure\n\t\t// Note: The indirection allows central control of many interpolants.\n\n\t\t// --- Protected interface\n\n\t\tDefaultSettings_: {},\n\n\t\tgetSettings_: function() {\n\n\t\t\treturn this.settings || this.DefaultSettings_;\n\n\t\t},\n\n\t\tcopySampleValue_: function( index ) {\n\n\t\t\t// copies a sample value to the result buffer\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\t\t\t\toffset = index * stride;\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\t// Template methods for derived classes:\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tthrow new Error( \"call to abstract method\" );\n\t\t\t// implementations shall return this.resultBuffer\n\n\t\t},\n\n\t\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t\t// empty\n\n\t\t}\n\n\t};\n\n\tObject.assign( THREE.Interpolant.prototype, {\n\n\t\tbeforeStart_: //( 0, t, t0 ), returns this.resultBuffer\n\t\t\tTHREE.Interpolant.prototype.copySampleValue_,\n\n\t\tafterEnd_: //( N-1, tN-1, t ), returns this.resultBuffer\n\t\t\tTHREE.Interpolant.prototype.copySampleValue_\n\n\t} );\n\n\t// File:src/math/interpolants/CubicInterpolant.js\n\n\t/**\n\t * Fast and simple cubic spline interpolant.\n\t *\n\t * It was derived from a Hermitian construction setting the first derivative\n\t * at each sample position to the linear slope between neighboring positions\n\t * over their parameter interval.\n\t *\n\t * @author tschw\n\t */\n\n\tTHREE.CubicInterpolant = function(\n\t\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tTHREE.Interpolant.call(\n\t\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = -0;\n\t\tthis._offsetPrev = -0;\n\t\tthis._weightNext = -0;\n\t\tthis._offsetNext = -0;\n\n\t};\n\n\tTHREE.CubicInterpolant.prototype =\n\t\t\tObject.assign( Object.create( THREE.Interpolant.prototype ), {\n\n\t\tconstructor: THREE.CubicInterpolant,\n\n\t\tDefaultSettings_: {\n\n\t\t\tendingStart: \tTHREE.ZeroCurvatureEnding,\n\t\t\tendingEnd:\t\tTHREE.ZeroCurvatureEnding\n\n\t\t},\n\n\t\tintervalChanged_: function( i1, t0, t1 ) {\n\n\t\t\tvar pp = this.parameterPositions,\n\t\t\t\tiPrev = i1 - 2,\n\t\t\t\tiNext = i1 + 1,\n\n\t\t\t\ttPrev = pp[ iPrev ],\n\t\t\t\ttNext = pp[ iNext ];\n\n\t\t\tif ( tPrev === undefined ) {\n\n\t\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\t\tcase THREE.ZeroSlopeEnding:\n\n\t\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\t\tiPrev = i1;\n\t\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.WrapAroundEnding:\n\n\t\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\t\tiPrev = i1;\n\t\t\t\t\t\ttPrev = t1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( tNext === undefined ) {\n\n\t\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\t\tcase THREE.ZeroSlopeEnding:\n\n\t\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\t\tiNext = i1;\n\t\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.WrapAroundEnding:\n\n\t\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\t\tiNext = 1;\n\t\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\t\ttNext = t0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\t\tstride = this.valueSize;\n\n\t\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\t\tthis._offsetPrev = iPrev * stride;\n\t\t\tthis._offsetNext = iNext * stride;\n\n\t\t},\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\t\tpp = p * p,\n\t\t\t\tppp = pp * p;\n\n\t\t\t// evaluate polynomials\n\n\t\t\tvar sP =     - wP   * ppp   +         2 * wP    * pp    -          wP   * p;\n\t\t\tvar s0 = ( 1 + wP ) * ppp   + (-1.5 - 2 * wP )  * pp    + ( -0.5 + wP ) * p     + 1;\n\t\t\tvar s1 = (-1 - wN ) * ppp   + ( 1.5 +   wN   )  * pp    +    0.5        * p;\n\t\t\tvar sN =       wN   * ppp   -           wN      * pp;\n\n\t\t\t// combine data linearly\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tresult[ i ] =\n\t\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t} );\n\n\t// File:src/math/interpolants/DiscreteInterpolant.js\n\n\t/**\n\t *\n\t * Interpolant that evaluates to the sample value at the position preceeding\n\t * the parameter.\n\t *\n\t * @author tschw\n\t */\n\n\tTHREE.DiscreteInterpolant = function(\n\t\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tTHREE.Interpolant.call(\n\t\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t};\n\n\tTHREE.DiscreteInterpolant.prototype =\n\t\t\tObject.assign( Object.create( THREE.Interpolant.prototype ), {\n\n\t\tconstructor: THREE.DiscreteInterpolant,\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t}\n\n\t} );\n\n\t// File:src/math/interpolants/LinearInterpolant.js\n\n\t/**\n\t * @author tschw\n\t */\n\n\tTHREE.LinearInterpolant = function(\n\t\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tTHREE.Interpolant.call(\n\t\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t};\n\n\tTHREE.LinearInterpolant.prototype =\n\t\t\tObject.assign( Object.create( THREE.Interpolant.prototype ), {\n\n\t\tconstructor: THREE.LinearInterpolant,\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\toffset1 = i1 * stride,\n\t\t\t\toffset0 = offset1 - stride,\n\n\t\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\t\tweight0 = 1 - weight1;\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tresult[ i ] =\n\t\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t} );\n\n\t// File:src/math/interpolants/QuaternionLinearInterpolant.js\n\n\t/**\n\t * Spherical linear unit quaternion interpolant.\n\t *\n\t * @author tschw\n\t */\n\n\tTHREE.QuaternionLinearInterpolant = function(\n\t\t\tparameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tTHREE.Interpolant.call(\n\t\t\t\tthis, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t};\n\n\tTHREE.QuaternionLinearInterpolant.prototype =\n\t\t\tObject.assign( Object.create( THREE.Interpolant.prototype ), {\n\n\t\tconstructor: THREE.QuaternionLinearInterpolant,\n\n\t\tinterpolate_: function( i1, t0, t, t1 ) {\n\n\t\t\tvar result = this.resultBuffer,\n\t\t\t\tvalues = this.sampleValues,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\toffset = i1 * stride,\n\n\t\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\t\tTHREE.Quaternion.slerpFlat( result, 0,\n\t\t\t\t\t\tvalues, offset - stride, values, offset, alpha );\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t} );\n\n\t// File:src/core/Clock.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Clock = function ( autoStart ) {\n\n\t\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t};\n\n\tTHREE.Clock.prototype = {\n\n\t\tconstructor: THREE.Clock,\n\n\t\tstart: function () {\n\n\t\t\tthis.startTime = ( performance || Date ).now();\n\n\t\t\tthis.oldTime = this.startTime;\n\t\t\tthis.running = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tthis.getElapsedTime();\n\t\t\tthis.running = false;\n\n\t\t},\n\n\t\tgetElapsedTime: function () {\n\n\t\t\tthis.getDelta();\n\t\t\treturn this.elapsedTime;\n\n\t\t},\n\n\t\tgetDelta: function () {\n\n\t\t\tvar diff = 0;\n\n\t\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\t\tthis.start();\n\n\t\t\t}\n\n\t\t\tif ( this.running ) {\n\n\t\t\t\tvar newTime = ( performance || Date ).now();\n\n\t\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\t\tthis.oldTime = newTime;\n\n\t\t\t\tthis.elapsedTime += diff;\n\n\t\t\t}\n\n\t\t\treturn diff;\n\n\t\t}\n\n\t};\n\n\t// File:src/core/EventDispatcher.js\n\n\t/**\n\t * https://github.com/mrdoob/eventdispatcher.js/\n\t */\n\n\tTHREE.EventDispatcher = function () {};\n\n\tObject.assign( THREE.EventDispatcher.prototype, {\n\n\t\taddEventListener: function ( type, listener ) {\n\n\t\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\t\tvar listeners = this._listeners;\n\n\t\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\t\tlisteners[ type ] = [];\n\n\t\t\t}\n\n\t\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\t\tlisteners[ type ].push( listener );\n\n\t\t\t}\n\n\t\t},\n\n\t\thasEventListener: function ( type, listener ) {\n\n\t\t\tif ( this._listeners === undefined ) return false;\n\n\t\t\tvar listeners = this._listeners;\n\n\t\t\tif ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t},\n\n\t\tremoveEventListener: function ( type, listener ) {\n\n\t\t\tif ( this._listeners === undefined ) return;\n\n\t\t\tvar listeners = this._listeners;\n\t\t\tvar listenerArray = listeners[ type ];\n\n\t\t\tif ( listenerArray !== undefined ) {\n\n\t\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tdispatchEvent: function ( event ) {\n\n\t\t\tif ( this._listeners === undefined ) return;\n\n\t\t\tvar listeners = this._listeners;\n\t\t\tvar listenerArray = listeners[ event.type ];\n\n\t\t\tif ( listenerArray !== undefined ) {\n\n\t\t\t\tevent.target = this;\n\n\t\t\t\tvar array = [], i = 0;\n\t\t\t\tvar length = listenerArray.length;\n\n\t\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = listenerArray[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tfor ( i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t// File:src/core/Layers.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Layers = function () {\n\n\t\tthis.mask = 1;\n\n\t};\n\n\tTHREE.Layers.prototype = {\n\n\t\tconstructor: THREE.Layers,\n\n\t\tset: function ( channel ) {\n\n\t\t\tthis.mask = 1 << channel;\n\n\t\t},\n\n\t\tenable: function ( channel ) {\n\n\t\t\tthis.mask |= 1 << channel;\n\n\t\t},\n\n\t\ttoggle: function ( channel ) {\n\n\t\t\tthis.mask ^= 1 << channel;\n\n\t\t},\n\n\t\tdisable: function ( channel ) {\n\n\t\t\tthis.mask &= ~ ( 1 << channel );\n\n\t\t},\n\n\t\ttest: function ( layers ) {\n\n\t\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t\t}\n\n\t};\n\n\t// File:src/core/Raycaster.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author bhouston / http://clara.io/\n\t * @author stephomi / http://stephaneginier.com/\n\t */\n\n\t( function ( THREE ) {\n\n\t\tTHREE.Raycaster = function ( origin, direction, near, far ) {\n\n\t\t\tthis.ray = new THREE.Ray( origin, direction );\n\t\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\t\tthis.near = near || 0;\n\t\t\tthis.far = far || Infinity;\n\n\t\t\tthis.params = {\n\t\t\t\tMesh: {},\n\t\t\t\tLine: {},\n\t\t\t\tLOD: {},\n\t\t\t\tPoints: { threshold: 1 },\n\t\t\t\tSprite: {}\n\t\t\t};\n\n\t\t\tObject.defineProperties( this.params, {\n\t\t\t\tPointCloud: {\n\t\t\t\t\tget: function () {\n\t\t\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\t\t\treturn this.Points;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t};\n\n\t\tfunction ascSort( a, b ) {\n\n\t\t\treturn a.distance - b.distance;\n\n\t\t}\n\n\t\tfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tobject.raycast( raycaster, intersects );\n\n\t\t\tif ( recursive === true ) {\n\n\t\t\t\tvar children = object.children;\n\n\t\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tTHREE.Raycaster.prototype = {\n\n\t\t\tconstructor: THREE.Raycaster,\n\n\t\t\tlinePrecision: 1,\n\n\t\t\tset: function ( origin, direction ) {\n\n\t\t\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\t\t\tthis.ray.set( origin, direction );\n\n\t\t\t},\n\n\t\t\tsetFromCamera: function ( coords, camera ) {\n\n\t\t\t\tif ( camera instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t\t\t} else if ( camera instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tintersectObject: function ( object, recursive ) {\n\n\t\t\t\tvar intersects = [];\n\n\t\t\t\tintersectObject( object, this, intersects, recursive );\n\n\t\t\t\tintersects.sort( ascSort );\n\n\t\t\t\treturn intersects;\n\n\t\t\t},\n\n\t\t\tintersectObjects: function ( objects, recursive ) {\n\n\t\t\t\tvar intersects = [];\n\n\t\t\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\t\t\treturn intersects;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t\t\t}\n\n\t\t\t\tintersects.sort( ascSort );\n\n\t\t\t\treturn intersects;\n\n\t\t\t}\n\n\t\t};\n\n\t}( THREE ) );\n\n\t// File:src/core/Object3D.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author elephantatwork / www.elephantatwork.ch\n\t */\n\n\tTHREE.Object3D = function () {\n\n\t\tObject.defineProperty( this, 'id', { value: THREE.Object3DIdCount ++ } );\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = THREE.Object3D.DefaultUp.clone();\n\n\t\tvar position = new THREE.Vector3();\n\t\tvar rotation = new THREE.Euler();\n\t\tvar quaternion = new THREE.Quaternion();\n\t\tvar scale = new THREE.Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation.onChange( onRotationChange );\n\t\tquaternion.onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new THREE.Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new THREE.Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new THREE.Matrix4();\n\t\tthis.matrixWorld = new THREE.Matrix4();\n\n\t\tthis.matrixAutoUpdate = THREE.Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new THREE.Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.userData = {};\n\n\t};\n\n\tTHREE.Object3D.DefaultUp = new THREE.Vector3( 0, 1, 0 );\n\tTHREE.Object3D.DefaultMatrixAutoUpdate = true;\n\n\tObject.assign( THREE.Object3D.prototype, THREE.EventDispatcher.prototype, {\n\n\t\tapplyMatrix: function ( matrix ) {\n\n\t\t\tthis.matrix.multiplyMatrices( matrix, this.matrix );\n\n\t\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t\t},\n\n\t\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t\t// assumes axis is normalized\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t\t},\n\n\t\tsetRotationFromEuler: function ( euler ) {\n\n\t\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t\t},\n\n\t\tsetRotationFromMatrix: function ( m ) {\n\n\t\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t\t},\n\n\t\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t\t// assumes q is normalized\n\n\t\t\tthis.quaternion.copy( q );\n\n\t\t},\n\n\t\trotateOnAxis: function () {\n\n\t\t\t// rotate object on axis in object space\n\t\t\t// axis is assumed to be normalized\n\n\t\t\tvar q1 = new THREE.Quaternion();\n\n\t\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateX: function () {\n\n\t\t\tvar v1 = new THREE.Vector3( 1, 0, 0 );\n\n\t\t\treturn function rotateX( angle ) {\n\n\t\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateY: function () {\n\n\t\t\tvar v1 = new THREE.Vector3( 0, 1, 0 );\n\n\t\t\treturn function rotateY( angle ) {\n\n\t\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateZ: function () {\n\n\t\t\tvar v1 = new THREE.Vector3( 0, 0, 1 );\n\n\t\t\treturn function rotateZ( angle ) {\n\n\t\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateOnAxis: function () {\n\n\t\t\t// translate object by distance along axis in object space\n\t\t\t// axis is assumed to be normalized\n\n\t\t\tvar v1 = new THREE.Vector3();\n\n\t\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateX: function () {\n\n\t\t\tvar v1 = new THREE.Vector3( 1, 0, 0 );\n\n\t\t\treturn function translateX( distance ) {\n\n\t\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateY: function () {\n\n\t\t\tvar v1 = new THREE.Vector3( 0, 1, 0 );\n\n\t\t\treturn function translateY( distance ) {\n\n\t\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslateZ: function () {\n\n\t\t\tvar v1 = new THREE.Vector3( 0, 0, 1 );\n\n\t\t\treturn function translateZ( distance ) {\n\n\t\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlocalToWorld: function ( vector ) {\n\n\t\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t\t},\n\n\t\tworldToLocal: function () {\n\n\t\t\tvar m1 = new THREE.Matrix4();\n\n\t\t\treturn function worldToLocal( vector ) {\n\n\t\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlookAt: function () {\n\n\t\t\t// This routine does not support objects with rotated and/or translated parent(s)\n\n\t\t\tvar m1 = new THREE.Matrix4();\n\n\t\t\treturn function lookAt( vector ) {\n\n\t\t\t\tm1.lookAt( vector, this.position, this.up );\n\n\t\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tadd: function ( object ) {\n\n\t\t\tif ( arguments.length > 1 ) {\n\n\t\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tif ( object === this ) {\n\n\t\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tif ( object instanceof THREE.Object3D ) {\n\n\t\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\t\tobject.parent.remove( object );\n\n\t\t\t\t}\n\n\t\t\t\tobject.parent = this;\n\t\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\t\tthis.children.push( object );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tremove: function ( object ) {\n\n\t\t\tif ( arguments.length > 1 ) {\n\n\t\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar index = this.children.indexOf( object );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tobject.parent = null;\n\n\t\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\t\tthis.children.splice( index, 1 );\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetObjectById: function ( id ) {\n\n\t\t\treturn this.getObjectByProperty( 'id', id );\n\n\t\t},\n\n\t\tgetObjectByName: function ( name ) {\n\n\t\t\treturn this.getObjectByProperty( 'name', name );\n\n\t\t},\n\n\t\tgetObjectByProperty: function ( name, value ) {\n\n\t\t\tif ( this[ name ] === value ) return this;\n\n\t\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\t\tvar child = this.children[ i ];\n\t\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\t\tif ( object !== undefined ) {\n\n\t\t\t\t\treturn object;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t},\n\n\t\tgetWorldPosition: function ( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\treturn result.setFromMatrixPosition( this.matrixWorld );\n\n\t\t},\n\n\t\tgetWorldQuaternion: function () {\n\n\t\t\tvar position = new THREE.Vector3();\n\t\t\tvar scale = new THREE.Vector3();\n\n\t\t\treturn function getWorldQuaternion( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new THREE.Quaternion();\n\n\t\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\t\tthis.matrixWorld.decompose( position, result, scale );\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetWorldRotation: function () {\n\n\t\t\tvar quaternion = new THREE.Quaternion();\n\n\t\t\treturn function getWorldRotation( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new THREE.Euler();\n\n\t\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\t\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetWorldScale: function () {\n\n\t\t\tvar position = new THREE.Vector3();\n\t\t\tvar quaternion = new THREE.Quaternion();\n\n\t\t\treturn function getWorldScale( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\t\tthis.matrixWorld.decompose( position, quaternion, result );\n\n\t\t\t\treturn result;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tgetWorldDirection: function () {\n\n\t\t\tvar quaternion = new THREE.Quaternion();\n\n\t\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\t\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\traycast: function () {},\n\n\t\ttraverse: function ( callback ) {\n\n\t\t\tcallback( this );\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].traverse( callback );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttraverseVisible: function ( callback ) {\n\n\t\t\tif ( this.visible === false ) return;\n\n\t\t\tcallback( this );\n\n\t\t\tvar children = this.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttraverseAncestors: function ( callback ) {\n\n\t\t\tvar parent = this.parent;\n\n\t\t\tif ( parent !== null ) {\n\n\t\t\t\tcallback( parent );\n\n\t\t\t\tparent.traverseAncestors( callback );\n\n\t\t\t}\n\n\t\t},\n\n\t\tupdateMatrix: function () {\n\n\t\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t\t},\n\n\t\tupdateMatrixWorld: function ( force ) {\n\n\t\t\tif ( this.matrixAutoUpdate === true ) this.updateMatrix();\n\n\t\t\tif ( this.matrixWorldNeedsUpdate === true || force === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\t\tforce = true;\n\n\t\t\t}\n\n\t\t\t// update children\n\n\t\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\t\tthis.children[ i ].updateMatrixWorld( force );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\t// meta is '' when called from JSON.stringify\n\t\t\tvar isRootObject = ( meta === undefined || meta === '' );\n\n\t\t\tvar output = {};\n\n\t\t\t// meta is a hash used to collect geometries, materials.\n\t\t\t// not providing it implies that this is the root object\n\t\t\t// being serialized.\n\t\t\tif ( isRootObject ) {\n\n\t\t\t\t// initialize meta obj\n\t\t\t\tmeta = {\n\t\t\t\t\tgeometries: {},\n\t\t\t\t\tmaterials: {},\n\t\t\t\t\ttextures: {},\n\t\t\t\t\timages: {}\n\t\t\t\t};\n\n\t\t\t\toutput.metadata = {\n\t\t\t\t\tversion: 4.4,\n\t\t\t\t\ttype: 'Object',\n\t\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// standard Object3D serialization\n\n\t\t\tvar object = {};\n\n\t\t\tobject.uuid = this.uuid;\n\t\t\tobject.type = this.type;\n\n\t\t\tif ( this.name !== '' ) object.name = this.name;\n\t\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\t\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\t\tif ( this.visible === false ) object.visible = false;\n\n\t\t\tobject.matrix = this.matrix.toArray();\n\n\t\t\t//\n\n\t\t\tif ( this.geometry !== undefined ) {\n\n\t\t\t\tif ( meta.geometries[ this.geometry.uuid ] === undefined ) {\n\n\t\t\t\t\tmeta.geometries[ this.geometry.uuid ] = this.geometry.toJSON( meta );\n\n\t\t\t\t}\n\n\t\t\t\tobject.geometry = this.geometry.uuid;\n\n\t\t\t}\n\n\t\t\tif ( this.material !== undefined ) {\n\n\t\t\t\tif ( meta.materials[ this.material.uuid ] === undefined ) {\n\n\t\t\t\t\tmeta.materials[ this.material.uuid ] = this.material.toJSON( meta );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = this.material.uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( this.children.length > 0 ) {\n\n\t\t\t\tobject.children = [];\n\n\t\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( isRootObject ) {\n\n\t\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\t\tif ( images.length > 0 ) output.images = images;\n\n\t\t\t}\n\n\t\t\toutput.object = object;\n\n\t\t\treturn output;\n\n\t\t\t// extract data from the cache hash\n\t\t\t// remove metadata on each item\n\t\t\t// and return as array\n\t\t\tfunction extractFromCache ( cache ) {\n\n\t\t\t\tvar values = [];\n\t\t\t\tfor ( var key in cache ) {\n\n\t\t\t\t\tvar data = cache[ key ];\n\t\t\t\t\tdelete data.metadata;\n\t\t\t\t\tvalues.push( data );\n\n\t\t\t\t}\n\t\t\t\treturn values;\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function ( recursive ) {\n\n\t\t\treturn new this.constructor().copy( this, recursive );\n\n\t\t},\n\n\t\tcopy: function ( source, recursive ) {\n\n\t\t\tif ( recursive === undefined ) recursive = true;\n\n\t\t\tthis.name = source.name;\n\n\t\t\tthis.up.copy( source.up );\n\n\t\t\tthis.position.copy( source.position );\n\t\t\tthis.quaternion.copy( source.quaternion );\n\t\t\tthis.scale.copy( source.scale );\n\n\t\t\tthis.matrix.copy( source.matrix );\n\t\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\t\tthis.visible = source.visible;\n\n\t\t\tthis.castShadow = source.castShadow;\n\t\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\t\tthis.frustumCulled = source.frustumCulled;\n\t\t\tthis.renderOrder = source.renderOrder;\n\n\t\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\t\tif ( recursive === true ) {\n\n\t\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\t\tvar child = source.children[ i ];\n\t\t\t\t\tthis.add( child.clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\tTHREE.Object3DIdCount = 0;\n\n\t// File:src/core/Face3.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Face3 = function ( a, b, c, normal, color, materialIndex ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t\tthis.normal = normal instanceof THREE.Vector3 ? normal : new THREE.Vector3();\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\t\tthis.color = color instanceof THREE.Color ? color : new THREE.Color();\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\t\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n\t};\n\n\tTHREE.Face3.prototype = {\n\n\t\tconstructor: THREE.Face3,\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.a = source.a;\n\t\t\tthis.b = source.b;\n\t\t\tthis.c = source.c;\n\n\t\t\tthis.normal.copy( source.normal );\n\t\t\tthis.color.copy( source.color );\n\n\t\t\tthis.materialIndex = source.materialIndex;\n\n\t\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// File:src/core/BufferAttribute.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.BufferAttribute = function ( array, itemSize, normalized ) {\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\n\t\tthis.dynamic = false;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\t\tthis.normalized = normalized === true;\n\n\t};\n\n\tTHREE.BufferAttribute.prototype = {\n\n\t\tconstructor: THREE.BufferAttribute,\n\n\t\tget count() {\n\n\t\t\treturn this.array.length / this.itemSize;\n\n\t\t},\n\n\t\tset needsUpdate( value ) {\n\n\t\t\tif ( value === true ) this.version ++;\n\n\t\t},\n\n\t\tsetDynamic: function ( value ) {\n\n\t\t\tthis.dynamic = value;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.array = new source.array.constructor( source.array );\n\t\t\tthis.itemSize = source.itemSize;\n\n\t\t\tthis.dynamic = source.dynamic;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\t\tindex1 *= this.itemSize;\n\t\t\tindex2 *= attribute.itemSize;\n\n\t\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyArray: function ( array ) {\n\n\t\t\tthis.array.set( array );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyColorsArray: function ( colors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\t\tvar color = colors[ i ];\n\n\t\t\t\tif ( color === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\t\tcolor = new THREE.Color();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = color.r;\n\t\t\t\tarray[ offset ++ ] = color.g;\n\t\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyIndicesArray: function ( indices ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tvar index = indices[ i ];\n\n\t\t\t\tarray[ offset ++ ] = index.a;\n\t\t\t\tarray[ offset ++ ] = index.b;\n\t\t\t\tarray[ offset ++ ] = index.c;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyVector2sArray: function ( vectors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tvar vector = vectors[ i ];\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\t\tvector = new THREE.Vector2();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyVector3sArray: function ( vectors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tvar vector = vectors[ i ];\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\t\tvector = new THREE.Vector3();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyVector4sArray: function ( vectors ) {\n\n\t\t\tvar array = this.array, offset = 0;\n\n\t\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tvar vector = vectors[ i ];\n\n\t\t\t\tif ( vector === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\t\tvector = new THREE.Vector4();\n\n\t\t\t\t}\n\n\t\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tset: function ( value, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.array.set( value, offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetX: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize ];\n\n\t\t},\n\n\t\tsetX: function ( index, x ) {\n\n\t\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetY: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t\t},\n\n\t\tsetY: function ( index, y ) {\n\n\t\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetZ: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t\t},\n\n\t\tsetZ: function ( index, z ) {\n\n\t\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetW: function ( index ) {\n\n\t\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t\t},\n\n\t\tsetW: function ( index, w ) {\n\n\t\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXY: function ( index, x, y ) {\n\n\t\t\tindex *= this.itemSize;\n\n\t\t\tthis.array[ index + 0 ] = x;\n\t\t\tthis.array[ index + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZ: function ( index, x, y, z ) {\n\n\t\t\tindex *= this.itemSize;\n\n\t\t\tthis.array[ index + 0 ] = x;\n\t\t\tthis.array[ index + 1 ] = y;\n\t\t\tthis.array[ index + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\t\tindex *= this.itemSize;\n\n\t\t\tthis.array[ index + 0 ] = x;\n\t\t\tthis.array[ index + 1 ] = y;\n\t\t\tthis.array[ index + 2 ] = z;\n\t\t\tthis.array[ index + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t}\n\n\t};\n\n\t//\n\n\tTHREE.Int8Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Int8Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Uint8Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Uint8Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Uint8ClampedAttribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Uint8ClampedArray( array ), itemSize );\n\n\t};\n\n\tTHREE.Int16Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Int16Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Uint16Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Uint16Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Int32Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Int32Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Uint32Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Uint32Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Float32Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Float32Array( array ), itemSize );\n\n\t};\n\n\tTHREE.Float64Attribute = function ( array, itemSize ) {\n\n\t\treturn new THREE.BufferAttribute( new Float64Array( array ), itemSize );\n\n\t};\n\n\n\t// Deprecated\n\n\tTHREE.DynamicBufferAttribute = function ( array, itemSize ) {\n\n\t\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\t\treturn new THREE.BufferAttribute( array, itemSize ).setDynamic( true );\n\n\t};\n\n\t// File:src/core/InstancedBufferAttribute.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tTHREE.InstancedBufferAttribute = function ( array, itemSize, meshPerAttribute ) {\n\n\t\tTHREE.BufferAttribute.call( this, array, itemSize );\n\n\t\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n\t};\n\n\tTHREE.InstancedBufferAttribute.prototype = Object.create( THREE.BufferAttribute.prototype );\n\tTHREE.InstancedBufferAttribute.prototype.constructor = THREE.InstancedBufferAttribute;\n\n\tTHREE.InstancedBufferAttribute.prototype.copy = function ( source ) {\n\n\t\tTHREE.BufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/core/InterleavedBuffer.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tTHREE.InterleavedBuffer = function ( array, stride ) {\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\n\t\tthis.dynamic = false;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t};\n\n\tTHREE.InterleavedBuffer.prototype = {\n\n\t\tconstructor: THREE.InterleavedBuffer,\n\n\t\tget length () {\n\n\t\t\treturn this.array.length;\n\n\t\t},\n\n\t\tget count () {\n\n\t\t\treturn this.array.length / this.stride;\n\n\t\t},\n\n\t\tset needsUpdate( value ) {\n\n\t\t\tif ( value === true ) this.version ++;\n\n\t\t},\n\n\t\tsetDynamic: function ( value ) {\n\n\t\t\tthis.dynamic = value;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.array = new source.array.constructor( source.array );\n\t\t\tthis.stride = source.stride;\n\t\t\tthis.dynamic = source.dynamic;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\t\tindex1 *= this.stride;\n\t\t\tindex2 *= attribute.stride;\n\n\t\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tset: function ( value, offset ) {\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tthis.array.set( value, offset );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t}\n\n\t};\n\n\t// File:src/core/InstancedInterleavedBuffer.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tTHREE.InstancedInterleavedBuffer = function ( array, stride, meshPerAttribute ) {\n\n\t\tTHREE.InterleavedBuffer.call( this, array, stride );\n\n\t\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n\t};\n\n\tTHREE.InstancedInterleavedBuffer.prototype = Object.create( THREE.InterleavedBuffer.prototype );\n\tTHREE.InstancedInterleavedBuffer.prototype.constructor = THREE.InstancedInterleavedBuffer;\n\n\tTHREE.InstancedInterleavedBuffer.prototype.copy = function ( source ) {\n\n\t\tTHREE.InterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/core/InterleavedBufferAttribute.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tTHREE.InterleavedBufferAttribute = function ( interleavedBuffer, itemSize, offset ) {\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t};\n\n\n\tTHREE.InterleavedBufferAttribute.prototype = {\n\n\t\tconstructor: THREE.InterleavedBufferAttribute,\n\n\t\tget length() {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Please use .count.' );\n\t\t\treturn this.array.length;\n\n\t\t},\n\n\t\tget count() {\n\n\t\t\treturn this.data.count;\n\n\t\t},\n\n\t\tsetX: function ( index, x ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetY: function ( index, y ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetZ: function ( index, z ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetW: function ( index, w ) {\n\n\t\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetX: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t\t},\n\n\t\tgetY: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\t},\n\n\t\tgetZ: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\t},\n\n\t\tgetW: function ( index ) {\n\n\t\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\t},\n\n\t\tsetXY: function ( index, x, y ) {\n\n\t\t\tindex = index * this.data.stride + this.offset;\n\n\t\t\tthis.data.array[ index + 0 ] = x;\n\t\t\tthis.data.array[ index + 1 ] = y;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZ: function ( index, x, y, z ) {\n\n\t\t\tindex = index * this.data.stride + this.offset;\n\n\t\t\tthis.data.array[ index + 0 ] = x;\n\t\t\tthis.data.array[ index + 1 ] = y;\n\t\t\tthis.data.array[ index + 2 ] = z;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\t\tindex = index * this.data.stride + this.offset;\n\n\t\t\tthis.data.array[ index + 0 ] = x;\n\t\t\tthis.data.array[ index + 1 ] = y;\n\t\t\tthis.data.array[ index + 2 ] = z;\n\t\t\tthis.data.array[ index + 3 ] = w;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// File:src/core/Geometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author kile / http://kile.stravaganza.org/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author bhouston / http://clara.io\n\t */\n\n\tTHREE.Geometry = function () {\n\n\t\tObject.defineProperty( this, 'id', { value: THREE.GeometryIdCount ++ } );\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Geometry';\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [ [] ];\n\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\n\t\tthis.lineDistances = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// update flags\n\n\t\tthis.verticesNeedUpdate = false;\n\t\tthis.elementsNeedUpdate = false;\n\t\tthis.uvsNeedUpdate = false;\n\t\tthis.normalsNeedUpdate = false;\n\t\tthis.colorsNeedUpdate = false;\n\t\tthis.lineDistancesNeedUpdate = false;\n\t\tthis.groupsNeedUpdate = false;\n\n\t};\n\n\tObject.assign( THREE.Geometry.prototype, THREE.EventDispatcher.prototype, {\n\n\t\tapplyMatrix: function ( matrix ) {\n\n\t\t\tvar normalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );\n\n\t\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\t\tvar vertex = this.vertices[ i ];\n\t\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\t\tvar face = this.faces[ i ];\n\t\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tthis.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tthis.computeBoundingSphere();\n\n\t\t\t}\n\n\t\t\tthis.verticesNeedUpdate = true;\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trotateX: function () {\n\n\t\t\t// rotate geometry around world x-axis\n\n\t\t\tvar m1;\n\n\t\t\treturn function rotateX( angle ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeRotationX( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateY: function () {\n\n\t\t\t// rotate geometry around world y-axis\n\n\t\t\tvar m1;\n\n\t\t\treturn function rotateY( angle ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeRotationY( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateZ: function () {\n\n\t\t\t// rotate geometry around world z-axis\n\n\t\t\tvar m1;\n\n\t\t\treturn function rotateZ( angle ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeRotationZ( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function () {\n\n\t\t\t// translate geometry\n\n\t\t\tvar m1;\n\n\t\t\treturn function translate( x, y, z ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tscale: function () {\n\n\t\t\t// scale geometry\n\n\t\t\tvar m1;\n\n\t\t\treturn function scale( x, y, z ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeScale( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlookAt: function () {\n\n\t\t\tvar obj;\n\n\t\t\treturn function lookAt( vector ) {\n\n\t\t\t\tif ( obj === undefined ) obj = new THREE.Object3D();\n\n\t\t\t\tobj.lookAt( vector );\n\n\t\t\t\tobj.updateMatrix();\n\n\t\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tfromBufferGeometry: function ( geometry ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\t\tvar attributes = geometry.attributes;\n\n\t\t\tvar positions = attributes.position.array;\n\t\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\t\tvar tempNormals = [];\n\t\t\tvar tempUVs = [];\n\t\t\tvar tempUVs2 = [];\n\n\t\t\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\n\n\t\t\t\tscope.vertices.push( new THREE.Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\n\n\t\t\t\tif ( normals !== undefined ) {\n\n\t\t\t\t\ttempNormals.push( new THREE.Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\t\tscope.colors.push( new THREE.Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\t\ttempUVs.push( new THREE.Vector2( uvs[ j ], uvs[ j + 1 ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\t\ttempUVs2.push( new THREE.Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\t\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\n\t\t\t\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\n\n\t\t\t\tvar face = new THREE.Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\t\tscope.faces.push( face );\n\n\t\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\t\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\t\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\t\tvar start = group.start;\n\t\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex  );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\n\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcenter: function () {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tvar offset = this.boundingBox.center().negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn offset;\n\n\t\t},\n\n\t\tnormalize: function () {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t\tvar center = this.boundingSphere.center;\n\t\t\tvar radius = this.boundingSphere.radius;\n\n\t\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\t\tvar matrix = new THREE.Matrix4();\n\t\t\tmatrix.set(\n\t\t\t\ts, 0, 0, - s * center.x,\n\t\t\t\t0, s, 0, - s * center.y,\n\t\t\t\t0, 0, s, - s * center.z,\n\t\t\t\t0, 0, 0, 1\n\t\t\t);\n\n\t\t\tthis.applyMatrix( matrix );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcomputeFaceNormals: function () {\n\n\t\t\tvar cb = new THREE.Vector3(), ab = new THREE.Vector3();\n\n\t\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tvar face = this.faces[ f ];\n\n\t\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tcb.normalize();\n\n\t\t\t\tface.normal.copy( cb );\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\t\tvar v, vl, f, fl, face, vertices;\n\n\t\t\tvertices = new Array( this.vertices.length );\n\n\t\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\t\tvertices[ v ] = new THREE.Vector3();\n\n\t\t\t}\n\n\t\t\tif ( areaWeighted ) {\n\n\t\t\t\t// vertex normals weighted by triangle areas\n\t\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\t\tvar vA, vB, vC;\n\t\t\t\tvar cb = new THREE.Vector3(), ab = new THREE.Vector3();\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\t\tvA = this.vertices[ face.a ];\n\t\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\t\tvertices[ v ].normalize();\n\n\t\t\t}\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.faces.length > 0 ) {\n\n\t\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeMorphNormals: function () {\n\n\t\t\tvar i, il, f, fl, face;\n\n\t\t\t// save original normals\n\t\t\t// - create temp variables on first access\n\t\t\t//   otherwise just copy (for faster repeated calls)\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\t\tvar tmpGeo = new THREE.Geometry();\n\t\t\ttmpGeo.faces = this.faces;\n\n\t\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t\t// create on first access\n\n\t\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\n\n\t\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\t\tfaceNormal = new THREE.Vector3();\n\t\t\t\t\t\tvertexNormals = { a: new THREE.Vector3(), b: new THREE.Vector3(), c: new THREE.Vector3() };\n\n\t\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t\t// set vertices to morph target\n\n\t\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t\t// compute morph normals\n\n\t\t\t\ttmpGeo.computeFaceNormals();\n\t\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t\t// store morph normals\n\n\t\t\t\tvar faceNormal, vertexNormals;\n\n\t\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\t\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restore original normals\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeTangents: function () {\n\n\t\t\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t\t},\n\n\t\tcomputeLineDistances: function () {\n\n\t\t\tvar d = 0;\n\t\t\tvar vertices = this.vertices;\n\n\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\tif ( i > 0 ) {\n\n\t\t\t\t\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\n\n\t\t\t\t}\n\n\t\t\t\tthis.lineDistances[ i ] = d;\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeBoundingBox: function () {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new THREE.Box3();\n\n\t\t\t}\n\n\t\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t\t},\n\n\t\tcomputeBoundingSphere: function () {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new THREE.Sphere();\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t\t},\n\n\t\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\t\tif ( geometry instanceof THREE.Geometry === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar normalMatrix,\n\t\t\tvertexOffset = this.vertices.length,\n\t\t\tvertices1 = this.vertices,\n\t\t\tvertices2 = geometry.vertices,\n\t\t\tfaces1 = this.faces,\n\t\t\tfaces2 = geometry.faces,\n\t\t\tuvs1 = this.faceVertexUvs[ 0 ],\n\t\t\tuvs2 = geometry.faceVertexUvs[ 0 ];\n\n\t\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\t\tif ( matrix !== undefined ) {\n\n\t\t\t\tnormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );\n\n\t\t\t}\n\n\t\t\t// vertices\n\n\t\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\t\tvertices1.push( vertexCopy );\n\n\t\t\t}\n\n\t\t\t// faces\n\n\t\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\t\t\t\tvar face = faces2[ i ], faceCopy, normal, color,\n\t\t\t\tfaceVertexNormals = face.vertexNormals,\n\t\t\t\tfaceVertexColors = face.vertexColors;\n\n\t\t\t\tfaceCopy = new THREE.Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\t\tfaces1.push( faceCopy );\n\n\t\t\t}\n\n\t\t\t// uvs\n\n\t\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\t\tif ( uv === undefined ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t\tuvs1.push( uvCopy );\n\n\t\t\t}\n\n\t\t},\n\n\t\tmergeMesh: function ( mesh ) {\n\n\t\t\tif ( mesh instanceof THREE.Mesh === false ) {\n\n\t\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tmesh.matrixAutoUpdate && mesh.updateMatrix();\n\n\t\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t\t},\n\n\t\t/*\n\t\t * Checks for duplicate vertices with hashmap.\n\t\t * Duplicated vertices are removed\n\t\t * and faces' vertices are updated.\n\t\t */\n\n\t\tmergeVertices: function () {\n\n\t\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\t\tvar unique = [], changes = [];\n\n\t\t\tvar v, key;\n\t\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\t\tvar i, il, face;\n\t\t\tvar indices, j, jl;\n\n\t\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\t\tv = this.vertices[ i ];\n\t\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// if faces are completely degenerate after merging vertices, we\n\t\t\t// have to remove them from the geometry.\n\t\t\tvar faceIndicesToRemove = [];\n\n\t\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\t\tface = this.faces[ i ];\n\n\t\t\t\tface.a = changes[ face.a ];\n\t\t\t\tface.b = changes[ face.b ];\n\t\t\t\tface.c = changes[ face.c ];\n\n\t\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t\tvar dupIndex = - 1;\n\n\t\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t\t// we have to remove the face as nothing can be saved\n\t\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\t\tdupIndex = n;\n\t\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Use unique set of vertices\n\n\t\t\tvar diff = this.vertices.length - unique.length;\n\t\t\tthis.vertices = unique;\n\t\t\treturn diff;\n\n\t\t},\n\n\t\tsortFacesByMaterialIndex: function () {\n\n\t\t\tvar faces = this.faces;\n\t\t\tvar length = faces.length;\n\n\t\t\t// tag faces\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tfaces[ i ]._id = i;\n\n\t\t\t}\n\n\t\t\t// sort faces\n\n\t\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t\t}\n\n\t\t\tfaces.sort( materialIndexSort );\n\n\t\t\t// sort uvs\n\n\t\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\t\tvar newUvs1, newUvs2;\n\n\t\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tvar id = faces[ i ]._id;\n\n\t\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t\t}\n\n\t\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t\t},\n\n\t\ttoJSON: function () {\n\n\t\t\tvar data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.4,\n\t\t\t\t\ttype: 'Geometry',\n\t\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// standard Geometry serialization\n\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\t\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\t\tif ( this.parameters !== undefined ) {\n\n\t\t\t\tvar parameters = this.parameters;\n\n\t\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\n\t\t\t}\n\n\t\t\tvar vertices = [];\n\n\t\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\t\tvar vertex = this.vertices[ i ];\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t\tvar faces = [];\n\t\t\tvar normals = [];\n\t\t\tvar normalsHash = {};\n\t\t\tvar colors = [];\n\t\t\tvar colorsHash = {};\n\t\t\tvar uvs = [];\n\t\t\tvar uvsHash = {};\n\n\t\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\t\tvar face = this.faces[ i ];\n\n\t\t\t\tvar hasMaterial = true;\n\t\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\t\tvar faceType = 0;\n\n\t\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\t\tfaces.push( faceType );\n\t\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\t\tfaces.push( face.materialIndex );\n\n\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\t\tfaces.push(\n\t\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\t\tfaces.push(\n\t\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\t\tfaces.push(\n\t\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t\t}\n\n\t\t\tfunction getNormalIndex( normal ) {\n\n\t\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t\t}\n\n\t\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tfunction getColorIndex( color ) {\n\n\t\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t\t}\n\n\t\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\t\tcolors.push( color.getHex() );\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tfunction getUvIndex( uv ) {\n\n\t\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t\t}\n\n\t\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tdata.data = {};\n\n\t\t\tdata.data.vertices = vertices;\n\t\t\tdata.data.normals = normals;\n\t\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\t\tdata.data.faces = faces;\n\n\t\t\treturn data;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\t/*\n\t\t\t// Handle primitives\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tif ( parameters !== undefined ) {\n\n\t\t\t\tvar values = [];\n\n\t\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t\t}\n\n\t\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\t\tthis.constructor.apply( geometry, values );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t\treturn new this.constructor().copy( this );\n\t\t\t*/\n\n\t\t\treturn new THREE.Geometry().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.vertices = [];\n\t\t\tthis.faces = [];\n\t\t\tthis.faceVertexUvs = [ [] ];\n\n\t\t\tvar vertices = source.vertices;\n\n\t\t\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tvar faces = source.faces;\n\n\t\t\tfor ( var i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\t\tfor ( var k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\tTHREE.GeometryIdCount = 0;\n\n\t// File:src/core/DirectGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.DirectGeometry = function () {\n\n\t\tObject.defineProperty( this, 'id', { value: THREE.GeometryIdCount ++ } );\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'DirectGeometry';\n\n\t\tthis.indices = [];\n\t\tthis.vertices = [];\n\t\tthis.normals = [];\n\t\tthis.colors = [];\n\t\tthis.uvs = [];\n\t\tthis.uvs2 = [];\n\n\t\tthis.groups = [];\n\n\t\tthis.morphTargets = {};\n\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\n\t\t// this.lineDistances = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// update flags\n\n\t\tthis.verticesNeedUpdate = false;\n\t\tthis.normalsNeedUpdate = false;\n\t\tthis.colorsNeedUpdate = false;\n\t\tthis.uvsNeedUpdate = false;\n\t\tthis.groupsNeedUpdate = false;\n\n\t};\n\n\tObject.assign( THREE.DirectGeometry.prototype, THREE.EventDispatcher.prototype, {\n\n\t\tcomputeBoundingBox: THREE.Geometry.prototype.computeBoundingBox,\n\t\tcomputeBoundingSphere: THREE.Geometry.prototype.computeBoundingSphere,\n\n\t\tcomputeFaceNormals: function () {\n\n\t\t\tconsole.warn( 'THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.' );\n\n\t\t},\n\n\t\tcomputeVertexNormals: function () {\n\n\t\t\tconsole.warn( 'THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.' );\n\n\t\t},\n\n\t\tcomputeGroups: function ( geometry ) {\n\n\t\t\tvar group;\n\t\t\tvar groups = [];\n\t\t\tvar materialIndex;\n\n\t\t\tvar faces = geometry.faces;\n\n\t\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\t// materials\n\n\t\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgroup = {\n\t\t\t\t\t\tstart: i * 3,\n\t\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( group !== undefined ) {\n\n\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\tgroups.push( group );\n\n\t\t\t}\n\n\t\t\tthis.groups = groups;\n\n\t\t},\n\n\t\tfromGeometry: function ( geometry ) {\n\n\t\t\tvar faces = geometry.faces;\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t\t// morphs\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\t\tvar morphTargetsPosition;\n\n\t\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\t\tmorphTargetsPosition = [];\n\n\t\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\t\tmorphTargetsPosition[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t\t}\n\n\t\t\tvar morphNormals = geometry.morphNormals;\n\t\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\t\tvar morphTargetsNormal;\n\n\t\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\t\tmorphTargetsNormal = [];\n\n\t\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\t\tmorphTargetsNormal[ i ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tvar skinIndices = geometry.skinIndices;\n\t\t\tvar skinWeights = geometry.skinWeights;\n\n\t\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t\t//\n\n\t\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar normal = face.normal;\n\n\t\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t\t}\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar color = face.color;\n\n\t\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\t\tthis.uvs.push( new THREE.Vector2(), new THREE.Vector2(), new THREE.Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\t\tthis.uvs2.push( new THREE.Vector2(), new THREE.Vector2(), new THREE.Vector2() );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// morphs\n\n\t\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\t\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\t\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t\t}\n\n\t\t\t\t// skins\n\n\t\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.computeGroups( geometry );\n\n\t\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\t// File:src/core/BufferGeometry.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.BufferGeometry = function () {\n\n\t\tObject.defineProperty( this, 'id', { value: THREE.GeometryIdCount ++ } );\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t};\n\n\tObject.assign( THREE.BufferGeometry.prototype, THREE.EventDispatcher.prototype, {\n\n\t\tgetIndex: function () {\n\n\t\t\treturn this.index;\n\n\t\t},\n\n\t\tsetIndex: function ( index ) {\n\n\t\t\tthis.index = index;\n\n\t\t},\n\n\t\taddAttribute: function ( name, attribute ) {\n\n\t\t\tif ( attribute instanceof THREE.BufferAttribute === false && attribute instanceof THREE.InterleavedBufferAttribute === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\t\tthis.addAttribute( name, new THREE.BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( name === 'index' ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\t\tthis.setIndex( attribute );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.attributes[ name ] = attribute;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetAttribute: function ( name ) {\n\n\t\t\treturn this.attributes[ name ];\n\n\t\t},\n\n\t\tremoveAttribute: function ( name ) {\n\n\t\t\tdelete this.attributes[ name ];\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddGroup: function ( start, count, materialIndex ) {\n\n\t\t\tthis.groups.push( {\n\n\t\t\t\tstart: start,\n\t\t\t\tcount: count,\n\t\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t\t} );\n\n\t\t},\n\n\t\tclearGroups: function () {\n\n\t\t\tthis.groups = [];\n\n\t\t},\n\n\t\tsetDrawRange: function ( start, count ) {\n\n\t\t\tthis.drawRange.start = start;\n\t\t\tthis.drawRange.count = count;\n\n\t\t},\n\n\t\tapplyMatrix: function ( matrix ) {\n\n\t\t\tvar position = this.attributes.position;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tmatrix.applyToVector3Array( position.array );\n\t\t\t\tposition.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tvar normal = this.attributes.normal;\n\n\t\t\tif ( normal !== undefined ) {\n\n\t\t\t\tvar normalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );\n\n\t\t\t\tnormalMatrix.applyToVector3Array( normal.array );\n\t\t\t\tnormal.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tthis.computeBoundingBox();\n\n\t\t\t}\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tthis.computeBoundingSphere();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\trotateX: function () {\n\n\t\t\t// rotate geometry around world x-axis\n\n\t\t\tvar m1;\n\n\t\t\treturn function rotateX( angle ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeRotationX( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateY: function () {\n\n\t\t\t// rotate geometry around world y-axis\n\n\t\t\tvar m1;\n\n\t\t\treturn function rotateY( angle ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeRotationY( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\trotateZ: function () {\n\n\t\t\t// rotate geometry around world z-axis\n\n\t\t\tvar m1;\n\n\t\t\treturn function rotateZ( angle ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeRotationZ( angle );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttranslate: function () {\n\n\t\t\t// translate geometry\n\n\t\t\tvar m1;\n\n\t\t\treturn function translate( x, y, z ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tscale: function () {\n\n\t\t\t// scale geometry\n\n\t\t\tvar m1;\n\n\t\t\treturn function scale( x, y, z ) {\n\n\t\t\t\tif ( m1 === undefined ) m1 = new THREE.Matrix4();\n\n\t\t\t\tm1.makeScale( x, y, z );\n\n\t\t\t\tthis.applyMatrix( m1 );\n\n\t\t\t\treturn this;\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tlookAt: function () {\n\n\t\t\tvar obj;\n\n\t\t\treturn function lookAt( vector ) {\n\n\t\t\t\tif ( obj === undefined ) obj = new THREE.Object3D();\n\n\t\t\t\tobj.lookAt( vector );\n\n\t\t\t\tobj.updateMatrix();\n\n\t\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcenter: function () {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tvar offset = this.boundingBox.center().negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn offset;\n\n\t\t},\n\n\t\tsetFromObject: function ( object ) {\n\n\t\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( object instanceof THREE.Points || object instanceof THREE.Line ) {\n\n\t\t\t\tvar positions = new THREE.Float32Attribute( geometry.vertices.length * 3, 3 );\n\t\t\t\tvar colors = new THREE.Float32Attribute( geometry.colors.length * 3, 3 );\n\n\t\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\t\tvar lineDistances = new THREE.Float32Attribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( object instanceof THREE.Mesh ) {\n\n\t\t\t\tif ( geometry instanceof THREE.Geometry ) {\n\n\t\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tupdateFromObject: function ( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( object instanceof THREE.Mesh ) {\n\n\t\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\t\tif ( direct === undefined ) {\n\n\t\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t\t}\n\n\t\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\t\tgeometry = direct;\n\n\t\t\t}\n\n\t\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\t\tvar attribute = this.attributes.position;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\t\tvar attribute = this.attributes.normal;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\t\tvar attribute = this.attributes.color;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\t\tvar attribute = this.attributes.uv;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\t\tvar attribute = this.attributes.lineDistance;\n\n\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\t\tthis.groups = geometry.groups;\n\n\t\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tfromGeometry: function ( geometry ) {\n\n\t\t\tgeometry.__directGeometry = new THREE.DirectGeometry().fromGeometry( geometry );\n\n\t\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t\t},\n\n\t\tfromDirectGeometry: function ( geometry ) {\n\n\t\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\t\tthis.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\t\tthis.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\t\tthis.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\t\tthis.addAttribute( 'uv2', new THREE.BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.indices.length > 0 ) {\n\n\t\t\t\tvar TypeArray = geometry.vertices.length > 65535 ? Uint32Array : Uint16Array;\n\t\t\t\tvar indices = new TypeArray( geometry.indices.length * 3 );\n\t\t\t\tthis.setIndex( new THREE.BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\n\n\t\t\t}\n\n\t\t\t// groups\n\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\t// morphs\n\n\t\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\t\tvar array = [];\n\t\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\t\tvar attribute = new THREE.Float32Attribute( morphTarget.length * 3, 3 );\n\n\t\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget ) );\n\n\t\t\t\t}\n\n\t\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t\t}\n\n\t\t\t// skinning\n\n\t\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\t\tvar skinIndices = new THREE.Float32Attribute( geometry.skinIndices.length * 4, 4 );\n\t\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\t\tvar skinWeights = new THREE.Float32Attribute( geometry.skinWeights.length * 4, 4 );\n\t\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcomputeBoundingBox: function () {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new THREE.Box3();\n\n\t\t\t}\n\n\t\t\tvar positions = this.attributes.position.array;\n\n\t\t\tif ( positions !== undefined ) {\n\n\t\t\t\tthis.boundingBox.setFromArray( positions );\n\n\t\t\t} else {\n\n\t\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t\t}\n\n\t\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t},\n\n\t\tcomputeBoundingSphere: function () {\n\n\t\t\tvar box = new THREE.Box3();\n\t\t\tvar vector = new THREE.Vector3();\n\n\t\t\treturn function computeBoundingSphere() {\n\n\t\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\t\tthis.boundingSphere = new THREE.Sphere();\n\n\t\t\t\t}\n\n\t\t\t\tvar positions = this.attributes.position;\n\n\t\t\t\tif ( positions ) {\n\n\t\t\t\t\tvar array = positions.array;\n\t\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\t\tbox.setFromArray( array );\n\t\t\t\t\tbox.center( center );\n\n\t\t\t\t\t// hoping to find a boundingSphere with a radius smaller than the\n\t\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\t\tfor ( var i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\t\t\t\tvector.fromArray( array, i );\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}(),\n\n\t\tcomputeFaceNormals: function () {\n\n\t\t\t// backwards compatibility\n\n\t\t},\n\n\t\tcomputeVertexNormals: function () {\n\n\t\t\tvar index = this.index;\n\t\t\tvar attributes = this.attributes;\n\t\t\tvar groups = this.groups;\n\n\t\t\tif ( attributes.position ) {\n\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\t\tthis.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// reset existing normals to zero\n\n\t\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar normals = attributes.normal.array;\n\n\t\t\t\tvar vA, vB, vC,\n\n\t\t\t\tpA = new THREE.Vector3(),\n\t\t\t\tpB = new THREE.Vector3(),\n\t\t\t\tpC = new THREE.Vector3(),\n\n\t\t\t\tcb = new THREE.Vector3(),\n\t\t\t\tab = new THREE.Vector3();\n\n\t\t\t\t// indexed elements\n\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\t\tthis.addGroup( 0, indices.length );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\n\n\t\t\t\t\t\tvar group = groups[ j ];\n\n\t\t\t\t\t\tvar start = group.start;\n\t\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.normalizeNormals();\n\n\t\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t\t}\n\n\t\t},\n\n\t\tmerge: function ( geometry, offset ) {\n\n\t\t\tif ( geometry instanceof THREE.BufferGeometry === false ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( offset === undefined ) offset = 0;\n\n\t\t\tvar attributes = this.attributes;\n\n\t\t\tfor ( var key in attributes ) {\n\n\t\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\t\tvar attribute1 = attributes[ key ];\n\t\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\t\tvar attributeSize = attribute2.itemSize;\n\n\t\t\t\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\n\n\t\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tnormalizeNormals: function () {\n\n\t\t\tvar normals = this.attributes.normal.array;\n\n\t\t\tvar x, y, z, n;\n\n\t\t\tfor ( var i = 0, il = normals.length; i < il; i += 3 ) {\n\n\t\t\t\tx = normals[ i ];\n\t\t\t\ty = normals[ i + 1 ];\n\t\t\t\tz = normals[ i + 2 ];\n\n\t\t\t\tn = 1.0 / Math.sqrt( x * x + y * y + z * z );\n\n\t\t\t\tnormals[ i ] *= n;\n\t\t\t\tnormals[ i + 1 ] *= n;\n\t\t\t\tnormals[ i + 2 ] *= n;\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoNonIndexed: function () {\n\n\t\t\tif ( this.index === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t\tvar geometry2 = new THREE.BufferGeometry();\n\n\t\t\tvar indices = this.index.array;\n\t\t\tvar attributes = this.attributes;\n\n\t\t\tfor ( var name in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ name ];\n\n\t\t\t\tvar array = attribute.array;\n\t\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\t\tvar index = 0, index2 = 0;\n\n\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry2.addAttribute( name, new THREE.BufferAttribute( array2, itemSize ) );\n\n\t\t\t}\n\n\t\t\treturn geometry2;\n\n\t\t},\n\n\t\ttoJSON: function () {\n\n\t\t\tvar data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.4,\n\t\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// standard BufferGeometry serialization\n\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\t\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\t\tif ( this.parameters !== undefined ) {\n\n\t\t\t\tvar parameters = this.parameters;\n\n\t\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\n\t\t\t}\n\n\t\t\tdata.data = { attributes: {} };\n\n\t\t\tvar index = this.index;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar array = Array.prototype.slice.call( index.array );\n\n\t\t\t\tdata.data.index = {\n\t\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\t\tarray: array\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tvar attributes = this.attributes;\n\n\t\t\tfor ( var key in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ key ];\n\n\t\t\t\tvar array = Array.prototype.slice.call( attribute.array );\n\n\t\t\t\tdata.data.attributes[ key ] = {\n\t\t\t\t\titemSize: attribute.itemSize,\n\t\t\t\t\ttype: attribute.array.constructor.name,\n\t\t\t\t\tarray: array,\n\t\t\t\t\tnormalized: attribute.normalized\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tvar groups = this.groups;\n\n\t\t\tif ( groups.length > 0 ) {\n\n\t\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t\t}\n\n\t\t\tvar boundingSphere = this.boundingSphere;\n\n\t\t\tif ( boundingSphere !== null ) {\n\n\t\t\t\tdata.data.boundingSphere = {\n\t\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\t\tradius: boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\t/*\n\t\t\t// Handle primitives\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tif ( parameters !== undefined ) {\n\n\t\t\t\tvar values = [];\n\n\t\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\t\tvalues.push( parameters[ key ] );\n\n\t\t\t\t}\n\n\t\t\t\tvar geometry = Object.create( this.constructor.prototype );\n\t\t\t\tthis.constructor.apply( geometry, values );\n\t\t\t\treturn geometry;\n\n\t\t\t}\n\n\t\t\treturn new this.constructor().copy( this );\n\t\t\t*/\n\n\t\t\treturn new THREE.BufferGeometry().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tvar index = source.index;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tthis.setIndex( index.clone() );\n\n\t\t\t}\n\n\t\t\tvar attributes = source.attributes;\n\n\t\t\tfor ( var name in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ name ];\n\t\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t\t}\n\n\t\t\tvar groups = source.groups;\n\n\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\t\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\tTHREE.BufferGeometry.MaxIndex = 65535;\n\n\t// File:src/core/InstancedBufferGeometry.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tTHREE.InstancedBufferGeometry = function () {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.maxInstancedCount = undefined;\n\n\t};\n\n\tTHREE.InstancedBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.InstancedBufferGeometry.prototype.constructor = THREE.InstancedBufferGeometry;\n\n\tTHREE.InstancedBufferGeometry.prototype.addGroup = function ( start, count, instances ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tinstances: instances\n\n\t\t} );\n\n\t};\n\n\tTHREE.InstancedBufferGeometry.prototype.copy = function ( source ) {\n\n\t\tvar index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone() );\n\n\t\t}\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\t\t\tthis.addAttribute( name, attribute.clone() );\n\n\t\t}\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tvar group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.instances );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/core/Uniform.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Uniform = function ( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t\tthis.dynamic = false;\n\n\t};\n\n\tTHREE.Uniform.prototype = {\n\n\t\tconstructor: THREE.Uniform,\n\n\t\tonUpdate: function ( callback ) {\n\n\t\t\tthis.dynamic = true;\n\t\t\tthis.onUpdateCallback = callback;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// File:src/animation/AnimationAction.js\n\n\t/**\n\t *\n\t * Action provided by AnimationMixer for scheduling clip playback on specific\n\t * objects.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t *\n\t */\n\n\tTHREE.AnimationAction = function() {\n\n\t\tthrow new Error( \"THREE.AnimationAction: \" +\n\t\t\t\t\"Use mixer.clipAction for construction.\" );\n\n\t};\n\n\tTHREE.AnimationAction._new =\n\t\t\tfunction AnimationAction( mixer, clip, localRoot ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot || null;\n\n\t\tvar tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tvar interpolantSettings = {\n\t\t\t\tendingStart: \tTHREE.ZeroCurvatureEnding,\n\t\t\t\tendingEnd:\t\tTHREE.ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants;\t// bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null;\t\t\t// for the memory manager\n\t\tthis._byClipCacheIndex = null;\t\t// for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = THREE.LoopRepeat;\n\t\tthis._loopCount = -1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; \t\t// no. of repetitions when looping\n\n\t\tthis.paused = false;\t\t\t\t// false -> zero effective time scale\n\t\tthis.enabled = true;\t\t\t\t// true -> zero effective weight\n\n\t\tthis.clampWhenFinished \t= false;\t// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart \t= true;\t\t// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd\t\t= true;\t\t// clips for start, loop and end\n\n\t};\n\n\tTHREE.AnimationAction._new.prototype = {\n\n\t\tconstructor: THREE.AnimationAction._new,\n\n\t\t// State & Scheduling\n\n\t\tplay: function() {\n\n\t\t\tthis._mixer._activateAction( this );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tstop: function() {\n\n\t\t\tthis._mixer._deactivateAction( this );\n\n\t\t\treturn this.reset();\n\n\t\t},\n\n\t\treset: function() {\n\n\t\t\tthis.paused = false;\n\t\t\tthis.enabled = true;\n\n\t\t\tthis.time = 0;\t\t\t// restart clip\n\t\t\tthis._loopCount = -1;\t// forget previous loops\n\t\t\tthis._startTime = null;\t// forget scheduling\n\n\t\t\treturn this.stopFading().stopWarping();\n\n\t\t},\n\n\t\tisRunning: function() {\n\n\t\t\tvar start = this._startTime;\n\n\t\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t\t},\n\n\t\t// return true when play has been called\n\t\tisScheduled: function() {\n\n\t\t\treturn this._mixer._isActiveAction( this );\n\n\t\t},\n\n\t\tstartAt: function( time ) {\n\n\t\t\tthis._startTime = time;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetLoop: function( mode, repetitions ) {\n\n\t\t\tthis.loop = mode;\n\t\t\tthis.repetitions = repetitions;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// Weight\n\n\t\t// set the weight stopping any scheduled fading\n\t\t// although .enabled = false yields an effective weight of zero, this\n\t\t// method does *not* change .enabled, because it would be confusing\n\t\tsetEffectiveWeight: function( weight ) {\n\n\t\t\tthis.weight = weight;\n\n\t\t\t// note: same logic as when updated at runtime\n\t\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\t\treturn this.stopFading();\n\n\t\t},\n\n\t\t// return the weight considering fading and .enabled\n\t\tgetEffectiveWeight: function() {\n\n\t\t\treturn this._effectiveWeight;\n\n\t\t},\n\n\t\tfadeIn: function( duration ) {\n\n\t\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t\t},\n\n\t\tfadeOut: function( duration ) {\n\n\t\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t\t},\n\n\t\tcrossFadeFrom: function( fadeOutAction, duration, warp ) {\n\n\t\t\tvar mixer = this._mixer;\n\n\t\t\tfadeOutAction.fadeOut( duration );\n\t\t\tthis.fadeIn( duration );\n\n\t\t\tif( warp ) {\n\n\t\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tcrossFadeTo: function( fadeInAction, duration, warp ) {\n\n\t\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t\t},\n\n\t\tstopFading: function() {\n\n\t\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\t\tif ( weightInterpolant !== null ) {\n\n\t\t\t\tthis._weightInterpolant = null;\n\t\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// Time Scale Control\n\n\t\t// set the weight stopping any scheduled warping\n\t\t// although .paused = true yields an effective time scale of zero, this\n\t\t// method does *not* change .paused, because it would be confusing\n\t\tsetEffectiveTimeScale: function( timeScale ) {\n\n\t\t\tthis.timeScale = timeScale;\n\t\t\tthis._effectiveTimeScale = this.paused ? 0 :timeScale;\n\n\t\t\treturn this.stopWarping();\n\n\t\t},\n\n\t\t// return the time scale considering warping and .paused\n\t\tgetEffectiveTimeScale: function() {\n\n\t\t\treturn this._effectiveTimeScale;\n\n\t\t},\n\n\t\tsetDuration: function( duration ) {\n\n\t\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\t\treturn this.stopWarping();\n\n\t\t},\n\n\t\tsyncWith: function( action ) {\n\n\t\t\tthis.time = action.time;\n\t\t\tthis.timeScale = action.timeScale;\n\n\t\t\treturn this.stopWarping();\n\n\t\t},\n\n\t\thalt: function( duration ) {\n\n\t\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t\t},\n\n\t\twarp: function( startTimeScale, endTimeScale, duration ) {\n\n\t\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\t\ttimeScale = this.timeScale;\n\n\t\t\tif ( interpolant === null ) {\n\n\t\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t\t}\n\n\t\t\tvar times = interpolant.parameterPositions,\n\t\t\t\tvalues = interpolant.sampleValues;\n\n\t\t\ttimes[ 0 ] = now;\n\t\t\ttimes[ 1 ] = now + duration;\n\n\t\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tstopWarping: function() {\n\n\t\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\t\tthis._timeScaleInterpolant = null;\n\t\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// Object Accessors\n\n\t\tgetMixer: function() {\n\n\t\t\treturn this._mixer;\n\n\t\t},\n\n\t\tgetClip: function() {\n\n\t\t\treturn this._clip;\n\n\t\t},\n\n\t\tgetRoot: function() {\n\n\t\t\treturn this._localRoot || this._mixer._root;\n\n\t\t},\n\n\t\t// Interna\n\n\t\t_update: function( time, deltaTime, timeDirection, accuIndex ) {\n\t\t\t// called by the mixer\n\n\t\t\tvar startTime = this._startTime;\n\n\t\t\tif ( startTime !== null ) {\n\n\t\t\t\t// check for scheduled start of action\n\n\t\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t\t}\n\n\t\t\t\t// start\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t\t// apply time scale and advance time\n\n\t\t\tdeltaTime *= this._updateTimeScale( time );\n\t\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t\t// note: _updateTime may disable the action resulting in\n\t\t\t// an effective weight of 0\n\n\t\t\tvar weight = this._updateWeight( time );\n\n\t\t\tif ( weight > 0 ) {\n\n\t\t\t\tvar interpolants = this._interpolants;\n\t\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_updateWeight: function( time ) {\n\n\t\t\tvar weight = 0;\n\n\t\t\tif ( this.enabled ) {\n\n\t\t\t\tweight = this.weight;\n\t\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._effectiveWeight = weight;\n\t\t\treturn weight;\n\n\t\t},\n\n\t\t_updateTimeScale: function( time ) {\n\n\t\t\tvar timeScale = 0;\n\n\t\t\tif ( ! this.paused ) {\n\n\t\t\t\ttimeScale = this.timeScale;\n\n\t\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._effectiveTimeScale = timeScale;\n\t\t\treturn timeScale;\n\n\t\t},\n\n\t\t_updateTime: function( deltaTime ) {\n\n\t\t\tvar time = this.time + deltaTime;\n\n\t\t\tif ( deltaTime === 0 ) return time;\n\n\t\t\tvar duration = this._clip.duration,\n\n\t\t\t\tloop = this.loop,\n\t\t\t\tloopCount = this._loopCount;\n\n\t\t\tif ( loop === THREE.LoopOnce ) {\n\n\t\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t\t// just started\n\n\t\t\t\t\tthis.loopCount = 0;\n\t\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t\t}\n\n\t\t\t\thandle_stop: {\n\n\t\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\t\ttime = duration;\n\n\t\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\t\ttime = 0;\n\n\t\t\t\t\t} else break handle_stop;\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\t\tvar pingPong = ( loop === THREE.LoopPingPong );\n\n\t\t\t\tif ( loopCount === -1 ) {\n\t\t\t\t\t// just started\n\n\t\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\t\ttrue, this.repetitions === 0, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\t\tthis._setEndings(\n\t\t\t\t\t\t\t\tthis.repetitions === 0, true, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( time >= duration || time < 0 ) {\n\t\t\t\t\t// wrap around\n\n\t\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\t\tif ( pending < 0 ) {\n\t\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// keep running\n\n\t\t\t\t\t\tif ( pending === 0 ) {\n\t\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\t\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\t\tthis.time = time;\n\t\t\t\t\treturn duration - time;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.time = time;\n\t\t\treturn time;\n\n\t\t},\n\n\t\t_setEndings: function( atStart, atEnd, pingPong ) {\n\n\t\t\tvar settings = this._interpolantSettings;\n\n\t\t\tif ( pingPong ) {\n\n\t\t\t\tsettings.endingStart \t= THREE.ZeroSlopeEnding;\n\t\t\t\tsettings.endingEnd\t\t= THREE.ZeroSlopeEnding;\n\n\t\t\t} else {\n\n\t\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\t\tif ( atStart ) {\n\n\t\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ?\n\t\t\t\t\t\t\tTHREE.ZeroSlopeEnding : THREE.ZeroCurvatureEnding;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsettings.endingStart = THREE.WrapAroundEnding;\n\n\t\t\t\t}\n\n\t\t\t\tif ( atEnd ) {\n\n\t\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ?\n\t\t\t\t\t\t\tTHREE.ZeroSlopeEnding : THREE.ZeroCurvatureEnding;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsettings.endingEnd \t = THREE.WrapAroundEnding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_scheduleFading: function( duration, weightNow, weightThen ) {\n\n\t\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\t\tinterpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant === null ) {\n\n\t\t\t\tinterpolant = mixer._lendControlInterpolant(),\n\t\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t\t}\n\n\t\t\tvar times = interpolant.parameterPositions,\n\t\t\t\tvalues = interpolant.sampleValues;\n\n\t\t\ttimes[ 0 ] = now; \t\t\t\tvalues[ 0 ] = weightNow;\n\t\t\ttimes[ 1 ] = now + duration;\tvalues[ 1 ] = weightThen;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\n\t// File:src/animation/AnimationClip.js\n\n\t/**\n\t *\n\t * Reusable set of Tracks that represent an animation.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t */\n\n\tTHREE.AnimationClip = function ( name, duration, tracks ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = ( duration !== undefined ) ? duration : -1;\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t\t// maybe only do these on demand, as doing them here could potentially slow down loading\n\t\t// but leaving these here during development as this ensures a lot of testing of these functions\n\t\tthis.trim();\n\t\tthis.optimize();\n\n\t};\n\n\tTHREE.AnimationClip.prototype = {\n\n\t\tconstructor: THREE.AnimationClip,\n\n\t\tresetDuration: function() {\n\n\t\t\tvar tracks = this.tracks,\n\t\t\t\tduration = 0;\n\n\t\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\t\tvar track = this.tracks[ i ];\n\n\t\t\t\tduration = Math.max(\n\t\t\t\t\t\tduration, track.times[ track.times.length - 1 ] );\n\n\t\t\t}\n\n\t\t\tthis.duration = duration;\n\n\t\t},\n\n\t\ttrim: function() {\n\n\t\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\toptimize: function() {\n\n\t\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\t\tthis.tracks[ i ].optimize();\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// Static methods:\n\n\tObject.assign( THREE.AnimationClip, {\n\n\t\tparse: function( json ) {\n\n\t\t\tvar tracks = [],\n\t\t\t\tjsonTracks = json.tracks,\n\t\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\t\ttracks.push( THREE.KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t\t}\n\n\t\t\treturn new THREE.AnimationClip( json.name, json.duration, tracks );\n\n\t\t},\n\n\n\t\ttoJSON: function( clip ) {\n\n\t\t\tvar tracks = [],\n\t\t\t\tclipTracks = clip.tracks;\n\n\t\t\tvar json = {\n\n\t\t\t\t'name': clip.name,\n\t\t\t\t'duration': clip.duration,\n\t\t\t\t'tracks': tracks\n\n\t\t\t};\n\n\t\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\t\ttracks.push( THREE.KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn json;\n\n\t\t},\n\n\n\t\tCreateFromMorphTargetSequence: function( name, morphTargetSequence, fps, noLoop ) {\n\n\t\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\t\tvar tracks = [];\n\n\t\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\ttimes.push(\n\t\t\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\t\tvar order = THREE.AnimationUtils.getKeyframeOrder( times );\n\t\t\t\ttimes = THREE.AnimationUtils.sortedArray( times, 1, order );\n\t\t\t\tvalues = THREE.AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t\t// last frame as well for perfect loop.\n\t\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\ttracks.push(\n\t\t\t\t\t\tnew THREE.NumberKeyframeTrack(\n\t\t\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\t\t\ttimes, values\n\t\t\t\t\t\t).scale( 1.0 / fps ) );\n\t\t\t}\n\n\t\t\treturn new THREE.AnimationClip( name, -1, tracks );\n\n\t\t},\n\n\t\tfindByName: function( objectOrClipArray, name ) {\n\n\t\t\tvar clipArray = objectOrClipArray;\n\n\t\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\t\tvar o = objectOrClipArray;\n\t\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\t\treturn clipArray[ i ];\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t},\n\n\t\tCreateClipsFromMorphTargetSequences: function( morphTargets, fps, noLoop ) {\n\n\t\t\tvar animationToMorphTargets = {};\n\n\t\t\t// tested with https://regex101.com/ on trick sequences\n\t\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t\t// sort morph target names into animation groups based\n\t\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar clips = [];\n\n\t\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\t\tclips.push( THREE.AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t\t}\n\n\t\t\treturn clips;\n\n\t\t},\n\n\t\t// parse the animation.hierarchy format\n\t\tparseAnimation: function( animation, bones, nodeName ) {\n\n\t\t\tif ( ! animation ) {\n\n\t\t\t\tconsole.error( \"  no animation in JSONLoader data\" );\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar addNonemptyTrack = function(\n\t\t\t\t\ttrackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t\t// only return track if there are actually keys.\n\t\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tTHREE.AnimationUtils.flattenJSON(\n\t\t\t\t\t\t\tanimationKeys, times, values, propertyName );\n\n\t\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t\tvar tracks = [];\n\n\t\t\tvar clipName = animation.name || 'default';\n\t\t\t// automatic length determination in AnimationClip.\n\t\t\tvar duration = animation.length || -1;\n\t\t\tvar fps = animation.fps || 30;\n\n\t\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t\t// skip empty tracks\n\t\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t\t// process morph targets in a way exactly compatible\n\t\t\t\t// with AnimationHandler.init( animation )\n\t\t\t\tif ( animationKeys[0].morphTargets ) {\n\n\t\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\t\tvar morphTargetNames = {};\n\t\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\t\tif ( animationKeys[k].morphTargets ) {\n\n\t\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[k].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[k].morphTargets[m] ] = -1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t\t// the morphTarget is named.\n\t\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\t\tvar times = [];\n\t\t\t\t\t\tvar values = [];\n\n\t\t\t\t\t\tfor ( var m = 0;\n\t\t\t\t\t\t\t\tm !== animationKeys[k].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\t\tvar animationKey = animationKeys[k];\n\n\t\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttracks.push( new THREE.NumberKeyframeTrack(\n\t\t\t\t\t\t\t\t'.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t\t} else {\n\t\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\t\tTHREE.VectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\t\tTHREE.QuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\t\taddNonemptyTrack(\n\t\t\t\t\t\t\tTHREE.VectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( tracks.length === 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar clip = new THREE.AnimationClip( clipName, duration, tracks );\n\n\t\t\treturn clip;\n\n\t\t}\n\n\t} );\n\n\t// File:src/animation/AnimationMixer.js\n\n\t/**\n\t *\n\t * Player for AnimationClips.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.AnimationMixer = function( root ) {\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1.0;\n\n\t};\n\n\tObject.assign( THREE.AnimationMixer.prototype, THREE.EventDispatcher.prototype, {\n\n\t\t// return an action for a clip optionally using a custom root target\n\t\t// object (this method allocates a lot of dynamic memory in case a\n\t\t// previously unknown clip/root combination is specified)\n\t\tclipAction: function( clip, optionalRoot ) {\n\n\t\t\tvar root = optionalRoot || this._root,\n\t\t\t\trootUuid = root.uuid,\n\n\t\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\t\tTHREE.AnimationClip.findByName( root, clip ) : clip,\n\n\t\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\t\tprototypeAction = null;\n\n\t\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t\tvar existingAction =\n\t\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\t\treturn existingAction;\n\n\t\t\t\t}\n\n\t\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t\t// the bindings again but can just copy\n\t\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t\t// also, take the clip from the prototype action\n\t\t\t\tif ( clipObject === null )\n\t\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t\t}\n\n\t\t\t// clip must be known when specified via string\n\t\t\tif ( clipObject === null ) return null;\n\n\t\t\t// allocate all resources required to run it\n\t\t\tvar newAction = new THREE.\n\t\t\t\t\tAnimationMixer._Action( this, clipObject, optionalRoot );\n\n\t\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t\t// and make the action known to the memory manager\n\t\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\t\treturn newAction;\n\n\t\t},\n\n\t\t// get an existing action\n\t\texistingAction: function( clip, optionalRoot ) {\n\n\t\t\tvar root = optionalRoot || this._root,\n\t\t\t\trootUuid = root.uuid,\n\n\t\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\t\t\tTHREE.AnimationClip.findByName( root, clip ) : clip,\n\n\t\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t},\n\n\t\t// deactivates all previously scheduled actions\n\t\tstopAllAction: function() {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tnActions = this._nActiveActions,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = this._nActiveBindings;\n\n\t\t\tthis._nActiveActions = 0;\n\t\t\tthis._nActiveBindings = 0;\n\n\t\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\t\tactions[ i ].reset();\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\t\tbindings[ i ].useCount = 0;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// advance the time and update apply the animation\n\t\tupdate: function( deltaTime ) {\n\n\t\t\tdeltaTime *= this.timeScale;\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tnActions = this._nActiveActions,\n\n\t\t\t\ttime = this.time += deltaTime,\n\t\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t\t// run active actions\n\n\t\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\t\tvar action = actions[ i ];\n\n\t\t\t\tif ( action.enabled ) {\n\n\t\t\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// update scene graph\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tnBindings = this._nActiveBindings;\n\n\t\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// return this mixer's root target object\n\t\tgetRoot: function() {\n\n\t\t\treturn this._root;\n\n\t\t},\n\n\t\t// free all resources specific to a particular clip\n\t\tuncacheClip: function( clip ) {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tclipUuid = clip.uuid,\n\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t\t// iteration state and also require updating the state we can\n\t\t\t\t// just throw away\n\n\t\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\t\taction._cacheIndex = null;\n\t\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\t\tactions.pop();\n\n\t\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t\t}\n\n\t\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t\t}\n\n\t\t},\n\n\t\t// free all resources specific to a particular root target object\n\t\tuncacheRoot: function( root ) {\n\n\t\t\tvar rootUuid = root.uuid,\n\t\t\t\tactionsByClip = this._actionsByClip;\n\n\t\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\t\tif ( action !== undefined ) {\n\n\t\t\t\t\tthis._deactivateAction( action );\n\t\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\t\tif ( bindingByName !== undefined ) {\n\n\t\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t// remove a targeted clip from the cache\n\t\tuncacheAction: function( clip, optionalRoot ) {\n\n\t\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\t\tif ( action !== null ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\tTHREE.AnimationMixer._Action = THREE.AnimationAction._new;\n\n\t// Implementation details:\n\n\tObject.assign( THREE.AnimationMixer.prototype, {\n\n\t\t_bindAction: function( action, prototypeAction ) {\n\n\t\t\tvar root = action._localRoot || this._root,\n\t\t\t\ttracks = action._clip.tracks,\n\t\t\t\tnTracks = tracks.length,\n\t\t\t\tbindings = action._propertyBindings,\n\t\t\t\tinterpolants = action._interpolants,\n\t\t\t\trootUuid = root.uuid,\n\t\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\t\tif ( bindingsByName === undefined ) {\n\n\t\t\t\tbindingsByName = {};\n\t\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\t\tvar track = tracks[ i ],\n\t\t\t\t\ttrackName = track.name,\n\t\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\t\tbinding = new THREE.PropertyMixer(\n\t\t\t\t\t\t\tTHREE.PropertyBinding.create( root, trackName, path ),\n\t\t\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t\t}\n\n\t\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t\t}\n\n\t\t},\n\n\t\t_activateAction: function( action ) {\n\n\t\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\t\tthis._bindAction( action,\n\t\t\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t\t}\n\n\t\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t\t// increment reference counts / sort out state\n\t\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis._lendAction( action );\n\n\t\t\t}\n\n\t\t},\n\n\t\t_deactivateAction: function( action ) {\n\n\t\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t\t// decrement reference counts / sort out state\n\t\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis._takeBackAction( action );\n\n\t\t\t}\n\n\t\t},\n\n\t\t// Memory manager\n\n\t\t_initMemoryManager: function() {\n\n\t\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\t\tthis._nActiveActions = 0;\n\n\t\t\tthis._actionsByClip = {};\n\t\t\t// inside:\n\t\t\t// {\n\t\t\t// \t\tknownActions: Array< _Action >\t- used as prototypes\n\t\t\t// \t\tactionByRoot: _Action\t\t\t- lookup\n\t\t\t// }\n\n\n\t\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\t\tthis._nActiveBindings = 0;\n\n\t\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\t\tthis._controlInterpolants = []; // same game as above\n\t\t\tthis._nActiveControlInterpolants = 0;\n\n\t\t\tvar scope = this;\n\n\t\t\tthis.stats = {\n\n\t\t\t\tactions: {\n\t\t\t\t\tget total() { return scope._actions.length; },\n\t\t\t\t\tget inUse() { return scope._nActiveActions; }\n\t\t\t\t},\n\t\t\t\tbindings: {\n\t\t\t\t\tget total() { return scope._bindings.length; },\n\t\t\t\t\tget inUse() { return scope._nActiveBindings; }\n\t\t\t\t},\n\t\t\t\tcontrolInterpolants: {\n\t\t\t\t\tget total() { return scope._controlInterpolants.length; },\n\t\t\t\t\tget inUse() { return scope._nActiveControlInterpolants; }\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t},\n\n\t\t// Memory management for _Action objects\n\n\t\t_isActiveAction: function( action ) {\n\n\t\t\tvar index = action._cacheIndex;\n\t\t\treturn index !== null && index < this._nActiveActions;\n\n\t\t},\n\n\t\t_addInactiveAction: function( action, clipUuid, rootUuid ) {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\t\tif ( actionsForClip === undefined ) {\n\n\t\t\t\tactionsForClip = {\n\n\t\t\t\t\tknownActions: [ action ],\n\t\t\t\t\tactionByRoot: {}\n\n\t\t\t\t};\n\n\t\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t\t} else {\n\n\t\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\t\tknownActions.push( action );\n\n\t\t\t}\n\n\t\t\taction._cacheIndex = actions.length;\n\t\t\tactions.push( action );\n\n\t\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t\t},\n\n\t\t_removeInactiveAction: function( action ) {\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\t\tcacheIndex = action._cacheIndex;\n\n\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\tactions.pop();\n\n\t\t\taction._cacheIndex = null;\n\n\n\t\t\tvar clipUuid = action._clip.uuid,\n\t\t\t\tactionsByClip = this._actionsByClip,\n\t\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\t\tlastKnownAction =\n\t\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\t\tknownActionsForClip.pop();\n\n\t\t\taction._byClipCacheIndex = null;\n\n\n\t\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\t\trootUuid = ( actions._localRoot || this._root ).uuid;\n\n\t\t\tdelete actionByRoot[ rootUuid ];\n\n\t\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t\t}\n\n\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t},\n\n\t\t_removeInactiveBindingsForAction: function( action ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\t\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tvar binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_lendAction: function( action ) {\n\n\t\t\t// [ active actions |  inactive actions  ]\n\t\t\t// [  active actions >| inactive actions ]\n\t\t\t//                 s        a\n\t\t\t//                  <-swap->\n\t\t\t//                 a        s\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\t\taction._cacheIndex = lastActiveIndex;\n\t\t\tactions[ lastActiveIndex ] = action;\n\n\t\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t\t},\n\n\t\t_takeBackAction: function( action ) {\n\n\t\t\t// [  active actions  | inactive actions ]\n\t\t\t// [ active actions |< inactive actions  ]\n\t\t\t//        a        s\n\t\t\t//         <-swap->\n\t\t\t//        s        a\n\n\t\t\tvar actions = this._actions,\n\t\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\t\taction._cacheIndex = firstInactiveIndex;\n\t\t\tactions[ firstInactiveIndex ] = action;\n\n\t\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t\t},\n\n\t\t// Memory management for PropertyMixer objects\n\n\t\t_addInactiveBinding: function( binding, rootUuid, trackName ) {\n\n\t\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\t\tbindings = this._bindings;\n\n\t\t\tif ( bindingByName === undefined ) {\n\n\t\t\t\tbindingByName = {};\n\t\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t\t}\n\n\t\t\tbindingByName[ trackName ] = binding;\n\n\t\t\tbinding._cacheIndex = bindings.length;\n\t\t\tbindings.push( binding );\n\n\t\t},\n\n\t\t_removeInactiveBinding: function( binding ) {\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tpropBinding = binding.binding,\n\t\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\t\ttrackName = propBinding.path,\n\t\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\t\tbindings.pop();\n\n\t\t\tdelete bindingByName[ trackName ];\n\n\t\t\tremove_empty_map: {\n\n\t\t\t\tfor ( var _ in bindingByName ) break remove_empty_map;\n\n\t\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t\t}\n\n\t\t},\n\n\t\t_lendBinding: function( binding ) {\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\t\tbinding._cacheIndex = lastActiveIndex;\n\t\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t\t},\n\n\t\t_takeBackBinding: function( binding ) {\n\n\t\t\tvar bindings = this._bindings,\n\t\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t\t},\n\n\n\t\t// Memory management of Interpolants for weight and time scale\n\n\t\t_lendControlInterpolant: function() {\n\n\t\t\tvar interpolants = this._controlInterpolants,\n\t\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\t\tif ( interpolant === undefined ) {\n\n\t\t\t\tinterpolant = new THREE.LinearInterpolant(\n\t\t\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t\t}\n\n\t\t\treturn interpolant;\n\n\t\t},\n\n\t\t_takeBackControlInterpolant: function( interpolant ) {\n\n\t\t\tvar interpolants = this._controlInterpolants,\n\t\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t\t},\n\n\t\t_controlInterpolantsResultBuffer: new Float32Array( 1 )\n\n\t} );\n\n\t// File:src/animation/AnimationObjectGroup.js\n\n\t/**\n\t *\n\t * A group of objects that receives a shared animation state.\n\t *\n\t * Usage:\n\t *\n\t * \t-\tAdd objects you would otherwise pass as 'root' to the\n\t * \t\tconstructor or the .clipAction method of AnimationMixer.\n\t *\n\t * \t-\tInstead pass this object as 'root'.\n\t *\n\t * \t-\tYou can also add and remove objects later when the mixer\n\t * \t\tis running.\n\t *\n\t * Note:\n\t *\n\t *  \tObjects of this class appear as one object to the mixer,\n\t *  \tso cache control of the individual objects must be done\n\t *  \ton the group.\n\t *\n\t * Limitation:\n\t *\n\t * \t- \tThe animated properties must be compatible among the\n\t * \t\tall objects in the group.\n\t *\n\t *  -\tA single property can either be controlled through a\n\t *  \ttarget group or directly, but not both.\n\t *\n\t * @author tschw\n\t */\n\n\tTHREE.AnimationObjectGroup = function( var_args ) {\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0;\t\t\t// threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tvar indices = {};\n\t\tthis._indicesByUUID = indices;\t\t// for bookkeeping\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = [];\t\t\t\t\t// inside: string\n\t\tthis._parsedPaths = [];\t\t\t\t// inside: { we don't care, here }\n\t\tthis._bindings = []; \t\t\t\t// inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; \t// inside: indices in these arrays\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() { return scope._objects.length; },\n\t\t\t\tget inUse() { return this.total - scope.nCachedObjects_;  }\n\t\t\t},\n\n\t\t\tget bindingsPerObject() { return scope._bindings.length; }\n\n\t\t};\n\n\t};\n\n\tTHREE.AnimationObjectGroup.prototype = {\n\n\t\tconstructor: THREE.AnimationObjectGroup,\n\n\t\tadd: function( var_args ) {\n\n\t\t\tvar objects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\tpaths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = bindings.length;\n\n\t\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = arguments[ i ],\n\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index === undefined ) {\n\n\t\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\t\tindex = nObjects ++;\n\t\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\t\tobjects.push( object );\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tbindings[ j ].push(\n\t\t\t\t\t\t\t\tnew THREE.PropertyBinding(\n\t\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\t\tvar knownObject = objects[ index ];\n\n\t\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\t\tbinding = new THREE.PropertyBinding(\n\t\t\t\t\t\t\t\t\tobject, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( objects[ index ] !== knownObject) {\n\n\t\t\t\t\tconsole.error( \"Different objects with the same UUID \" +\n\t\t\t\t\t\t\t\"detected. Clean the caches or recreate your \" +\n\t\t\t\t\t\t\t\"infrastructure when reloading scenes...\" );\n\n\t\t\t\t} // else the object is already where we want it to be\n\n\t\t\t} // for arguments\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t\t},\n\n\t\tremove: function( var_args ) {\n\n\t\t\tvar objects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = bindings.length;\n\n\t\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = arguments[ i ],\n\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} // for arguments\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t\t},\n\n\t\t// remove & forget\n\t\tuncache: function( var_args ) {\n\n\t\t\tvar objects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tnBindings = bindings.length;\n\n\t\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = arguments[ i ],\n\t\t\t\t\tuuid = object.uuid,\n\t\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} // cached or active\n\n\t\t\t\t} // if object is known\n\n\t\t\t} // for arguments\n\n\t\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t\t},\n\n\t\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\t\tsubscribe_: function( path, parsedPath ) {\n\t\t\t// returns an array of bindings for the given path that is changed\n\t\t\t// according to the contained objects in the group\n\n\t\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\t\tindex = indicesByPath[ path ],\n\t\t\t\tbindings = this._bindings;\n\n\t\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tobjects = this._objects,\n\t\t\t\tnObjects = objects.length,\n\t\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\t\tindex = bindings.length;\n\n\t\t\tindicesByPath[ path ] = index;\n\n\t\t\tpaths.push( path );\n\t\t\tparsedPaths.push( parsedPath );\n\t\t\tbindings.push( bindingsForPath );\n\n\t\t\tfor ( var i = nCachedObjects,\n\t\t\t\t\tn = objects.length; i !== n; ++ i ) {\n\n\t\t\t\tvar object = objects[ i ];\n\n\t\t\t\tbindingsForPath[ i ] =\n\t\t\t\t\t\tnew THREE.PropertyBinding( object, path, parsedPath );\n\n\t\t\t}\n\n\t\t\treturn bindingsForPath;\n\n\t\t},\n\n\t\tunsubscribe_: function( path ) {\n\t\t\t// tells the group to forget about a property path and no longer\n\t\t\t// update the array previously obtained with 'subscribe_'\n\n\t\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\t\tindex = indicesByPath[ path ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tvar paths = this._paths,\n\t\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\t\tbindings = this._bindings,\n\t\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\t\tbindings[ index ] = lastBindings;\n\t\t\t\tbindings.pop();\n\n\t\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\t\tparsedPaths.pop();\n\n\t\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\t\tpaths.pop();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\n\t// File:src/animation/AnimationUtils.js\n\n\t/**\n\t * @author tschw\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t */\n\n\tTHREE.AnimationUtils = {\n\n\t\t// same as Array.prototype.slice, but also works on typed arrays\n\t\tarraySlice: function( array, from, to ) {\n\n\t\t\tif ( THREE.AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t\treturn new array.constructor( array.subarray( from, to ) );\n\n\t\t\t}\n\n\t\t\treturn array.slice( from, to );\n\n\t\t},\n\n\t\t// converts an array to a specific type\n\t\tconvertArray: function( array, type, forceClone ) {\n\n\t\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\t\treturn new type( array ); // create typed array\n\n\t\t\t}\n\n\t\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t\t},\n\n\t\tisTypedArray: function( object ) {\n\n\t\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t\t\t! ( object instanceof DataView );\n\n\t\t},\n\n\t\t// returns an array by which times and values can be sorted\n\t\tgetKeyframeOrder: function( times ) {\n\n\t\t\tfunction compareTime( i, j ) {\n\n\t\t\t\treturn times[ i ] - times[ j ];\n\n\t\t\t}\n\n\t\t\tvar n = times.length;\n\t\t\tvar result = new Array( n );\n\t\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\t\tresult.sort( compareTime );\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\t\tsortedArray: function( values, stride, order ) {\n\n\t\t\tvar nValues = values.length;\n\t\t\tvar result = new values.constructor( nValues );\n\n\t\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t},\n\n\t\t// function for parsing AOS keyframe formats\n\t\tflattenJSON: function( jsonKeys, times, values, valuePropertyName ) {\n\n\t\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t}\n\n\t\t\tif ( key === undefined ) return; // no data\n\n\t\t\tvar value = key[ valuePropertyName ];\n\t\t\tif ( value === undefined ) return; // no data\n\n\t\t\tif ( Array.isArray( value ) ) {\n\n\t\t\t\tdo {\n\n\t\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t\t} while ( key !== undefined );\n\n\t\t\t} else if ( value.toArray !== undefined ) {\n\t\t\t\t// ...assume THREE.Math-ish\n\n\t\t\t\tdo {\n\n\t\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t\t} while ( key !== undefined );\n\n\t\t\t} else {\n\t\t\t\t// otherwise push as-is\n\n\t\t\t\tdo {\n\n\t\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t\t} while ( key !== undefined );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// File:src/animation/KeyframeTrack.js\n\n\t/**\n\t *\n\t * A timed sequence of keyframes for a specific property.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.KeyframeTrack = function ( name, times, values, interpolation ) {\n\n\t\tif( name === undefined ) throw new Error( \"track name is undefined\" );\n\n\t\tif( times === undefined || times.length === 0 ) {\n\n\t\t\tthrow new Error( \"no keyframes in track named \" + name );\n\n\t\t}\n\n\t\tthis.name = name;\n\n\t\tthis.times = THREE.AnimationUtils.convertArray( times, this.TimeBufferType );\n\t\tthis.values = THREE.AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t\tthis.validate();\n\t\tthis.optimize();\n\n\t};\n\n\tTHREE.KeyframeTrack.prototype = {\n\n\t\tconstructor: THREE.KeyframeTrack,\n\n\t\tTimeBufferType: Float32Array,\n\t\tValueBufferType: Float32Array,\n\n\t\tDefaultInterpolation: THREE.InterpolateLinear,\n\n\t\tInterpolantFactoryMethodDiscrete: function( result ) {\n\n\t\t\treturn new THREE.DiscreteInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\t\treturn new THREE.LinearInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tInterpolantFactoryMethodSmooth: function( result ) {\n\n\t\t\treturn new THREE.CubicInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tsetInterpolation: function( interpolation ) {\n\n\t\t\tvar factoryMethod;\n\n\t\t\tswitch ( interpolation ) {\n\n\t\t\t\tcase THREE.InterpolateDiscrete:\n\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase THREE.InterpolateLinear:\n\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase THREE.InterpolateSmooth:\n\n\t\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( factoryMethod === undefined ) {\n\n\t\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconsole.warn( message );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.createInterpolant = factoryMethod;\n\n\t\t},\n\n\t\tgetInterpolation: function() {\n\n\t\t\tswitch ( this.createInterpolant ) {\n\n\t\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\t\treturn THREE.InterpolateDiscrete;\n\n\t\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\t\treturn THREE.InterpolateLinear;\n\n\t\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\t\treturn THREE.InterpolateSmooth;\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetValueSize: function() {\n\n\t\t\treturn this.values.length / this.times.length;\n\n\t\t},\n\n\t\t// move all keyframes either forwards or backwards in time\n\t\tshift: function( timeOffset ) {\n\n\t\t\tif( timeOffset !== 0.0 ) {\n\n\t\t\t\tvar times = this.times;\n\n\t\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\t\tscale: function( timeScale ) {\n\n\t\t\tif( timeScale !== 1.0 ) {\n\n\t\t\t\tvar times = this.times;\n\n\t\t\t\tfor( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\t\ttrim: function( startTime, endTime ) {\n\n\t\t\tvar times = this.times,\n\t\t\t\tnKeys = times.length,\n\t\t\t\tfrom = 0,\n\t\t\t\tto = nKeys - 1;\n\n\t\t\twhile ( from !== nKeys && times[ from ] < startTime ) ++ from;\n\t\t\twhile ( to !== -1 && times[ to ] > endTime ) -- to;\n\n\t\t\t++ to; // inclusive -> exclusive bound\n\n\t\t\tif( from !== 0 || to !== nKeys ) {\n\n\t\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\t\tif ( from >= to ) to = Math.max( to , 1 ), from = to - 1;\n\n\t\t\t\tvar stride = this.getValueSize();\n\t\t\t\tthis.times = THREE.AnimationUtils.arraySlice( times, from, to );\n\t\t\t\tthis.values = THREE.AnimationUtils.\n\t\t\t\t\t\tarraySlice( this.values, from * stride, to * stride );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\t\tvalidate: function() {\n\n\t\t\tvar valid = true;\n\n\t\t\tvar valueSize = this.getValueSize();\n\t\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\t\tconsole.error( \"invalid value size in track\", this );\n\t\t\t\tvalid = false;\n\n\t\t\t}\n\n\t\t\tvar times = this.times,\n\t\t\t\tvalues = this.values,\n\n\t\t\t\tnKeys = times.length;\n\n\t\t\tif( nKeys === 0 ) {\n\n\t\t\t\tconsole.error( \"track is empty\", this );\n\t\t\t\tvalid = false;\n\n\t\t\t}\n\n\t\t\tvar prevTime = null;\n\n\t\t\tfor( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\t\tvar currTime = times[ i ];\n\n\t\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\t\tconsole.error( \"time is not a valid number\", this, i, currTime );\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tif( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\t\tconsole.error( \"out of order keys\", this, i, currTime, prevTime );\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tprevTime = currTime;\n\n\t\t\t}\n\n\t\t\tif ( values !== undefined ) {\n\n\t\t\t\tif ( THREE.AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\t\tconsole.error( \"value is not a valid number\", this, i, value );\n\t\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn valid;\n\n\t\t},\n\n\t\t// removes equivalent sequential keys as common in morph target sequences\n\t\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\t\toptimize: function() {\n\n\t\t\tvar times = this.times,\n\t\t\t\tvalues = this.values,\n\t\t\t\tstride = this.getValueSize(),\n\n\t\t\t\twriteIndex = 1;\n\n\t\t\tfor( var i = 1, n = times.length - 1; i <= n; ++ i ) {\n\n\t\t\t\tvar keep = false;\n\n\t\t\t\tvar time = times[ i ];\n\t\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\t\t\t\t\tvar offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvar value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// in-place compaction\n\n\t\t\t\tif ( keep ) {\n\n\t\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t}\n\n\t\t\t\t\t++ writeIndex;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( writeIndex !== times.length ) {\n\n\t\t\t\tthis.times = THREE.AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\t\tthis.values = THREE.AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t};\n\n\t// Static methods:\n\n\tObject.assign( THREE.KeyframeTrack, {\n\n\t\t// Serialization (in static context, because of constructor invocation\n\t\t// and automatic invocation of .toJSON):\n\n\t\tparse: function( json ) {\n\n\t\t\tif( json.type === undefined ) {\n\n\t\t\t\tthrow new Error( \"track type undefined, can not parse\" );\n\n\t\t\t}\n\n\t\t\tvar trackType = THREE.KeyframeTrack._getTrackTypeForValueTypeName( json.type );\n\n\t\t\tif ( json.times === undefined ) {\n\n\t\t\t\tvar times = [], values = [];\n\n\t\t\t\tTHREE.AnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\t\t\tjson.times = times;\n\t\t\t\tjson.values = values;\n\n\t\t\t}\n\n\t\t\t// derived classes can define a static parse method\n\t\t\tif ( trackType.parse !== undefined ) {\n\n\t\t\t\treturn trackType.parse( json );\n\n\t\t\t} else {\n\n\t\t\t\t// by default, we asssume a constructor compatible with the base\n\t\t\t\treturn new trackType(\n\t\t\t\t\t\tjson.name, json.times, json.values, json.interpolation );\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoJSON: function( track ) {\n\n\t\t\tvar trackType = track.constructor;\n\n\t\t\tvar json;\n\n\t\t\t// derived classes can define a static toJSON method\n\t\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\t\tjson = trackType.toJSON( track );\n\n\t\t\t} else {\n\n\t\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\t\tjson = {\n\n\t\t\t\t\t'name': track.name,\n\t\t\t\t\t'times': THREE.AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t\t'values': THREE.AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t\t};\n\n\t\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\t\treturn json;\n\n\t\t},\n\n\t\t_getTrackTypeForValueTypeName: function( typeName ) {\n\n\t\t\tswitch( typeName.toLowerCase() ) {\n\n\t\t\t\tcase \"scalar\":\n\t\t\t\tcase \"double\":\n\t\t\t\tcase \"float\":\n\t\t\t\tcase \"number\":\n\t\t\t\tcase \"integer\":\n\n\t\t\t\t\treturn THREE.NumberKeyframeTrack;\n\n\t\t\t\tcase \"vector\":\n\t\t\t\tcase \"vector2\":\n\t\t\t\tcase \"vector3\":\n\t\t\t\tcase \"vector4\":\n\n\t\t\t\t\treturn THREE.VectorKeyframeTrack;\n\n\t\t\t\tcase \"color\":\n\n\t\t\t\t\treturn THREE.ColorKeyframeTrack;\n\n\t\t\t\tcase \"quaternion\":\n\n\t\t\t\t\treturn THREE.QuaternionKeyframeTrack;\n\n\t\t\t\tcase \"bool\":\n\t\t\t\tcase \"boolean\":\n\n\t\t\t\t\treturn THREE.BooleanKeyframeTrack;\n\n\t\t\t\tcase \"string\":\n\n\t\t\t\t\treturn THREE.StringKeyframeTrack;\n\n\t\t\t}\n\n\t\t\tthrow new Error( \"Unsupported typeName: \" + typeName );\n\n\t\t}\n\n\t} );\n\n\t// File:src/animation/PropertyBinding.js\n\n\t/**\n\t *\n\t * A reference to a real property in the scene graph.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.PropertyBinding = function ( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath ||\n\t\t\t\tTHREE.PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = THREE.PropertyBinding.findNode(\n\t\t\t\trootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t};\n\n\tTHREE.PropertyBinding.prototype = {\n\n\t\tconstructor: THREE.PropertyBinding,\n\n\t\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\t\tthis.bind();\n\t\t\tthis.getValue( targetArray, offset );\n\n\t\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t\t// prototype version of these methods with one that represents\n\t\t\t// the bound state. When the property is not found, the methods\n\t\t\t// become no-ops.\n\n\t\t},\n\n\t\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\t\tthis.bind();\n\t\t\tthis.setValue( sourceArray, offset );\n\n\t\t},\n\n\t\t// create getter / setter pair for a property in the scene graph\n\t\tbind: function() {\n\n\t\t\tvar targetObject = this.node,\n\t\t\t\tparsedPath = this.parsedPath,\n\n\t\t\t\tobjectName = parsedPath.objectName,\n\t\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\t\tif ( ! targetObject ) {\n\n\t\t\t\ttargetObject = THREE.PropertyBinding.findNode(\n\t\t\t\t\t\tthis.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\t\tthis.node = targetObject;\n\n\t\t\t}\n\n\t\t\t// set fail state so we can just 'return' on error\n\t\t\tthis.getValue = this._getValue_unavailable;\n\t\t\tthis.setValue = this._setValue_unavailable;\n\n\t \t\t// ensure there is a value node\n\t\t\tif ( ! targetObject ) {\n\n\t\t\t\tconsole.error( \"  trying to update node for track: \" + this.path + \" but it wasn't found.\" );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( objectName ) {\n\n\t\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\t\tswitch ( objectName ) {\n\n\t\t\t\t\tcase 'materials':\n\n\t\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\t\tconsole.error( '  can not bind to material as node does not have a material', this );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\t\tconsole.error( '  can not bind to material.materials as node.material does not have a materials array', this );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'bones':\n\n\t\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\t\tconsole.error( '  can not bind to bones as node does not have a skeleton', this );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.error( '  can not bind to objectName of node, undefined', this );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t\t}\n\n\n\t\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( \"  trying to bind to objectIndex of objectName, but is undefined:\", this, targetObject );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// resolve property\n\t\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\t\tif ( nodeProperty === undefined ) {\n\n\t\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\t\tconsole.error( \"  trying to update property for track: \" + nodeName +\n\t\t\t\t\t\t'.' + propertyName + \" but it wasn't found.\", targetObject );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// determine versioning scheme\n\t\t\tvar versioning = this.Versioning.None;\n\n\t\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\t\tversioning = this.Versioning.NeedsUpdate;\n\t\t\t\tthis.targetObject = targetObject;\n\n\t\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\t\t\t\tthis.targetObject = targetObject;\n\n\t\t\t}\n\n\t\t\t// determine how the property gets bound\n\t\t\tvar bindingType = this.BindingType.Direct;\n\n\t\t\tif ( propertyIndex !== undefined ) {\n\t\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\t\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\t\tconsole.error( '  can not bind to morphTargetInfluences becasuse node does not have a geometry', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( '  can not bind to morphTargetInfluences becasuse node does not have a geometry.morphTargets', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\n\n\t\t\t\t\t\t\tpropertyIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\t\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t\t} else if ( nodeProperty.length !== undefined ) {\n\n\t\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t\t} else {\n\n\t\t\t\tthis.propertyName = propertyName;\n\n\t\t\t}\n\n\t\t\t// select getter / setter\n\t\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t\t},\n\n\t\tunbind: function() {\n\n\t\t\tthis.node = null;\n\n\t\t\t// back to the prototype version of getValue / setValue\n\t\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\t\tthis.getValue = this._getValue_unbound;\n\t\t\tthis.setValue = this._setValue_unbound;\n\n\t\t}\n\n\t};\n\n\tObject.assign( THREE.PropertyBinding.prototype, { // prototype, continued\n\n\t\t// these are used to \"bind\" a nonexistent property\n\t\t_getValue_unavailable: function() {},\n\t\t_setValue_unavailable: function() {},\n\n\t\t// initial state of these methods that calls 'bind'\n\t\t_getValue_unbound: THREE.PropertyBinding.prototype.getValue,\n\t\t_setValue_unbound: THREE.PropertyBinding.prototype.setValue,\n\n\t\tBindingType: {\n\t\t\tDirect: 0,\n\t\t\tEntireArray: 1,\n\t\t\tArrayElement: 2,\n\t\t\tHasFromToArray: 3\n\t\t},\n\n\t\tVersioning: {\n\t\t\tNone: 0,\n\t\t\tNeedsUpdate: 1,\n\t\t\tMatrixWorldNeedsUpdate: 2\n\t\t},\n\n\t\tGetterByBindingType: [\n\n\t\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t\t},\n\n\t\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\t\tvar source = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t\t},\n\n\t\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t\t}\n\n\t\t],\n\n\t\tSetterByBindingTypeAndVersioning: [\n\n\t\t\t[\n\t\t\t\t// Direct\n\n\t\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.node[ this.propertyName ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t], [\n\n\t\t\t\t// EntireArray\n\n\t\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t], [\n\n\t\t\t\t// ArrayElement\n\n\t\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t], [\n\n\t\t\t\t// HasToFromArray\n\n\t\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t\t},\n\n\t\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t]\n\n\t\t]\n\n\t} );\n\n\tTHREE.PropertyBinding.Composite =\n\t\t\tfunction( targetGroup, path, optionalParsedPath ) {\n\n\t\tvar parsedPath = optionalParsedPath ||\n\t\t\t\tTHREE.PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t};\n\n\tTHREE.PropertyBinding.Composite.prototype = {\n\n\t\tconstructor: THREE.PropertyBinding.Composite,\n\n\t\tgetValue: function( array, offset ) {\n\n\t\t\tthis.bind(); // bind all binding\n\n\t\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t\t// and only call .getValue on the first\n\t\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t\t},\n\n\t\tsetValue: function( array, offset ) {\n\n\t\t\tvar bindings = this._bindings;\n\n\t\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t\t}\n\n\t\t},\n\n\t\tbind: function() {\n\n\t\t\tvar bindings = this._bindings;\n\n\t\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tbindings[ i ].bind();\n\n\t\t\t}\n\n\t\t},\n\n\t\tunbind: function() {\n\n\t\t\tvar bindings = this._bindings;\n\n\t\t\tfor ( var i = this._targetGroup.nCachedObjects_,\n\t\t\t\t\tn = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tbindings[ i ].unbind();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tTHREE.PropertyBinding.create = function( root, path, parsedPath ) {\n\n\t\tif ( ! ( root instanceof THREE.AnimationObjectGroup ) ) {\n\n\t\t\treturn new THREE.PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new THREE.PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t};\n\n\tTHREE.PropertyBinding.parseTrackName = function( trackName ) {\n\n\t\t// matches strings in the form of:\n\t\t//    nodeName.property\n\t\t//    nodeName.property[accessor]\n\t\t//    nodeName.material.property[accessor]\n\t\t//    uuid.property[accessor]\n\t\t//    uuid.objectName[objectIndex].propertyName[propertyIndex]\n\t\t//    parentName/nodeName.property\n\t\t//    parentName/parentName/nodeName.property[index]\n\t\t//\t  .bone[Armature.DEF_cog].position\n\t\t// created and tested via https://regex101.com/#javascript\n\n\t\tvar re = /^(([\\w]+\\/)*)([\\w-\\d]+)?(\\.([\\w]+)(\\[([\\w\\d\\[\\]\\_.:\\- ]+)\\])?)?(\\.([\\w.]+)(\\[([\\w\\d\\[\\]\\_. ]+)\\])?)$/;\n\t\tvar matches = re.exec( trackName );\n\n\t\tif ( ! matches ) {\n\n\t\t\tthrow new Error( \"cannot parse trackName at all: \" + trackName );\n\n\t\t}\n\n\t\tif ( matches.index === re.lastIndex ) {\n\n\t\t\tre.lastIndex++;\n\n\t\t}\n\n\t\tvar results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 3 ], \t// allowed to be null, specified root node.\n\t\t\tobjectName: matches[ 5 ],\n\t\t\tobjectIndex: matches[ 7 ],\n\t\t\tpropertyName: matches[ 9 ],\n\t\t\tpropertyIndex: matches[ 11 ]\t// allowed to be null, specifies that the whole property is set.\n\t\t};\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( \"can not parse propertyName from trackName: \" + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t};\n\n\tTHREE.PropertyBinding.findNode = function( root, nodeName ) {\n\n\t\tif ( ! nodeName || nodeName === \"\" || nodeName === \"root\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tvar searchSkeleton = function( skeleton ) {\n\n\t\t\t\tfor( var i = 0; i < skeleton.bones.length; i ++ ) {\n\n\t\t\t\t\tvar bone = skeleton.bones[ i ];\n\n\t\t\t\t\tif ( bone.name === nodeName ) {\n\n\t\t\t\t\t\treturn bone;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar bone = searchSkeleton( root.skeleton );\n\n\t\t\tif ( bone ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tvar searchNodeSubtree = function( children ) {\n\n\t\t\t\tfor( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tvar childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tvar subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t};\n\n\t// File:src/animation/PropertyMixer.js\n\n\t/**\n\t *\n\t * Buffered scene graph property that allows weighted accumulation.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.PropertyMixer = function ( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tvar bufferType = Float64Array,\n\t\t\tmixFunction;\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\t\t\tmixFunction = this._slerp;\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\n\t\t\t\tbufferType = Array,\t\tmixFunction = this._select;\t\tbreak;\n\n\t\t\tdefault:\t\t\t\t\tmixFunction = this._lerp;\n\n\t\t}\n\n\t\tthis.buffer = new bufferType( valueSize * 4 );\n\t\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\n\t\tthis._mixBufferRegion = mixFunction;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t};\n\n\tTHREE.PropertyMixer.prototype = {\n\n\t\tconstructor: THREE.PropertyMixer,\n\n\t\t// accumulate data in the 'incoming' region into 'accu<i>'\n\t\taccumulate: function( accuIndex, weight ) {\n\n\t\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t\t// the weight and shouldn't have made the call in the first place\n\n\t\t\tvar buffer = this.buffer,\n\t\t\t\tstride = this.valueSize,\n\t\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\t\tif ( currentWeight === 0 ) {\n\n\t\t\t\t// accuN := incoming * weight\n\n\t\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcurrentWeight = weight;\n\n\t\t\t} else {\n\n\t\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\t\tcurrentWeight += weight;\n\t\t\t\tvar mix = weight / currentWeight;\n\t\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t\t}\n\n\t\t\tthis.cumulativeWeight = currentWeight;\n\n\t\t},\n\n\t\t// apply the state of 'accu<i>' to the binding when accus differ\n\t\tapply: function( accuIndex ) {\n\n\t\t\tvar stride = this.valueSize,\n\t\t\t\tbuffer = this.buffer,\n\t\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\t\tweight = this.cumulativeWeight,\n\n\t\t\t\tbinding = this.binding;\n\n\t\t\tthis.cumulativeWeight = 0;\n\n\t\t\tif ( weight < 1 ) {\n\n\t\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\t\tthis._mixBufferRegion(\n\t\t\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t\t}\n\n\t\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t// remember the state of the bound property and copy it to both accus\n\t\tsaveOriginalState: function() {\n\n\t\t\tvar binding = this.binding;\n\n\t\t\tvar buffer = this.buffer,\n\t\t\t\tstride = this.valueSize,\n\n\t\t\t\toriginalValueOffset = stride * 3;\n\n\t\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t\t}\n\n\t\t\tthis.cumulativeWeight = 0;\n\n\t\t},\n\n\t\t// apply the state previously taken via 'saveOriginalState' to the binding\n\t\trestoreOriginalState: function() {\n\n\t\t\tvar originalValueOffset = this.valueSize * 3;\n\t\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t\t},\n\n\n\t\t// mix functions\n\n\t\t_select: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\t\tif ( t >= 0.5 ) {\n\n\t\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\t_slerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\t\tTHREE.Quaternion.slerpFlat( buffer, dstOffset,\n\t\t\t\t\tbuffer, dstOffset, buffer, srcOffset, t );\n\n\t\t},\n\n\t\t_lerp: function( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\t\tvar s = 1 - t;\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tvar j = dstOffset + i;\n\n\t\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// File:src/animation/tracks/BooleanKeyframeTrack.js\n\n\t/**\n\t *\n\t * A Track of Boolean keyframe values.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.BooleanKeyframeTrack = function ( name, times, values ) {\n\n\t\tTHREE.KeyframeTrack.call( this, name, times, values );\n\n\t};\n\n\tTHREE.BooleanKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( THREE.KeyframeTrack.prototype ), {\n\n\t\tconstructor: THREE.BooleanKeyframeTrack,\n\n\t\tValueTypeName: 'bool',\n\t\tValueBufferType: Array,\n\n\t\tDefaultInterpolation: THREE.InterpolateDiscrete,\n\n\t\tInterpolantFactoryMethodLinear: undefined,\n\t\tInterpolantFactoryMethodSmooth: undefined\n\n\t\t// Note: Actually this track could have a optimized / compressed\n\t\t// representation of a single value and a custom interpolant that\n\t\t// computes \"firstValue ^ isOdd( index )\".\n\n\t} );\n\n\t// File:src/animation/tracks/ColorKeyframeTrack.js\n\n\t/**\n\t *\n\t * A Track of keyframe values that represent color.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.ColorKeyframeTrack = function ( name, times, values, interpolation ) {\n\n\t\tTHREE.KeyframeTrack.call( this, name, times, values, interpolation );\n\n\t};\n\n\tTHREE.ColorKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( THREE.KeyframeTrack.prototype ), {\n\n\t\tconstructor: THREE.ColorKeyframeTrack,\n\n\t\tValueTypeName: 'color'\n\n\t\t// ValueBufferType is inherited\n\n\t\t// DefaultInterpolation is inherited\n\n\n\t\t// Note: Very basic implementation and nothing special yet.\n\t\t// However, this is the place for color space parameterization.\n\n\t} );\n\n\t// File:src/animation/tracks/NumberKeyframeTrack.js\n\n\t/**\n\t *\n\t * A Track of numeric keyframe values.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.NumberKeyframeTrack = function ( name, times, values, interpolation ) {\n\n\t\tTHREE.KeyframeTrack.call( this, name, times, values, interpolation );\n\n\t};\n\n\tTHREE.NumberKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( THREE.KeyframeTrack.prototype ), {\n\n\t\tconstructor: THREE.NumberKeyframeTrack,\n\n\t\tValueTypeName: 'number',\n\n\t\t// ValueBufferType is inherited\n\n\t\t// DefaultInterpolation is inherited\n\n\t} );\n\n\t// File:src/animation/tracks/QuaternionKeyframeTrack.js\n\n\t/**\n\t *\n\t * A Track of quaternion keyframe values.\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.QuaternionKeyframeTrack = function ( name, times, values, interpolation ) {\n\n\t\tTHREE.KeyframeTrack.call( this, name, times, values, interpolation );\n\n\t};\n\n\tTHREE.QuaternionKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( THREE.KeyframeTrack.prototype ), {\n\n\t\tconstructor: THREE.QuaternionKeyframeTrack,\n\n\t\tValueTypeName: 'quaternion',\n\n\t\t// ValueBufferType is inherited\n\n\t\tDefaultInterpolation: THREE.InterpolateLinear,\n\n\t\tInterpolantFactoryMethodLinear: function( result ) {\n\n\t\t\treturn new THREE.QuaternionLinearInterpolant(\n\t\t\t\t\tthis.times, this.values, this.getValueSize(), result );\n\n\t\t},\n\n\t\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n\t} );\n\n\t// File:src/animation/tracks/StringKeyframeTrack.js\n\n\t/**\n\t *\n\t * A Track that interpolates Strings\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.StringKeyframeTrack = function ( name, times, values, interpolation ) {\n\n\t\tTHREE.KeyframeTrack.call( this, name, times, values, interpolation );\n\n\t};\n\n\tTHREE.StringKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( THREE.KeyframeTrack.prototype ), {\n\n\t\tconstructor: THREE.StringKeyframeTrack,\n\n\t\tValueTypeName: 'string',\n\t\tValueBufferType: Array,\n\n\t\tDefaultInterpolation: THREE.InterpolateDiscrete,\n\n\t\tInterpolantFactoryMethodLinear: undefined,\n\n\t\tInterpolantFactoryMethodSmooth: undefined\n\n\t} );\n\n\t// File:src/animation/tracks/VectorKeyframeTrack.js\n\n\t/**\n\t *\n\t * A Track of vectored keyframe values.\n\t *\n\t *\n\t * @author Ben Houston / http://clara.io/\n\t * @author David Sarno / http://lighthaus.us/\n\t * @author tschw\n\t */\n\n\tTHREE.VectorKeyframeTrack = function ( name, times, values, interpolation ) {\n\n\t\tTHREE.KeyframeTrack.call( this, name, times, values, interpolation );\n\n\t};\n\n\tTHREE.VectorKeyframeTrack.prototype =\n\t\t\tObject.assign( Object.create( THREE.KeyframeTrack.prototype ), {\n\n\t\tconstructor: THREE.VectorKeyframeTrack,\n\n\t\tValueTypeName: 'vector'\n\n\t\t// ValueBufferType is inherited\n\n\t\t// DefaultInterpolation is inherited\n\n\t} );\n\n\t// File:src/audio/Audio.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author Reece Aaron Lecrivain / http://reecenotes.com/\n\t */\n\n\tTHREE.Audio = function ( listener ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.context = listener.context;\n\t\tthis.source = this.context.createBufferSource();\n\t\tthis.source.onended = this.onEnded.bind( this );\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.startTime = 0;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis.filters = [];\n\n\t};\n\n\tTHREE.Audio.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Audio,\n\n\t\tgetOutput: function () {\n\n\t\t\treturn this.gain;\n\n\t\t},\n\n\t\tsetNodeSource: function ( audioNode ) {\n\n\t\t\tthis.hasPlaybackControl = false;\n\t\t\tthis.sourceType = 'audioNode';\n\t\t\tthis.source = audioNode;\n\t\t\tthis.connect();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetBuffer: function ( audioBuffer ) {\n\n\t\t\tthis.source.buffer = audioBuffer;\n\t\t\tthis.sourceType = 'buffer';\n\n\t\t\tif ( this.autoplay ) this.play();\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tplay: function () {\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar source = this.context.createBufferSource();\n\n\t\t\tsource.buffer = this.source.buffer;\n\t\t\tsource.loop = this.source.loop;\n\t\t\tsource.onended = this.source.onended;\n\t\t\tsource.start( 0, this.startTime );\n\t\t\tsource.playbackRate.value = this.playbackRate;\n\n\t\t\tthis.isPlaying = true;\n\n\t\t\tthis.source = source;\n\n\t\t\treturn this.connect();\n\n\t\t},\n\n\t\tpause: function () {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.startTime = this.context.currentTime;\n\t\t\tthis.isPlaying = false;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.startTime = 0;\n\t\t\tthis.isPlaying = false;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tconnect: function () {\n\n\t\t\tif ( this.filters.length > 0 ) {\n\n\t\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t\t} else {\n\n\t\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdisconnect: function () {\n\n\t\t\tif ( this.filters.length > 0 ) {\n\n\t\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t\t} else {\n\n\t\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetFilters: function () {\n\n\t\t\treturn this.filters;\n\n\t\t},\n\n\t\tsetFilters: function ( value ) {\n\n\t\t\tif ( ! value ) value = [];\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tthis.disconnect();\n\t\t\t\tthis.filters = value;\n\t\t\t\tthis.connect();\n\n\t\t\t} else {\n\n\t\t\t\tthis.filters = value;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetFilter: function () {\n\n\t\t\treturn this.getFilters()[ 0 ];\n\n\t\t},\n\n\t\tsetFilter: function ( filter ) {\n\n\t\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t\t},\n\n\t\tsetPlaybackRate: function ( value ) {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.playbackRate = value;\n\n\t\t\tif ( this.isPlaying === true ) {\n\n\t\t\t\tthis.source.playbackRate.value = this.playbackRate;\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tgetPlaybackRate: function () {\n\n\t\t\treturn this.playbackRate;\n\n\t\t},\n\n\t\tonEnded: function () {\n\n\t\t\tthis.isPlaying = false;\n\n\t\t},\n\n\t\tgetLoop: function () {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\treturn this.source.loop;\n\n\t\t},\n\n\t\tsetLoop: function ( value ) {\n\n\t\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tthis.source.loop = value;\n\n\t\t},\n\n\t\tgetVolume: function () {\n\n\t\t\treturn this.gain.gain.value;\n\n\t\t},\n\n\n\t\tsetVolume: function ( value ) {\n\n\t\t\tthis.gain.gain.value = value;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/audio/AudioAnalyser.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.AudioAnalyser = function ( audio, fftSize ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t};\n\n\tObject.assign( THREE.AudioAnalyser.prototype, {\n\n\t\tgetFrequencyData: function () {\n\n\t\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\t\treturn this.data;\n\n\t\t},\n\n\t\tgetAverageFrequency: function () {\n\n\t\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tvalue += data[ i ];\n\n\t\t\t}\n\n\t\t\treturn value / data.length;\n\n\t\t}\n\n\t} );\n\n\t// File:src/audio/AudioContext.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tObject.defineProperty( THREE, 'AudioContext', {\n\n\t\tget: ( function () {\n\n\t\t\tvar context;\n\n\t\t\treturn function get() {\n\n\t\t\t\tif ( context === undefined ) {\n\n\t\t\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t\t\t}\n\n\t\t\t\treturn context;\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t// File:src/audio/PositionalAudio.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.PositionalAudio = function ( listener ) {\n\n\t\tTHREE.Audio.call( this, listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.connect( this.gain );\n\n\t};\n\n\tTHREE.PositionalAudio.prototype = Object.assign( Object.create( THREE.Audio.prototype ), {\n\n\t\tconstructor: THREE.PositionalAudio,\n\n\t\tgetOutput: function () {\n\n\t\t\treturn this.panner;\n\n\t\t},\n\n\t\tgetRefDistance: function () {\n\n\t\t\treturn this.panner.refDistance;\n\n\t\t},\n\n\t\tsetRefDistance: function ( value ) {\n\n\t\t\tthis.panner.refDistance = value;\n\n\t\t},\n\n\t\tgetRolloffFactor: function () {\n\n\t\t\treturn this.panner.rolloffFactor;\n\n\t\t},\n\n\t\tsetRolloffFactor: function ( value ) {\n\n\t\t\tthis.panner.rolloffFactor = value;\n\n\t\t},\n\n\t\tgetDistanceModel: function () {\n\n\t\t\treturn this.panner.distanceModel;\n\n\t\t},\n\n\t\tsetDistanceModel: function ( value ) {\n\n\t\t\tthis.panner.distanceModel = value;\n\n\t\t},\n\n\t\tgetMaxDistance: function () {\n\n\t\t\treturn this.panner.maxDistance;\n\n\t\t},\n\n\t\tsetMaxDistance: function ( value ) {\n\n\t\t\tthis.panner.maxDistance = value;\n\n\t\t},\n\n\t\tupdateMatrixWorld: ( function () {\n\n\t\t\tvar position = new THREE.Vector3();\n\n\t\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\t\tTHREE.Object3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tthis.panner.setPosition( position.x, position.y, position.z );\n\n\t\t\t};\n\n\t\t} )()\n\n\n\t} );\n\n\t// File:src/audio/AudioListener.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.AudioListener = function () {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = THREE.AudioContext;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t};\n\n\tTHREE.AudioListener.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.AudioListener,\n\n\t\tgetInput: function () {\n\n\t\t\treturn this.gain;\n\n\t\t},\n\n\t\tremoveFilter: function ( ) {\n\n\t\t\tif ( this.filter !== null ) {\n\n\t\t\t\tthis.gain.disconnect( this.filter );\n\t\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\t\tthis.gain.connect( this.context.destination );\n\t\t\t\tthis.filter = null;\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetFilter: function () {\n\n\t\t\treturn this.filter;\n\n\t\t},\n\n\t\tsetFilter: function ( value ) {\n\n\t\t\tif ( this.filter !== null ) {\n\n\t\t\t\tthis.gain.disconnect( this.filter );\n\t\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t\t} else {\n\n\t\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t\t}\n\n\t\t\tthis.filter = value;\n\t\t\tthis.gain.connect( this.filter );\n\t\t\tthis.filter.connect( this.context.destination );\n\n\t\t},\n\n\t\tgetMasterVolume: function () {\n\n\t\t\treturn this.gain.gain.value;\n\n\t\t},\n\n\t\tsetMasterVolume: function ( value ) {\n\n\t\t\tthis.gain.gain.value = value;\n\n\t\t},\n\n\t\tupdateMatrixWorld: ( function () {\n\n\t\t\tvar position = new THREE.Vector3();\n\t\t\tvar quaternion = new THREE.Quaternion();\n\t\t\tvar scale = new THREE.Vector3();\n\n\t\t\tvar orientation = new THREE.Vector3();\n\n\t\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\t\tTHREE.Object3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\t\tvar listener = this.context.listener;\n\t\t\t\tvar up = this.up;\n\n\t\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\t\tlistener.setPosition( position.x, position.y, position.z );\n\t\t\t\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t// File:src/cameras/Camera.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author WestLangley / http://github.com/WestLangley\n\t*/\n\n\tTHREE.Camera = function () {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new THREE.Matrix4();\n\t\tthis.projectionMatrix = new THREE.Matrix4();\n\n\t};\n\n\tTHREE.Camera.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.Camera.prototype.constructor = THREE.Camera;\n\n\tTHREE.Camera.prototype.getWorldDirection = function () {\n\n\t\tvar quaternion = new THREE.Quaternion();\n\n\t\treturn function getWorldDirection( optionalTarget ) {\n\n\t\t\tvar result = optionalTarget || new THREE.Vector3();\n\n\t\t\tthis.getWorldQuaternion( quaternion );\n\n\t\t\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t};\n\n\t}();\n\n\tTHREE.Camera.prototype.lookAt = function () {\n\n\t\t// This routine does not support cameras with rotated and/or translated parent(s)\n\n\t\tvar m1 = new THREE.Matrix4();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tm1.lookAt( this.position, vector, this.up );\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t};\n\n\t}();\n\n\tTHREE.Camera.prototype.clone = function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t};\n\n\tTHREE.Camera.prototype.copy = function ( source ) {\n\n\t\tTHREE.Object3D.prototype.copy.call( this, source );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/cameras/CubeCamera.js\n\n\t/**\n\t * Camera for rendering cube maps\n\t *\t- renders scene into axis-aligned cube\n\t *\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.CubeCamera = function ( near, far, cubeResolution ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tvar fov = 90, aspect = 1;\n\n\t\tvar cameraPX = new THREE.PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new THREE.Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tvar cameraNX = new THREE.PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new THREE.Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tvar cameraPY = new THREE.PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new THREE.Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tvar cameraNY = new THREE.PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new THREE.Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tvar cameraPZ = new THREE.PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new THREE.Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tvar cameraNZ = new THREE.PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new THREE.Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t\tvar options = { format: THREE.RGBFormat, magFilter: THREE.LinearFilter, minFilter: THREE.LinearFilter };\n\n\t\tthis.renderTarget = new THREE.WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\n\t\tthis.updateCubeMap = function ( renderer, scene ) {\n\n\t\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\t\tvar renderTarget = this.renderTarget;\n\t\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\t\trenderTarget.activeCubeFace = 0;\n\t\t\trenderer.render( scene, cameraPX, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 1;\n\t\t\trenderer.render( scene, cameraNX, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 2;\n\t\t\trenderer.render( scene, cameraPY, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 3;\n\t\t\trenderer.render( scene, cameraNY, renderTarget );\n\n\t\t\trenderTarget.activeCubeFace = 4;\n\t\t\trenderer.render( scene, cameraPZ, renderTarget );\n\n\t\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\t\trenderTarget.activeCubeFace = 5;\n\t\t\trenderer.render( scene, cameraNZ, renderTarget );\n\n\t\t\trenderer.setRenderTarget( null );\n\n\t\t};\n\n\t};\n\n\tTHREE.CubeCamera.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.CubeCamera.prototype.constructor = THREE.CubeCamera;\n\n\t// File:src/cameras/OrthographicCamera.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author arose / http://github.com/arose\n\t */\n\n\tTHREE.OrthographicCamera = function ( left, right, top, bottom, near, far ) {\n\n\t\tTHREE.Camera.call( this );\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = ( near !== undefined ) ? near : 0.1;\n\t\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\t\tthis.updateProjectionMatrix();\n\n\t};\n\n\tTHREE.OrthographicCamera.prototype = Object.assign( Object.create( THREE.Camera.prototype ), {\n\n\t\tconstructor: THREE.OrthographicCamera,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Camera.prototype.copy.call( this, source );\n\n\t\t\tthis.left = source.left;\n\t\t\tthis.right = source.right;\n\t\t\tthis.top = source.top;\n\t\t\tthis.bottom = source.bottom;\n\t\t\tthis.near = source.near;\n\t\t\tthis.far = source.far;\n\n\t\t\tthis.zoom = source.zoom;\n\t\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetViewOffset: function( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\t\tthis.view = {\n\t\t\t\tfullWidth: fullWidth,\n\t\t\t\tfullHeight: fullHeight,\n\t\t\t\toffsetX: x,\n\t\t\t\toffsetY: y,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tclearViewOffset: function() {\n\n\t\t\tthis.view = null;\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tupdateProjectionMatrix: function () {\n\n\t\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\t\tvar cx = ( this.right + this.left ) / 2;\n\t\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\t\tvar left = cx - dx;\n\t\t\tvar right = cx + dx;\n\t\t\tvar top = cy + dy;\n\t\t\tvar bottom = cy - dy;\n\n\t\t\tif ( this.view !== null ) {\n\n\t\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t\t}\n\n\t\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = THREE.Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.zoom = this.zoom;\n\t\t\tdata.object.left = this.left;\n\t\t\tdata.object.right = this.right;\n\t\t\tdata.object.top = this.top;\n\t\t\tdata.object.bottom = this.bottom;\n\t\t\tdata.object.near = this.near;\n\t\t\tdata.object.far = this.far;\n\n\t\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t// File:src/cameras/PerspectiveCamera.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author greggman / http://games.greggman.com/\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author tschw\n\t */\n\n\tTHREE.PerspectiveCamera = function( fov, aspect, near, far ) {\n\n\t\tTHREE.Camera.call( this );\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov !== undefined ? fov : 50;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near !== undefined ? near : 0.1;\n\t\tthis.far = far !== undefined ? far : 2000;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect !== undefined ? aspect : 1;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t};\n\n\tTHREE.PerspectiveCamera.prototype = Object.assign( Object.create( THREE.Camera.prototype ), {\n\n\t\tconstructor: THREE.PerspectiveCamera,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Camera.prototype.copy.call( this, source );\n\n\t\t\tthis.fov = source.fov;\n\t\t\tthis.zoom = source.zoom;\n\n\t\t\tthis.near = source.near;\n\t\t\tthis.far = source.far;\n\t\t\tthis.focus = source.focus;\n\n\t\t\tthis.aspect = source.aspect;\n\t\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\t\tthis.filmGauge = source.filmGauge;\n\t\t\tthis.filmOffset = source.filmOffset;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\t/**\n\t\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t\t *\n\t\t * The default film gauge is 35, so that the focal length can be specified for\n\t\t * a 35mm (full frame) camera.\n\t\t *\n\t\t * Values for focal length and film gauge must have the same unit.\n\t\t */\n\t\tsetFocalLength: function ( focalLength ) {\n\n\t\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\t\tthis.fov = THREE.Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\t/**\n\t\t * Calculates the focal length from the current .fov and .filmGauge.\n\t\t */\n\t\tgetFocalLength: function () {\n\n\t\t\tvar vExtentSlope = Math.tan( THREE.Math.DEG2RAD * 0.5 * this.fov );\n\n\t\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t\t},\n\n\t\tgetEffectiveFOV: function () {\n\n\t\t\treturn THREE.Math.RAD2DEG * 2 * Math.atan(\n\t\t\t\t\tMath.tan( THREE.Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t\t},\n\n\t\tgetFilmWidth: function () {\n\n\t\t\t// film not completely covered in portrait format (aspect < 1)\n\t\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t\t},\n\n\t\tgetFilmHeight: function () {\n\n\t\t\t// film not completely covered in landscape format (aspect > 1)\n\t\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t\t},\n\n\t\t/**\n\t\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t\t * multi-monitor/multi-machine setups.\n\t\t *\n\t\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t\t * the monitors are in grid like this\n\t\t *\n\t\t *   +---+---+---+\n\t\t *   | A | B | C |\n\t\t *   +---+---+---+\n\t\t *   | D | E | F |\n\t\t *   +---+---+---+\n\t\t *\n\t\t * then for each monitor you would call it like this\n\t\t *\n\t\t *   var w = 1920;\n\t\t *   var h = 1080;\n\t\t *   var fullWidth = w * 3;\n\t\t *   var fullHeight = h * 2;\n\t\t *\n\t\t *   --A--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t\t *   --B--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t\t *   --C--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t\t *   --D--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t\t *   --E--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t\t *   --F--\n\t\t *   camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t\t *\n\t\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t\t */\n\t\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\t\tthis.view = {\n\t\t\t\tfullWidth: fullWidth,\n\t\t\t\tfullHeight: fullHeight,\n\t\t\t\toffsetX: x,\n\t\t\t\toffsetY: y,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tclearViewOffset: function() {\n\n\t\t\tthis.view = null;\n\t\t\tthis.updateProjectionMatrix();\n\n\t\t},\n\n\t\tupdateProjectionMatrix: function () {\n\n\t\t\tvar near = this.near,\n\t\t\t\ttop = near * Math.tan(\n\t\t\t\t\t\tTHREE.Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\t\theight = 2 * top,\n\t\t\t\twidth = this.aspect * height,\n\t\t\t\tleft = - 0.5 * width,\n\t\t\t\tview = this.view;\n\n\t\t\tif ( view !== null ) {\n\n\t\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\t\twidth *= view.width / fullWidth;\n\t\t\t\theight *= view.height / fullHeight;\n\n\t\t\t}\n\n\t\t\tvar skew = this.filmOffset;\n\t\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\t\tthis.projectionMatrix.makeFrustum(\n\t\t\t\t\tleft, left + width, top - height, top, near, this.far );\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = THREE.Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.fov = this.fov;\n\t\t\tdata.object.zoom = this.zoom;\n\n\t\t\tdata.object.near = this.near;\n\t\t\tdata.object.far = this.far;\n\t\t\tdata.object.focus = this.focus;\n\n\t\t\tdata.object.aspect = this.aspect;\n\n\t\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\t\tdata.object.filmGauge = this.filmGauge;\n\t\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t// File:src/cameras/StereoCamera.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.StereoCamera = function () {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.cameraL = new THREE.PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new THREE.PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t};\n\n\tObject.assign( THREE.StereoCamera.prototype, {\n\n\t\tupdate: ( function () {\n\n\t\t\tvar focus, fov, aspect, near, far;\n\n\t\t\tvar eyeRight = new THREE.Matrix4();\n\t\t\tvar eyeLeft = new THREE.Matrix4();\n\n\t\t\treturn function update( camera ) {\n\n\t\t\t\tvar needsUpdate = focus !== camera.focus || fov !== camera.fov ||\n\t\t\t\t\t\t\t\t\t\t\t\t\taspect !== camera.aspect * this.aspect || near !== camera.near ||\n\t\t\t\t\t\t\t\t\t\t\t\t\tfar !== camera.far;\n\n\t\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t\tfocus = camera.focus;\n\t\t\t\t\tfov = camera.fov;\n\t\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\t\tnear = camera.near;\n\t\t\t\t\tfar = camera.far;\n\n\t\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\t\tvar eyeSep = 0.064 / 2;\n\t\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\t\tvar ymax = near * Math.tan( THREE.Math.DEG2RAD * fov * 0.5 );\n\t\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t\t// translate xOffset\n\n\t\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t\t// for left eye\n\n\t\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t\t// for right eye\n\n\t\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t\t};\n\n\t\t} )()\n\n\t} );\n\n\t// File:src/lights/Light.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Light = function ( color, intensity ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new THREE.Color( color );\n\t\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\t\tthis.receiveShadow = undefined;\n\n\t};\n\n\tTHREE.Light.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Light,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Object3D.prototype.copy.call( this, source );\n\n\t\t\tthis.color.copy( source.color );\n\t\t\tthis.intensity = source.intensity;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = THREE.Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.color = this.color.getHex();\n\t\t\tdata.object.intensity = this.intensity;\n\n\t\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t// File:src/lights/LightShadow.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.LightShadow = function ( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.radius = 1;\n\n\t\tthis.mapSize = new THREE.Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.matrix = new THREE.Matrix4();\n\n\t};\n\n\tObject.assign( THREE.LightShadow.prototype, {\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.camera = source.camera.clone();\n\n\t\t\tthis.bias = source.bias;\n\t\t\tthis.radius = source.radius;\n\n\t\t\tthis.mapSize.copy( source.mapSize );\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t}\n\n\t} );\n\n\t// File:src/lights/AmbientLight.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.AmbientLight = function ( color, intensity ) {\n\n\t\tTHREE.Light.call( this, color, intensity );\n\n\t\tthis.type = 'AmbientLight';\n\n\t\tthis.castShadow = undefined;\n\n\t};\n\n\tTHREE.AmbientLight.prototype = Object.assign( Object.create( THREE.Light.prototype ), {\n\n\t\tconstructor: THREE.AmbientLight\n\n\t} );\n\n\t// File:src/lights/DirectionalLight.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.DirectionalLight = function ( color, intensity ) {\n\n\t\tTHREE.Light.call( this, color, intensity );\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.set( 0, 1, 0 );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new THREE.Object3D();\n\n\t\tthis.shadow = new THREE.DirectionalLightShadow();\n\n\t};\n\n\tTHREE.DirectionalLight.prototype = Object.assign( Object.create( THREE.Light.prototype ), {\n\n\t\tconstructor: THREE.DirectionalLight,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Light.prototype.copy.call( this, source );\n\n\t\t\tthis.target = source.target.clone();\n\n\t\t\tthis.shadow = source.shadow.clone();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/lights/DirectionalLightShadow.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.DirectionalLightShadow = function ( light ) {\n\n\t\tTHREE.LightShadow.call( this, new THREE.OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t};\n\n\tTHREE.DirectionalLightShadow.prototype = Object.assign( Object.create( THREE.LightShadow.prototype ), {\n\n\t\tconstructor: THREE.DirectionalLightShadow\n\n\t} );\n\n\t// File:src/lights/HemisphereLight.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.HemisphereLight = function ( skyColor, groundColor, intensity ) {\n\n\t\tTHREE.Light.call( this, skyColor, intensity );\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.castShadow = undefined;\n\n\t\tthis.position.set( 0, 1, 0 );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new THREE.Color( groundColor );\n\n\t};\n\n\tTHREE.HemisphereLight.prototype = Object.assign( Object.create( THREE.Light.prototype ), {\n\n\t\tconstructor: THREE.HemisphereLight,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Light.prototype.copy.call( this, source );\n\n\t\t\tthis.groundColor.copy( source.groundColor );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/lights/PointLight.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\n\tTHREE.PointLight = function ( color, intensity, distance, decay ) {\n\n\t\tTHREE.Light.call( this, color, intensity );\n\n\t\tthis.type = 'PointLight';\n\n\t\tObject.defineProperty( this, 'power', {\n\t\t\tget: function () {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t\t},\n\t\t\tset: function ( power ) {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\t\t\t}\n\t\t} );\n\n\t\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\t\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\t\tthis.shadow = new THREE.LightShadow( new THREE.PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t};\n\n\tTHREE.PointLight.prototype = Object.assign( Object.create( THREE.Light.prototype ), {\n\n\t\tconstructor: THREE.PointLight,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Light.prototype.copy.call( this, source );\n\n\t\t\tthis.distance = source.distance;\n\t\t\tthis.decay = source.decay;\n\n\t\t\tthis.shadow = source.shadow.clone();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/lights/SpotLight.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.SpotLight = function ( color, intensity, distance, angle, penumbra, decay ) {\n\n\t\tTHREE.Light.call( this, color, intensity );\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.set( 0, 1, 0 );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new THREE.Object3D();\n\n\t\tObject.defineProperty( this, 'power', {\n\t\t\tget: function () {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\treturn this.intensity * Math.PI;\n\t\t\t},\n\t\t\tset: function ( power ) {\n\t\t\t\t// intensity = power per solid angle.\n\t\t\t\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\n\t\t\t\tthis.intensity = power / Math.PI;\n\t\t\t}\n\t\t} );\n\n\t\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\t\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\t\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\t\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\t\tthis.shadow = new THREE.SpotLightShadow();\n\n\t};\n\n\tTHREE.SpotLight.prototype = Object.assign( Object.create( THREE.Light.prototype ), {\n\n\t\tconstructor: THREE.SpotLight,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Light.prototype.copy.call( this, source );\n\n\t\t\tthis.distance = source.distance;\n\t\t\tthis.angle = source.angle;\n\t\t\tthis.penumbra = source.penumbra;\n\t\t\tthis.decay = source.decay;\n\n\t\t\tthis.target = source.target.clone();\n\n\t\t\tthis.shadow = source.shadow.clone();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/lights/SpotLightShadow.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.SpotLightShadow = function () {\n\n\t\tTHREE.LightShadow.call( this, new THREE.PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t};\n\n\tTHREE.SpotLightShadow.prototype = Object.assign( Object.create( THREE.LightShadow.prototype ), {\n\n\t\tconstructor: THREE.SpotLightShadow,\n\n\t\tupdate: function ( light ) {\n\n\t\t\tvar fov = THREE.Math.RAD2DEG * 2 * light.angle;\n\t\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\t\tvar far = light.distance || 500;\n\n\t\t\tvar camera = this.camera;\n\n\t\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\t\tcamera.fov = fov;\n\t\t\t\tcamera.aspect = aspect;\n\t\t\t\tcamera.far = far;\n\t\t\t\tcamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/AudioLoader.js\n\n\t/**\n\t * @author Reece Aaron Lecrivain / http://reecenotes.com/\n\t */\n\n\tTHREE.AudioLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.AudioLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar loader = new THREE.XHRLoader( this.manager );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar context = THREE.AudioContext;\n\n\t\t\t\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/Cache.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Cache = {\n\n\t\tenabled: false,\n\n\t\tfiles: {},\n\n\t\tadd: function ( key, file ) {\n\n\t\t\tif ( this.enabled === false ) return;\n\n\t\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\t\tthis.files[ key ] = file;\n\n\t\t},\n\n\t\tget: function ( key ) {\n\n\t\t\tif ( this.enabled === false ) return;\n\n\t\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\t\treturn this.files[ key ];\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete this.files[ key ];\n\n\t\t},\n\n\t\tclear: function () {\n\n\t\t\tthis.files = {};\n\n\t\t}\n\n\t};\n\n\t// File:src/loaders/Loader.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Loader = function () {\n\n\t\tthis.onLoadStart = function () {};\n\t\tthis.onLoadProgress = function () {};\n\t\tthis.onLoadComplete = function () {};\n\n\t};\n\n\tTHREE.Loader.prototype = {\n\n\t\tconstructor: THREE.Loader,\n\n\t\tcrossOrigin: undefined,\n\n\t\textractUrlBase: function ( url ) {\n\n\t\t\tvar parts = url.split( '/' );\n\n\t\t\tif ( parts.length === 1 ) return './';\n\n\t\t\tparts.pop();\n\n\t\t\treturn parts.join( '/' ) + '/';\n\n\t\t},\n\n\t\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t\t}\n\n\t\t\treturn array;\n\n\t\t},\n\n\t\tcreateMaterial: ( function () {\n\n\t\t\tvar color, textureLoader, materialLoader;\n\n\t\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t\tif ( color === undefined ) color = new THREE.Color();\n\t\t\t\tif ( textureLoader === undefined ) textureLoader = new THREE.TextureLoader();\n\t\t\t\tif ( materialLoader === undefined ) materialLoader = new THREE.MaterialLoader();\n\n\t\t\t\t// convert from old material format\n\n\t\t\t\tvar textures = {};\n\n\t\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\t\tvar loader = THREE.Loader.Handlers.get( fullPath );\n\n\t\t\t\t\tvar texture;\n\n\t\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = THREE.RepeatWrapping;\n\t\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = THREE.RepeatWrapping;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = THREE.RepeatWrapping;\n\t\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = THREE.MirroredRepeatWrapping;\n\n\t\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = THREE.RepeatWrapping;\n\t\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = THREE.MirroredRepeatWrapping;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar uuid = THREE.Math.generateUUID();\n\n\t\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\t\treturn uuid;\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tvar json = {\n\t\t\t\t\tuuid: THREE.Math.generateUUID(),\n\t\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t\t};\n\n\t\t\t\tfor ( var name in m ) {\n\n\t\t\t\t\tvar value = m[ name ];\n\n\t\t\t\t\tswitch ( name ) {\n\t\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\t\tjson.blending = THREE[ value ];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\t\tjson.normalScale = [ value, value ];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\t\tjson.side = THREE.BackSide;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\t\tjson.side = THREE.DoubleSide;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\t\tcase 'opacity':\n\t\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\t\tcase 'transparent':\n\t\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\t\tif ( value === true ) json.vertexColors = THREE.VertexColors;\n\t\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = THREE.FaceColors;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\t\treturn materialLoader.parse( json );\n\n\t\t\t};\n\n\t\t} )()\n\n\t};\n\n\tTHREE.Loader.Handlers = {\n\n\t\thandlers: [],\n\n\t\tadd: function ( regex, loader ) {\n\n\t\t\tthis.handlers.push( regex, loader );\n\n\t\t},\n\n\t\tget: function ( file ) {\n\n\t\t\tvar handlers = this.handlers;\n\n\t\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tvar regex = handlers[ i ];\n\t\t\t\tvar loader  = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t}\n\n\t};\n\n\t// File:src/loaders/XHRLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.XHRLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.XHRLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\t\tvar scope = this;\n\n\t\t\tvar cached = THREE.Cache.get( url );\n\n\t\t\tif ( cached !== undefined ) {\n\n\t\t\t\tif ( onLoad ) {\n\n\t\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\t\tonLoad( cached );\n\n\t\t\t\t\t}, 0 );\n\n\t\t\t\t}\n\n\t\t\t\treturn cached;\n\n\t\t\t}\n\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.overrideMimeType( 'text/plain' );\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = event.target.response;\n\n\t\t\t\tTHREE.Cache.add( url, response );\n\n\t\t\t\tif ( this.status === 200 ) {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else if ( this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tconsole.warn( 'THREE.XHRLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\tif ( onProgress !== undefined ) {\n\n\t\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\t\tonProgress( event );\n\n\t\t\t\t}, false );\n\n\t\t\t}\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tif ( onError ) onError( event );\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\trequest.send( null );\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn request;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetResponseType: function ( value ) {\n\n\t\t\tthis.responseType = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetWithCredentials: function ( value ) {\n\n\t\t\tthis.withCredentials = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/FontLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.FontLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.FontLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new THREE.XHRLoader( this.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tvar json;\n\n\t\t\t\ttry {\n\n\t\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t\t}\n\n\t\t\t\tvar font = scope.parse( json );\n\n\t\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tparse: function ( json ) {\n\n\t\t\treturn new THREE.Font( json );\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/ImageLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.ImageLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.ImageLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\t\t\timage.onload = function () {\n\n\t\t\t\tURL.revokeObjectURL( image.src );\n\t\t\t\tif ( onLoad ) onLoad( image );\n\n\t\t\t};\n\n\t\t\tif ( url.indexOf( 'data:' ) === 0 ) {\n\n\t\t\t\timage.src = url;\n\n\t\t\t} else {\n\n\t\t\t\tvar loader = new THREE.XHRLoader( this.manager );\n\t\t\t\tloader.setPath( this.path );\n\t\t\t\tloader.setResponseType( 'blob' );\n\t\t\t\tloader.load( url, function ( blob ) {\n\n\t\t\t\t\timage.src = URL.createObjectURL( blob );\n\n\t\t\t\t}, onProgress, onError );\n\n\t\t\t}\n\n\t\t\treturn image;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/JSONLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.JSONLoader = function ( manager ) {\n\n\t\tif ( typeof manager === 'boolean' ) {\n\n\t\t\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\n\t\t\tmanager = undefined;\n\n\t\t}\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t\tthis.withCredentials = false;\n\n\t};\n\n\tObject.assign( THREE.JSONLoader.prototype, {\n\n\t\tload: function( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar texturePath = this.texturePath && ( typeof this.texturePath === \"string\" ) ? this.texturePath : THREE.Loader.prototype.extractUrlBase( url );\n\n\t\t\tvar loader = new THREE.XHRLoader( this.manager );\n\t\t\tloader.setWithCredentials( this.withCredentials );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tvar json = JSON.parse( text );\n\t\t\t\tvar metadata = json.metadata;\n\n\t\t\t\tif ( metadata !== undefined ) {\n\n\t\t\t\t\tvar type = metadata.type;\n\n\t\t\t\t\tif ( type !== undefined ) {\n\n\t\t\t\t\t\tif ( type.toLowerCase() === 'object' ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( type.toLowerCase() === 'scene' ) {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar object = scope.parse( json, texturePath );\n\t\t\t\tonLoad( object.geometry, object.materials );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTexturePath: function ( value ) {\n\n\t\t\tthis.texturePath = value;\n\n\t\t},\n\n\t\tparse: function ( json, texturePath ) {\n\n\t\t\tvar geometry = new THREE.Geometry(),\n\t\t\tscale = ( json.scale !== undefined ) ? 1.0 / json.scale : 1.0;\n\n\t\t\tparseModel( scale );\n\n\t\t\tparseSkin();\n\t\t\tparseMorphing( scale );\n\t\t\tparseAnimations();\n\n\t\t\tgeometry.computeFaceNormals();\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\tfunction parseModel( scale ) {\n\n\t\t\t\tfunction isBitSet( value, position ) {\n\n\t\t\t\t\treturn value & ( 1 << position );\n\n\t\t\t\t}\n\n\t\t\t\tvar i, j, fi,\n\n\t\t\t\toffset, zLength,\n\n\t\t\tcolorIndex, normalIndex, uvIndex, materialIndex,\n\n\t\t\t\ttype,\n\t\t\t\tisQuad,\n\t\t\t\thasMaterial,\n\t\t\t\thasFaceVertexUv,\n\t\t\t\thasFaceNormal, hasFaceVertexNormal,\n\t\t\t\thasFaceColor, hasFaceVertexColor,\n\n\t\t\tvertex, face, faceA, faceB, hex, normal,\n\n\t\t\t\tuvLayer, uv, u, v,\n\n\t\t\t\tfaces = json.faces,\n\t\t\t\tvertices = json.vertices,\n\t\t\t\tnormals = json.normals,\n\t\t\t\tcolors = json.colors,\n\n\t\t\t\tnUvLayers = 0;\n\n\t\t\t\tif ( json.uvs !== undefined ) {\n\n\t\t\t\t\t// disregard empty arrays\n\n\t\t\t\t\tfor ( i = 0; i < json.uvs.length; i ++ ) {\n\n\t\t\t\t\t\tif ( json.uvs[ i ].length ) nUvLayers ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\tgeometry.faceVertexUvs[ i ] = [];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\toffset = 0;\n\t\t\t\tzLength = vertices.length;\n\n\t\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\t\tvertex = new THREE.Vector3();\n\n\t\t\t\t\tvertex.x = vertices[ offset ++ ] * scale;\n\t\t\t\t\tvertex.y = vertices[ offset ++ ] * scale;\n\t\t\t\t\tvertex.z = vertices[ offset ++ ] * scale;\n\n\t\t\t\t\tgeometry.vertices.push( vertex );\n\n\t\t\t\t}\n\n\t\t\t\toffset = 0;\n\t\t\t\tzLength = faces.length;\n\n\t\t\t\twhile ( offset < zLength ) {\n\n\t\t\t\t\ttype = faces[ offset ++ ];\n\n\n\t\t\t\t\tisQuad              = isBitSet( type, 0 );\n\t\t\t\t\thasMaterial         = isBitSet( type, 1 );\n\t\t\t\t\thasFaceVertexUv     = isBitSet( type, 3 );\n\t\t\t\t\thasFaceNormal       = isBitSet( type, 4 );\n\t\t\t\t\thasFaceVertexNormal = isBitSet( type, 5 );\n\t\t\t\t\thasFaceColor\t     = isBitSet( type, 6 );\n\t\t\t\t\thasFaceVertexColor  = isBitSet( type, 7 );\n\n\t\t\t\t\t// console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\n\n\t\t\t\t\tif ( isQuad ) {\n\n\t\t\t\t\t\tfaceA = new THREE.Face3();\n\t\t\t\t\t\tfaceA.a = faces[ offset ];\n\t\t\t\t\t\tfaceA.b = faces[ offset + 1 ];\n\t\t\t\t\t\tfaceA.c = faces[ offset + 3 ];\n\n\t\t\t\t\t\tfaceB = new THREE.Face3();\n\t\t\t\t\t\tfaceB.a = faces[ offset + 1 ];\n\t\t\t\t\t\tfaceB.b = faces[ offset + 2 ];\n\t\t\t\t\t\tfaceB.c = faces[ offset + 3 ];\n\n\t\t\t\t\t\toffset += 4;\n\n\t\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tfaceA.materialIndex = materialIndex;\n\t\t\t\t\t\t\tfaceB.materialIndex = materialIndex;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\n\n\t\t\t\t\t\t\t\tfor ( j = 0; j < 4; j ++ ) {\n\n\t\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\t\tuv = new THREE.Vector2( u, v );\n\n\t\t\t\t\t\t\t\t\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\n\t\t\t\t\t\t\t\t\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tfaceA.normal.set(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfaceB.normal.copy( faceA.normal );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\t\tnormal = new THREE.Vector3(\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t\t);\n\n\n\t\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\n\t\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\tfaceA.color.setHex( hex );\n\t\t\t\t\t\t\tfaceB.color.setHex( hex );\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 4; i ++ ) {\n\n\t\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\t\thex = colors[ colorIndex ];\n\n\t\t\t\t\t\t\t\tif ( i !== 2 ) faceA.vertexColors.push( new THREE.Color( hex ) );\n\t\t\t\t\t\t\t\tif ( i !== 0 ) faceB.vertexColors.push( new THREE.Color( hex ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry.faces.push( faceA );\n\t\t\t\t\t\tgeometry.faces.push( faceB );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tface = new THREE.Face3();\n\t\t\t\t\t\tface.a = faces[ offset ++ ];\n\t\t\t\t\t\tface.b = faces[ offset ++ ];\n\t\t\t\t\t\tface.c = faces[ offset ++ ];\n\n\t\t\t\t\t\tif ( hasMaterial ) {\n\n\t\t\t\t\t\t\tmaterialIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.materialIndex = materialIndex;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// to get face <=> uv index correspondence\n\n\t\t\t\t\t\tfi = geometry.faces.length;\n\n\t\t\t\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < nUvLayers; i ++ ) {\n\n\t\t\t\t\t\t\t\tuvLayer = json.uvs[ i ];\n\n\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ] = [];\n\n\t\t\t\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\t\t\tuvIndex = faces[ offset ++ ];\n\n\t\t\t\t\t\t\t\t\tu = uvLayer[ uvIndex * 2 ];\n\t\t\t\t\t\t\t\t\tv = uvLayer[ uvIndex * 2 + 1 ];\n\n\t\t\t\t\t\t\t\t\tuv = new THREE.Vector2( u, v );\n\n\t\t\t\t\t\t\t\t\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\tface.normal.set(\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\t\tnormalIndex = faces[ offset ++ ] * 3;\n\n\t\t\t\t\t\t\t\tnormal = new THREE.Vector3(\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ++ ],\n\t\t\t\t\t\t\t\t\tnormals[ normalIndex ]\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tface.vertexNormals.push( normal );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\tface.color.setHex( colors[ colorIndex ] );\n\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; i ++ ) {\n\n\t\t\t\t\t\t\t\tcolorIndex = faces[ offset ++ ];\n\t\t\t\t\t\t\t\tface.vertexColors.push( new THREE.Color( colors[ colorIndex ] ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry.faces.push( face );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction parseSkin() {\n\n\t\t\t\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\n\n\t\t\t\tif ( json.skinWeights ) {\n\n\t\t\t\t\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\t\tvar x =                               json.skinWeights[ i ];\n\t\t\t\t\t\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\n\t\t\t\t\t\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\n\t\t\t\t\t\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\n\n\t\t\t\t\t\tgeometry.skinWeights.push( new THREE.Vector4( x, y, z, w ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.skinIndices ) {\n\n\t\t\t\t\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\n\n\t\t\t\t\t\tvar a =                               json.skinIndices[ i ];\n\t\t\t\t\t\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\n\t\t\t\t\t\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\n\t\t\t\t\t\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\n\n\t\t\t\t\t\tgeometry.skinIndices.push( new THREE.Vector4( a, b, c, d ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.bones = json.bones;\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\n\n\t\t\t\t\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\n\t\t\t\t\t\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction parseMorphing( scale ) {\n\n\t\t\t\tif ( json.morphTargets !== undefined ) {\n\n\t\t\t\t\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tgeometry.morphTargets[ i ] = {};\n\t\t\t\t\t\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\n\t\t\t\t\t\tgeometry.morphTargets[ i ].vertices = [];\n\n\t\t\t\t\t\tvar dstVertices = geometry.morphTargets[ i ].vertices;\n\t\t\t\t\t\tvar srcVertices = json.morphTargets[ i ].vertices;\n\n\t\t\t\t\t\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\n\n\t\t\t\t\t\t\tvar vertex = new THREE.Vector3();\n\t\t\t\t\t\t\tvertex.x = srcVertices[ v ] * scale;\n\t\t\t\t\t\t\tvertex.y = srcVertices[ v + 1 ] * scale;\n\t\t\t\t\t\t\tvertex.z = srcVertices[ v + 2 ] * scale;\n\n\t\t\t\t\t\t\tdstVertices.push( vertex );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.' );\n\n\t\t\t\t\tvar faces = geometry.faces;\n\t\t\t\t\tvar morphColors = json.morphColors[ 0 ].colors;\n\n\t\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tfaces[ i ].color.fromArray( morphColors, i * 3 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction parseAnimations() {\n\n\t\t\t\tvar outputAnimations = [];\n\n\t\t\t\t// parse old style Bone/Hierarchy animations\n\t\t\t\tvar animations = [];\n\n\t\t\t\tif ( json.animation !== undefined ) {\n\n\t\t\t\t\tanimations.push( json.animation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( json.animations !== undefined ) {\n\n\t\t\t\t\tif ( json.animations.length ) {\n\n\t\t\t\t\t\tanimations = animations.concat( json.animations );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tanimations.push( json.animations );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i < animations.length; i ++ ) {\n\n\t\t\t\t\tvar clip = THREE.AnimationClip.parseAnimation( animations[ i ], geometry.bones );\n\t\t\t\t\tif ( clip ) outputAnimations.push( clip );\n\n\t\t\t\t}\n\n\t\t\t\t// parse implicit morph animations\n\t\t\t\tif ( geometry.morphTargets ) {\n\n\t\t\t\t\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\n\t\t\t\t\tvar morphAnimationClips = THREE.AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\n\t\t\t\t\toutputAnimations = outputAnimations.concat( morphAnimationClips );\n\n\t\t\t\t}\n\n\t\t\t\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\n\n\t\t\t}\n\n\t\t\tif ( json.materials === undefined || json.materials.length === 0 ) {\n\n\t\t\t\treturn { geometry: geometry };\n\n\t\t\t} else {\n\n\t\t\t\tvar materials = THREE.Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\n\n\t\t\t\treturn { geometry: geometry, materials: materials };\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/LoadingManager.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.LoadingManager = function ( onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar isLoading = false, itemsLoaded = 0, itemsTotal = 0;\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t};\n\n\tTHREE.DefaultLoadingManager = new THREE.LoadingManager();\n\n\t// File:src/loaders/BufferGeometryLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.BufferGeometryLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.BufferGeometryLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new THREE.XHRLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tparse: function ( json ) {\n\n\t\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\t\tvar index = json.data.index;\n\n\t\t\tvar TYPED_ARRAYS = {\n\t\t\t\t'Int8Array': Int8Array,\n\t\t\t\t'Uint8Array': Uint8Array,\n\t\t\t\t'Uint8ClampedArray': Uint8ClampedArray,\n\t\t\t\t'Int16Array': Int16Array,\n\t\t\t\t'Uint16Array': Uint16Array,\n\t\t\t\t'Int32Array': Int32Array,\n\t\t\t\t'Uint32Array': Uint32Array,\n\t\t\t\t'Float32Array': Float32Array,\n\t\t\t\t'Float64Array': Float64Array\n\t\t\t};\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\t\tgeometry.setIndex( new THREE.BufferAttribute( typedArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tvar attributes = json.data.attributes;\n\n\t\t\tfor ( var key in attributes ) {\n\n\t\t\t\tvar attribute = attributes[ key ];\n\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\tgeometry.addAttribute( key, new THREE.BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\n\n\t\t\t}\n\n\t\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\t\tif ( groups !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\t\tvar center = new THREE.Vector3();\n\n\t\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.boundingSphere = new THREE.Sphere( center, boundingSphere.radius );\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/MaterialLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.MaterialLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\t\tthis.textures = {};\n\n\t};\n\n\tObject.assign( THREE.MaterialLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new THREE.XHRLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTextures: function ( value ) {\n\n\t\t\tthis.textures = value;\n\n\t\t},\n\n\t\tgetTexture: function ( name ) {\n\n\t\t\tvar textures = this.textures;\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t},\n\n\t\tparse: function ( json ) {\n\n\t\t\tvar material = new THREE[ json.type ];\n\n\t\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\t\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\n\t\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\t\tif ( json.shading !== undefined ) material.shading = json.shading;\n\t\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\n\t\t\t// for PointsMaterial\n\t\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t\t// maps\n\n\t\t\tif ( json.map !== undefined ) material.map = this.getTexture( json.map );\n\n\t\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\t\tmaterial.alphaMap = this.getTexture( json.alphaMap );\n\t\t\t\tmaterial.transparent = true;\n\n\t\t\t}\n\n\t\t\tif ( json.bumpMap !== undefined ) material.bumpMap = this.getTexture( json.bumpMap );\n\t\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\t\tif ( json.normalMap !== undefined ) material.normalMap = this.getTexture( json.normalMap );\n\t\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\t\tvar normalScale = json.normalScale;\n\n\t\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t\t}\n\n\t\t\t\tmaterial.normalScale = new THREE.Vector2().fromArray( normalScale );\n\n\t\t\t}\n\n\t\t\tif ( json.displacementMap !== undefined ) material.displacementMap = this.getTexture( json.displacementMap );\n\t\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = this.getTexture( json.roughnessMap );\n\t\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = this.getTexture( json.metalnessMap );\n\n\t\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = this.getTexture( json.emissiveMap );\n\t\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\t\tif ( json.specularMap !== undefined ) material.specularMap = this.getTexture( json.specularMap );\n\n\t\t\tif ( json.envMap !== undefined ) {\n\n\t\t\t\tmaterial.envMap = this.getTexture( json.envMap );\n\t\t\t\tmaterial.combine = THREE.MultiplyOperation;\n\n\t\t\t}\n\n\t\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\t\tif ( json.lightMap !== undefined ) material.lightMap = this.getTexture( json.lightMap );\n\t\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\t\tif ( json.aoMap !== undefined ) material.aoMap = this.getTexture( json.aoMap );\n\t\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\t\t// MultiMaterial\n\n\t\t\tif ( json.materials !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.materials.length; i < l; i ++ ) {\n\n\t\t\t\t\tmaterial.materials.push( this.parse( json.materials[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn material;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/ObjectLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.ObjectLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\t\tthis.texturePath = '';\n\n\t};\n\n\tObject.assign( THREE.ObjectLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tif ( this.texturePath === '' ) {\n\n\t\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t\t}\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new THREE.XHRLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tscope.parse( JSON.parse( text ), onLoad );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTexturePath: function ( value ) {\n\n\t\t\tthis.texturePath = value;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\n\t\t},\n\n\t\tparse: function ( json, onLoad ) {\n\n\t\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t\t} );\n\n\t\t\tvar textures  = this.parseTextures( json.textures, images );\n\t\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\t\tif ( json.animations ) {\n\n\t\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t\t}\n\n\t\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t},\n\n\t\tparseGeometries: function ( json ) {\n\n\t\t\tvar geometries = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tvar geometryLoader = new THREE.JSONLoader();\n\t\t\t\tvar bufferGeometryLoader = new THREE.BufferGeometryLoader();\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar geometry;\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE [ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data.data, this.texturePath ).geometry;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn geometries;\n\n\t\t},\n\n\t\tparseMaterials: function ( json, textures ) {\n\n\t\t\tvar materials = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tvar loader = new THREE.MaterialLoader();\n\t\t\t\tloader.setTextures( textures );\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar material = loader.parse( json[ i ] );\n\t\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t},\n\n\t\tparseAnimations: function ( json ) {\n\n\t\t\tvar animations = [];\n\n\t\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tvar clip = THREE.AnimationClip.parse( json[ i ] );\n\n\t\t\t\tanimations.push( clip );\n\n\t\t\t}\n\n\t\t\treturn animations;\n\n\t\t},\n\n\t\tparseImages: function ( json, onLoad ) {\n\n\t\t\tvar scope = this;\n\t\t\tvar images = {};\n\n\t\t\tfunction loadImage( url ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\treturn loader.load( url, function () {\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\t\tvar manager = new THREE.LoadingManager( onLoad );\n\n\t\t\t\tvar loader = new THREE.ImageLoader( manager );\n\t\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar image = json[ i ];\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn images;\n\n\t\t},\n\n\t\tparseTextures: function ( json, images ) {\n\n\t\t\tfunction parseConstant( value ) {\n\n\t\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\t\treturn THREE[ value ];\n\n\t\t\t}\n\n\t\t\tvar textures = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar texture = new THREE.Texture( images[ data.image ] );\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\t\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping );\n\t\t\t\t\tif ( data.offset !== undefined ) texture.offset = new THREE.Vector2( data.offset[ 0 ], data.offset[ 1 ] );\n\t\t\t\t\tif ( data.repeat !== undefined ) texture.repeat = new THREE.Vector2( data.repeat[ 0 ], data.repeat[ 1 ] );\n\t\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter );\n\t\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter );\n\t\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\t\t\t\t\tif ( Array.isArray( data.wrap ) ) {\n\n\t\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ] );\n\t\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn textures;\n\n\t\t},\n\n\t\tparseObject: function () {\n\n\t\t\tvar matrix = new THREE.Matrix4();\n\n\t\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\t\tvar object;\n\n\t\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn geometries[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn materials[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'Scene':\n\n\t\t\t\t\t\tobject = new THREE.Scene();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\t\tobject = new THREE.PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\t\tobject = new THREE.OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\t\tobject = new THREE.AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\t\tobject = new THREE.DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\t\tobject = new THREE.PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\t\tobject = new THREE.SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\t\tobject = new THREE.HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\t\tobject = new THREE.SkinnedMesh( geometry, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new THREE.Mesh( geometry, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LOD':\n\n\t\t\t\t\t\tobject = new THREE.LOD();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Line':\n\n\t\t\t\t\t\tobject = new THREE.Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointCloud':\n\t\t\t\t\tcase 'Points':\n\n\t\t\t\t\t\tobject = new THREE.Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\t\tobject = new THREE.Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Group':\n\n\t\t\t\t\t\tobject = new THREE.Group();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tobject = new THREE.Object3D();\n\n\t\t\t\t}\n\n\t\t\t\tobject.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\t\tfor ( var child in data.children ) {\n\n\t\t\t\t\t\tobject.add( this.parseObject( data.children[ child ], geometries, materials ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\t\tvar levels = data.levels;\n\n\t\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn object;\n\n\t\t\t};\n\n\t\t}()\n\n\t} );\n\n\t// File:src/loaders/TextureLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.TextureLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.TextureLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar texture = new THREE.Texture();\n\n\t\t\tvar loader = new THREE.ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.load( url, function ( image ) {\n\n\t\t\t\ttexture.image = image;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\t\tonLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/CubeTextureLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.CubeTextureLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t};\n\n\tObject.assign( THREE.CubeTextureLoader.prototype, {\n\n\t\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\t\tvar texture = new THREE.CubeTexture();\n\n\t\t\tvar loader = new THREE.ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\t\tloader.setPath( this.path );\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfunction loadTexture( i ) {\n\n\t\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\t\tloaded ++;\n\n\t\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, undefined, onError );\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\t\t\treturn this;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/BinaryTextureLoader.js\n\n\t/**\n\t * @author Nikos M. / https://github.com/foo123/\n\t *\n\t * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n\t */\n\n\tTHREE.DataTextureLoader = THREE.BinaryTextureLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t\t// override in sub classes\n\t\tthis._parser = null;\n\n\t};\n\n\tObject.assign( THREE.BinaryTextureLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar texture = new THREE.DataTexture();\n\n\t\t\tvar loader = new THREE.XHRLoader( this.manager );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\t\tif ( ! texData ) return;\n\n\t\t\t\tif ( undefined !== texData.image ) {\n\n\t\t\t\t\ttexture.image = texData.image;\n\n\t\t\t\t} else if ( undefined !== texData.data ) {\n\n\t\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : THREE.ClampToEdgeWrapping;\n\t\t\t\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : THREE.ClampToEdgeWrapping;\n\n\t\t\t\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : THREE.LinearFilter;\n\t\t\t\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : THREE.LinearMipMapLinearFilter;\n\n\t\t\t\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\n\n\t\t\t\tif ( undefined !== texData.format ) {\n\n\t\t\t\t\ttexture.format = texData.format;\n\n\t\t\t\t}\n\t\t\t\tif ( undefined !== texData.type ) {\n\n\t\t\t\t\ttexture.type = texData.type;\n\n\t\t\t\t}\n\n\t\t\t\tif ( undefined !== texData.mipmaps ) {\n\n\t\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( 1 === texData.mipmapCount ) {\n\n\t\t\t\t\ttexture.minFilter = THREE.LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t\t}, onProgress, onError );\n\n\n\t\t\treturn texture;\n\n\t\t}\n\n\t} );\n\n\t// File:src/loaders/CompressedTextureLoader.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t *\n\t * Abstract Base class to block based textures loader (dds, pvr, ...)\n\t */\n\n\tTHREE.CompressedTextureLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\n\t\t// override in sub classes\n\t\tthis._parser = null;\n\n\t};\n\n\tObject.assign( THREE.CompressedTextureLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tvar scope = this;\n\n\t\t\tvar images = [];\n\n\t\t\tvar texture = new THREE.CompressedTexture();\n\t\t\ttexture.image = images;\n\n\t\t\tvar loader = new THREE.XHRLoader( this.manager );\n\t\t\tloader.setPath( this.path );\n\t\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\t\tfunction loadTexture( i ) {\n\n\t\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\t\timages[ i ] = {\n\t\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t\t};\n\n\t\t\t\t\tloaded += 1;\n\n\t\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\t\ttexture.minFilter = THREE.LinearFilter;\n\n\t\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t\t}\n\n\t\t\t\t}, onProgress, onError );\n\n\t\t\t}\n\n\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\tvar loaded = 0;\n\n\t\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\t\tloadTexture( i );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\t\timages[ f ] = { mipmaps : [] };\n\n\t\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\t\ttexture.minFilter = THREE.LinearFilter;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}, onProgress, onError );\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tsetPath: function ( value ) {\n\n\t\t\tthis.path = value;\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/materials/Material.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Material = function () {\n\n\t\tObject.defineProperty( this, 'id', { value: THREE.MaterialIdCount ++ } );\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.fog = true;\n\t\tthis.lights = true;\n\n\t\tthis.blending = THREE.NormalBlending;\n\t\tthis.side = THREE.FrontSide;\n\t\tthis.shading = THREE.SmoothShading; // THREE.FlatShading, THREE.SmoothShading\n\t\tthis.vertexColors = THREE.NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = THREE.SrcAlphaFactor;\n\t\tthis.blendDst = THREE.OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = THREE.AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = THREE.LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipShadows = false;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.alphaTest = 0;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\n\n\t\tthis.visible = true;\n\n\t\tthis._needsUpdate = true;\n\n\t};\n\n\tTHREE.Material.prototype = {\n\n\t\tconstructor: THREE.Material,\n\n\t\tget needsUpdate() {\n\n\t\t\treturn this._needsUpdate;\n\n\t\t},\n\n\t\tset needsUpdate( value ) {\n\n\t\t\tif ( value === true ) this.update();\n\t\t\tthis._needsUpdate = value;\n\n\t\t},\n\n\t\tsetValues: function ( values ) {\n\n\t\t\tif ( values === undefined ) return;\n\n\t\t\tfor ( var key in values ) {\n\n\t\t\t\tvar newValue = values[ key ];\n\n\t\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar currentValue = this[ key ];\n\n\t\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tif ( currentValue instanceof THREE.Color ) {\n\n\t\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t\t} else if ( currentValue instanceof THREE.Vector3 && newValue instanceof THREE.Vector3 ) {\n\n\t\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t\t} else if ( key === 'overdraw' ) {\n\n\t\t\t\t\t// ensure overdraw is backwards-compatible with legacy boolean type\n\t\t\t\t\tthis[ key ] = Number( newValue );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar isRoot = meta === undefined;\n\n\t\t\tif ( isRoot ) {\n\n\t\t\t\tmeta = {\n\t\t\t\t\ttextures: {},\n\t\t\t\t\timages: {}\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tvar data = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.4,\n\t\t\t\t\ttype: 'Material',\n\t\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// standard Material serialization\n\t\t\tdata.uuid = this.uuid;\n\t\t\tdata.type = this.type;\n\n\t\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\t\tif ( this.color instanceof THREE.Color ) data.color = this.color.getHex();\n\n\t\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\t\tif ( this.emissive instanceof THREE.Color ) data.emissive = this.emissive.getHex();\n\t\t\tif ( this.specular instanceof THREE.Color ) data.specular = this.specular.getHex();\n\t\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\n\t\t\tif ( this.map instanceof THREE.Texture ) data.map = this.map.toJSON( meta ).uuid;\n\t\t\tif ( this.alphaMap instanceof THREE.Texture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\t\tif ( this.lightMap instanceof THREE.Texture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tif ( this.bumpMap instanceof THREE.Texture ) {\n\n\t\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t\t}\n\t\t\tif ( this.normalMap instanceof THREE.Texture ) {\n\n\t\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t\t}\n\t\t\tif ( this.displacementMap instanceof THREE.Texture ) {\n\n\t\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t\t}\n\t\t\tif ( this.roughnessMap instanceof THREE.Texture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\t\tif ( this.metalnessMap instanceof THREE.Texture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.emissiveMap instanceof THREE.Texture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\t\tif ( this.specularMap instanceof THREE.Texture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.envMap instanceof THREE.Texture ) {\n\n\t\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t\t}\n\n\t\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\t\tif ( this.blending !== THREE.NormalBlending ) data.blending = this.blending;\n\t\t\tif ( this.shading !== THREE.SmoothShading ) data.shading = this.shading;\n\t\t\tif ( this.side !== THREE.FrontSide ) data.side = this.side;\n\t\t\tif ( this.vertexColors !== THREE.NoColors ) data.vertexColors = this.vertexColors;\n\n\t\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\t\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\t\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\n\t\t\t// TODO: Copied from Object3D.toJSON\n\n\t\t\tfunction extractFromCache ( cache ) {\n\n\t\t\t\tvar values = [];\n\n\t\t\t\tfor ( var key in cache ) {\n\n\t\t\t\t\tvar data = cache[ key ];\n\t\t\t\t\tdelete data.metadata;\n\t\t\t\t\tvalues.push( data );\n\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\n\t\t\t}\n\n\t\t\tif ( isRoot ) {\n\n\t\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.name = source.name;\n\n\t\t\tthis.fog = source.fog;\n\t\t\tthis.lights = source.lights;\n\n\t\t\tthis.blending = source.blending;\n\t\t\tthis.side = source.side;\n\t\t\tthis.shading = source.shading;\n\t\t\tthis.vertexColors = source.vertexColors;\n\n\t\t\tthis.opacity = source.opacity;\n\t\t\tthis.transparent = source.transparent;\n\n\t\t\tthis.blendSrc = source.blendSrc;\n\t\t\tthis.blendDst = source.blendDst;\n\t\t\tthis.blendEquation = source.blendEquation;\n\t\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\t\tthis.depthFunc = source.depthFunc;\n\t\t\tthis.depthTest = source.depthTest;\n\t\t\tthis.depthWrite = source.depthWrite;\n\n\t\t\tthis.colorWrite = source.colorWrite;\n\n\t\t\tthis.precision = source.precision;\n\n\t\t\tthis.polygonOffset = source.polygonOffset;\n\t\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\t\tthis.alphaTest = source.alphaTest;\n\n\t\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\t\tthis.overdraw = source.overdraw;\n\n\t\t\tthis.visible = source.visible;\n\t\t\tthis.clipShadows = source.clipShadows;\n\n\t\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\t\tdstPlanes = null;\n\n\t\t\tif ( srcPlanes !== null ) {\n\n\t\t\t\tvar n = srcPlanes.length;\n\t\t\t\tdstPlanes = new Array( n );\n\n\t\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t\tthis.clippingPlanes = dstPlanes;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'update' } );\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t};\n\n\tObject.assign( THREE.Material.prototype, THREE.EventDispatcher.prototype );\n\n\tTHREE.MaterialIdCount = 0;\n\n\t// File:src/materials/LineBasicMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *\n\t *  linewidth: <float>,\n\t *  linecap: \"round\",\n\t *  linejoin: \"round\"\n\t * }\n\t */\n\n\tTHREE.LineBasicMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.LineBasicMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.LineBasicMaterial.prototype.constructor = THREE.LineBasicMaterial;\n\n\tTHREE.LineBasicMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/LineDashedMaterial.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *\n\t *  linewidth: <float>,\n\t *\n\t *  scale: <float>,\n\t *  dashSize: <float>,\n\t *  gapSize: <float>\n\t * }\n\t */\n\n\tTHREE.LineDashedMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.LineDashedMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.LineDashedMaterial.prototype.constructor = THREE.LineDashedMaterial;\n\n\tTHREE.LineDashedMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshBasicMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  specularMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n\t *  combine: THREE.Multiply,\n\t *  reflectivity: <float>,\n\t *  refractionRatio: <float>,\n\t *\n\t *  shading: THREE.SmoothShading,\n\t *  depthTest: <bool>,\n\t *  depthWrite: <bool>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>\n\t * }\n\t */\n\n\tTHREE.MeshBasicMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = THREE.MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\n\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshBasicMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.MeshBasicMaterial.prototype.constructor = THREE.MeshBasicMaterial;\n\n\tTHREE.MeshBasicMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshDepthMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author bhouston / https://clara.io\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>\n\t * }\n\t */\n\n\tTHREE.MeshDepthMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = THREE.BasicDepthPacking;\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshDepthMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.MeshDepthMaterial.prototype.constructor = THREE.MeshDepthMaterial;\n\n\tTHREE.MeshDepthMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshLambertMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  emissive: <hex>,\n\t *  emissiveIntensity: <float>\n\t *  emissiveMap: new THREE.Texture( <Image> ),\n\t *\n\t *  specularMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n\t *  combine: THREE.Multiply,\n\t *  reflectivity: <float>,\n\t *  refractionRatio: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tTHREE.MeshLambertMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new THREE.Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = THREE.MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshLambertMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.MeshLambertMaterial.prototype.constructor = THREE.MeshLambertMaterial;\n\n\tTHREE.MeshLambertMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshNormalMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t *\n\t * parameters = {\n\t *  opacity: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>\n\t * }\n\t */\n\n\tTHREE.MeshNormalMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this, parameters );\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false;\n\t\tthis.lights = false;\n\t\tthis.morphTargets = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshNormalMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.MeshNormalMaterial.prototype.constructor = THREE.MeshNormalMaterial;\n\n\tTHREE.MeshNormalMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshPhongMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  specular: <hex>,\n\t *  shininess: <float>,\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  emissive: <hex>,\n\t *  emissiveIntensity: <float>\n\t *  emissiveMap: new THREE.Texture( <Image> ),\n\t *\n\t *  bumpMap: new THREE.Texture( <Image> ),\n\t *  bumpScale: <float>,\n\t *\n\t *  normalMap: new THREE.Texture( <Image> ),\n\t *  normalScale: <Vector2>,\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  specularMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\n\t *  combine: THREE.Multiply,\n\t *  reflectivity: <float>,\n\t *  refractionRatio: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tTHREE.MeshPhongMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff ); // diffuse\n\t\tthis.specular = new THREE.Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new THREE.Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalScale = new THREE.Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = THREE.MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshPhongMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.MeshPhongMaterial.prototype.constructor = THREE.MeshPhongMaterial;\n\n\tTHREE.MeshPhongMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshStandardMaterial.js\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  roughness: <float>,\n\t *  metalness: <float>,\n\t *  opacity: <float>,\n\t *\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  lightMap: new THREE.Texture( <Image> ),\n\t *  lightMapIntensity: <float>\n\t *\n\t *  aoMap: new THREE.Texture( <Image> ),\n\t *  aoMapIntensity: <float>\n\t *\n\t *  emissive: <hex>,\n\t *  emissiveIntensity: <float>\n\t *  emissiveMap: new THREE.Texture( <Image> ),\n\t *\n\t *  bumpMap: new THREE.Texture( <Image> ),\n\t *  bumpScale: <float>,\n\t *\n\t *  normalMap: new THREE.Texture( <Image> ),\n\t *  normalScale: <Vector2>,\n\t *\n\t *  displacementMap: new THREE.Texture( <Image> ),\n\t *  displacementScale: <float>,\n\t *  displacementBias: <float>,\n\t *\n\t *  roughnessMap: new THREE.Texture( <Image> ),\n\t *\n\t *  metalnessMap: new THREE.Texture( <Image> ),\n\t *\n\t *  alphaMap: new THREE.Texture( <Image> ),\n\t *\n\t *  envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n\t *  envMapIntensity: <float>\n\t *\n\t *  refractionRatio: <float>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tTHREE.MeshStandardMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 0.5;\n\t\tthis.metalness = 0.5;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new THREE.Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalScale = new THREE.Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.skinning = false;\n\t\tthis.morphTargets = false;\n\t\tthis.morphNormals = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshStandardMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.MeshStandardMaterial.prototype.constructor = THREE.MeshStandardMaterial;\n\n\tTHREE.MeshStandardMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.skinning = source.skinning;\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MeshPhysicalMaterial.js\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t *\n\t * parameters = {\n\t *  reflectivity: <float>\n\t * }\n\t */\n\n\tTHREE.MeshPhysicalMaterial = function ( parameters ) {\n\n\t\tTHREE.MeshStandardMaterial.call( this );\n\n\t\tthis.defines = { 'PHYSICAL': '' };\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\t\tthis.clearCoat = 0.0;\n\t\tthis.clearCoatRoughness = 0.0;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.MeshPhysicalMaterial.prototype = Object.create( THREE.MeshStandardMaterial.prototype );\n\tTHREE.MeshPhysicalMaterial.prototype.constructor = THREE.MeshPhysicalMaterial;\n\n\tTHREE.MeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.MeshStandardMaterial.prototype.copy.call( this, source );\n\n\t\tthis.defines = { 'PHYSICAL': '' };\n\n\t\tthis.reflectivity = source.reflectivity;\n\n\t\tthis.clearCoat = source.clearCoat;\n\t\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/MultiMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.MultiMaterial = function ( materials ) {\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.type = 'MultiMaterial';\n\n\t\tthis.materials = materials instanceof Array ? materials : [];\n\n\t\tthis.visible = true;\n\n\t};\n\n\tTHREE.MultiMaterial.prototype = {\n\n\t\tconstructor: THREE.MultiMaterial,\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar output = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.2,\n\t\t\t\t\ttype: 'material',\n\t\t\t\t\tgenerator: 'MaterialExporter'\n\t\t\t\t},\n\t\t\t\tuuid: this.uuid,\n\t\t\t\ttype: this.type,\n\t\t\t\tmaterials: []\n\t\t\t};\n\n\t\t\tvar materials = this.materials;\n\n\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\tvar material = materials[ i ].toJSON( meta );\n\t\t\t\tdelete material.metadata;\n\n\t\t\t\toutput.materials.push( material );\n\n\t\t\t}\n\n\t\t\toutput.visible = this.visible;\n\n\t\t\treturn output;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\tvar material = new this.constructor();\n\n\t\t\tfor ( var i = 0; i < this.materials.length; i ++ ) {\n\n\t\t\t\tmaterial.materials.push( this.materials[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tmaterial.visible = this.visible;\n\n\t\t\treturn material;\n\n\t\t}\n\n\t};\n\n\t// File:src/materials/PointsMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *  size: <float>,\n\t *  sizeAttenuation: <bool>\n\t * }\n\t */\n\n\tTHREE.PointsMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.PointsMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.PointsMaterial.prototype.constructor = THREE.PointsMaterial;\n\n\tTHREE.PointsMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/ShaderMaterial.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  defines: { \"label\" : \"value\" },\n\t *  uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n\t *\n\t *  fragmentShader: <string>,\n\t *  vertexShader: <string>,\n\t *\n\t *  wireframe: <boolean>,\n\t *  wireframeLinewidth: <float>,\n\t *\n\t *  lights: <bool>,\n\t *\n\t *  skinning: <bool>,\n\t *  morphTargets: <bool>,\n\t *  morphNormals: <bool>\n\t * }\n\t */\n\n\tTHREE.ShaderMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\n\t\tthis.vertexShader = 'void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}';\n\t\tthis.fragmentShader = 'void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}';\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.skinning = false; // set to use skinning attribute streams\n\t\tthis.morphTargets = false; // set to use morph targets\n\t\tthis.morphNormals = false; // set to use morph normals\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t};\n\n\tTHREE.ShaderMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.ShaderMaterial.prototype.constructor = THREE.ShaderMaterial;\n\n\tTHREE.ShaderMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = THREE.UniformsUtils.clone( source.uniforms );\n\n\t\tthis.defines = source.defines;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.skinning = source.skinning;\n\n\t\tthis.morphTargets = source.morphTargets;\n\t\tthis.morphNormals = source.morphNormals;\n\n\t\tthis.extensions = source.extensions;\n\n\t\treturn this;\n\n\t};\n\n\tTHREE.ShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\t\tvar data = THREE.Material.prototype.toJSON.call( this, meta );\n\n\t\tdata.uniforms = this.uniforms;\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\treturn data;\n\n\t};\n\n\t// File:src/materials/RawShaderMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.RawShaderMaterial = function ( parameters ) {\n\n\t\tTHREE.ShaderMaterial.call( this, parameters );\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t};\n\n\tTHREE.RawShaderMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );\n\tTHREE.RawShaderMaterial.prototype.constructor = THREE.RawShaderMaterial;\n\n\t// File:src/materials/SpriteMaterial.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * parameters = {\n\t *  color: <hex>,\n\t *  opacity: <float>,\n\t *  map: new THREE.Texture( <Image> ),\n\t *\n\t *\tuvOffset: new THREE.Vector2(),\n\t *\tuvScale: new THREE.Vector2()\n\t * }\n\t */\n\n\tTHREE.SpriteMaterial = function ( parameters ) {\n\n\t\tTHREE.Material.call( this );\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new THREE.Color( 0xffffff );\n\t\tthis.map = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.fog = false;\n\t\tthis.lights = false;\n\n\t\tthis.setValues( parameters );\n\n\t};\n\n\tTHREE.SpriteMaterial.prototype = Object.create( THREE.Material.prototype );\n\tTHREE.SpriteMaterial.prototype.constructor = THREE.SpriteMaterial;\n\n\tTHREE.SpriteMaterial.prototype.copy = function ( source ) {\n\n\t\tTHREE.Material.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.map = source.map;\n\n\t\tthis.rotation = source.rotation;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/materials/ShadowMaterial.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.ShadowMaterial = function () {\n\n\t\tTHREE.ShaderMaterial.call( this, {\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\t\t\t\tTHREE.UniformsLib[ \"lights\" ],\n\t\t\t\t{\n\t\t\t\t\topacity: { value: 1.0 }\n\t\t\t\t}\n\t\t\t] ),\n\t\t\tvertexShader: THREE.ShaderChunk[ 'shadow_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'shadow_frag' ]\n\t\t} );\n\n\t\tthis.lights = true;\n\t\tthis.transparent = true;\n\n\t\tObject.defineProperties( this, {\n\t\t\topacity: {\n\t\t\t\tenumerable: true,\n\t\t\t\tget: function () {\n\t\t\t\t\treturn this.uniforms.opacity.value;\n\t\t\t\t},\n\t\t\t\tset: function ( value ) {\n\t\t\t\t\tthis.uniforms.opacity.value = value;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t};\n\n\tTHREE.ShadowMaterial.prototype = Object.create( THREE.ShaderMaterial.prototype );\n\tTHREE.ShadowMaterial.prototype.constructor = THREE.ShadowMaterial;\n\n\t// File:src/textures/Texture.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author szimek / https://github.com/szimek/\n\t */\n\n\tTHREE.Texture = function ( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\tObject.defineProperty( this, 'id', { value: THREE.TextureIdCount ++ } );\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.sourceFile = '';\n\n\t\tthis.image = image !== undefined ? image : THREE.Texture.DEFAULT_IMAGE;\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping !== undefined ? mapping : THREE.Texture.DEFAULT_MAPPING;\n\n\t\tthis.wrapS = wrapS !== undefined ? wrapS : THREE.ClampToEdgeWrapping;\n\t\tthis.wrapT = wrapT !== undefined ? wrapT : THREE.ClampToEdgeWrapping;\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : THREE.LinearFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : THREE.LinearMipMapLinearFilter;\n\n\t\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\t\tthis.format = format !== undefined ? format : THREE.RGBAFormat;\n\t\tthis.type = type !== undefined ? type : THREE.UnsignedByteType;\n\n\t\tthis.offset = new THREE.Vector2( 0, 0 );\n\t\tthis.repeat = new THREE.Vector2( 1, 1 );\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update.  You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding !== undefined ? encoding :  THREE.LinearEncoding;\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t};\n\n\tTHREE.Texture.DEFAULT_IMAGE = undefined;\n\tTHREE.Texture.DEFAULT_MAPPING = THREE.UVMapping;\n\n\tTHREE.Texture.prototype = {\n\n\t\tconstructor: THREE.Texture,\n\n\t\tset needsUpdate( value ) {\n\n\t\t\tif ( value === true ) this.version ++;\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.image = source.image;\n\t\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\t\tthis.mapping = source.mapping;\n\n\t\t\tthis.wrapS = source.wrapS;\n\t\t\tthis.wrapT = source.wrapT;\n\n\t\t\tthis.magFilter = source.magFilter;\n\t\t\tthis.minFilter = source.minFilter;\n\n\t\t\tthis.anisotropy = source.anisotropy;\n\n\t\t\tthis.format = source.format;\n\t\t\tthis.type = source.type;\n\n\t\t\tthis.offset.copy( source.offset );\n\t\t\tthis.repeat.copy( source.repeat );\n\n\t\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\t\tthis.flipY = source.flipY;\n\t\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\t\tthis.encoding = source.encoding;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tif ( meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t\t}\n\n\t\t\tfunction getDataURL( image ) {\n\n\t\t\t\tvar canvas;\n\n\t\t\t\tif ( image.toDataURL !== undefined ) {\n\n\t\t\t\t\tcanvas = image;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\t\tcanvas.width = image.width;\n\t\t\t\t\tcanvas.height = image.height;\n\n\t\t\t\t\tcanvas.getContext( '2d' ).drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar output = {\n\t\t\t\tmetadata: {\n\t\t\t\t\tversion: 4.4,\n\t\t\t\t\ttype: 'Texture',\n\t\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t\t},\n\n\t\t\t\tuuid: this.uuid,\n\t\t\t\tname: this.name,\n\n\t\t\t\tmapping: this.mapping,\n\n\t\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\t\tminFilter: this.minFilter,\n\t\t\t\tmagFilter: this.magFilter,\n\t\t\t\tanisotropy: this.anisotropy\n\t\t\t};\n\n\t\t\tif ( this.image !== undefined ) {\n\n\t\t\t\t// TODO: Move to THREE.Image\n\n\t\t\t\tvar image = this.image;\n\n\t\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\t\timage.uuid = THREE.Math.generateUUID(); // UGH\n\n\t\t\t\t}\n\n\t\t\t\tif ( meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\t\turl: getDataURL( image )\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\toutput.image = image.uuid;\n\n\t\t\t}\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t\treturn output;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t},\n\n\t\ttransformUv: function ( uv ) {\n\n\t\t\tif ( this.mapping !== THREE.UVMapping )  return;\n\n\t\t\tuv.multiply( this.repeat );\n\t\t\tuv.add( this.offset );\n\n\t\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\t\tcase THREE.RepeatWrapping:\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.ClampToEdgeWrapping:\n\n\t\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.MirroredRepeatWrapping:\n\n\t\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\t\tcase THREE.RepeatWrapping:\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.ClampToEdgeWrapping:\n\n\t\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.MirroredRepeatWrapping:\n\n\t\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.flipY ) {\n\n\t\t\t\tuv.y = 1 - uv.y;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tObject.assign( THREE.Texture.prototype, THREE.EventDispatcher.prototype );\n\n\tTHREE.TextureIdCount = 0;\n\n\t// File:src/textures/DepthTexture.js\n\n\t/**\n\t * @author Matt DesLauriers / @mattdesl\n\t */\n\n\tTHREE.DepthTexture = function ( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy ) {\n\n\t  THREE.Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, THREE.DepthFormat, type, anisotropy );\n\n\t  this.image = { width: width, height: height };\n\n\t  this.type = type !== undefined ? type : THREE.UnsignedShortType;\n\n\t  this.magFilter = magFilter !== undefined ? magFilter : THREE.NearestFilter;\n\t  this.minFilter = minFilter !== undefined ? minFilter : THREE.NearestFilter;\n\n\t  this.flipY = false;\n\t  this.generateMipmaps  = false;\n\n\t};\n\n\tTHREE.DepthTexture.prototype = Object.create( THREE.Texture.prototype );\n\tTHREE.DepthTexture.prototype.constructor = THREE.DepthTexture;\n\n\t// File:src/textures/CanvasTexture.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.CanvasTexture = function ( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tTHREE.Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.needsUpdate = true;\n\n\t};\n\n\tTHREE.CanvasTexture.prototype = Object.create( THREE.Texture.prototype );\n\tTHREE.CanvasTexture.prototype.constructor = THREE.CanvasTexture;\n\n\t// File:src/textures/CubeTexture.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.CubeTexture = function ( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : THREE.CubeReflectionMapping;\n\n\t\tTHREE.Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.flipY = false;\n\n\t};\n\n\tTHREE.CubeTexture.prototype = Object.create( THREE.Texture.prototype );\n\tTHREE.CubeTexture.prototype.constructor = THREE.CubeTexture;\n\n\tObject.defineProperty( THREE.CubeTexture.prototype, 'images', {\n\n\t\tget: function () {\n\n\t\t\treturn this.image;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.image = value;\n\n\t\t}\n\n\t} );\n\n\t// File:src/textures/CompressedTexture.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.CompressedTexture = function ( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tTHREE.Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t};\n\n\tTHREE.CompressedTexture.prototype = Object.create( THREE.Texture.prototype );\n\tTHREE.CompressedTexture.prototype.constructor = THREE.CompressedTexture;\n\n\t// File:src/textures/DataTexture.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.DataTexture = function ( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tTHREE.Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : THREE.NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : THREE.NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps  = false;\n\n\t};\n\n\tTHREE.DataTexture.prototype = Object.create( THREE.Texture.prototype );\n\tTHREE.DataTexture.prototype.constructor = THREE.DataTexture;\n\n\t// File:src/textures/VideoTexture.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.VideoTexture = function ( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tTHREE.Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.generateMipmaps = false;\n\n\t\tvar scope = this;\n\n\t\tfunction update() {\n\n\t\t\trequestAnimationFrame( update );\n\n\t\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\t\tscope.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tupdate();\n\n\t};\n\n\tTHREE.VideoTexture.prototype = Object.create( THREE.Texture.prototype );\n\tTHREE.VideoTexture.prototype.constructor = THREE.VideoTexture;\n\n\t// File:src/objects/Group.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Group = function () {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Group';\n\n\t};\n\n\tTHREE.Group.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Group\n\n\t} );\n\n\t// File:src/objects/Points.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Points = function ( geometry, material ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry !== undefined ? geometry : new THREE.BufferGeometry();\n\t\tthis.material = material !== undefined ? material : new THREE.PointsMaterial( { color: Math.random() * 0xffffff } );\n\n\t};\n\n\tTHREE.Points.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Points,\n\n\t\traycast: ( function () {\n\n\t\t\tvar inverseMatrix = new THREE.Matrix4();\n\t\t\tvar ray = new THREE.Ray();\n\t\t\tvar sphere = new THREE.Sphere();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tvar object = this;\n\t\t\t\tvar geometry = this.geometry;\n\t\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t\t//\n\n\t\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\t\tvar position = new THREE.Vector3();\n\n\t\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\t\tvar intersectPoint = ray.closestPointToPoint( point );\n\t\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\t\t\tvar index = geometry.index;\n\t\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/Line.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Line = function ( geometry, material, mode ) {\n\n\t\tif ( mode === 1 ) {\n\n\t\t\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\n\t\t\treturn new THREE.LineSegments( geometry, material );\n\n\t\t}\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry !== undefined ? geometry : new THREE.BufferGeometry();\n\t\tthis.material = material !== undefined ? material : new THREE.LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\t};\n\n\tTHREE.Line.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Line,\n\n\t\traycast: ( function () {\n\n\t\t\tvar inverseMatrix = new THREE.Matrix4();\n\t\t\tvar ray = new THREE.Ray();\n\t\t\tvar sphere = new THREE.Sphere();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tvar precision = raycaster.linePrecision;\n\t\t\t\tvar precisionSq = precision * precision;\n\n\t\t\t\tvar geometry = this.geometry;\n\t\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t\t//\n\n\t\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t\tvar vStart = new THREE.Vector3();\n\t\t\t\tvar vEnd = new THREE.Vector3();\n\t\t\t\tvar interSegment = new THREE.Vector3();\n\t\t\t\tvar interRay = new THREE.Vector3();\n\t\t\t\tvar step = this instanceof THREE.LineSegments ? 2 : 1;\n\n\t\t\t\tif ( geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\t\t\tvar index = geometry.index;\n\t\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry instanceof THREE.Geometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > precisionSq ) continue;\n\n\t\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\t\tface: null,\n\t\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/LineSegments.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.LineSegments = function ( geometry, material ) {\n\n\t\tTHREE.Line.call( this, geometry, material );\n\n\t\tthis.type = 'LineSegments';\n\n\t};\n\n\tTHREE.LineSegments.prototype = Object.assign( Object.create( THREE.Line.prototype ), {\n\n\t\tconstructor: THREE.LineSegments\n\n\t} );\n\n\t// File:src/objects/Mesh.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author jonobr1 / http://jonobr1.com/\n\t */\n\n\tTHREE.Mesh = function ( geometry, material ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry !== undefined ? geometry : new THREE.BufferGeometry();\n\t\tthis.material = material !== undefined ? material : new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\t\tthis.drawMode = THREE.TrianglesDrawMode;\n\n\t\tthis.updateMorphTargets();\n\n\t};\n\n\tTHREE.Mesh.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Mesh,\n\n\t\tsetDrawMode: function ( value ) {\n\n\t\t\tthis.drawMode = value;\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Object3D.prototype.copy.call( this, source );\n\n\t\t\tthis.drawMode = source.drawMode;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tupdateMorphTargets: function () {\n\n\t\t\tif ( this.geometry.morphTargets !== undefined && this.geometry.morphTargets.length > 0 ) {\n\n\t\t\t\tthis.morphTargetBase = - 1;\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( var m = 0, ml = this.geometry.morphTargets.length; m < ml; m ++ ) {\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ this.geometry.morphTargets[ m ].name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tgetMorphTargetIndexByName: function ( name ) {\n\n\t\t\tif ( this.morphTargetDictionary[ name ] !== undefined ) {\n\n\t\t\t\treturn this.morphTargetDictionary[ name ];\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.Mesh.getMorphTargetIndexByName: morph target ' + name + ' does not exist. Returning 0.' );\n\n\t\t\treturn 0;\n\n\t\t},\n\n\t\traycast: ( function () {\n\n\t\t\tvar inverseMatrix = new THREE.Matrix4();\n\t\t\tvar ray = new THREE.Ray();\n\t\t\tvar sphere = new THREE.Sphere();\n\n\t\t\tvar vA = new THREE.Vector3();\n\t\t\tvar vB = new THREE.Vector3();\n\t\t\tvar vC = new THREE.Vector3();\n\n\t\t\tvar tempA = new THREE.Vector3();\n\t\t\tvar tempB = new THREE.Vector3();\n\t\t\tvar tempC = new THREE.Vector3();\n\n\t\t\tvar uvA = new THREE.Vector2();\n\t\t\tvar uvB = new THREE.Vector2();\n\t\t\tvar uvC = new THREE.Vector2();\n\n\t\t\tvar barycoord = new THREE.Vector3();\n\n\t\t\tvar intersectionPoint = new THREE.Vector3();\n\t\t\tvar intersectionPointWorld = new THREE.Vector3();\n\n\t\t\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\n\n\t\t\t\tTHREE.Triangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\n\n\t\t\t\tuv1.multiplyScalar( barycoord.x );\n\t\t\t\tuv2.multiplyScalar( barycoord.y );\n\t\t\t\tuv3.multiplyScalar( barycoord.z );\n\n\t\t\t\tuv1.add( uv2 ).add( uv3 );\n\n\t\t\t\treturn uv1.clone();\n\n\t\t\t}\n\n\t\t\tfunction checkIntersection( object, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\t\tvar intersect;\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( material.side === THREE.BackSide ) {\n\n\t\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== THREE.DoubleSide, point );\n\n\t\t\t\t}\n\n\t\t\t\tif ( intersect === null ) return null;\n\n\t\t\t\tintersectionPointWorld.copy( point );\n\t\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\t\treturn {\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\t\tobject: object\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tfunction checkBufferGeometryIntersection( object, raycaster, ray, positions, uvs, a, b, c ) {\n\n\t\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\t\tvar intersection = checkIntersection( object, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\t\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\t\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint,  vA, vB, vC,  uvA, uvB, uvC );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tintersection.face = new THREE.Face3( a, b, c, THREE.Triangle.normal( vA, vB, vC ) );\n\t\t\t\t\tintersection.faceIndex = a;\n\n\t\t\t\t}\n\n\t\t\t\treturn intersection;\n\n\t\t\t}\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tvar geometry = this.geometry;\n\t\t\t\tvar material = this.material;\n\t\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t\tif ( material === undefined ) return;\n\n\t\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t\t//\n\n\t\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t\t// Check boundingBox before continuing\n\n\t\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t\t}\n\n\t\t\t\tvar uvs, intersection;\n\n\t\t\t\tif ( geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\t\t\tvar a, b, c;\n\t\t\t\t\tvar index = geometry.index;\n\t\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\t\tif ( attributes.uv !== undefined ) {\n\n\t\t\t\t\t\tuvs = attributes.uv.array;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\t\tfor ( var i = 0, l = indices.length; i < l; i += 3 ) {\n\n\t\t\t\t\t\t\ta = indices[ i ];\n\t\t\t\t\t\t\tb = indices[ i + 1 ];\n\t\t\t\t\t\t\tc = indices[ i + 2 ];\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\tfor ( var i = 0, l = positions.length; i < l; i += 9 ) {\n\n\t\t\t\t\t\t\ta = i / 3;\n\t\t\t\t\t\t\tb = a + 1;\n\t\t\t\t\t\t\tc = a + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, positions, uvs, a, b, c );\n\n\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\tintersection.index = a; // triangle number in positions buffer semantics\n\t\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry instanceof THREE.Geometry ) {\n\n\t\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\t\tvar isFaceMaterial = material instanceof THREE.MultiMaterial;\n\t\t\t\t\tvar materials = isFaceMaterial === true ? material.materials : null;\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\t\tvar faces = geometry.faces;\n\t\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\t\tvar faceMaterial = isFaceMaterial === true ? materials[ face.materialIndex ] : material;\n\n\t\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\t\tif ( faceMaterial.morphTargets === true ) {\n\n\t\t\t\t\t\t\tvar morphTargets = geometry.morphTargets;\n\t\t\t\t\t\t\tvar morphInfluences = this.morphTargetInfluences;\n\n\t\t\t\t\t\t\tvA.set( 0, 0, 0 );\n\t\t\t\t\t\t\tvB.set( 0, 0, 0 );\n\t\t\t\t\t\t\tvC.set( 0, 0, 0 );\n\n\t\t\t\t\t\t\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\n\n\t\t\t\t\t\t\t\tvar influence = morphInfluences[ t ];\n\n\t\t\t\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\t\t\t\tvar targets = morphTargets[ t ].vertices;\n\n\t\t\t\t\t\t\t\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\n\t\t\t\t\t\t\t\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\n\t\t\t\t\t\t\t\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvA.add( fvA );\n\t\t\t\t\t\t\tvB.add( fvB );\n\t\t\t\t\t\t\tvC.add( fvC );\n\n\t\t\t\t\t\t\tfvA = vA;\n\t\t\t\t\t\t\tfvB = vB;\n\t\t\t\t\t\t\tfvC = vC;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection = checkIntersection( this, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tif ( uvs ) {\n\n\t\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\t\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/Bone.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author ikerr / http://verold.com\n\t */\n\n\tTHREE.Bone = function ( skin ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Bone';\n\n\t\tthis.skin = skin;\n\n\t};\n\n\tTHREE.Bone.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Bone,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Object3D.prototype.copy.call( this, source );\n\n\t\t\tthis.skin = source.skin;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/Skeleton.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author michael guerrero / http://realitymeltdown.com\n\t * @author ikerr / http://verold.com\n\t */\n\n\tTHREE.Skeleton = function ( bones, boneInverses, useVertexTexture ) {\n\n\t\tthis.useVertexTexture = useVertexTexture !== undefined ? useVertexTexture : true;\n\n\t\tthis.identityMatrix = new THREE.Matrix4();\n\n\t\t// copy the bone array\n\n\t\tbones = bones || [];\n\n\t\tthis.bones = bones.slice( 0 );\n\n\t\t// create a bone texture or an array of floats\n\n\t\tif ( this.useVertexTexture ) {\n\n\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\tvar size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\tsize = THREE.Math.nextPowerOfTwo( Math.ceil( size ) );\n\t\t\tsize = Math.max( size, 4 );\n\n\t\t\tthis.boneTextureWidth = size;\n\t\t\tthis.boneTextureHeight = size;\n\n\t\t\tthis.boneMatrices = new Float32Array( this.boneTextureWidth * this.boneTextureHeight * 4 ); // 4 floats per RGBA pixel\n\t\t\tthis.boneTexture = new THREE.DataTexture( this.boneMatrices, this.boneTextureWidth, this.boneTextureHeight, THREE.RGBAFormat, THREE.FloatType );\n\n\t\t} else {\n\n\t\t\tthis.boneMatrices = new Float32Array( 16 * this.bones.length );\n\n\t\t}\n\n\t\t// use the supplied bone inverses or calculate the inverses\n\n\t\tif ( boneInverses === undefined ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton bonInverses is the wrong length.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new THREE.Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tObject.assign( THREE.Skeleton.prototype, {\n\n\t\tcalculateInverses: function () {\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tvar inverse = new THREE.Matrix4();\n\n\t\t\t\tif ( this.bones[ b ] ) {\n\n\t\t\t\t\tinverse.getInverse( this.bones[ b ].matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tthis.boneInverses.push( inverse );\n\n\t\t\t}\n\n\t\t},\n\n\t\tpose: function () {\n\n\t\t\tvar bone;\n\n\t\t\t// recover the bind-time world matrices\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tbone = this.bones[ b ];\n\n\t\t\t\tif ( bone ) {\n\n\t\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ b ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// compute the local matrices, positions, rotations and scales\n\n\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\tbone = this.bones[ b ];\n\n\t\t\t\tif ( bone ) {\n\n\t\t\t\t\tif ( bone.parent instanceof THREE.Bone ) {\n\n\t\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tupdate: ( function () {\n\n\t\t\tvar offsetMatrix = new THREE.Matrix4();\n\n\t\t\treturn function update() {\n\n\t\t\t\t// flatten bone matrices to array\n\n\t\t\t\tfor ( var b = 0, bl = this.bones.length; b < bl; b ++ ) {\n\n\t\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\t\tvar matrix = this.bones[ b ] ? this.bones[ b ].matrixWorld : this.identityMatrix;\n\n\t\t\t\t\toffsetMatrix.multiplyMatrices( matrix, this.boneInverses[ b ] );\n\t\t\t\t\toffsetMatrix.toArray( this.boneMatrices, b * 16 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.useVertexTexture ) {\n\n\t\t\t\t\tthis.boneTexture.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\tclone: function () {\n\n\t\t\treturn new THREE.Skeleton( this.bones, this.boneInverses, this.useVertexTexture );\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/SkinnedMesh.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author ikerr / http://verold.com\n\t */\n\n\tTHREE.SkinnedMesh = function ( geometry, material, useVertexTexture ) {\n\n\t\tTHREE.Mesh.call( this, geometry, material );\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = \"attached\";\n\t\tthis.bindMatrix = new THREE.Matrix4();\n\t\tthis.bindMatrixInverse = new THREE.Matrix4();\n\n\t\t// init bones\n\n\t\t// TODO: remove bone creation as there is no reason (other than\n\t\t// convenience) for THREE.SkinnedMesh to do this.\n\n\t\tvar bones = [];\n\n\t\tif ( this.geometry && this.geometry.bones !== undefined ) {\n\n\t\t\tvar bone, gbone;\n\n\t\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\t\tbone = new THREE.Bone( this );\n\t\t\t\tbones.push( bone );\n\n\t\t\t\tbone.name = gbone.name;\n\t\t\t\tbone.position.fromArray( gbone.pos );\n\t\t\t\tbone.quaternion.fromArray( gbone.rotq );\n\t\t\t\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\n\n\t\t\t}\n\n\t\t\tfor ( var b = 0, bl = this.geometry.bones.length; b < bl; ++ b ) {\n\n\t\t\t\tgbone = this.geometry.bones[ b ];\n\n\t\t\t\tif ( gbone.parent !== - 1 && gbone.parent !== null &&\n\t\t\t\t\t\tbones[ gbone.parent ] !== undefined ) {\n\n\t\t\t\t\tbones[ gbone.parent ].add( bones[ b ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.add( bones[ b ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.normalizeSkinWeights();\n\n\t\tthis.updateMatrixWorld( true );\n\t\tthis.bind( new THREE.Skeleton( bones, undefined, useVertexTexture ), this.matrixWorld );\n\n\t};\n\n\n\tTHREE.SkinnedMesh.prototype = Object.assign( Object.create( THREE.Mesh.prototype ), {\n\n\t\tconstructor: THREE.SkinnedMesh,\n\n\t\tbind: function( skeleton, bindMatrix ) {\n\n\t\t\tthis.skeleton = skeleton;\n\n\t\t\tif ( bindMatrix === undefined ) {\n\n\t\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t\t}\n\n\t\t\tthis.bindMatrix.copy( bindMatrix );\n\t\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t\t},\n\n\t\tpose: function () {\n\n\t\t\tthis.skeleton.pose();\n\n\t\t},\n\n\t\tnormalizeSkinWeights: function () {\n\n\t\t\tif ( this.geometry instanceof THREE.Geometry ) {\n\n\t\t\t\tfor ( var i = 0; i < this.geometry.skinWeights.length; i ++ ) {\n\n\t\t\t\t\tvar sw = this.geometry.skinWeights[ i ];\n\n\t\t\t\t\tvar scale = 1.0 / sw.lengthManhattan();\n\n\t\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\t\tsw.multiplyScalar( scale );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tsw.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( this.geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\t\tvar vec = new THREE.Vector4();\n\n\t\t\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\t\t\tfor ( var i = 0; i < skinWeight.count; i ++ ) {\n\n\t\t\t\t\tvec.x = skinWeight.getX( i );\n\t\t\t\t\tvec.y = skinWeight.getY( i );\n\t\t\t\t\tvec.z = skinWeight.getZ( i );\n\t\t\t\t\tvec.w = skinWeight.getW( i );\n\n\t\t\t\t\tvar scale = 1.0 / vec.lengthManhattan();\n\n\t\t\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\t\t\tvec.multiplyScalar( scale );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvec.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t\t\t}\n\n\t\t\t\t\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t},\n\n\t\tupdateMatrixWorld: function( force ) {\n\n\t\t\tTHREE.Mesh.prototype.updateMatrixWorld.call( this, true );\n\n\t\t\tif ( this.bindMode === \"attached\" ) {\n\n\t\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t\t} else if ( this.bindMode === \"detached\" ) {\n\n\t\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.SkinnedMesh unrecognized bindMode: ' + this.bindMode );\n\n\t\t\t}\n\n\t\t},\n\n\t\tclone: function() {\n\n\t\t\treturn new this.constructor( this.geometry, this.material, this.skeleton.useVertexTexture ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/LOD.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.LOD = function () {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t}\n\t\t} );\n\n\t};\n\n\n\tTHREE.LOD.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.LOD,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Object3D.prototype.copy.call( this, source, false );\n\n\t\t\tvar levels = source.levels;\n\n\t\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tvar level = levels[ i ];\n\n\t\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\taddLevel: function ( object, distance ) {\n\n\t\t\tif ( distance === undefined ) distance = 0;\n\n\t\t\tdistance = Math.abs( distance );\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\t\tthis.add( object );\n\n\t\t},\n\n\t\tgetObjectForDistance: function ( distance ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t},\n\n\t\traycast: ( function () {\n\n\t\t\tvar matrixPosition = new THREE.Vector3();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tupdate: function () {\n\n\t\t\tvar v1 = new THREE.Vector3();\n\t\t\tvar v2 = new THREE.Vector3();\n\n\t\t\treturn function update( camera ) {\n\n\t\t\t\tvar levels = this.levels;\n\n\t\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}(),\n\n\t\ttoJSON: function ( meta ) {\n\n\t\t\tvar data = THREE.Object3D.prototype.toJSON.call( this, meta );\n\n\t\t\tdata.object.levels = [];\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tvar level = levels[ i ];\n\n\t\t\t\tdata.object.levels.push( {\n\t\t\t\t\tobject: level.object.uuid,\n\t\t\t\t\tdistance: level.distance\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/Sprite.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Sprite = function ( material ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Sprite';\n\n\t\tthis.material = ( material !== undefined ) ? material : new THREE.SpriteMaterial();\n\n\t};\n\n\tTHREE.Sprite.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.Sprite,\n\n\t\traycast: ( function () {\n\n\t\t\tvar matrixPosition = new THREE.Vector3();\n\n\t\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distanceSq = raycaster.ray.distanceSqToPoint( matrixPosition );\n\t\t\t\tvar guessSizeSq = this.scale.x * this.scale.y / 4;\n\n\t\t\t\tif ( distanceSq > guessSizeSq ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: Math.sqrt( distanceSq ),\n\t\t\t\t\tpoint: this.position,\n\t\t\t\t\tface: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t};\n\n\t\t}() ),\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor( this.material ).copy( this );\n\n\t\t}\n\n\t} );\n\n\t// File:src/objects/LensFlare.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.LensFlare = function ( texture, size, distance, blending, color ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.lensFlares = [];\n\n\t\tthis.positionScreen = new THREE.Vector3();\n\t\tthis.customUpdateCallback = undefined;\n\n\t\tif ( texture !== undefined ) {\n\n\t\t\tthis.add( texture, size, distance, blending, color );\n\n\t\t}\n\n\t};\n\n\tTHREE.LensFlare.prototype = Object.assign( Object.create( THREE.Object3D.prototype ), {\n\n\t\tconstructor: THREE.LensFlare,\n\n\t\tcopy: function ( source ) {\n\n\t\t\tTHREE.Object3D.prototype.copy.call( this, source );\n\n\t\t\tthis.positionScreen.copy( source.positionScreen );\n\t\t\tthis.customUpdateCallback = source.customUpdateCallback;\n\n\t\t\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\n\n\t\t\t\tthis.lensFlares.push( source.lensFlares[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tadd: function ( texture, size, distance, blending, color, opacity ) {\n\n\t\t\tif ( size === undefined ) size = - 1;\n\t\t\tif ( distance === undefined ) distance = 0;\n\t\t\tif ( opacity === undefined ) opacity = 1;\n\t\t\tif ( color === undefined ) color = new THREE.Color( 0xffffff );\n\t\t\tif ( blending === undefined ) blending = THREE.NormalBlending;\n\n\t\t\tdistance = Math.min( distance, Math.max( 0, distance ) );\n\n\t\t\tthis.lensFlares.push( {\n\t\t\t\ttexture: texture,\t// THREE.Texture\n\t\t\t\tsize: size, \t\t// size in pixels (-1 = use texture.width)\n\t\t\t\tdistance: distance, \t// distance (0-1) from light source (0=at light source)\n\t\t\t\tx: 0, y: 0, z: 0,\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\n\t\t\t\tscale: 1, \t\t// scale\n\t\t\t\trotation: 0, \t\t// rotation\n\t\t\t\topacity: opacity,\t// opacity\n\t\t\t\tcolor: color,\t\t// color\n\t\t\t\tblending: blending\t// blending\n\t\t\t} );\n\n\t\t},\n\n\t\t/*\n\t\t * Update lens flares update positions on all flares based on the screen position\n\t\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\n\t\t */\n\n\t\tupdateLensFlares: function () {\n\n\t\t\tvar f, fl = this.lensFlares.length;\n\t\t\tvar flare;\n\t\t\tvar vecX = - this.positionScreen.x * 2;\n\t\t\tvar vecY = - this.positionScreen.y * 2;\n\n\t\t\tfor ( f = 0; f < fl; f ++ ) {\n\n\t\t\t\tflare = this.lensFlares[ f ];\n\n\t\t\t\tflare.x = this.positionScreen.x + vecX * flare.distance;\n\t\t\t\tflare.y = this.positionScreen.y + vecY * flare.distance;\n\n\t\t\t\tflare.wantedRotation = flare.x * Math.PI * 0.25;\n\t\t\t\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t// File:src/scenes/Scene.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Scene = function () {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.fog = null;\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t};\n\n\tTHREE.Scene.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.Scene.prototype.constructor = THREE.Scene;\n\n\tTHREE.Scene.prototype.copy = function ( source, recursive ) {\n\n\t\tTHREE.Object3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t};\n\n\t// File:src/scenes/Fog.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.Fog = function ( color, near, far ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new THREE.Color( color );\n\n\t\tthis.near = ( near !== undefined ) ? near : 1;\n\t\tthis.far = ( far !== undefined ) ? far : 1000;\n\n\t};\n\n\tTHREE.Fog.prototype.clone = function () {\n\n\t\treturn new THREE.Fog( this.color.getHex(), this.near, this.far );\n\n\t};\n\n\t// File:src/scenes/FogExp2.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.FogExp2 = function ( color, density ) {\n\n\t\tthis.name = '';\n\n\t\tthis.color = new THREE.Color( color );\n\t\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n\t};\n\n\tTHREE.FogExp2.prototype.clone = function () {\n\n\t\treturn new THREE.FogExp2( this.color.getHex(), this.density );\n\n\t};\n\n\t// File:src/renderers/shaders/ShaderChunk.js\n\n\tTHREE.ShaderChunk = {};\n\n\t// File:src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'alphamap_fragment' ] = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'alphamap_pars_fragment' ] = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'alphatest_fragment' ] = \"#ifdef ALPHATEST\\n\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/aomap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'aomap_fragment' ] = \"#ifdef USE_AOMAP\\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'aomap_pars_fragment' ] = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/begin_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'begin_vertex' ] = \"\\nvec3 transformed = vec3( position );\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'beginnormal_vertex' ] = \"\\nvec3 objectNormal = vec3( normal );\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/bsdfs.glsl\n\n\tTHREE.ShaderChunk[ 'bsdfs' ] = \"bool testLightInRange( const in float lightDistance, const in float cutoffDistance ) {\\n\treturn any( bvec2( cutoffDistance == 0.0, lightDistance < cutoffDistance ) );\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\t\tif( decayExponent > 0.0 ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\t\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\t\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\t\t\treturn distanceFalloff * maxDistanceCutoffFactor;\\n#else\\n\t\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n#endif\\n\t\t}\\n\t\treturn 1.0;\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\tfloat a2 = pow2( alpha );\\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\tfloat alpha = pow2( roughness );\\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, dotLH );\\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\tfloat D = D_GGX( alpha, dotNH );\\n\treturn F * ( G * D );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\tvec4 r = roughness * c0 + c1;\\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\\n\treturn specularColor * AB.x + AB.y;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\tvec3 F = F_Schlick( specularColor, dotLH );\\n\tfloat G = G_BlinnPhong_Implicit( );\\n\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'bumpmap_pars_fragment' ] = \"#ifdef USE_BUMPMAP\\n\tuniform sampler2D bumpMap;\\n\tuniform float bumpScale;\\n\tvec2 dHdxy_fwd() {\\n\t\tvec2 dSTdx = dFdx( vUv );\\n\t\tvec2 dSTdy = dFdy( vUv );\\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\t\treturn vec2( dBx, dBy );\\n\t}\\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\t\tvec3 vSigmaX = dFdx( surf_pos );\\n\t\tvec3 vSigmaY = dFdy( surf_pos );\\n\t\tvec3 vN = surf_norm;\\n\t\tvec3 R1 = cross( vSigmaY, vN );\\n\t\tvec3 R2 = cross( vN, vSigmaX );\\n\t\tfloat fDet = dot( vSigmaX, R1 );\\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\t}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'clipping_planes_fragment' ] = \"#if NUM_CLIPPING_PLANES > 0\\n\tfor ( int i = 0; i < NUM_CLIPPING_PLANES; ++ i ) {\\n\t\tvec4 plane = clippingPlanes[ i ];\\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\t}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'clipping_planes_pars_fragment' ] = \"#if NUM_CLIPPING_PLANES > 0\\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\\n\t\tvarying vec3 vViewPosition;\\n\t#endif\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'clipping_planes_pars_vertex' ] = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\tvarying vec3 vViewPosition;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'clipping_planes_vertex' ] = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/color_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'color_fragment' ] = \"#ifdef USE_COLOR\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'color_pars_fragment' ] = \"#ifdef USE_COLOR\\n\tvarying vec3 vColor;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'color_pars_vertex' ] = \"#ifdef USE_COLOR\\n\tvarying vec3 vColor;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/color_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'color_vertex' ] = \"#ifdef USE_COLOR\\n\tvColor.xyz = color.xyz;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/common.glsl\n\n\tTHREE.ShaderChunk[ 'common' ] = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\treturn fract(sin(sn) * c);\\n}\\nstruct IncidentLight {\\n\tvec3 color;\\n\tvec3 direction;\\n\tbool visible;\\n};\\nstruct ReflectedLight {\\n\tvec3 directDiffuse;\\n\tvec3 directSpecular;\\n\tvec3 indirectDiffuse;\\n\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\tvec3 position;\\n\tvec3 normal;\\n\tvec3 viewDir;\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'cube_uv_reflection_fragment' ] = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\tvec3 absDirection = abs(direction);\\n\tint face = -1;\\n\tif( absDirection.x > absDirection.z ) {\\n\t\tif(absDirection.x > absDirection.y )\\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\\n\t\telse\\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\\n\t}\\n\telse {\\n\t\tif(absDirection.z > absDirection.y )\\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\\n\t\telse\\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\\n\t}\\n\treturn face;\\n}\\n#define cubeUV_maxLods1  (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\tfloat dxRoughness = dFdx(roughness);\\n\tfloat dyRoughness = dFdy(roughness);\\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\tfloat mipLevel = 0.5 * log2(d);\\n\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\tbool bRes = mipLevel == 0.0;\\n\tscale =  bRes && (scale < a) ? a : scale;\\n\tvec3 r;\\n\tvec2 offset;\\n\tint face = getFaceFromDirection(direction);\\n\tfloat rcpPowScale = 1.0 / powScale;\\n\tif( face == 0) {\\n\t\tr = vec3(direction.x, -direction.z, direction.y);\\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\t\toffset.y = bRes && (offset.y < 2.0*a) ?  a : offset.y;\\n\t}\\n\telse if( face == 1) {\\n\t\tr = vec3(direction.y, direction.x, direction.z);\\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\t\toffset.y = bRes && (offset.y < 2.0*a) ?  a : offset.y;\\n\t}\\n\telse if( face == 2) {\\n\t\tr = vec3(direction.z, direction.x, direction.y);\\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\t\toffset.y = bRes && (offset.y < 2.0*a) ?  a : offset.y;\\n\t}\\n\telse if( face == 3) {\\n\t\tr = vec3(direction.x, direction.z, direction.y);\\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\t\toffset.y = bRes && (offset.y < 2.0*a) ?  0.0 : offset.y;\\n\t}\\n\telse if( face == 4) {\\n\t\tr = vec3(direction.y, direction.x, -direction.z);\\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\t\toffset.y = bRes && (offset.y < 2.0*a) ?  0.0 : offset.y;\\n\t}\\n\telse {\\n\t\tr = vec3(direction.z, -direction.x, direction.y);\\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\t\toffset.y = bRes && (offset.y < 2.0*a) ?  0.0 : offset.y;\\n\t}\\n\tr = normalize(r);\\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\tvec2 base = offset + vec2( texelOffset );\\n\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\tfloat r1 = floor(roughnessVal);\\n\tfloat r2 = r1 + 1.0;\\n\tfloat t = fract(roughnessVal);\\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\tfloat s = mipInfo.y;\\n\tfloat level0 = mipInfo.x;\\n\tfloat level1 = level0 + 1.0;\\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\tvec4 result = mix(color10, color20, t);\\n\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'defaultnormal_vertex' ] = \"#ifdef FLIP_SIDED\\n\tobjectNormal = -objectNormal;\\n#endif\\nvec3 transformedNormal = normalMatrix * objectNormal;\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'displacementmap_vertex' ] = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normal * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'displacementmap_pars_vertex' ] = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'emissivemap_fragment' ] = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'emissivemap_pars_fragment' ] = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'encodings_pars_fragment' ] = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n  return value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n  return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n  return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n  return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n  return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n  return vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n  float maxComponent = max( max( value.r, value.g ), value.b );\\n  float fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n  return vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n  return vec4( value.xyz * value.w * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n  float maxRGB = max( value.x, max( value.g, value.b ) );\\n  float M      = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n  M            = ceil( M * 255.0 ) / 255.0;\\n  return vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n    return vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n    float maxRGB = max( value.x, max( value.g, value.b ) );\\n    float D      = max( maxRange / maxRGB, 1.0 );\\n    D            = min( floor( D ) / 255.0, 1.0 );\\n    return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value )  {\\n  vec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\\n  Xp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\\n  vec4 vResult;\\n  vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n  float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n  vResult.w = fract(Le);\\n  vResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\\n  return vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n  float Le = value.z * 255.0 + value.w;\\n  vec3 Xp_Y_XYZp;\\n  Xp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\\n  Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n  Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n  vec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\\n  return vec4( max(vRGB, 0.0), 1.0 );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/encodings_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'encodings_fragment' ] = \"  gl_FragColor = linearToOutputTexel( gl_FragColor );\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/envmap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'envmap_fragment' ] = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#else\\n\t\tvec3 reflectVec = vReflect;\\n\t#endif\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\t\tvec2 sampleUV;\\n\t\tsampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\\n\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\t\tvec3 reflectView = flipNormal * normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\t#endif\\n\tenvColor = envMapTexelToLinear( envColor );\\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_MIX )\\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\t#elif defined( ENVMAP_BLENDING_ADD )\\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'envmap_pars_fragment' ] = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\tuniform float reflectivity;\\n\tuniform float envMapIntenstiy;\\n#endif\\n#ifdef USE_ENVMAP\\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\t\tvarying vec3 vWorldPosition;\\n\t#endif\\n\t#ifdef ENVMAP_TYPE_CUBE\\n\t\tuniform samplerCube envMap;\\n\t#else\\n\t\tuniform sampler2D envMap;\\n\t#endif\\n\tuniform float flipEnvMap;\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\t\tuniform float refractionRatio;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'envmap_pars_vertex' ] = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\t\tvarying vec3 vWorldPosition;\\n\t#else\\n\t\tvarying vec3 vReflect;\\n\t\tuniform float refractionRatio;\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/envmap_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'envmap_vertex' ] = \"#ifdef USE_ENVMAP\\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\t\tvWorldPosition = worldPosition.xyz;\\n\t#else\\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\\n\t\t#else\\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\t\t#endif\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/fog_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'fog_fragment' ] = \"#ifdef USE_FOG\\n\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\t#ifdef FOG_EXP2\\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * depth * depth * LOG2 ) );\\n\t#else\\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, depth );\\n\t#endif\\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'fog_pars_fragment' ] = \"#ifdef USE_FOG\\n\tuniform vec3 fogColor;\\n\t#ifdef FOG_EXP2\\n\t\tuniform float fogDensity;\\n\t#else\\n\t\tuniform float fogNear;\\n\t\tuniform float fogFar;\\n\t#endif\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'lightmap_fragment' ] = \"#ifdef USE_LIGHTMAP\\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'lightmap_pars_fragment' ] = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'lights_lambert_vertex' ] = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\tvLightBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\t\t#endif\\n\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\t\t#endif\\n\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\t\tdotNL = dot( geometry.normal, directLight.direction );\\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\t\t#endif\\n\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\t\t#ifdef DOUBLE_SIDED\\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\t\t#endif\\n\t}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_pars.glsl\n\n\tTHREE.ShaderChunk[ 'lights_pars' ] = \"uniform vec3 ambientLightColor;\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\tvec3 irradiance = ambientLightColor;\\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\tirradiance *= PI;\\n\t#endif\\n\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\tstruct DirectionalLight {\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t\tint shadow;\\n\t\tfloat shadowBias;\\n\t\tfloat shadowRadius;\\n\t\tvec2 shadowMapSize;\\n\t};\\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\t\tdirectLight.color = directionalLight.color;\\n\t\tdirectLight.direction = directionalLight.direction;\\n\t\tdirectLight.visible = true;\\n\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\tstruct PointLight {\\n\t\tvec3 position;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t\tint shadow;\\n\t\tfloat shadowBias;\\n\t\tfloat shadowRadius;\\n\t\tvec2 shadowMapSize;\\n\t};\\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\t\tvec3 lVector = pointLight.position - geometry.position;\\n\t\tdirectLight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tif ( testLightInRange( lightDistance, pointLight.distance ) ) {\\n\t\t\tdirectLight.color = pointLight.color;\\n\t\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\t\t\tdirectLight.visible = true;\\n\t\t} else {\\n\t\t\tdirectLight.color = vec3( 0.0 );\\n\t\t\tdirectLight.visible = false;\\n\t\t}\\n\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\tstruct SpotLight {\\n\t\tvec3 position;\\n\t\tvec3 direction;\\n\t\tvec3 color;\\n\t\tfloat distance;\\n\t\tfloat decay;\\n\t\tfloat coneCos;\\n\t\tfloat penumbraCos;\\n\t\tint shadow;\\n\t\tfloat shadowBias;\\n\t\tfloat shadowRadius;\\n\t\tvec2 shadowMapSize;\\n\t};\\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight  ) {\\n\t\tvec3 lVector = spotLight.position - geometry.position;\\n\t\tdirectLight.direction = normalize( lVector );\\n\t\tfloat lightDistance = length( lVector );\\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\t\tif ( all( bvec2( angleCos > spotLight.coneCos, testLightInRange( lightDistance, spotLight.distance ) ) ) ) {\\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\t\t\tdirectLight.color = spotLight.color;\\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\t\t\tdirectLight.visible = true;\\n\t\t} else {\\n\t\t\tdirectLight.color = vec3( 0.0 );\\n\t\t\tdirectLight.visible = false;\\n\t\t}\\n\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\tstruct HemisphereLight {\\n\t\tvec3 direction;\\n\t\tvec3 skyColor;\\n\t\tvec3 groundColor;\\n\t};\\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\t\tirradiance *= PI;\\n\t\t#endif\\n\t\treturn irradiance;\\n\t}\\n#endif\\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\t\t#include <normal_flip>\\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\t\t#ifdef ENVMAP_TYPE_CUBE\\n\t\t\tvec3 queryVec = flipNormal * vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\t\t\t#ifdef TEXTURE_LOD_EXT\\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\t\t\t#else\\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\t\t\t#endif\\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 queryVec = flipNormal * vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\t\t\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\\n\t\t#else\\n\t\t\tvec4 envMapColor = vec4( 0.0 );\\n\t\t#endif\\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\\n\t}\\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\t}\\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\t\t#ifdef ENVMAP_MODE_REFLECTION\\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\t\t#else\\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\t\t#endif\\n\t\t#include <normal_flip>\\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\t\t#ifdef ENVMAP_TYPE_CUBE\\n\t\t\tvec3 queryReflectVec = flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\t\t\t#ifdef TEXTURE_LOD_EXT\\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\t\t\t#else\\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\t\t\t#endif\\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\t\t\tvec3 queryReflectVec = flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\t\t\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\t\t\tvec2 sampleUV;\\n\t\t\tsampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\\n\t\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\t\t\t#ifdef TEXTURE_LOD_EXT\\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\t\t\t#else\\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\t\t\t#endif\\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\t\t\tvec3 reflectView = flipNormal * normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\t\t\t#ifdef TEXTURE_LOD_EXT\\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\t\t\t#else\\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\t\t\t#endif\\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\t\t#endif\\n\t\treturn envMapColor.rgb * envMapIntensity;\\n\t}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'lights_phong_fragment' ] = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'lights_phong_pars_fragment' ] = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\tvec3\tdiffuseColor;\\n\tvec3\tspecularColor;\\n\tfloat\tspecularShininess;\\n\tfloat\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\tirradiance *= PI;\\n\t#endif\\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\t(0)\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'lights_physical_fragment' ] = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\n#ifdef STANDARD\\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'lights_physical_pars_fragment' ] = \"struct PhysicalMaterial {\\n\tvec3\tdiffuseColor;\\n\tfloat\tspecularRoughness;\\n\tvec3\tspecularColor;\\n\t#ifndef STANDARD\\n\t\tfloat clearCoat;\\n\t\tfloat clearCoatRoughness;\\n\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\tirradiance *= PI;\\n\t#endif\\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\t#ifndef STANDARD\\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\treflectedLight.indirectSpecular += radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\t#ifndef STANDARD\\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\t#endif\\n}\\n#define RE_Direct\t\t\t\tRE_Direct_Physical\\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\\n#define Material_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material )   GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/lights_template.glsl\n\n\tTHREE.ShaderChunk[ 'lights_template' ] = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tPointLight pointLight;\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\t\t#ifdef USE_SHADOWMAP\\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\tSpotLight spotLight;\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\t\t#ifdef USE_SHADOWMAP\\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\tDirectionalLight directionalLight;\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\t\t#ifdef USE_SHADOWMAP\\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t\t#endif\\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\t\t\tlightMapIrradiance *= PI;\\n\t\t#endif\\n\t\tirradiance += lightMapIrradiance;\\n\t#endif\\n\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\t\t}\\n\t#endif\\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\t \tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\\n\t#endif\\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\\n\t#ifndef STANDARD\\n\t\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\\n\t#else\\n\t\tvec3 clearCoatRadiance = vec3( 0.0 );\\n\t#endif\\n\t\t\\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'logdepthbuf_fragment' ] = \"#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\\n\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'logdepthbuf_pars_fragment' ] = \"#ifdef USE_LOGDEPTHBUF\\n\tuniform float logDepthBufFC;\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvarying float vFragDepth;\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'logdepthbuf_pars_vertex' ] = \"#ifdef USE_LOGDEPTHBUF\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvarying float vFragDepth;\\n\t#endif\\n\tuniform float logDepthBufFC;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'logdepthbuf_vertex' ] = \"#ifdef USE_LOGDEPTHBUF\\n\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\\n\t#ifdef USE_LOGDEPTHBUF_EXT\\n\t\tvFragDepth = 1.0 + gl_Position.w;\\n\t#else\\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/map_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'map_fragment' ] = \"#ifdef USE_MAP\\n\tvec4 texelColor = texture2D( map, vUv );\\n\ttexelColor = mapTexelToLinear( texelColor );\\n\tdiffuseColor *= texelColor;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'map_pars_fragment' ] = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'map_particle_fragment' ] = \"#ifdef USE_MAP\\n\tvec4 mapTexel = texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'map_particle_pars_fragment' ] = \"#ifdef USE_MAP\\n\tuniform vec4 offsetRepeat;\\n\tuniform sampler2D map;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'metalnessmap_fragment' ] = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\tmetalnessFactor *= texelMetalness.r;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'metalnessmap_pars_fragment' ] = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'morphnormal_vertex' ] = \"#ifdef USE_MORPHNORMALS\\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'morphtarget_pars_vertex' ] = \"#ifdef USE_MORPHTARGETS\\n\t#ifndef USE_MORPHNORMALS\\n\tuniform float morphTargetInfluences[ 8 ];\\n\t#else\\n\tuniform float morphTargetInfluences[ 4 ];\\n\t#endif\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'morphtarget_vertex' ] = \"#ifdef USE_MORPHTARGETS\\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\n\t#ifndef USE_MORPHNORMALS\\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/normal_flip.glsl\n\n\tTHREE.ShaderChunk[ 'normal_flip' ] = \"#ifdef DOUBLE_SIDED\\n\tfloat flipNormal = ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n#else\\n\tfloat flipNormal = 1.0;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/normal_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'normal_fragment' ] = \"#ifdef FLAT_SHADED\\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\tvec3 normal = normalize( vNormal ) * flipNormal;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'normalmap_pars_fragment' ] = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\\n\t\tvec2 st0 = dFdx( vUv.st );\\n\t\tvec2 st1 = dFdy( vUv.st );\\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\\n\t\tvec3 N = normalize( surf_norm );\\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\t\tmapN.xy = normalScale * mapN.xy;\\n\t\tmat3 tsn = mat3( S, T, N );\\n\t\treturn normalize( tsn * mapN );\\n\t}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/packing.glsl\n\n\tTHREE.ShaderChunk[ 'packing' ] = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n  return normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n  return 1.0 - 2.0 * rgb.xyz;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256.,  256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\treturn dot( v, UnpackFactors );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n  return ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n  return linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n  return (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n  return ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'premultiplied_alpha_fragment' ] = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/project_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'project_vertex' ] = \"#ifdef USE_SKINNING\\n\tvec4 mvPosition = modelViewMatrix * skinned;\\n#else\\n\tvec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\n#endif\\ngl_Position = projectionMatrix * mvPosition;\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'roughnessmap_fragment' ] = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\troughnessFactor *= texelRoughness.r;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'roughnessmap_pars_fragment' ] = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'shadowmap_pars_fragment' ] = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHTS > 0\\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHTS > 0\\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHTS > 0\\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\t#endif\\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\t}\\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\t\tvec2 f = fract( uv * size + 0.5 );\\n\t\tfloat a = mix( lb, lt, f.y );\\n\t\tfloat b = mix( rb, rt, f.y );\\n\t\tfloat c = mix( a, b, f.x );\\n\t\treturn c;\\n\t}\\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\t\tshadowCoord.xyz /= shadowCoord.w;\\n\t\tshadowCoord.z += shadowBias;\\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\t\tbool inFrustum = all( inFrustumVec );\\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\t\tbool frustumTest = all( frustumTestVec );\\n\t\tif ( frustumTest ) {\\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\\n\t\t\treturn (\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\\n\t\t\treturn (\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#else\\n\t\t\treturn texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\t\t#endif\\n\t\t}\\n\t\treturn 1.0;\\n\t}\\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\t\tvec3 absV = abs( v );\\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\t\tabsV *= scaleToCube;\\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\t\tvec2 planar = v.xy;\\n\t\tfloat almostATexel = 1.5 * texelSizeY;\\n\t\tfloat almostOne = 1.0 - almostATexel;\\n\t\tif ( absV.z >= almostOne ) {\\n\t\t\tif ( v.z > 0.0 )\\n\t\t\t\tplanar.x = 4.0 - v.x;\\n\t\t} else if ( absV.x >= almostOne ) {\\n\t\t\tfloat signX = sign( v.x );\\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\\n\t\t} else if ( absV.y >= almostOne ) {\\n\t\t\tfloat signY = sign( v.y );\\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\t\t\tplanar.y = v.z * signY - 2.0;\\n\t\t}\\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\t}\\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\t\tvec3 lightToPosition = shadowCoord.xyz;\\n\t\tvec3 bd3D = normalize( lightToPosition );\\n\t\tfloat dp = ( length( lightToPosition ) - shadowBias ) / 1000.0;\\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\t\t\treturn (\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\t\t\t) * ( 1.0 / 9.0 );\\n\t\t#else\\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\t\t#endif\\n\t}\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'shadowmap_pars_vertex' ] = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHTS > 0\\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\t#endif\\n\t#if NUM_SPOT_LIGHTS > 0\\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\t#endif\\n\t#if NUM_POINT_LIGHTS > 0\\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'shadowmap_vertex' ] = \"#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\t}\\n\t#endif\\n\t#if NUM_SPOT_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\t}\\n\t#endif\\n\t#if NUM_POINT_LIGHTS > 0\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\t}\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'shadowmask_pars_fragment' ] = \"float getShadowMask() {\\n\tfloat shadow = 1.0;\\n\t#ifdef USE_SHADOWMAP\\n\t#if NUM_DIR_LIGHTS > 0\\n\tDirectionalLight directionalLight;\\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\t\tdirectionalLight = directionalLights[ i ];\\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#endif\\n\t#if NUM_SPOT_LIGHTS > 0\\n\tSpotLight spotLight;\\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\t\tspotLight = spotLights[ i ];\\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#endif\\n\t#if NUM_POINT_LIGHTS > 0\\n\tPointLight pointLight;\\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\t\tpointLight = pointLights[ i ];\\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;\\n\t}\\n\t#endif\\n\t#endif\\n\treturn shadow;\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'skinbase_vertex' ] = \"#ifdef USE_SKINNING\\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'skinning_pars_vertex' ] = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\t#ifdef BONE_TEXTURE\\n\t\tuniform sampler2D boneTexture;\\n\t\tuniform int boneTextureWidth;\\n\t\tuniform int boneTextureHeight;\\n\t\tmat4 getBoneMatrix( const in float i ) {\\n\t\t\tfloat j = i * 4.0;\\n\t\t\tfloat x = mod( j, float( boneTextureWidth ) );\\n\t\t\tfloat y = floor( j / float( boneTextureWidth ) );\\n\t\t\tfloat dx = 1.0 / float( boneTextureWidth );\\n\t\t\tfloat dy = 1.0 / float( boneTextureHeight );\\n\t\t\ty = dy * ( y + 0.5 );\\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\t\t\treturn bone;\\n\t\t}\\n\t#else\\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\t\tmat4 getBoneMatrix( const in float i ) {\\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\\n\t\t\treturn bone;\\n\t\t}\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/skinning_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'skinning_vertex' ] = \"#ifdef USE_SKINNING\\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\tvec4 skinned = vec4( 0.0 );\\n\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\tskinned  = bindMatrixInverse * skinned;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'skinnormal_vertex' ] = \"#ifdef USE_SKINNING\\n\tmat4 skinMatrix = mat4( 0.0 );\\n\tskinMatrix += skinWeight.x * boneMatX;\\n\tskinMatrix += skinWeight.y * boneMatY;\\n\tskinMatrix += skinWeight.z * boneMatZ;\\n\tskinMatrix += skinWeight.w * boneMatW;\\n\tskinMatrix  = bindMatrixInverse * skinMatrix * bindMatrix;\\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'specularmap_fragment' ] = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\tspecularStrength = texelSpecular.r;\\n#else\\n\tspecularStrength = 1.0;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'specularmap_pars_fragment' ] = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'tonemapping_fragment' ] = \"#if defined( TONE_MAPPING )\\n  gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'tonemapping_pars_fragment' ] = \"#define saturate(a) clamp( a, 0.0, 1.0 )\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n  return toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n  color *= toneMappingExposure;\\n  return saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n  color *= toneMappingExposure;\\n  return saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n  color *= toneMappingExposure;\\n  color = max( vec3( 0.0 ), color - 0.004 );\\n  return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'uv2_pars_fragment' ] = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvarying vec2 vUv2;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'uv2_pars_vertex' ] = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tattribute vec2 uv2;\\n\tvarying vec2 vUv2;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/uv2_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'uv2_vertex' ] = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\tvUv2 = uv2;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl\n\n\tTHREE.ShaderChunk[ 'uv_pars_fragment' ] = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\tvarying vec2 vUv;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'uv_pars_vertex' ] = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\tvarying vec2 vUv;\\n\tuniform vec4 offsetRepeat;\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/ShaderChunk/uv_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'uv_vertex' ] = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\\n#endif\";\n\n\t// File:src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl\n\n\tTHREE.ShaderChunk[ 'worldpos_vertex' ] = \"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\\n\t#ifdef USE_SKINNING\\n\t\tvec4 worldPosition = modelMatrix * skinned;\\n\t#else\\n\t\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n\t#endif\\n#endif\\n\";\n\n\t// File:src/renderers/shaders/UniformsUtils.js\n\n\t/**\n\t * Uniform Utilities\n\t */\n\n\tTHREE.UniformsUtils = {\n\n\t\tmerge: function ( uniforms ) {\n\n\t\t\tvar merged = {};\n\n\t\t\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\t\t\tvar tmp = this.clone( uniforms[ u ] );\n\n\t\t\t\tfor ( var p in tmp ) {\n\n\t\t\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn merged;\n\n\t\t},\n\n\t\tclone: function ( uniforms_src ) {\n\n\t\t\tvar uniforms_dst = {};\n\n\t\t\tfor ( var u in uniforms_src ) {\n\n\t\t\t\tuniforms_dst[ u ] = {};\n\n\t\t\t\tfor ( var p in uniforms_src[ u ] ) {\n\n\t\t\t\t\tvar parameter_src = uniforms_src[ u ][ p ];\n\n\t\t\t\t\tif ( parameter_src instanceof THREE.Color ||\n\t\t\t\t\t\t parameter_src instanceof THREE.Vector2 ||\n\t\t\t\t\t\t parameter_src instanceof THREE.Vector3 ||\n\t\t\t\t\t\t parameter_src instanceof THREE.Vector4 ||\n\t\t\t\t\t\t parameter_src instanceof THREE.Matrix3 ||\n\t\t\t\t\t\t parameter_src instanceof THREE.Matrix4 ||\n\t\t\t\t\t\t parameter_src instanceof THREE.Texture ) {\n\n\t\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.clone();\n\n\t\t\t\t\t} else if ( Array.isArray( parameter_src ) ) {\n\n\t\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src.slice();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuniforms_dst[ u ][ p ] = parameter_src;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn uniforms_dst;\n\n\t\t}\n\n\t};\n\n\t// File:src/renderers/shaders/UniformsLib.js\n\n\t/**\n\t * Uniforms library for shared webgl shaders\n\t */\n\n\tTHREE.UniformsLib = {\n\n\t\tcommon: {\n\n\t\t\t\"diffuse\": { value: new THREE.Color( 0xeeeeee ) },\n\t\t\t\"opacity\": { value: 1.0 },\n\n\t\t\t\"map\": { value: null },\n\t\t\t\"offsetRepeat\": { value: new THREE.Vector4( 0, 0, 1, 1 ) },\n\n\t\t\t\"specularMap\": { value: null },\n\t\t\t\"alphaMap\": { value: null },\n\n\t\t\t\"envMap\": { value: null },\n\t\t\t\"flipEnvMap\": { value: - 1 },\n\t\t\t\"reflectivity\": { value: 1.0 },\n\t\t\t\"refractionRatio\": { value: 0.98 }\n\n\t\t},\n\n\t\taomap: {\n\n\t\t\t\"aoMap\": { value: null },\n\t\t\t\"aoMapIntensity\": { value: 1 }\n\n\t\t},\n\n\t\tlightmap: {\n\n\t\t\t\"lightMap\": { value: null },\n\t\t\t\"lightMapIntensity\": { value: 1 }\n\n\t\t},\n\n\t\temissivemap: {\n\n\t\t\t\"emissiveMap\": { value: null }\n\n\t\t},\n\n\t\tbumpmap: {\n\n\t\t\t\"bumpMap\": { value: null },\n\t\t\t\"bumpScale\": { value: 1 }\n\n\t\t},\n\n\t\tnormalmap: {\n\n\t\t\t\"normalMap\": { value: null },\n\t\t\t\"normalScale\": { value: new THREE.Vector2( 1, 1 ) }\n\n\t\t},\n\n\t\tdisplacementmap: {\n\n\t\t\t\"displacementMap\": { value: null },\n\t\t\t\"displacementScale\": { value: 1 },\n\t\t\t\"displacementBias\": { value: 0 }\n\n\t\t},\n\n\t\troughnessmap: {\n\n\t\t\t\"roughnessMap\": { value: null }\n\n\t\t},\n\n\t\tmetalnessmap: {\n\n\t\t\t\"metalnessMap\": { value: null }\n\n\t\t},\n\n\t\tfog: {\n\n\t\t\t\"fogDensity\": { value: 0.00025 },\n\t\t\t\"fogNear\": { value: 1 },\n\t\t\t\"fogFar\": { value: 2000 },\n\t\t\t\"fogColor\": { value: new THREE.Color( 0xffffff ) }\n\n\t\t},\n\n\t\tlights: {\n\n\t\t\t\"ambientLightColor\": { value: [] },\n\n\t\t\t\"directionalLights\": { value: [], properties: {\n\t\t\t\t\"direction\": {},\n\t\t\t\t\"color\": {},\n\n\t\t\t\t\"shadow\": {},\n\t\t\t\t\"shadowBias\": {},\n\t\t\t\t\"shadowRadius\": {},\n\t\t\t\t\"shadowMapSize\": {}\n\t\t\t} },\n\n\t\t\t\"directionalShadowMap\": { value: [] },\n\t\t\t\"directionalShadowMatrix\": { value: [] },\n\n\t\t\t\"spotLights\": { value: [], properties: {\n\t\t\t\t\"color\": {},\n\t\t\t\t\"position\": {},\n\t\t\t\t\"direction\": {},\n\t\t\t\t\"distance\": {},\n\t\t\t\t\"coneCos\": {},\n\t\t\t\t\"penumbraCos\": {},\n\t\t\t\t\"decay\": {},\n\n\t\t\t\t\"shadow\": {},\n\t\t\t\t\"shadowBias\": {},\n\t\t\t\t\"shadowRadius\": {},\n\t\t\t\t\"shadowMapSize\": {}\n\t\t\t} },\n\n\t\t\t\"spotShadowMap\": { value: [] },\n\t\t\t\"spotShadowMatrix\": { value: [] },\n\n\t\t\t\"pointLights\": { value: [], properties: {\n\t\t\t\t\"color\": {},\n\t\t\t\t\"position\": {},\n\t\t\t\t\"decay\": {},\n\t\t\t\t\"distance\": {},\n\n\t\t\t\t\"shadow\": {},\n\t\t\t\t\"shadowBias\": {},\n\t\t\t\t\"shadowRadius\": {},\n\t\t\t\t\"shadowMapSize\": {}\n\t\t\t} },\n\n\t\t\t\"pointShadowMap\": { value: [] },\n\t\t\t\"pointShadowMatrix\": { value: [] },\n\n\t\t\t\"hemisphereLights\": { value: [], properties: {\n\t\t\t\t\"direction\": {},\n\t\t\t\t\"skyColor\": {},\n\t\t\t\t\"groundColor\": {}\n\t\t\t} }\n\n\t\t},\n\n\t\tpoints: {\n\n\t\t\t\"diffuse\": { value: new THREE.Color( 0xeeeeee ) },\n\t\t\t\"opacity\": { value: 1.0 },\n\t\t\t\"size\": { value: 1.0 },\n\t\t\t\"scale\": { value: 1.0 },\n\t\t\t\"map\": { value: null },\n\t\t\t\"offsetRepeat\": { value: new THREE.Vector4( 0, 0, 1, 1 ) }\n\n\t\t}\n\n\t};\n\n\t// File:src/renderers/shaders/ShaderLib/cube_frag.glsl\n\n\tTHREE.ShaderChunk[ 'cube_frag' ] = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\\n\t#include <logdepthbuf_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/cube_vert.glsl\n\n\tTHREE.ShaderChunk[ 'cube_vert' ] = \"varying vec3 vWorldPosition;\\n#include <common>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\tvWorldPosition = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/depth_frag.glsl\n\n\tTHREE.ShaderChunk[ 'depth_frag' ] = \"#if DEPTH_PACKING == 3200\\n\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#if DEPTH_PACKING == 3200\\n\t\tdiffuseColor.a = opacity;\\n\t#endif\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <logdepthbuf_fragment>\\n\t#if DEPTH_PACKING == 3200\\n\t\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\\n\t#elif DEPTH_PACKING == 3201\\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\t#endif\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/depth_vert.glsl\n\n\tTHREE.ShaderChunk[ 'depth_vert' ] = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <begin_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/distanceRGBA_frag.glsl\n\n\tTHREE.ShaderChunk[ 'distanceRGBA_frag' ] = \"uniform vec3 lightPos;\\nvarying vec4 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\t#include <clipping_planes_fragment>\\n\tgl_FragColor = packDepthToRGBA( length( vWorldPosition.xyz - lightPos.xyz ) / 1000.0 );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/distanceRGBA_vert.glsl\n\n\tTHREE.ShaderChunk[ 'distanceRGBA_vert' ] = \"varying vec4 vWorldPosition;\\n#include <common>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <skinbase_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvWorldPosition = worldPosition;\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/equirect_frag.glsl\n\n\tTHREE.ShaderChunk[ 'equirect_frag' ] = \"uniform sampler2D tEquirect;\\nuniform float tFlip;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec3 direction = normalize( vWorldPosition );\\n\tvec2 sampleUV;\\n\tsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\t#include <logdepthbuf_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/equirect_vert.glsl\n\n\tTHREE.ShaderChunk[ 'equirect_vert' ] = \"varying vec3 vWorldPosition;\\n#include <common>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\tvWorldPosition = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/linedashed_frag.glsl\n\n\tTHREE.ShaderChunk[ 'linedashed_frag' ] = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\t\tdiscard;\\n\t}\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <color_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/linedashed_vert.glsl\n\n\tTHREE.ShaderChunk[ 'linedashed_vert' ] = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <color_vertex>\\n\tvLineDistance = scale * lineDistance;\\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\tgl_Position = projectionMatrix * mvPosition;\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshbasic_frag.glsl\n\n\tTHREE.ShaderChunk[ 'meshbasic_frag' ] = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\tReflectedLight reflectedLight;\\n\treflectedLight.directDiffuse = vec3( 0.0 );\\n\treflectedLight.directSpecular = vec3( 0.0 );\\n\treflectedLight.indirectDiffuse = diffuseColor.rgb;\\n\treflectedLight.indirectSpecular = vec3( 0.0 );\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\t#include <normal_flip>\\n\t#include <envmap_fragment>\\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshbasic_vert.glsl\n\n\tTHREE.ShaderChunk[ 'meshbasic_vert' ] = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <skinbase_vertex>\\n\t#ifdef USE_ENVMAP\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#endif\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <envmap_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshlambert_frag.glsl\n\n\tTHREE.ShaderChunk[ 'meshlambert_frag' ] = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <emissivemap_fragment>\\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\t#include <lightmap_fragment>\\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\t#ifdef DOUBLE_SIDED\\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\t#else\\n\t\treflectedLight.directDiffuse = vLightFront;\\n\t#endif\\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\t#include <normal_flip>\\n\t#include <envmap_fragment>\\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshlambert_vert.glsl\n\n\tTHREE.ShaderChunk[ 'meshlambert_vert' ] = \"#define LAMBERT\\nvarying vec3 vLightFront;\\n#ifdef DOUBLE_SIDED\\n\tvarying vec3 vLightBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <color_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <lights_lambert_vertex>\\n\t#include <shadowmap_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshphong_frag.glsl\n\n\tTHREE.ShaderChunk[ 'meshphong_frag' ] = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <normal_flip>\\n\t#include <normal_fragment>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_phong_fragment>\\n\t#include <lights_template>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\t#include <envmap_fragment>\\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshphong_vert.glsl\n\n\tTHREE.ShaderChunk[ 'meshphong_vert' ] = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\tvNormal = normalize( transformedNormal );\\n#endif\\n\t#include <begin_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <envmap_vertex>\\n\t#include <shadowmap_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshphysical_frag.glsl\n\n\tTHREE.ShaderChunk[ 'meshphysical_frag' ] = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\tuniform float clearCoat;\\n\tuniform float clearCoatRoughness;\\n#endif\\nuniform float envMapIntensity;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <cube_uv_reflection_fragment>\\n#include <lights_pars>\\n#include <lights_physical_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\tvec3 totalEmissiveRadiance = emissive;\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <specularmap_fragment>\\n\t#include <roughnessmap_fragment>\\n\t#include <metalnessmap_fragment>\\n\t#include <normal_flip>\\n\t#include <normal_fragment>\\n\t#include <emissivemap_fragment>\\n\t#include <lights_physical_fragment>\\n\t#include <lights_template>\\n\t#include <aomap_fragment>\\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/meshphysical_vert.glsl\n\n\tTHREE.ShaderChunk[ 'meshphysical_vert' ] = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <uv_vertex>\\n\t#include <uv2_vertex>\\n\t#include <color_vertex>\\n\t#include <beginnormal_vertex>\\n\t#include <morphnormal_vertex>\\n\t#include <skinbase_vertex>\\n\t#include <skinnormal_vertex>\\n\t#include <defaultnormal_vertex>\\n#ifndef FLAT_SHADED\\n\tvNormal = normalize( transformedNormal );\\n#endif\\n\t#include <begin_vertex>\\n\t#include <displacementmap_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <skinning_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\tvViewPosition = - mvPosition.xyz;\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/normal_frag.glsl\n\n\tTHREE.ShaderChunk[ 'normal_frag' ] = \"uniform float opacity;\\nvarying vec3 vNormal;\\n#include <common>\\n#include <packing>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tgl_FragColor = vec4( packNormalToRGB( vNormal ), opacity );\\n\t#include <logdepthbuf_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/normal_vert.glsl\n\n\tTHREE.ShaderChunk[ 'normal_vert' ] = \"varying vec3 vNormal;\\n#include <common>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\tvNormal = normalize( normalMatrix * normal );\\n\t#include <begin_vertex>\\n\t#include <morphtarget_vertex>\\n\t#include <project_vertex>\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/points_frag.glsl\n\n\tTHREE.ShaderChunk[ 'points_frag' ] = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_particle_fragment>\\n\t#include <color_fragment>\\n\t#include <alphatest_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <encodings_fragment>\\n\t#include <fog_fragment>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/points_vert.glsl\n\n\tTHREE.ShaderChunk[ 'points_vert' ] = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\t#include <color_vertex>\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\t#ifdef USE_SIZEATTENUATION\\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\\n\t#else\\n\t\tgl_PointSize = size;\\n\t#endif\\n\t#include <logdepthbuf_vertex>\\n\t#include <clipping_planes_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/shadow_frag.glsl\n\n\tTHREE.ShaderChunk[ 'shadow_frag' ] = \"uniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\tgl_FragColor = vec4( 0.0, 0.0, 0.0, opacity * ( 1.0  - getShadowMask() ) );\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib/shadow_vert.glsl\n\n\tTHREE.ShaderChunk[ 'shadow_vert' ] = \"#include <shadowmap_pars_vertex>\\nvoid main() {\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n\t#include <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n}\\n\";\n\n\t// File:src/renderers/shaders/ShaderLib.js\n\n\t/**\n\t * Webgl Shader Library for three.js\n\t *\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author mikael emtinger / http://gomo.se/\n\t */\n\n\n\tTHREE.ShaderLib = {\n\n\t\t'basic': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'common' ],\n\t\t\t\tTHREE.UniformsLib[ 'aomap' ],\n\t\t\t\tTHREE.UniformsLib[ 'fog' ]\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'meshbasic_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'meshbasic_frag' ]\n\n\t\t},\n\n\t\t'lambert': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'common' ],\n\t\t\t\tTHREE.UniformsLib[ 'aomap' ],\n\t\t\t\tTHREE.UniformsLib[ 'lightmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'emissivemap' ],\n\t\t\t\tTHREE.UniformsLib[ 'fog' ],\n\t\t\t\tTHREE.UniformsLib[ 'lights' ],\n\n\t\t\t\t{\n\t\t\t\t\t\"emissive\" : { value: new THREE.Color( 0x000000 ) }\n\t\t\t\t}\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'meshlambert_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'meshlambert_frag' ]\n\n\t\t},\n\n\t\t'phong': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'common' ],\n\t\t\t\tTHREE.UniformsLib[ 'aomap' ],\n\t\t\t\tTHREE.UniformsLib[ 'lightmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'emissivemap' ],\n\t\t\t\tTHREE.UniformsLib[ 'bumpmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'normalmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'displacementmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'fog' ],\n\t\t\t\tTHREE.UniformsLib[ 'lights' ],\n\n\t\t\t\t{\n\t\t\t\t\t\"emissive\" : { value: new THREE.Color( 0x000000 ) },\n\t\t\t\t\t\"specular\" : { value: new THREE.Color( 0x111111 ) },\n\t\t\t\t\t\"shininess\": { value: 30 }\n\t\t\t\t}\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'meshphong_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'meshphong_frag' ]\n\n\t\t},\n\n\t\t'standard': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'common' ],\n\t\t\t\tTHREE.UniformsLib[ 'aomap' ],\n\t\t\t\tTHREE.UniformsLib[ 'lightmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'emissivemap' ],\n\t\t\t\tTHREE.UniformsLib[ 'bumpmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'normalmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'displacementmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'roughnessmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'metalnessmap' ],\n\t\t\t\tTHREE.UniformsLib[ 'fog' ],\n\t\t\t\tTHREE.UniformsLib[ 'lights' ],\n\n\t\t\t\t{\n\t\t\t\t\t\"emissive\" : { value: new THREE.Color( 0x000000 ) },\n\t\t\t\t\t\"roughness\": { value: 0.5 },\n\t\t\t\t\t\"metalness\": { value: 0 },\n\t\t\t\t\t\"envMapIntensity\" : { value: 1 }, // temporary\n\t\t\t\t}\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'meshphysical_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'meshphysical_frag' ]\n\n\t\t},\n\n\t\t'points': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'points' ],\n\t\t\t\tTHREE.UniformsLib[ 'fog' ]\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'points_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'points_frag' ]\n\n\t\t},\n\n\t\t'dashed': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'common' ],\n\t\t\t\tTHREE.UniformsLib[ 'fog' ],\n\n\t\t\t\t{\n\t\t\t\t\t\"scale\"    : { value: 1 },\n\t\t\t\t\t\"dashSize\" : { value: 1 },\n\t\t\t\t\t\"totalSize\": { value: 2 }\n\t\t\t\t}\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'linedashed_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'linedashed_frag' ]\n\n\t\t},\n\n\t\t'depth': {\n\n\t\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\t\tTHREE.UniformsLib[ 'common' ],\n\t\t\t\tTHREE.UniformsLib[ 'displacementmap' ]\n\n\t\t\t] ),\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'depth_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'depth_frag' ]\n\n\t\t},\n\n\t\t'normal': {\n\n\t\t\tuniforms: {\n\n\t\t\t\t\"opacity\" : { value: 1.0 }\n\n\t\t\t},\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'normal_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'normal_frag' ]\n\n\t\t},\n\n\t\t/* -------------------------------------------------------------------------\n\t\t//\tCube map shader\n\t\t ------------------------------------------------------------------------- */\n\n\t\t'cube': {\n\n\t\t\tuniforms: {\n\t\t\t\t\"tCube\": { value: null },\n\t\t\t\t\"tFlip\": { value: - 1 }\n\t\t\t},\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'cube_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'cube_frag' ]\n\n\t\t},\n\n\t\t/* -------------------------------------------------------------------------\n\t\t//\tCube map shader\n\t\t ------------------------------------------------------------------------- */\n\n\t\t'equirect': {\n\n\t\t\tuniforms: {\n\t\t\t\t\"tEquirect\": { value: null },\n\t\t\t\t\"tFlip\": { value: - 1 }\n\t\t\t},\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'equirect_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'equirect_frag' ]\n\n\t\t},\n\n\t\t'distanceRGBA': {\n\n\t\t\tuniforms: {\n\n\t\t\t\t\"lightPos\": { value: new THREE.Vector3() }\n\n\t\t\t},\n\n\t\t\tvertexShader: THREE.ShaderChunk[ 'distanceRGBA_vert' ],\n\t\t\tfragmentShader: THREE.ShaderChunk[ 'distanceRGBA_frag' ]\n\n\t\t}\n\n\t};\n\n\tTHREE.ShaderLib[ 'physical' ] = {\n\n\t\tuniforms: THREE.UniformsUtils.merge( [\n\n\t\t\tTHREE.ShaderLib[ 'standard' ].uniforms,\n\n\t\t\t{\n\t\t\t\t\"clearCoat\": { value: 0 },\n\t\t\t\t\"clearCoatRoughness\": { value: 0 }\n\t\t\t}\n\n\t\t] ),\n\n\t\tvertexShader: THREE.ShaderChunk[ 'meshphysical_vert' ],\n\t\tfragmentShader: THREE.ShaderChunk[ 'meshphysical_frag' ]\n\n\t};\n\n\t// File:src/renderers/WebGLRenderer.js\n\n\t/**\n\t * @author supereggbert / http://www.paulbrunt.co.uk/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author szimek / https://github.com/szimek/\n\t * @author tschw\n\t */\n\n\tTHREE.WebGLRenderer = function ( parameters ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer', THREE.REVISION );\n\n\t\tparameters = parameters || {};\n\n\t\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false;\n\n\t\tvar lights = [];\n\n\t\tvar opaqueObjects = [];\n\t\tvar opaqueObjectsLastIndex = - 1;\n\t\tvar transparentObjects = [];\n\t\tvar transparentObjectsLastIndex = - 1;\n\n\t\tvar morphInfluences = new Float32Array( 8 );\n\n\t\tvar sprites = [];\n\t\tvar lensFlares = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = _canvas;\n\t\tthis.context = null;\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\t\tthis.gammaInput = false;\n\t\tthis.gammaOutput = false;\n\n\t\t// physical lights\n\n\t\tthis.physicallyCorrectLights = false;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = THREE.LinearToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\t\tthis.toneMappingWhitePoint = 1.0;\n\n\t\t// morphs\n\n\t\tthis.maxMorphTargets = 8;\n\t\tthis.maxMorphNormals = 4;\n\n\t\t// internal properties\n\n\t\tvar _this = this,\n\n\t\t// internal state cache\n\n\t\t_currentProgram = null,\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\t\t_currentGeometryProgram = '',\n\t\t_currentCamera = null,\n\n\t\t_currentScissor = new THREE.Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t_currentViewport = new THREE.Vector4(),\n\n\t\t//\n\n\t\t_usedTextureUnits = 0,\n\n\t\t//\n\n\t\t_clearColor = new THREE.Color( 0x000000 ),\n\t\t_clearAlpha = 0,\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_scissor = new THREE.Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t_viewport = new THREE.Vector4( 0, 0, _width, _height ),\n\n\t\t// frustum\n\n\t\t_frustum = new THREE.Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new THREE.WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t_sphere = new THREE.Sphere(),\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new THREE.Matrix4(),\n\n\t\t_vector3 = new THREE.Vector3(),\n\n\t\t// light arrays cache\n\n\t\t_lights = {\n\n\t\t\thash: '',\n\n\t\t\tambient: [ 0, 0, 0 ],\n\t\t\tdirectional: [],\n\t\t\tdirectionalShadowMap: [],\n\t\t\tdirectionalShadowMatrix: [],\n\t\t\tspot: [],\n\t\t\tspotShadowMap: [],\n\t\t\tspotShadowMatrix: [],\n\t\t\tpoint: [],\n\t\t\tpointShadowMap: [],\n\t\t\tpointShadowMatrix: [],\n\t\t\themi: [],\n\n\t\t\tshadows: []\n\n\t\t},\n\n\t\t// info\n\n\t\t_infoRender = {\n\n\t\t\tcalls: 0,\n\t\t\tvertices: 0,\n\t\t\tfaces: 0,\n\t\t\tpoints: 0\n\n\t\t};\n\n\t\tthis.info = {\n\n\t\t\trender: _infoRender,\n\t\t\tmemory: {\n\n\t\t\t\tgeometries: 0,\n\t\t\t\ttextures: 0\n\n\t\t\t},\n\t\t\tprograms: null\n\n\t\t};\n\n\n\t\t// initialize\n\n\t\tvar _gl;\n\n\t\ttry {\n\n\t\t\tvar attributes = {\n\t\t\t\talpha: _alpha,\n\t\t\t\tdepth: _depth,\n\t\t\t\tstencil: _stencil,\n\t\t\t\tantialias: _antialias,\n\t\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer\n\t\t\t};\n\n\t\t\t_gl = _context || _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\t\tthrow 'Error creating WebGL context with your selected attributes.';\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow 'Error creating WebGL context.';\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error );\n\n\t\t}\n\n\t\tvar extensions = new THREE.WebGLExtensions( _gl );\n\n\t\textensions.get( 'WEBGL_depth_texture' );\n\t\textensions.get( 'OES_texture_float' );\n\t\textensions.get( 'OES_texture_float_linear' );\n\t\textensions.get( 'OES_texture_half_float' );\n\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\textensions.get( 'OES_standard_derivatives' );\n\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\tif ( extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\tTHREE.BufferGeometry.MaxIndex = 4294967296;\n\n\t\t}\n\n\t\tvar capabilities = new THREE.WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tvar state = new THREE.WebGLState( _gl, extensions, paramThreeToGL );\n\t\tvar properties = new THREE.WebGLProperties();\n\t\tvar textures = new THREE.WebGLTextures( _gl, extensions, state, properties, capabilities, paramThreeToGL, this.info );\n\t\tvar objects = new THREE.WebGLObjects( _gl, properties, this.info );\n\t\tvar programCache = new THREE.WebGLPrograms( this, capabilities );\n\t\tvar lightCache = new THREE.WebGLLights();\n\n\t\tthis.info.programs = programCache.programs;\n\n\t\tvar bufferRenderer = new THREE.WebGLBufferRenderer( _gl, extensions, _infoRender );\n\t\tvar indexedBufferRenderer = new THREE.WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\n\n\t\t//\n\n\t\tvar backgroundCamera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\n\t\tvar backgroundCamera2 = new THREE.PerspectiveCamera();\n\t\tvar backgroundPlaneMesh = new THREE.Mesh(\n\t\t\tnew THREE.PlaneBufferGeometry( 2, 2 ),\n\t\t\tnew THREE.MeshBasicMaterial( { depthTest: false, depthWrite: false } )\n\t\t);\n\t\tvar backgroundBoxShader = THREE.ShaderLib[ 'cube' ];\n\t\tvar backgroundBoxMesh = new THREE.Mesh(\n\t\t\tnew THREE.BoxBufferGeometry( 5, 5, 5 ),\n\t\t\tnew THREE.ShaderMaterial( {\n\t\t\t\tuniforms: backgroundBoxShader.uniforms,\n\t\t\t\tvertexShader: backgroundBoxShader.vertexShader,\n\t\t\t\tfragmentShader: backgroundBoxShader.fragmentShader,\n\t\t\t\tdepthTest: false,\n\t\t\t\tdepthWrite: false,\n\t\t\t\tside: THREE.BackSide\n\t\t\t} )\n\t\t);\n\t\tobjects.update( backgroundPlaneMesh );\n\t\tobjects.update( backgroundBoxMesh );\n\n\t\t//\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\tfunction glClearColor( r, g, b, a ) {\n\n\t\t\tif ( _premultipliedAlpha === true ) {\n\n\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t}\n\n\t\t\tstate.clearColor( r, g, b, a );\n\n\t\t}\n\n\t\tfunction setDefaultGLState() {\n\n\t\t\tstate.init();\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\t\tglClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );\n\n\t\t}\n\n\t\tfunction resetGLState() {\n\n\t\t\t_currentProgram = null;\n\t\t\t_currentCamera = null;\n\n\t\t\t_currentGeometryProgram = '';\n\t\t\t_currentMaterialId = - 1;\n\n\t\t\tstate.reset();\n\n\t\t}\n\n\t\tsetDefaultGLState();\n\n\t\tthis.context = _gl;\n\t\tthis.capabilities = capabilities;\n\t\tthis.extensions = extensions;\n\t\tthis.properties = properties;\n\t\tthis.state = state;\n\n\t\t// shadow map\n\n\t\tvar shadowMap = new THREE.WebGLShadowMap( this, _lights, objects );\n\n\t\tthis.shadowMap = shadowMap;\n\n\n\t\t// Plugins\n\n\t\tvar spritePlugin = new THREE.SpritePlugin( this, sprites );\n\t\tvar lensFlarePlugin = new THREE.LensFlarePlugin( this, lensFlares );\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\textensions.get( 'WEBGL_lose_context' ).loseContext();\n\n\t\t};\n\n\t\tthis.getMaxAnisotropy = function () {\n\n\t\t\treturn capabilities.getMaxAnisotropy();\n\n\t\t};\n\n\t\tthis.getPrecision = function () {\n\n\t\t\treturn capabilities.precision;\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _viewport.z, _viewport.w, false );\n\n\t\t};\n\n\t\tthis.getSize = function () {\n\n\t\t\treturn {\n\t\t\t\twidth: _width,\n\t\t\t\theight: _height\n\t\t\t};\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_canvas.width = width * _pixelRatio;\n\t\t\t_canvas.height = height * _pixelRatio;\n\n\t\t\tif ( updateStyle !== false ) {\n\n\t\t\t\t_canvas.style.width = width + 'px';\n\t\t\t\t_canvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tstate.viewport( _viewport.set( x, y, width, height ) );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tstate.scissor( _scissor.set( x, y, width, height ) );\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function () {\n\n\t\t\treturn _clearColor;\n\n\t\t};\n\n\t\tthis.setClearColor = function ( color, alpha ) {\n\n\t\t\t_clearColor.set( color );\n\n\t\t\t_clearAlpha = alpha !== undefined ? alpha : 1;\n\n\t\t\tglClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn _clearAlpha;\n\n\t\t};\n\n\t\tthis.setClearAlpha = function ( alpha ) {\n\n\t\t\t_clearAlpha = alpha;\n\n\t\t\tglClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );\n\n\t\t};\n\n\t\tthis.clear = function ( color, depth, stencil ) {\n\n\t\t\tvar bits = 0;\n\n\t\t\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\n\t\t\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\n\t\t\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\t\t\tthis.clear( color, depth, stencil );\n\n\t\t};\n\n\t\t// Reset\n\n\t\tthis.resetGLState = resetGLState;\n\n\t\tthis.dispose = function() {\n\n\t\t\ttransparentObjects = [];\n\t\t\ttransparentObjectsLastIndex = -1;\n\t\t\topaqueObjects = [];\n\t\t\topaqueObjectsLastIndex = -1;\n\n\t\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tresetGLState();\n\t\t\tsetDefaultGLState();\n\n\t\t\tproperties.clear();\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tvar material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t\tproperties.delete( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReference( material ) {\n\n\t\t\tvar programInfo = properties.get( material ).program;\n\n\t\t\tmaterial.program = undefined;\n\n\t\t\tif ( programInfo !== undefined ) {\n\n\t\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferImmediate = function ( object, program, material ) {\n\n\t\t\tstate.initAttributes();\n\n\t\t\tvar buffers = properties.get( object );\n\n\t\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\t\tvar attributes = program.getAttributes();\n\n\t\t\tif ( object.hasPositions ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( attributes.position );\n\t\t\t\t_gl.vertexAttribPointer( attributes.position, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( object.hasNormals ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\n\n\t\t\t\tif ( material.type !== 'MeshPhongMaterial' && material.type !== 'MeshStandardMaterial' && material.type !== 'MeshPhysicalMaterial' && material.shading === THREE.FlatShading ) {\n\n\t\t\t\t\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\n\n\t\t\t\t\t\tvar array = object.normalArray;\n\n\t\t\t\t\t\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\n\t\t\t\t\t\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\n\t\t\t\t\t\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\n\n\t\t\t\t\t\tarray[ i + 0 ] = nx;\n\t\t\t\t\t\tarray[ i + 1 ] = ny;\n\t\t\t\t\t\tarray[ i + 2 ] = nz;\n\n\t\t\t\t\t\tarray[ i + 3 ] = nx;\n\t\t\t\t\t\tarray[ i + 4 ] = ny;\n\t\t\t\t\t\tarray[ i + 5 ] = nz;\n\n\t\t\t\t\t\tarray[ i + 6 ] = nx;\n\t\t\t\t\t\tarray[ i + 7 ] = ny;\n\t\t\t\t\t\tarray[ i + 8 ] = nz;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( attributes.normal );\n\n\t\t\t\t_gl.vertexAttribPointer( attributes.normal, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( object.hasUvs && material.map ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( attributes.uv );\n\n\t\t\t\t_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( object.hasColors && material.vertexColors !== THREE.NoColors ) {\n\n\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\n\t\t\t\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\n\n\t\t\t\tstate.enableAttribute( attributes.color );\n\n\t\t\t\t_gl.vertexAttribPointer( attributes.color, 3, _gl.FLOAT, false, 0, 0 );\n\n\t\t\t}\n\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\n\n\t\t\tobject.count = 0;\n\n\t\t};\n\n\t\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\t\tsetMaterial( material );\n\n\t\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\t\tvar updateBuffers = false;\n\t\t\tvar geometryProgram = geometry.id + '_' + program.id + '_' + material.wireframe;\n\n\t\t\tif ( geometryProgram !== _currentGeometryProgram ) {\n\n\t\t\t\t_currentGeometryProgram = geometryProgram;\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t\t// morph targets\n\n\t\t\tvar morphTargetInfluences = object.morphTargetInfluences;\n\n\t\t\tif ( morphTargetInfluences !== undefined ) {\n\n\t\t\t\tvar activeInfluences = [];\n\n\t\t\t\tfor ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar influence = morphTargetInfluences[ i ];\n\t\t\t\t\tactiveInfluences.push( [ influence, i ] );\n\n\t\t\t\t}\n\n\t\t\t\tactiveInfluences.sort( absNumericalSort );\n\n\t\t\t\tif ( activeInfluences.length > 8 ) {\n\n\t\t\t\t\tactiveInfluences.length = 8;\n\n\t\t\t\t}\n\n\t\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\t\tfor ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar influence = activeInfluences[ i ];\n\t\t\t\t\tmorphInfluences[ i ] = influence[ 0 ];\n\n\t\t\t\t\tif ( influence[ 0 ] !== 0 ) {\n\n\t\t\t\t\t\tvar index = influence[ 1 ];\n\n\t\t\t\t\t\tif ( material.morphTargets === true && morphAttributes.position ) geometry.addAttribute( 'morphTarget' + i, morphAttributes.position[ index ] );\n\t\t\t\t\t\tif ( material.morphNormals === true && morphAttributes.normal ) geometry.addAttribute( 'morphNormal' + i, morphAttributes.normal[ index ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( material.morphTargets === true ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\t\t\tif ( material.morphNormals === true ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tprogram.getUniforms().setValue(\n\t\t\t\t\t\t_gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar position = geometry.attributes.position;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = objects.getWireframeAttribute( geometry );\n\n\t\t\t}\n\n\t\t\tvar renderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( index );\n\n\t\t\t} else {\n\n\t\t\t\trenderer = bufferRenderer;\n\n\t\t\t}\n\n\t\t\tif ( updateBuffers ) {\n\n\t\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, objects.getAttributeBuffer( index ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar dataStart = 0;\n\t\t\tvar dataCount = Infinity;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdataCount = index.count;\n\n\t\t\t} else if ( position !== undefined ) {\n\n\t\t\t\tdataCount = position.count;\n\n\t\t\t}\n\n\t\t\tvar rangeStart = geometry.drawRange.start;\n\t\t\tvar rangeCount = geometry.drawRange.count;\n\n\t\t\tvar groupStart = group !== null ? group.start : 0;\n\t\t\tvar groupCount = group !== null ? group.count : Infinity;\n\n\t\t\tvar drawStart = Math.max( dataStart, rangeStart, groupStart );\n\t\t\tvar drawEnd = Math.min( dataStart + dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\t\t//\n\n\t\t\tif ( object instanceof THREE.Mesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\t\tcase THREE.TrianglesDrawMode:\n\t\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.TriangleStripDrawMode:\n\t\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_STRIP );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.TriangleFanDrawMode:\n\t\t\t\t\t\t\trenderer.setMode( _gl.TRIANGLE_FAN );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t} else if ( object instanceof THREE.Line ) {\n\n\t\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object instanceof THREE.LineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object instanceof THREE.Points ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t}\n\n\t\t\tif ( geometry instanceof THREE.InstancedBufferGeometry ) {\n\n\t\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\n\n\t\t\tvar extension;\n\n\t\t\tif ( geometry instanceof THREE.InstancedBufferGeometry ) {\n\n\t\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\t\tif ( extension === null ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( startIndex === undefined ) startIndex = 0;\n\n\t\t\tstate.initAttributes();\n\n\t\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t\tvar programAttributes = program.getAttributes();\n\n\t\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\t\tfor ( var name in programAttributes ) {\n\n\t\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\t\tvar type = _gl.FLOAT;\n\t\t\t\t\t\tvar array = geometryAttribute.array;\n\t\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\n\t\t\t\t\t\tif ( array instanceof Float32Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.FLOAT;\n\n\t\t\t\t\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\t\t\t\t\tconsole.warn(\"Unsupported data buffer format: Float64Array\");\n\n\t\t\t\t\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.UNSIGNED_SHORT;\n\n\t\t\t\t\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.SHORT;\n\n\t\t\t\t\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.UNSIGNED_INT;\n\n\t\t\t\t\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.INT;\n\n\t\t\t\t\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.BYTE;\n\n\t\t\t\t\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\t\t\t\t\ttype = _gl.UNSIGNED_BYTE;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\t\t\t\t\t\tvar buffer = objects.getAttributeBuffer( geometryAttribute );\n\n\t\t\t\t\t\tif ( geometryAttribute instanceof THREE.InterleavedBufferAttribute ) {\n\n\t\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\t\tif ( data instanceof THREE.InstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * data.array.BYTES_PER_ELEMENT, ( startIndex * stride + offset ) * data.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( geometryAttribute instanceof THREE.InstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute, extension );\n\n\t\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\n\t\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * geometryAttribute.array.BYTES_PER_ELEMENT );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t}\n\n\t\t// Sorting\n\n\t\tfunction absNumericalSort( a, b ) {\n\n\t\t\treturn Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] );\n\n\t\t}\n\n\t\tfunction painterSortStable ( a, b ) {\n\n\t\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t\t} else if ( a.material.id !== b.material.id ) {\n\n\t\t\t\treturn a.material.id - b.material.id;\n\n\t\t\t} else if ( a.z !== b.z ) {\n\n\t\t\t\treturn a.z - b.z;\n\n\t\t\t} else {\n\n\t\t\t\treturn a.id - b.id;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction reversePainterSortStable ( a, b ) {\n\n\t\t\tif ( a.object.renderOrder !== b.object.renderOrder ) {\n\n\t\t\t\treturn a.object.renderOrder - b.object.renderOrder;\n\n\t\t\t} if ( a.z !== b.z ) {\n\n\t\t\t\treturn b.z - a.z;\n\n\t\t\t} else {\n\n\t\t\t\treturn a.id - b.id;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\n\n\t\t\tif ( camera instanceof THREE.Camera === false ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar fog = scene.fog;\n\n\t\t\t// reset caching for this frame\n\n\t\t\t_currentGeometryProgram = '';\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\tlights.length = 0;\n\n\t\t\topaqueObjectsLastIndex = - 1;\n\t\t\ttransparentObjectsLastIndex = - 1;\n\n\t\t\tsprites.length = 0;\n\t\t\tlensFlares.length = 0;\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\t\tprojectObject( scene, camera );\n\n\t\t\topaqueObjects.length = opaqueObjectsLastIndex + 1;\n\t\t\ttransparentObjects.length = transparentObjectsLastIndex + 1;\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\topaqueObjects.sort( painterSortStable );\n\t\t\t\ttransparentObjects.sort( reversePainterSortStable );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\t\tsetupShadows( lights );\n\n\t\t\tshadowMap.render( scene, camera );\n\n\t\t\tsetupLights( lights, camera );\n\n\t\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t\t//\n\n\t\t\t_infoRender.calls = 0;\n\t\t\t_infoRender.vertices = 0;\n\t\t\t_infoRender.faces = 0;\n\t\t\t_infoRender.points = 0;\n\n\t\t\tif ( renderTarget === undefined ) {\n\n\t\t\t\trenderTarget = null;\n\n\t\t\t}\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t\t//\n\n\t\t\tvar background = scene.background;\n\n\t\t\tif ( background === null ) {\n\n\t\t\t\tglClearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );\n\n\t\t\t} else if ( background instanceof THREE.Color ) {\n\n\t\t\t\tglClearColor( background.r, background.g, background.b, 1 );\n\n\t\t\t}\n\n\t\t\tif ( this.autoClear || forceClear ) {\n\n\t\t\t\tthis.clear( this.autoClearColor, this.autoClearDepth, this.autoClearStencil );\n\n\t\t\t}\n\n\t\t\tif ( background instanceof THREE.CubeTexture ) {\n\n\t\t\t\tbackgroundCamera2.projectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t\tbackgroundCamera2.matrixWorld.extractRotation( camera.matrixWorld );\n\t\t\t\tbackgroundCamera2.matrixWorldInverse.getInverse( backgroundCamera2.matrixWorld );\n\n\t\t\t\tbackgroundBoxMesh.material.uniforms[ \"tCube\" ].value = background;\n\t\t\t\tbackgroundBoxMesh.modelViewMatrix.multiplyMatrices( backgroundCamera2.matrixWorldInverse, backgroundBoxMesh.matrixWorld );\n\n\t\t\t\t_this.renderBufferDirect( backgroundCamera2, null, backgroundBoxMesh.geometry, backgroundBoxMesh.material, backgroundBoxMesh, null );\n\n\t\t\t} else if ( background instanceof THREE.Texture ) {\n\n\t\t\t\tbackgroundPlaneMesh.material.map = background;\n\n\t\t\t\t_this.renderBufferDirect( backgroundCamera, null, backgroundPlaneMesh.geometry, backgroundPlaneMesh.material, backgroundPlaneMesh, null );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.overrideMaterial ) {\n\n\t\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\t\trenderObjects( opaqueObjects, camera, fog, overrideMaterial );\n\t\t\t\trenderObjects( transparentObjects, camera, fog, overrideMaterial );\n\n\t\t\t} else {\n\n\t\t\t\t// opaque pass (front-to-back order)\n\n\t\t\t\tstate.setBlending( THREE.NoBlending );\n\t\t\t\trenderObjects( opaqueObjects, camera, fog );\n\n\t\t\t\t// transparent pass (back-to-front order)\n\n\t\t\t\trenderObjects( transparentObjects, camera, fog );\n\n\t\t\t}\n\n\t\t\t// custom render plugins (post pass)\n\n\t\t\tspritePlugin.render( scene, camera );\n\t\t\tlensFlarePlugin.render( scene, camera, _currentViewport );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\ttextures.updateRenderTargetMipmap( renderTarget );\n\n\t\t\t}\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.setDepthTest( true );\n\t\t\tstate.setDepthWrite( true );\n\t\t\tstate.setColorWrite( true );\n\n\t\t\t// _gl.finish();\n\n\t\t};\n\n\t\tfunction pushRenderItem( object, geometry, material, z, group ) {\n\n\t\t\tvar array, index;\n\n\t\t\t// allocate the next position in the appropriate array\n\n\t\t\tif ( material.transparent ) {\n\n\t\t\t\tarray = transparentObjects;\n\t\t\t\tindex = ++ transparentObjectsLastIndex;\n\n\t\t\t} else {\n\n\t\t\t\tarray = opaqueObjects;\n\t\t\t\tindex = ++ opaqueObjectsLastIndex;\n\n\t\t\t}\n\n\t\t\t// recycle existing render item or grow the array\n\n\t\t\tvar renderItem = array[ index ];\n\n\t\t\tif ( renderItem !== undefined ) {\n\n\t\t\t\trenderItem.id = object.id;\n\t\t\t\trenderItem.object = object;\n\t\t\t\trenderItem.geometry = geometry;\n\t\t\t\trenderItem.material = material;\n\t\t\t\trenderItem.z = _vector3.z;\n\t\t\t\trenderItem.group = group;\n\n\t\t\t} else {\n\n\t\t\t\trenderItem = {\n\t\t\t\t\tid: object.id,\n\t\t\t\t\tobject: object,\n\t\t\t\t\tgeometry: geometry,\n\t\t\t\t\tmaterial: material,\n\t\t\t\t\tz: _vector3.z,\n\t\t\t\t\tgroup: group\n\t\t\t\t};\n\n\t\t\t\t// assert( index === array.length );\n\t\t\t\tarray.push( renderItem );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// TODO Duplicated code (Frustum)\n\n\t\tfunction isObjectViewable( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null )\n\t\t\t\tgeometry.computeBoundingSphere();\n\n\t\t\t_sphere.copy( geometry.boundingSphere ).\n\t\t\t\tapplyMatrix4( object.matrixWorld );\n\n\t\t\treturn isSphereViewable( _sphere );\n\n\t\t}\n\n\t\tfunction isSpriteViewable( sprite ) {\n\n\t\t\t_sphere.center.set( 0, 0, 0 );\n\t\t\t_sphere.radius = 0.7071067811865476;\n\t\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn isSphereViewable( _sphere );\n\n\t\t}\n\n\t\tfunction isSphereViewable( sphere ) {\n\n\t\t\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\n\n\t\t\tvar numPlanes = _clipping.numPlanes;\n\n\t\t\tif ( numPlanes === 0 ) return true;\n\n\t\t\tvar planes = _this.clippingPlanes,\n\n\t\t\t\tcenter = sphere.center,\n\t\t\t\tnegRad = - sphere.radius,\n\t\t\t\ti = 0;\n\n\t\t\tdo {\n\n\t\t\t\t// out when deeper than radius in the negative halfspace\n\t\t\t\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\n\n\t\t\t} while ( ++ i !== numPlanes );\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tfunction projectObject( object, camera ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\tif ( object instanceof THREE.Light ) {\n\n\t\t\t\t\tlights.push( object );\n\n\t\t\t\t} else if ( object instanceof THREE.Sprite ) {\n\n\t\t\t\t\tif ( object.frustumCulled === false || isSpriteViewable( object ) === true ) {\n\n\t\t\t\t\t\tsprites.push( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object instanceof THREE.LensFlare ) {\n\n\t\t\t\t\tlensFlares.push( object );\n\n\t\t\t\t} else if ( object instanceof THREE.ImmediateRenderObject ) {\n\n\t\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tpushRenderItem( object, null, object.material, _vector3.z, null );\n\n\t\t\t\t} else if ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Points ) {\n\n\t\t\t\t\tif ( object instanceof THREE.SkinnedMesh ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( object.frustumCulled === false || isObjectViewable( object ) === true ) {\n\n\t\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld );\n\t\t\t\t\t\t\t\t_vector3.applyProjection( _projScreenMatrix );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar geometry = objects.update( object );\n\n\t\t\t\t\t\t\tif ( material instanceof THREE.MultiMaterial ) {\n\n\t\t\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\t\t\tpushRenderItem( object, geometry, groupMaterial, _vector3.z, group );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tpushRenderItem( object, geometry, material, _vector3.z, null );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar children = object.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, camera, fog, overrideMaterial ) {\n\n\t\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\t\tvar object = renderItem.object;\n\t\t\t\tvar geometry = renderItem.geometry;\n\t\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\t\tvar group = renderItem.group;\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\t\tif ( object instanceof THREE.ImmediateRenderObject ) {\n\n\t\t\t\t\tsetMaterial( material );\n\n\t\t\t\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\t\t\t\t_currentGeometryProgram = '';\n\n\t\t\t\t\tobject.render( function ( object ) {\n\n\t\t\t\t\t\t_this.renderBufferImmediate( object, program, material );\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_this.renderBufferDirect( camera, fog, geometry, material, object, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction initMaterial( material, fog, object ) {\n\n\t\t\tvar materialProperties = properties.get( material );\n\n\t\t\tvar parameters = programCache.getParameters(\n\t\t\t\t\tmaterial, _lights, fog, _clipping.numPlanes, object );\n\n\t\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\t\tvar program = materialProperties.program;\n\t\t\tvar programChange = true;\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\t// new material\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t} else if ( program.code !== code ) {\n\n\t\t\t\t// changed glsl or parameters\n\t\t\t\treleaseMaterialProgramReference( material );\n\n\t\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t\t// same glsl and uniform list\n\t\t\t\treturn;\n\n\t\t\t} else {\n\n\t\t\t\t// only rebuild uniform list\n\t\t\t\tprogramChange = false;\n\n\t\t\t}\n\n\t\t\tif ( programChange ) {\n\n\t\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\t\tvar shader = THREE.ShaderLib[ parameters.shaderID ];\n\n\t\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\t\tname: material.type,\n\t\t\t\t\t\tuniforms: THREE.UniformsUtils.clone( shader.uniforms ),\n\t\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\tmaterialProperties.__webglShader = {\n\t\t\t\t\t\tname: material.type,\n\t\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tmaterial.__webglShader = materialProperties.__webglShader;\n\n\t\t\t\tprogram = programCache.acquireProgram( material, parameters, code );\n\n\t\t\t\tmaterialProperties.program = program;\n\t\t\t\tmaterial.program = program;\n\n\t\t\t}\n\n\t\t\tvar attributes = program.getAttributes();\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\t\tif ( attributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.morphNormals ) {\n\n\t\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\t\tif ( attributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar uniforms = materialProperties.__webglShader.uniforms;\n\n\t\t\tif ( ! ( material instanceof THREE.ShaderMaterial ) &&\n\t\t\t\t\t! ( material instanceof THREE.RawShaderMaterial ) ||\n\t\t\t\t\tmaterial.clipping === true ) {\n\n\t\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t\t}\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// store the light setup it was created for\n\n\t\t\t\tmaterialProperties.lightsHash = _lights.hash;\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = _lights.ambient;\n\t\t\t\tuniforms.directionalLights.value = _lights.directional;\n\t\t\t\tuniforms.spotLights.value = _lights.spot;\n\t\t\t\tuniforms.pointLights.value = _lights.point;\n\t\t\t\tuniforms.hemisphereLights.value = _lights.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = _lights.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = _lights.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = _lights.spotShadowMap;\n\t\t\t\tuniforms.spotShadowMatrix.value = _lights.spotShadowMatrix;\n\t\t\t\tuniforms.pointShadowMap.value = _lights.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = _lights.pointShadowMatrix;\n\n\t\t\t}\n\n\t\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\t\tuniformsList =\n\t\t\t\t\t\tTHREE.WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\t\tmaterialProperties.uniformsList = uniformsList;\n\t\t\tmaterialProperties.dynamicUniforms =\n\t\t\t\t\tTHREE.WebGLUniforms.splitDynamic( uniformsList, uniforms );\n\n\t\t}\n\n\t\tfunction setMaterial( material ) {\n\n\t\t\tif ( material.side !== THREE.DoubleSide )\n\t\t\t\tstate.enable( _gl.CULL_FACE );\n\t\t\telse\n\t\t\t\tstate.disable( _gl.CULL_FACE );\n\n\t\t\tstate.setFlipSided( material.side === THREE.BackSide );\n\n\t\t\tif ( material.transparent === true ) {\n\n\t\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\t\t} else {\n\n\t\t\t\tstate.setBlending( THREE.NoBlending );\n\n\t\t\t}\n\n\t\t\tstate.setDepthFunc( material.depthFunc );\n\t\t\tstate.setDepthTest( material.depthTest );\n\t\t\tstate.setDepthWrite( material.depthWrite );\n\t\t\tstate.setColorWrite( material.colorWrite );\n\t\t\tstate.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\t}\n\n\t\tfunction setProgram( camera, fog, material, object ) {\n\n\t\t\t_usedTextureUnits = 0;\n\n\t\t\tvar materialProperties = properties.get( material );\n\n\t\t\tif ( _clippingEnabled ) {\n\n\t\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\t\tvar useCache =\n\t\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\t_clipping.setState(\n\t\t\t\t\t\t\tmaterial.clippingPlanes, material.clipShadows,\n\t\t\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t\t}\n\n\t\t\t\tif ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\tmaterialProperties.numClippingPlanes !== _clipping.numPlanes ) {\n\n\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tif ( materialProperties.lightsHash !== undefined &&\n\t\t\t\tmaterialProperties.lightsHash !== _lights.hash ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tif ( material.needsUpdate ) {\n\n\t\t\t\tinitMaterial( material, fog, object );\n\t\t\t\tmaterial.needsUpdate = false;\n\n\t\t\t}\n\n\t\t\tvar refreshProgram = false;\n\t\t\tvar refreshMaterial = false;\n\t\t\tvar refreshLights = false;\n\n\t\t\tvar program = materialProperties.program,\n\t\t\t\tp_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.__webglShader.uniforms;\n\n\t\t\tif ( program.id !== _currentProgram ) {\n\n\t\t\t\t_gl.useProgram( program.program );\n\t\t\t\t_currentProgram = program.id;\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || camera !== _currentCamera ) {\n\n\t\t\t\tp_uniforms.set( _gl, camera, 'projectionMatrix' );\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\n\t\t\t\tif ( camera !== _currentCamera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t\t// load material specific uniforms\n\t\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\t\tif ( material instanceof THREE.ShaderMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshPhongMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshStandardMaterial ||\n\t\t\t\t\t material.envMap ) {\n\n\t\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( material instanceof THREE.MeshPhongMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshLambertMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshBasicMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshStandardMaterial ||\n\t\t\t\t\t material instanceof THREE.ShaderMaterial ||\n\t\t\t\t\t material.skinning ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\t}\n\n\t\t\t\tp_uniforms.set( _gl, _this, 'toneMappingExposure' );\n\t\t\t\tp_uniforms.set( _gl, _this, 'toneMappingWhitePoint' );\n\n\t\t\t}\n\n\t\t\t// skinning uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t\t// not sure why, but otherwise weird things happen\n\n\t\t\tif ( material.skinning ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tvar skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( capabilities.floatVertexTextures && skeleton.useVertexTexture ) {\n\n\t\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTexture' );\n\t\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureWidth' );\n\t\t\t\t\t\tp_uniforms.set( _gl, skeleton, 'boneTextureHeight' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tif ( material.lights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tif ( material instanceof THREE.MeshBasicMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshLambertMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshPhongMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshStandardMaterial ||\n\t\t\t\t\t material instanceof THREE.MeshDepthMaterial ) {\n\n\t\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh single material specific uniforms\n\n\t\t\t\tif ( material instanceof THREE.LineBasicMaterial ) {\n\n\t\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.LineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.PointsMaterial ) {\n\n\t\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.MeshLambertMaterial ) {\n\n\t\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.MeshPhongMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.MeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.MeshStandardMaterial ) {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t} else if ( material instanceof THREE.MeshDepthMaterial ) {\n\n\t\t\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\t\t\tm_uniforms.displacementMap.value = material.displacementMap;\n\t\t\t\t\t\tm_uniforms.displacementScale.value = material.displacementScale;\n\t\t\t\t\t\tm_uniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material instanceof THREE.MeshNormalMaterial ) {\n\n\t\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t\t}\n\n\t\t\t\tTHREE.WebGLUniforms.upload(\n\t\t\t\t\t\t_gl, materialProperties.uniformsList, m_uniforms, _this );\n\n\t\t\t}\n\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.set( _gl, object, 'modelViewMatrix' );\n\t\t\tp_uniforms.set( _gl, object, 'normalMatrix' );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\n\t\t\t// dynamic uniforms\n\n\t\t\tvar dynUniforms = materialProperties.dynamicUniforms;\n\n\t\t\tif ( dynUniforms !== null ) {\n\n\t\t\t\tTHREE.WebGLUniforms.evalDynamic(\n\t\t\t\t\t\tdynUniforms, m_uniforms, object, camera );\n\n\t\t\t\tTHREE.WebGLUniforms.upload( _gl, dynUniforms, m_uniforms, _this );\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// Uniforms (refresh uniforms objects)\n\n\t\tfunction refreshUniformsCommon ( uniforms, material ) {\n\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t\tuniforms.diffuse.value = material.color;\n\n\t\t\tif ( material.emissive ) {\n\n\t\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t\t}\n\n\t\t\tuniforms.map.value = material.map;\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\tif ( material.aoMap ) {\n\n\t\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\t}\n\n\t\t\t// uv repeat and offset setting priorities\n\t\t\t// 1. color map\n\t\t\t// 2. specular map\n\t\t\t// 3. normal map\n\t\t\t// 4. bump map\n\t\t\t// 5. alpha map\n\t\t\t// 6. emissive map\n\n\t\t\tvar uvScaleMap;\n\n\t\t\tif ( material.map ) {\n\n\t\t\t\tuvScaleMap = material.map;\n\n\t\t\t} else if ( material.specularMap ) {\n\n\t\t\t\tuvScaleMap = material.specularMap;\n\n\t\t\t} else if ( material.displacementMap ) {\n\n\t\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t\t} else if ( material.normalMap ) {\n\n\t\t\t\tuvScaleMap = material.normalMap;\n\n\t\t\t} else if ( material.bumpMap ) {\n\n\t\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t\t} else if ( material.roughnessMap ) {\n\n\t\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t\t} else if ( material.metalnessMap ) {\n\n\t\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t\t} else if ( material.alphaMap ) {\n\n\t\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t\t} else if ( material.emissiveMap ) {\n\n\t\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t\t// backwards compatibility\n\t\t\t\tif ( uvScaleMap instanceof THREE.WebGLRenderTarget ) {\n\n\t\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t\t}\n\n\t\t\t\tvar offset = uvScaleMap.offset;\n\t\t\t\tvar repeat = uvScaleMap.repeat;\n\n\t\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t\t}\n\n\t\t\tuniforms.envMap.value = material.envMap;\n\n\t\t\t// don't flip CubeTexture envMaps, flip everything else:\n\t\t\t//  WebGLRenderTargetCube will be flipped for backwards compatibility\n\t\t\t//  WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n\t\t\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\t\t\tuniforms.flipEnvMap.value = ( ! ( material.envMap instanceof THREE.CubeTexture ) ) ? 1 : - 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tfunction refreshUniformsLine ( uniforms, material ) {\n\n\t\t\tuniforms.diffuse.value = material.color;\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t}\n\n\t\tfunction refreshUniformsDash ( uniforms, material ) {\n\n\t\t\tuniforms.dashSize.value = material.dashSize;\n\t\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\t\tuniforms.scale.value = material.scale;\n\n\t\t}\n\n\t\tfunction refreshUniformsPoints ( uniforms, material ) {\n\n\t\t\tuniforms.diffuse.value = material.color;\n\t\t\tuniforms.opacity.value = material.opacity;\n\t\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\t\tuniforms.scale.value = _canvas.clientHeight * 0.5;\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\tif ( material.map !== null ) {\n\n\t\t\t\tvar offset = material.map.offset;\n\t\t\t\tvar repeat = material.map.repeat;\n\n\t\t\t\tuniforms.offsetRepeat.value.set( offset.x, offset.y, repeat.x, repeat.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsFog ( uniforms, fog ) {\n\n\t\t\tuniforms.fogColor.value = fog.color;\n\n\t\t\tif ( fog instanceof THREE.Fog ) {\n\n\t\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t\t} else if ( fog instanceof THREE.FogExp2 ) {\n\n\t\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsLambert ( uniforms, material ) {\n\n\t\t\tif ( material.lightMap ) {\n\n\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\t}\n\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsPhong ( uniforms, material ) {\n\n\t\t\tuniforms.specular.value = material.specular;\n\t\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\t\tif ( material.lightMap ) {\n\n\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\t}\n\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\t}\n\n\t\t\tif ( material.bumpMap ) {\n\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\t}\n\n\t\t\tif ( material.normalMap ) {\n\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\t}\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsStandard ( uniforms, material ) {\n\n\t\t\tuniforms.roughness.value = material.roughness;\n\t\t\tuniforms.metalness.value = material.metalness;\n\n\t\t\tif ( material.roughnessMap ) {\n\n\t\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.metalnessMap ) {\n\n\t\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.lightMap ) {\n\n\t\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\t}\n\n\t\t\tif ( material.emissiveMap ) {\n\n\t\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\t}\n\n\t\t\tif ( material.bumpMap ) {\n\n\t\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\t}\n\n\t\t\tif ( material.normalMap ) {\n\n\t\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\t}\n\n\t\t\tif ( material.displacementMap ) {\n\n\t\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t\t}\n\n\t\t\tif ( material.envMap ) {\n\n\t\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction refreshUniformsPhysical ( uniforms, material ) {\n\n\t\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate ( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\t// Lighting\n\n\t\tfunction setupShadows ( lights ) {\n\n\t\t\tvar lightShadowsLength = 0;\n\n\t\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\t\tvar light = lights[ i ];\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t_lights.shadows[ lightShadowsLength ++ ] = light;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_lights.shadows.length = lightShadowsLength;\n\n\t\t}\n\n\t\tfunction setupLights ( lights, camera ) {\n\n\t\t\tvar l, ll, light,\n\t\t\tr = 0, g = 0, b = 0,\n\t\t\tcolor,\n\t\t\tintensity,\n\t\t\tdistance,\n\t\t\tshadowMap,\n\n\t\t\tviewMatrix = camera.matrixWorldInverse,\n\n\t\t\tdirectionalLength = 0,\n\t\t\tpointLength = 0,\n\t\t\tspotLength = 0,\n\t\t\themiLength = 0;\n\n\t\t\tfor ( l = 0, ll = lights.length; l < ll; l ++ ) {\n\n\t\t\t\tlight = lights[ l ];\n\n\t\t\t\tcolor = light.color;\n\t\t\t\tintensity = light.intensity;\n\t\t\t\tdistance = light.distance;\n\n\t\t\t\tshadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\t\tif ( light instanceof THREE.AmbientLight ) {\n\n\t\t\t\t\tr += color.r * intensity;\n\t\t\t\t\tg += color.g * intensity;\n\t\t\t\t\tb += color.b * intensity;\n\n\t\t\t\t} else if ( light instanceof THREE.DirectionalLight ) {\n\n\t\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_lights.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\t_lights.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\t\t_lights.directional[ directionalLength ++ ] = uniforms;\n\n\t\t\t\t} else if ( light instanceof THREE.SpotLight ) {\n\n\t\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\t_vector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\tuniforms.direction.sub( _vector3 );\n\t\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_lights.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\t_lights.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\t\t_lights.spot[ spotLength ++ ] = uniforms;\n\n\t\t\t\t} else if ( light instanceof THREE.PointLight ) {\n\n\t\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\t\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\n\n\t\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\t\tuniforms.shadowBias = light.shadow.bias;\n\t\t\t\t\t\tuniforms.shadowRadius = light.shadow.radius;\n\t\t\t\t\t\tuniforms.shadowMapSize = light.shadow.mapSize;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_lights.pointShadowMap[ pointLength ] = shadowMap;\n\n\t\t\t\t\tif ( _lights.pointShadowMatrix[ pointLength ] === undefined ) {\n\n\t\t\t\t\t\t_lights.pointShadowMatrix[ pointLength ] = new THREE.Matrix4();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t\t// equal to inverse of the light's position\n\t\t\t\t\t_vector3.setFromMatrixPosition( light.matrixWorld ).negate();\n\t\t\t\t\t_lights.pointShadowMatrix[ pointLength ].identity().setPosition( _vector3 );\n\n\t\t\t\t\t_lights.point[ pointLength ++ ] = uniforms;\n\n\t\t\t\t} else if ( light instanceof THREE.HemisphereLight ) {\n\n\t\t\t\t\tvar uniforms = lightCache.get( light );\n\n\t\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\t\t_lights.hemi[ hemiLength ++ ] = uniforms;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_lights.ambient[ 0 ] = r;\n\t\t\t_lights.ambient[ 1 ] = g;\n\t\t\t_lights.ambient[ 2 ] = b;\n\n\t\t\t_lights.directional.length = directionalLength;\n\t\t\t_lights.spot.length = spotLength;\n\t\t\t_lights.point.length = pointLength;\n\t\t\t_lights.hemi.length = hemiLength;\n\n\t\t\t_lights.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + hemiLength + ',' + _lights.shadows.length;\n\n\t\t}\n\n\t\t// GL state setting\n\n\t\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\n\n\t\t\tstate.setCullFace( cullFace );\n\t\t\tstate.setFlipSided( frontFaceDirection === THREE.FrontFaceDirectionCW );\n\n\t\t};\n\n\t\t// Textures\n\n\t\tfunction allocTextureUnit() {\n\n\t\t\tvar textureUnit = _usedTextureUnits;\n\n\t\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\t\tconsole.warn( 'WebGLRenderer: trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t\t}\n\n\t\t\t_usedTextureUnits += 1;\n\n\t\t\treturn textureUnit;\n\n\t\t}\n\n\t\tthis.allocTextureUnit = allocTextureUnit;\n\n\t\t// this.setTexture2D = setTexture2D;\n\t\tthis.setTexture2D = ( function() {\n\n\t\t\tvar warned = false;\n\n\t\t\t// backwards compatibility: peel texture.texture\n\t\t\treturn function setTexture2D( texture, slot ) {\n\n\t\t\t\tif ( texture instanceof THREE.WebGLRenderTarget ) {\n\n\t\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\t\twarned = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture = texture.texture;\n\n\t\t\t\t}\n\n\t\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t\t};\n\n\t\t}() );\n\n\t\tthis.setTexture = ( function() {\n\n\t\t\tvar warned = false;\n\n\t\t\treturn function setTexture( texture, slot ) {\n\n\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\" );\n\t\t\t\t\twarned = true;\n\n\t\t\t\t}\n\n\t\t\t\ttextures.setTexture2D( texture, slot );\n\n\t\t\t};\n\n\t\t}() );\n\n\t\tthis.setTextureCube = ( function() {\n\n\t\t\tvar warned = false;\n\n\t\t\treturn function setTextureCube( texture, slot ) {\n\n\t\t\t\t// backwards compatibility: peel texture.texture\n\t\t\t\tif ( texture instanceof THREE.WebGLRenderTargetCube ) {\n\n\t\t\t\t\tif ( ! warned ) {\n\n\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\t\t\twarned = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture = texture.texture;\n\n\t\t\t\t}\n\n\t\t\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t\t\t// TODO: unify these code paths\n\t\t\t\tif ( texture instanceof THREE.CubeTexture ||\n\t\t\t\t\t ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t\t\t// this function alone should take care of cube textures\n\t\t\t\t\ttextures.setTextureCube( texture, slot );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\n\t\t\t\t\ttextures.setTextureCubeDynamic( texture, slot );\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}() );\n\n\t\tthis.getCurrentRenderTarget = function() {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\n\t\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t}\n\n\t\t\tvar isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube );\n\t\t\tvar framebuffer;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( isCube ) {\n\n\t\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer[ renderTarget.activeCubeFace ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tframebuffer = renderTargetProperties.__webglFramebuffer;\n\n\t\t\t\t}\n\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = null;\n\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\n\t\t\t}\n\n\t\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tstate.viewport( _currentViewport );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\n\n\t\t\tif ( renderTarget instanceof THREE.WebGLRenderTarget === false ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tvar restore = false;\n\n\t\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t\trestore = true;\n\n\t\t\t\t}\n\n\t\t\t\ttry {\n\n\t\t\t\t\tvar texture = renderTarget.texture;\n\n\t\t\t\t\tif ( texture.format !== THREE.RGBAFormat && paramThreeToGL( texture.format ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( texture.type !== THREE.UnsignedByteType &&\n\t\t\t\t\t     paramThreeToGL( texture.type ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) &&\n\t\t\t\t\t     ! ( texture.type === THREE.FloatType && extensions.get( 'WEBGL_color_buffer_float' ) ) &&\n\t\t\t\t\t     ! ( texture.type === THREE.HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\n\n\t\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t\t_gl.readPixels( x, y, width, height, paramThreeToGL( texture.format ), paramThreeToGL( texture.type ), buffer );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Map three.js constants to WebGL constants\n\n\t\tfunction paramThreeToGL ( p ) {\n\n\t\t\tvar extension;\n\n\t\t\tif ( p === THREE.RepeatWrapping ) return _gl.REPEAT;\n\t\t\tif ( p === THREE.ClampToEdgeWrapping ) return _gl.CLAMP_TO_EDGE;\n\t\t\tif ( p === THREE.MirroredRepeatWrapping ) return _gl.MIRRORED_REPEAT;\n\n\t\t\tif ( p === THREE.NearestFilter ) return _gl.NEAREST;\n\t\t\tif ( p === THREE.NearestMipMapNearestFilter ) return _gl.NEAREST_MIPMAP_NEAREST;\n\t\t\tif ( p === THREE.NearestMipMapLinearFilter ) return _gl.NEAREST_MIPMAP_LINEAR;\n\n\t\t\tif ( p === THREE.LinearFilter ) return _gl.LINEAR;\n\t\t\tif ( p === THREE.LinearMipMapNearestFilter ) return _gl.LINEAR_MIPMAP_NEAREST;\n\t\t\tif ( p === THREE.LinearMipMapLinearFilter ) return _gl.LINEAR_MIPMAP_LINEAR;\n\n\t\t\tif ( p === THREE.UnsignedByteType ) return _gl.UNSIGNED_BYTE;\n\t\t\tif ( p === THREE.UnsignedShort4444Type ) return _gl.UNSIGNED_SHORT_4_4_4_4;\n\t\t\tif ( p === THREE.UnsignedShort5551Type ) return _gl.UNSIGNED_SHORT_5_5_5_1;\n\t\t\tif ( p === THREE.UnsignedShort565Type ) return _gl.UNSIGNED_SHORT_5_6_5;\n\n\t\t\tif ( p === THREE.ByteType ) return _gl.BYTE;\n\t\t\tif ( p === THREE.ShortType ) return _gl.SHORT;\n\t\t\tif ( p === THREE.UnsignedShortType ) return _gl.UNSIGNED_SHORT;\n\t\t\tif ( p === THREE.IntType ) return _gl.INT;\n\t\t\tif ( p === THREE.UnsignedIntType ) return _gl.UNSIGNED_INT;\n\t\t\tif ( p === THREE.FloatType ) return _gl.FLOAT;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === THREE.HalfFloatType ) return extension.HALF_FLOAT_OES;\n\n\t\t\t}\n\n\t\t\tif ( p === THREE.AlphaFormat ) return _gl.ALPHA;\n\t\t\tif ( p === THREE.RGBFormat ) return _gl.RGB;\n\t\t\tif ( p === THREE.RGBAFormat ) return _gl.RGBA;\n\t\t\tif ( p === THREE.LuminanceFormat ) return _gl.LUMINANCE;\n\t\t\tif ( p === THREE.LuminanceAlphaFormat ) return _gl.LUMINANCE_ALPHA;\n\t\t\tif ( p === THREE.DepthFormat ) return _gl.DEPTH_COMPONENT;\n\n\t\t\tif ( p === THREE.AddEquation ) return _gl.FUNC_ADD;\n\t\t\tif ( p === THREE.SubtractEquation ) return _gl.FUNC_SUBTRACT;\n\t\t\tif ( p === THREE.ReverseSubtractEquation ) return _gl.FUNC_REVERSE_SUBTRACT;\n\n\t\t\tif ( p === THREE.ZeroFactor ) return _gl.ZERO;\n\t\t\tif ( p === THREE.OneFactor ) return _gl.ONE;\n\t\t\tif ( p === THREE.SrcColorFactor ) return _gl.SRC_COLOR;\n\t\t\tif ( p === THREE.OneMinusSrcColorFactor ) return _gl.ONE_MINUS_SRC_COLOR;\n\t\t\tif ( p === THREE.SrcAlphaFactor ) return _gl.SRC_ALPHA;\n\t\t\tif ( p === THREE.OneMinusSrcAlphaFactor ) return _gl.ONE_MINUS_SRC_ALPHA;\n\t\t\tif ( p === THREE.DstAlphaFactor ) return _gl.DST_ALPHA;\n\t\t\tif ( p === THREE.OneMinusDstAlphaFactor ) return _gl.ONE_MINUS_DST_ALPHA;\n\n\t\t\tif ( p === THREE.DstColorFactor ) return _gl.DST_COLOR;\n\t\t\tif ( p === THREE.OneMinusDstColorFactor ) return _gl.ONE_MINUS_DST_COLOR;\n\t\t\tif ( p === THREE.SrcAlphaSaturateFactor ) return _gl.SRC_ALPHA_SATURATE;\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === THREE.RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === THREE.RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === THREE.RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === THREE.RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === THREE.RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === THREE.RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === THREE.RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === THREE.RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === THREE.RGB_ETC1_Format ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'EXT_blend_minmax' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === THREE.MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === THREE.MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t\treturn 0;\n\n\t\t}\n\n\t};\n\n\t// File:src/renderers/WebGLRenderTarget.js\n\n\t/**\n\t * @author szimek / https://github.com/szimek/\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author Marius Kintel / https://github.com/kintel\n\t */\n\n\t/*\n\t In options, we can specify:\n\t * Texture parameters for an auto-generated target texture\n\t * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n\t*/\n\tTHREE.WebGLRenderTarget = function ( width, height, options ) {\n\n\t\tthis.uuid = THREE.Math.generateUUID();\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.scissor = new THREE.Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new THREE.Vector4( 0, 0, width, height );\n\n\t\toptions = options || {};\n\n\t\tif ( options.minFilter === undefined ) options.minFilter = THREE.LinearFilter;\n\n\t\tthis.texture = new THREE.Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\t\tthis.depthTexture = null;\n\n\t};\n\n\tObject.assign( THREE.WebGLRenderTarget.prototype, THREE.EventDispatcher.prototype, {\n\n\t\tsetSize: function ( width, height ) {\n\n\t\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\n\t\t\t\tthis.dispose();\n\n\t\t\t}\n\n\t\t\tthis.viewport.set( 0, 0, width, height );\n\t\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\t},\n\n\t\tclone: function () {\n\n\t\t\treturn new this.constructor().copy( this );\n\n\t\t},\n\n\t\tcopy: function ( source ) {\n\n\t\t\tthis.width = source.width;\n\t\t\tthis.height = source.height;\n\n\t\t\tthis.viewport.copy( source.viewport );\n\n\t\t\tthis.texture = source.texture.clone();\n\n\t\t\tthis.depthBuffer = source.depthBuffer;\n\t\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\t\tthis.depthTexture = source.depthTexture;\n\n\t\t\treturn this;\n\n\t\t},\n\n\t\tdispose: function () {\n\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\t}\n\n\t} );\n\n\t// File:src/renderers/WebGLRenderTargetCube.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com\n\t */\n\n\tTHREE.WebGLRenderTargetCube = function ( width, height, options ) {\n\n\t\tTHREE.WebGLRenderTarget.call( this, width, height, options );\n\n\t\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\n\t\tthis.activeMipMapLevel = 0;\n\n\t};\n\n\tTHREE.WebGLRenderTargetCube.prototype = Object.create( THREE.WebGLRenderTarget.prototype );\n\tTHREE.WebGLRenderTargetCube.prototype.constructor = THREE.WebGLRenderTargetCube;\n\n\t// File:src/renderers/webgl/WebGLBufferRenderer.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLBufferRenderer = function ( _gl, extensions, _infoRender ) {\n\n\t\tvar mode;\n\n\t\tfunction setMode( value ) {\n\n\t\t\tmode = value;\n\n\t\t}\n\n\t\tfunction render( start, count ) {\n\n\t\t\t_gl.drawArrays( mode, start, count );\n\n\t\t\t_infoRender.calls ++;\n\t\t\t_infoRender.vertices += count;\n\t\t\tif ( mode === _gl.TRIANGLES ) _infoRender.faces += count / 3;\n\n\t\t}\n\n\t\tfunction renderInstances( geometry ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar position = geometry.attributes.position;\n\n\t\t\tvar count = 0;\n\n\t\t\tif ( position instanceof THREE.InterleavedBufferAttribute ) {\n\n\t\t\t\tcount = position.data.count;\n\n\t\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t\t} else {\n\n\t\t\t\tcount = position.count;\n\n\t\t\t\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\n\n\t\t\t}\n\n\t\t\t_infoRender.calls ++;\n\t\t\t_infoRender.vertices += count * geometry.maxInstancedCount;\n\t\t\tif ( mode === _gl.TRIANGLES ) _infoRender.faces += geometry.maxInstancedCount * count / 3;\n\n\t\t}\n\n\t\tthis.setMode = setMode;\n\t\tthis.render = render;\n\t\tthis.renderInstances = renderInstances;\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLClipping.js\n\n\tTHREE.WebGLClipping = function() {\n\n\t\tvar scope = this,\n\n\t\t\tglobalState = null,\n\t\t\tnumGlobalPlanes = 0,\n\t\t\tlocalClippingEnabled = false,\n\t\t\trenderingShadows = false,\n\n\t\t\tplane = new THREE.Plane(),\n\t\t\tviewNormalMatrix = new THREE.Matrix3(),\n\n\t\t\tuniform = { value: null, needsUpdate: false };\n\n\t\tthis.uniform = uniform;\n\t\tthis.numPlanes = 0;\n\n\t\tthis.init = function( planes, enableLocalClipping, camera ) {\n\n\t\t\tvar enabled =\n\t\t\t\tplanes.length !== 0 ||\n\t\t\t\tenableLocalClipping ||\n\t\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t\t// run another frame in order to reset the state:\n\t\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\t\tlocalClippingEnabled;\n\n\t\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\t\tnumGlobalPlanes = planes.length;\n\n\t\t\treturn enabled;\n\n\t\t};\n\n\t\tthis.beginShadows = function() {\n\n\t\t\trenderingShadows = true;\n\t\t\tprojectPlanes( null );\n\n\t\t};\n\n\t\tthis.endShadows = function() {\n\n\t\t\trenderingShadows = false;\n\t\t\tresetGlobalState();\n\n\t\t};\n\n\t\tthis.setState = function( planes, clipShadows, camera, cache, fromCache ) {\n\n\t\t\tif ( ! localClippingEnabled ||\n\t\t\t\t\tplanes === null || planes.length === 0 ||\n\t\t\t\t\trenderingShadows && ! clipShadows ) {\n\t\t\t\t// there's no local clipping\n\n\t\t\t\tif ( renderingShadows ) {\n\t\t\t\t\t// there's no global clipping\n\n\t\t\t\t\tprojectPlanes( null );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tresetGlobalState();\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcache.clippingState = dstArray;\n\t\t\t\tthis.numPlanes += nGlobal;\n\n\t\t\t}\n\n\n\t\t};\n\n\t\tfunction resetGlobalState() {\n\n\t\t\tif ( uniform.value !== globalState ) {\n\n\t\t\t\tuniform.value = globalState;\n\t\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t\t}\n\n\t\t\tscope.numPlanes = numGlobalPlanes;\n\n\t\t}\n\n\t\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\t\tdstArray = null;\n\n\t\t\tif ( nPlanes !== 0 ) {\n\n\t\t\t\tdstArray = uniform.value;\n\n\t\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0, i4 = dstOffset;\n\t\t\t\t\t\t\t\t\t\ti !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\t\tplane.copy( planes[ i ] ).\n\t\t\t\t\t\t\t\tapplyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tuniform.value = dstArray;\n\t\t\t\tuniform.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tscope.numPlanes = nPlanes;\n\t\t\treturn dstArray;\n\n\t\t}\n\n\t};\n\n\n\t// File:src/renderers/webgl/WebGLIndexedBufferRenderer.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLIndexedBufferRenderer = function ( _gl, extensions, _infoRender ) {\n\n\t\tvar mode;\n\n\t\tfunction setMode( value ) {\n\n\t\t\tmode = value;\n\n\t\t}\n\n\t\tvar type, size;\n\n\t\tfunction setIndex( index ) {\n\n\t\t\tif ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {\n\n\t\t\t\ttype = _gl.UNSIGNED_INT;\n\t\t\t\tsize = 4;\n\n\t\t\t} else {\n\n\t\t\t\ttype = _gl.UNSIGNED_SHORT;\n\t\t\t\tsize = 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction render( start, count ) {\n\n\t\t\t_gl.drawElements( mode, count, type, start * size );\n\n\t\t\t_infoRender.calls ++;\n\t\t\t_infoRender.vertices += count;\n\t\t\tif ( mode === _gl.TRIANGLES ) _infoRender.faces += count / 3;\n\n\t\t}\n\n\t\tfunction renderInstances( geometry, start, count ) {\n\n\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\textension.drawElementsInstancedANGLE( mode, count, type, start * size, geometry.maxInstancedCount );\n\n\t\t\t_infoRender.calls ++;\n\t\t\t_infoRender.vertices += count * geometry.maxInstancedCount;\n\t\t\tif ( mode === _gl.TRIANGLES ) _infoRender.faces += geometry.maxInstancedCount * count / 3;\n\t\t}\n\n\t\tthis.setMode = setMode;\n\t\tthis.setIndex = setIndex;\n\t\tthis.render = render;\n\t\tthis.renderInstances = renderInstances;\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLExtensions.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLExtensions = function ( gl ) {\n\n\t\tvar extensions = {};\n\n\t\tthis.get = function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\tvar extension;\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'WEBGL_compressed_texture_etc1':\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t};\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLCapabilities.js\n\n\tTHREE.WebGLCapabilities = function ( gl, extensions, parameters ) {\n\n\t\tvar maxAnisotropy;\n\n\t\tfunction getMaxAnisotropy() {\n\n\t\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t\t} else {\n\n\t\t\t\tmaxAnisotropy = 0;\n\n\t\t\t}\n\n\t\t\treturn maxAnisotropy;\n\n\t\t}\n\n\t\tfunction getMaxPrecision( precision ) {\n\n\t\t\tif ( precision === 'highp' ) {\n\n\t\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\t\treturn 'highp';\n\n\t\t\t\t}\n\n\t\t\t\tprecision = 'mediump';\n\n\t\t\t}\n\n\t\t\tif ( precision === 'mediump' ) {\n\n\t\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\t     gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\t\treturn 'mediump';\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn 'lowp';\n\n\t\t}\n\n\t\tthis.getMaxAnisotropy = getMaxAnisotropy;\n\t\tthis.getMaxPrecision = getMaxPrecision;\n\n\t\tthis.precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\t\tthis.logarithmicDepthBuffer = parameters.logarithmicDepthBuffer !== undefined ? parameters.logarithmicDepthBuffer : false;\n\n\t\tthis.maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\t\tthis.maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\t\tthis.maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\t\tthis.maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\t\tthis.maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\t\tthis.maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\t\tthis.maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\t\tthis.maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\t\tthis.vertexTextures = this.maxVertexTextures > 0;\n\t\tthis.floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\n\t\tthis.floatVertexTextures = this.vertexTextures && this.floatFragmentTextures;\n\n\t\tvar _maxPrecision = getMaxPrecision( this.precision );\n\n\t\tif ( _maxPrecision !== this.precision ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer:', this.precision, 'not supported, using', _maxPrecision, 'instead.' );\n\t\t\tthis.precision = _maxPrecision;\n\n\t\t}\n\n\t\tif ( this.logarithmicDepthBuffer ) {\n\n\t\t\tthis.logarithmicDepthBuffer = !! extensions.get( 'EXT_frag_depth' );\n\n\t\t}\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLGeometries.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLGeometries = function ( gl, properties, info ) {\n\n\t\tvar geometries = {};\n\n\t\tfunction get( object ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tif ( geometries[ geometry.id ] !== undefined ) {\n\n\t\t\t\treturn geometries[ geometry.id ];\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tvar buffergeometry;\n\n\t\t\tif ( geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\t\tbuffergeometry = geometry;\n\n\t\t\t} else if ( geometry instanceof THREE.Geometry ) {\n\n\t\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\t\tgeometry._bufferGeometry = new THREE.BufferGeometry().setFromObject( object );\n\n\t\t\t\t}\n\n\t\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t\t}\n\n\t\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\t\tinfo.memory.geometries ++;\n\n\t\t\treturn buffergeometry;\n\n\t\t}\n\n\t\tfunction onGeometryDispose( event ) {\n\n\t\t\tvar geometry = event.target;\n\t\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\t\tdeleteAttribute( buffergeometry.index );\n\n\t\t\t}\n\n\t\t\tdeleteAttributes( buffergeometry.attributes );\n\n\t\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\t\tdelete geometries[ geometry.id ];\n\n\t\t\t// TODO\n\n\t\t\tvar property = properties.get( geometry );\n\n\t\t\tif ( property.wireframe ) {\n\n\t\t\t\tdeleteAttribute( property.wireframe );\n\n\t\t\t}\n\n\t\t\tproperties.delete( geometry );\n\n\t\t\tvar bufferproperty = properties.get( buffergeometry );\n\n\t\t\tif ( bufferproperty.wireframe ) {\n\n\t\t\t\tdeleteAttribute( bufferproperty.wireframe );\n\n\t\t\t}\n\n\t\t\tproperties.delete( buffergeometry );\n\n\t\t\t//\n\n\t\t\tinfo.memory.geometries --;\n\n\t\t}\n\n\t\tfunction getAttributeBuffer( attribute ) {\n\n\t\t\tif ( attribute instanceof THREE.InterleavedBufferAttribute ) {\n\n\t\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t\t}\n\n\t\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t\t}\n\n\t\tfunction deleteAttribute( attribute ) {\n\n\t\t\tvar buffer = getAttributeBuffer( attribute );\n\n\t\t\tif ( buffer !== undefined ) {\n\n\t\t\t\tgl.deleteBuffer( buffer );\n\t\t\t\tremoveAttributeBuffer( attribute );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction deleteAttributes( attributes ) {\n\n\t\t\tfor ( var name in attributes ) {\n\n\t\t\t\tdeleteAttribute( attributes[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction removeAttributeBuffer( attribute ) {\n\n\t\t\tif ( attribute instanceof THREE.InterleavedBufferAttribute ) {\n\n\t\t\t\tproperties.delete( attribute.data );\n\n\t\t\t} else {\n\n\t\t\t\tproperties.delete( attribute );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.get = get;\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLLights.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLLights = function () {\n\n\t\tvar lights = {};\n\n\t\tthis.get = function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tvar uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new THREE.Vector3(),\n\t\t\t\t\t\tcolor: new THREE.Color(),\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new THREE.Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new THREE.Vector3(),\n\t\t\t\t\t\tdirection: new THREE.Vector3(),\n\t\t\t\t\t\tcolor: new THREE.Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new THREE.Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new THREE.Vector3(),\n\t\t\t\t\t\tcolor: new THREE.Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\n\t\t\t\t\t\tshadow: false,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new THREE.Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new THREE.Vector3(),\n\t\t\t\t\t\tskyColor: new THREE.Color(),\n\t\t\t\t\t\tgroundColor: new THREE.Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t};\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLObjects.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLObjects = function ( gl, properties, info ) {\n\n\t\tvar geometries = new THREE.WebGLGeometries( gl, properties, info );\n\n\t\t//\n\n\t\tfunction update( object ) {\n\n\t\t\t// TODO: Avoid updating twice (when using shadowMap). Maybe add frame counter.\n\n\t\t\tvar geometry = geometries.get( object );\n\n\t\t\tif ( object.geometry instanceof THREE.Geometry ) {\n\n\t\t\t\tgeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar attributes = geometry.attributes;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tupdateAttribute( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t\tfor ( var name in attributes ) {\n\n\t\t\t\tupdateAttribute( attributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t\t// morph targets\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\t\tfor ( var name in morphAttributes ) {\n\n\t\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\t\tupdateAttribute( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t\tfunction updateAttribute( attribute, bufferType ) {\n\n\t\t\tvar data = ( attribute instanceof THREE.InterleavedBufferAttribute ) ? attribute.data : attribute;\n\n\t\t\tvar attributeProperties = properties.get( data );\n\n\t\t\tif ( attributeProperties.__webglBuffer === undefined ) {\n\n\t\t\t\tcreateBuffer( attributeProperties, data, bufferType );\n\n\t\t\t} else if ( attributeProperties.version !== data.version ) {\n\n\t\t\t\tupdateBuffer( attributeProperties, data, bufferType );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction createBuffer( attributeProperties, data, bufferType ) {\n\n\t\t\tattributeProperties.__webglBuffer = gl.createBuffer();\n\t\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\t\tvar usage = data.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\n\n\t\t\tgl.bufferData( bufferType, data.array, usage );\n\n\t\t\tattributeProperties.version = data.version;\n\n\t\t}\n\n\t\tfunction updateBuffer( attributeProperties, data, bufferType ) {\n\n\t\t\tgl.bindBuffer( bufferType, attributeProperties.__webglBuffer );\n\n\t\t\tif ( data.dynamic === false || data.updateRange.count === - 1 ) {\n\n\t\t\t\t// Not using update ranges\n\n\t\t\t\tgl.bufferSubData( bufferType, 0, data.array );\n\n\t\t\t} else if ( data.updateRange.count === 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, data.updateRange.offset * data.array.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t  data.array.subarray( data.updateRange.offset, data.updateRange.offset + data.updateRange.count ) );\n\n\t\t\t\tdata.updateRange.count = 0; // reset range\n\n\t\t\t}\n\n\t\t\tattributeProperties.version = data.version;\n\n\t\t}\n\n\t\tfunction getAttributeBuffer( attribute ) {\n\n\t\t\tif ( attribute instanceof THREE.InterleavedBufferAttribute ) {\n\n\t\t\t\treturn properties.get( attribute.data ).__webglBuffer;\n\n\t\t\t}\n\n\t\t\treturn properties.get( attribute ).__webglBuffer;\n\n\t\t}\n\n\t\tfunction getWireframeAttribute( geometry ) {\n\n\t\t\tvar property = properties.get( geometry );\n\n\t\t\tif ( property.wireframe !== undefined ) {\n\n\t\t\t\treturn property.wireframe;\n\n\t\t\t}\n\n\t\t\tvar indices = [];\n\n\t\t\tvar index = geometry.index;\n\t\t\tvar attributes = geometry.attributes;\n\t\t\tvar position = attributes.position;\n\n\t\t\t// console.time( 'wireframe' );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tvar edges = {};\n\t\t\t\tvar array = index.array;\n\n\t\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\t\tif ( checkEdge( edges, a, b ) ) indices.push( a, b );\n\t\t\t\t\tif ( checkEdge( edges, b, c ) ) indices.push( b, c );\n\t\t\t\t\tif ( checkEdge( edges, c, a ) ) indices.push( c, a );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar array = attributes.position.array;\n\n\t\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\t\tvar a = i + 0;\n\t\t\t\t\tvar b = i + 1;\n\t\t\t\t\tvar c = i + 2;\n\n\t\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// console.timeEnd( 'wireframe' );\n\n\t\t\tvar TypeArray = position.count > 65535 ? Uint32Array : Uint16Array;\n\t\t\tvar attribute = new THREE.BufferAttribute( new TypeArray( indices ), 1 );\n\n\t\t\tupdateAttribute( attribute, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t\tproperty.wireframe = attribute;\n\n\t\t\treturn attribute;\n\n\t\t}\n\n\t\tfunction checkEdge( edges, a, b ) {\n\n\t\t\tif ( a > b ) {\n\n\t\t\t\tvar tmp = a;\n\t\t\t\ta = b;\n\t\t\t\tb = tmp;\n\n\t\t\t}\n\n\t\t\tvar list = edges[ a ];\n\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tedges[ a ] = [ b ];\n\t\t\t\treturn true;\n\n\t\t\t} else if ( list.indexOf( b ) === -1 ) {\n\n\t\t\t\tlist.push( b );\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tthis.getAttributeBuffer = getAttributeBuffer;\n\t\tthis.getWireframeAttribute = getWireframeAttribute;\n\n\t\tthis.update = update;\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLProgram.js\n\n\tTHREE.WebGLProgram = ( function () {\n\n\t\tvar programIdCount = 0;\n\n\t\tfunction getEncodingComponents( encoding ) {\n\n\t\t\tswitch ( encoding ) {\n\n\t\t\t\tcase THREE.LinearEncoding:\n\t\t\t\t\treturn [ 'Linear','( value )' ];\n\t\t\t\tcase THREE.sRGBEncoding:\n\t\t\t\t\treturn [ 'sRGB','( value )' ];\n\t\t\t\tcase THREE.RGBEEncoding:\n\t\t\t\t\treturn [ 'RGBE','( value )' ];\n\t\t\t\tcase THREE.RGBM7Encoding:\n\t\t\t\t\treturn [ 'RGBM','( value, 7.0 )' ];\n\t\t\t\tcase THREE.RGBM16Encoding:\n\t\t\t\t\treturn [ 'RGBM','( value, 16.0 )' ];\n\t\t\t\tcase THREE.RGBDEncoding:\n\t\t\t\t\treturn [ 'RGBD','( value, 256.0 )' ];\n\t\t\t\tcase THREE.GammaEncoding:\n\t\t\t\t\treturn [ 'Gamma','( value, float( GAMMA_FACTOR ) )' ];\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\t\t\tvar components = getEncodingComponents( encoding );\n\t\t\treturn \"vec4 \" + functionName + \"( vec4 value ) { return \" + components[ 0 ] + \"ToLinear\" + components[ 1 ] + \"; }\";\n\n\t\t}\n\n\t\tfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\t\t\tvar components = getEncodingComponents( encoding );\n\t\t\treturn \"vec4 \" + functionName + \"( vec4 value ) { return LinearTo\" + components[ 0 ] + components[ 1 ] + \"; }\";\n\n\t\t}\n\n\t\tfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\t\t\tvar toneMappingName;\n\n\t\t\tswitch ( toneMapping ) {\n\n\t\t\t\tcase THREE.LinearToneMapping:\n\t\t\t\t\ttoneMappingName = \"Linear\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase THREE.ReinhardToneMapping:\n\t\t\t\t\ttoneMappingName = \"Reinhard\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase THREE.Uncharted2ToneMapping:\n\t\t\t\t\ttoneMappingName = \"Uncharted2\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase THREE.CineonToneMapping:\n\t\t\t\t\ttoneMappingName = \"OptimizedCineon\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t\t\t}\n\n\t\t\treturn \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n\n\t\t}\n\n\t\tfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\t\t\textensions = extensions || {};\n\n\t\t\tvar chunks = [\n\t\t\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '',\n\t\t\t];\n\n\t\t\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n\t\t}\n\n\t\tfunction generateDefines( defines ) {\n\n\t\t\tvar chunks = [];\n\n\t\t\tfor ( var name in defines ) {\n\n\t\t\t\tvar value = defines[ name ];\n\n\t\t\t\tif ( value === false ) continue;\n\n\t\t\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t\t\t}\n\n\t\t\treturn chunks.join( '\\n' );\n\n\t\t}\n\n\t\tfunction fetchAttributeLocations( gl, program, identifiers ) {\n\n\t\t\tvar attributes = {};\n\n\t\t\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\t\t\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\t\t\tvar info = gl.getActiveAttrib( program, i );\n\t\t\t\tvar name = info.name;\n\n\t\t\t\t// console.log(\"THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:\", name, i );\n\n\t\t\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t\t\t}\n\n\t\t\treturn attributes;\n\n\t\t}\n\n\t\tfunction filterEmptyLine( string ) {\n\n\t\t\treturn string !== '';\n\n\t\t}\n\n\t\tfunction replaceLightNums( string, parameters ) {\n\n\t\t\treturn string\n\t\t\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n\t\t}\n\n\t\tfunction parseIncludes( string ) {\n\n\t\t\tvar pattern = /#include +<([\\w\\d.]+)>/g;\n\n\t\t\tfunction replace( match, include ) {\n\n\t\t\t\tvar replace = THREE.ShaderChunk[ include ];\n\n\t\t\t\tif ( replace === undefined ) {\n\n\t\t\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t\t\t}\n\n\t\t\t\treturn parseIncludes( replace );\n\n\t\t\t}\n\n\t\t\treturn string.replace( pattern, replace );\n\n\t\t}\n\n\t\tfunction unrollLoops( string ) {\n\n\t\t\tvar pattern = /for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\t\t\tfunction replace( match, start, end, snippet ) {\n\n\t\t\t\tvar unroll = '';\n\n\t\t\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t\t\t}\n\n\t\t\t\treturn unroll;\n\n\t\t\t}\n\n\t\t\treturn string.replace( pattern, replace );\n\n\t\t}\n\n\t\treturn function WebGLProgram( renderer, code, material, parameters ) {\n\n\t\t\tvar gl = renderer.context;\n\n\t\t\tvar extensions = material.extensions;\n\t\t\tvar defines = material.defines;\n\n\t\t\tvar vertexShader = material.__webglShader.vertexShader;\n\t\t\tvar fragmentShader = material.__webglShader.fragmentShader;\n\n\t\t\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\t\t\tif ( parameters.shadowMapType === THREE.PCFShadowMap ) {\n\n\t\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t\t\t} else if ( parameters.shadowMapType === THREE.PCFSoftShadowMap ) {\n\n\t\t\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t\t\t}\n\n\t\t\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\t\t\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\t\t\tif ( parameters.envMap ) {\n\n\t\t\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\t\t\tcase THREE.CubeReflectionMapping:\n\t\t\t\t\tcase THREE.CubeRefractionMapping:\n\t\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.CubeUVReflectionMapping:\n\t\t\t\t\tcase THREE.CubeUVRefractionMapping:\n\t\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.EquirectangularReflectionMapping:\n\t\t\t\t\tcase THREE.EquirectangularRefractionMapping:\n\t\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.SphericalReflectionMapping:\n\t\t\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\t\t\tcase THREE.CubeRefractionMapping:\n\t\t\t\t\tcase THREE.EquirectangularRefractionMapping:\n\t\t\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tswitch ( material.combine ) {\n\n\t\t\t\t\tcase THREE.MultiplyOperation:\n\t\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.MixOperation:\n\t\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase THREE.AddOperation:\n\t\t\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t\t\t// console.log( 'building new program ' );\n\n\t\t\t//\n\n\t\t\tvar customExtensions = generateExtensions( extensions, parameters, renderer.extensions );\n\n\t\t\tvar customDefines = generateDefines( defines );\n\n\t\t\t//\n\n\t\t\tvar program = gl.createProgram();\n\n\t\t\tvar prefixVertex, prefixFragment;\n\n\t\t\tif ( material instanceof THREE.RawShaderMaterial ) {\n\n\t\t\t\tprefixVertex = [\n\n\t\t\t\t\tcustomDefines\n\n\t\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t\t\tprefixFragment = [\n\n\t\t\t\t\tcustomDefines\n\n\t\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t\t} else {\n\n\t\t\t\tprefixVertex = [\n\n\t\t\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\t\t\tcustomDefines,\n\n\t\t\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\n\t\t\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t\t\t'attribute vec3 position;',\n\t\t\t\t\t'attribute vec3 normal;',\n\t\t\t\t\t'attribute vec2 uv;',\n\n\t\t\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t\t\t'\tattribute vec3 color;',\n\n\t\t\t\t\t'#endif',\n\n\t\t\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t\t\t'\t#else',\n\n\t\t\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t\t\t'\t#endif',\n\n\t\t\t\t\t'#endif',\n\n\t\t\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t\t\t'#endif',\n\n\t\t\t\t\t'\\n'\n\n\t\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t\t\tprefixFragment = [\n\n\t\t\t\t\tcustomExtensions,\n\n\t\t\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t\t\t'#define SHADER_NAME ' + material.__webglShader.name,\n\n\t\t\t\t\tcustomDefines,\n\n\t\t\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\n\n\t\t\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\t\t\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\n\n\t\t\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\t\t\tparameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : '',\n\n\t\t\t\t\tparameters.physicallyCorrectLights ? \"#define PHYSICALLY_CORRECT_LIGHTS\" : '',\n\n\t\t\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t\t\tparameters.logarithmicDepthBuffer && renderer.extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t\t\tparameters.envMap && renderer.extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t\t\t( parameters.toneMapping !== THREE.NoToneMapping ) ? \"#define TONE_MAPPING\" : '',\n\t\t\t\t\t( parameters.toneMapping !== THREE.NoToneMapping ) ? THREE.ShaderChunk[ 'tonemapping_pars_fragment' ] : '',  // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t\t\t( parameters.toneMapping !== THREE.NoToneMapping ) ? getToneMappingFunction( \"toneMapping\", parameters.toneMapping ) : '',\n\n\t\t\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? THREE.ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( \"linearToOutputTexel\", parameters.outputEncoding ) : '',\n\n\t\t\t\t\tparameters.depthPacking ? \"#define DEPTH_PACKING \" + material.depthPacking : '',\n\n\t\t\t\t\t'\\n'\n\n\t\t\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\t\t}\n\n\t\t\tvertexShader = parseIncludes( vertexShader, parameters );\n\t\t\tvertexShader = replaceLightNums( vertexShader, parameters );\n\n\t\t\tfragmentShader = parseIncludes( fragmentShader, parameters );\n\t\t\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\n\t\t\tif ( material instanceof THREE.ShaderMaterial === false ) {\n\n\t\t\t\tvertexShader = unrollLoops( vertexShader );\n\t\t\t\tfragmentShader = unrollLoops( fragmentShader );\n\n\t\t\t}\n\n\t\t\tvar vertexGlsl = prefixVertex + vertexShader;\n\t\t\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t\t\t// console.log( '*VERTEX*', vertexGlsl );\n\t\t\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\t\t\tvar glVertexShader = THREE.WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\t\t\tvar glFragmentShader = THREE.WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\t\t\tgl.attachShader( program, glVertexShader );\n\t\t\tgl.attachShader( program, glFragmentShader );\n\n\t\t\t// Force a particular attribute to index 0.\n\n\t\t\tif ( material.index0AttributeName !== undefined ) {\n\n\t\t\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t\t\t} else if ( parameters.morphTargets === true ) {\n\n\t\t\t\t// programs with morphTargets displace position out of attribute 0\n\t\t\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t\t\t}\n\n\t\t\tgl.linkProgram( program );\n\n\t\t\tvar programLog = gl.getProgramInfoLog( program );\n\t\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\n\t\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\n\n\t\t\tvar runnable = true;\n\t\t\tvar haveDiagnostics = true;\n\n\t\t\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t\t\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tthis.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\t\t\t\t\tmaterial: material,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\t// clean up\n\n\t\t\tgl.deleteShader( glVertexShader );\n\t\t\tgl.deleteShader( glFragmentShader );\n\n\t\t\t// set up caching for uniform locations\n\n\t\t\tvar cachedUniforms;\n\n\t\t\tthis.getUniforms = function() {\n\n\t\t\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t\t\tcachedUniforms =\n\t\t\t\t\t\t\tnew THREE.WebGLUniforms( gl, program, renderer );\n\n\t\t\t\t}\n\n\t\t\t\treturn cachedUniforms;\n\n\t\t\t};\n\n\t\t\t// set up caching for attribute locations\n\n\t\t\tvar cachedAttributes;\n\n\t\t\tthis.getAttributes = function() {\n\n\t\t\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t\t\t}\n\n\t\t\t\treturn cachedAttributes;\n\n\t\t\t};\n\n\t\t\t// free resource\n\n\t\t\tthis.destroy = function() {\n\n\t\t\t\tgl.deleteProgram( program );\n\t\t\t\tthis.program = undefined;\n\n\t\t\t};\n\n\t\t\t// DEPRECATED\n\n\t\t\tObject.defineProperties( this, {\n\n\t\t\t\tuniforms: {\n\t\t\t\t\tget: function() {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\t\t\treturn this.getUniforms();\n\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tattributes: {\n\t\t\t\t\tget: function() {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\t\t\treturn this.getAttributes();\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} );\n\n\n\t\t\t//\n\n\t\t\tthis.id = programIdCount ++;\n\t\t\tthis.code = code;\n\t\t\tthis.usedTimes = 1;\n\t\t\tthis.program = program;\n\t\t\tthis.vertexShader = glVertexShader;\n\t\t\tthis.fragmentShader = glFragmentShader;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t} )();\n\n\t// File:src/renderers/webgl/WebGLPrograms.js\n\n\tTHREE.WebGLPrograms = function ( renderer, capabilities ) {\n\n\t\tvar programs = [];\n\n\t\tvar shaderIDs = {\n\t\t\tMeshDepthMaterial: 'depth',\n\t\t\tMeshNormalMaterial: 'normal',\n\t\t\tMeshBasicMaterial: 'basic',\n\t\t\tMeshLambertMaterial: 'lambert',\n\t\t\tMeshPhongMaterial: 'phong',\n\t\t\tMeshStandardMaterial: 'physical',\n\t\t\tMeshPhysicalMaterial: 'physical',\n\t\t\tLineBasicMaterial: 'basic',\n\t\t\tLineDashedMaterial: 'dashed',\n\t\t\tPointsMaterial: 'points'\n\t\t};\n\n\t\tvar parameterNames = [\n\t\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"displacementMap\", \"specularMap\",\n\t\t\t\"roughnessMap\", \"metalnessMap\",\n\t\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\",\n\t\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"depthPacking\"\n\t\t];\n\n\n\t\tfunction allocateBones ( object ) {\n\n\t\t\tif ( capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture ) {\n\n\t\t\t\treturn 1024;\n\n\t\t\t} else {\n\n\t\t\t\t// default for when object is not specified\n\t\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t\t//\n\t\t\t\t//  - leave some extra space for other uniforms\n\t\t\t\t//  - limit here is ANGLE's 254 max uniform vectors\n\t\t\t\t//    (up to 54 should be safe)\n\n\t\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\t\tvar maxBones = nVertexMatrices;\n\n\t\t\t\tif ( object !== undefined && object instanceof THREE.SkinnedMesh ) {\n\n\t\t\t\t\tmaxBones = Math.min( object.skeleton.bones.length, maxBones );\n\n\t\t\t\t\tif ( maxBones < object.skeleton.bones.length ) {\n\n\t\t\t\t\t\tconsole.warn( 'WebGLRenderer: too many bones - ' + object.skeleton.bones.length + ', this GPU supports just ' + maxBones + ' (try OpenGL instead of ANGLE)' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn maxBones;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\t\tvar encoding;\n\n\t\t\tif ( ! map ) {\n\n\t\t\t\tencoding = THREE.LinearEncoding;\n\n\t\t\t} else if ( map instanceof THREE.Texture ) {\n\n\t\t\t\tencoding = map.encoding;\n\n\t\t\t} else if ( map instanceof THREE.WebGLRenderTarget ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\tencoding = map.texture.encoding;\n\n\t\t\t}\n\n\t\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\t\tif ( encoding === THREE.LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\t\tencoding = THREE.GammaEncoding;\n\n\t\t\t}\n\n\t\t\treturn encoding;\n\n\t\t}\n\n\t\tthis.getParameters = function ( material, lights, fog, nClipPlanes, object ) {\n\n\t\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t\t// (not to blow over maxLights budget)\n\n\t\t\tvar maxBones = allocateBones( object );\n\t\t\tvar precision = renderer.getPrecision();\n\n\t\t\tif ( material.precision !== null ) {\n\n\t\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar currentRenderTarget = renderer.getCurrentRenderTarget();\n\n\t\t\tvar parameters = {\n\n\t\t\t\tshaderID: shaderID,\n\n\t\t\t\tprecision: precision,\n\t\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\t\tmap: !! material.map,\n\t\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\t\tenvMap: !! material.envMap,\n\t\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === THREE.CubeUVReflectionMapping ) || ( material.envMap.mapping === THREE.CubeUVRefractionMapping ) ),\n\t\t\t\tlightMap: !! material.lightMap,\n\t\t\t\taoMap: !! material.aoMap,\n\t\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\t\tbumpMap: !! material.bumpMap,\n\t\t\t\tnormalMap: !! material.normalMap,\n\t\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\t\tspecularMap: !! material.specularMap,\n\t\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\t\tcombine: material.combine,\n\n\t\t\t\tvertexColors: material.vertexColors,\n\n\t\t\t\tfog: fog,\n\t\t\t\tuseFog: material.fog,\n\t\t\t\tfogExp: fog instanceof THREE.FogExp2,\n\n\t\t\t\tflatShading: material.shading === THREE.FlatShading,\n\n\t\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\t\tskinning: material.skinning,\n\t\t\t\tmaxBones: maxBones,\n\t\t\t\tuseVertexTexture: capabilities.floatVertexTextures && object && object.skeleton && object.skeleton.useVertexTexture,\n\n\t\t\t\tmorphTargets: material.morphTargets,\n\t\t\t\tmorphNormals: material.morphNormals,\n\t\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\t\tnumDirLights: lights.directional.length,\n\t\t\t\tnumPointLights: lights.point.length,\n\t\t\t\tnumSpotLights: lights.spot.length,\n\t\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\t\tnumClippingPlanes: nClipPlanes,\n\n\t\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && lights.shadows.length > 0,\n\t\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\t\talphaTest: material.alphaTest,\n\t\t\t\tdoubleSided: material.side === THREE.DoubleSide,\n\t\t\t\tflipSided: material.side === THREE.BackSide,\n\n\t\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t\t};\n\n\t\t\treturn parameters;\n\n\t\t};\n\n\t\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\t\tvar array = [];\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tarray.push( parameters.shaderID );\n\n\t\t\t} else {\n\n\t\t\t\tarray.push( material.fragmentShader );\n\t\t\t\tarray.push( material.vertexShader );\n\n\t\t\t}\n\n\t\t\tif ( material.defines !== undefined ) {\n\n\t\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\t\tarray.push( name );\n\t\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t\t}\n\n\t\t\treturn array.join();\n\n\t\t};\n\n\t\tthis.acquireProgram = function ( material, parameters, code ) {\n\n\t\t\tvar program;\n\n\t\t\t// Check if code has been already compiled\n\t\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\t\tvar programInfo = programs[ p ];\n\n\t\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\t\tprogram = programInfo;\n\t\t\t\t\t++ program.usedTimes;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\tprogram = new THREE.WebGLProgram( renderer, code, material, parameters );\n\t\t\t\tprograms.push( program );\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t};\n\n\t\tthis.releaseProgram = function( program ) {\n\n\t\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t\t// Remove from unordered set\n\t\t\t\tvar i = programs.indexOf( program );\n\t\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\t\tprograms.pop();\n\n\t\t\t\t// Free WebGL resources\n\t\t\t\tprogram.destroy();\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tthis.programs = programs;\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLProperties.js\n\n\t/**\n\t* @author fordacious / fordacious.github.io\n\t*/\n\n\tTHREE.WebGLProperties = function () {\n\n\t\tvar properties = {};\n\n\t\tthis.get = function ( object ) {\n\n\t\t\tvar uuid = object.uuid;\n\t\t\tvar map = properties[ uuid ];\n\n\t\t\tif ( map === undefined ) {\n\n\t\t\t\tmap = {};\n\t\t\t\tproperties[ uuid ] = map;\n\n\t\t\t}\n\n\t\t\treturn map;\n\n\t\t};\n\n\t\tthis.delete = function ( object ) {\n\n\t\t\tdelete properties[ object.uuid ];\n\n\t\t};\n\n\t\tthis.clear = function () {\n\n\t\t\tproperties = {};\n\n\t\t};\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLShader.js\n\n\tTHREE.WebGLShader = ( function () {\n\n\t\tfunction addLineNumbers( string ) {\n\n\t\t\tvar lines = string.split( '\\n' );\n\n\t\t\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\t\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t\t\t}\n\n\t\t\treturn lines.join( '\\n' );\n\n\t\t}\n\n\t\treturn function WebGLShader( gl, type, string ) {\n\n\t\t\tvar shader = gl.createShader( type );\n\n\t\t\tgl.shaderSource( shader, string );\n\t\t\tgl.compileShader( shader );\n\n\t\t\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t\t\t}\n\n\t\t\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t\t\t}\n\n\t\t\t// --enable-privileged-webgl-extension\n\t\t\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\t\treturn shader;\n\n\t\t};\n\n\t} )();\n\n\t// File:src/renderers/webgl/WebGLShadowMap.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {\n\n\t\tvar _gl = _renderer.context,\n\t\t_state = _renderer.state,\n\t\t_frustum = new THREE.Frustum(),\n\t\t_projScreenMatrix = new THREE.Matrix4(),\n\n\t\t_lightShadows = _lights.shadows,\n\n\t\t_shadowMapSize = new THREE.Vector2(),\n\n\t\t_lookTarget = new THREE.Vector3(),\n\t\t_lightPositionWorld = new THREE.Vector3(),\n\n\t\t_renderList = [],\n\n\t\t_MorphingFlag = 1,\n\t\t_SkinningFlag = 2,\n\n\t\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\n\n\t\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\n\t\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\n\n\t\t_materialCache = {};\n\n\t\tvar cubeDirections = [\n\t\t\tnew THREE.Vector3( 1, 0, 0 ), new THREE.Vector3( - 1, 0, 0 ), new THREE.Vector3( 0, 0, 1 ),\n\t\t\tnew THREE.Vector3( 0, 0, - 1 ), new THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tvar cubeUps = [\n\t\t\tnew THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, 1, 0 ),\n\t\t\tnew THREE.Vector3( 0, 1, 0 ), new THREE.Vector3( 0, 0, 1 ),\tnew THREE.Vector3( 0, 0, - 1 )\n\t\t];\n\n\t\tvar cube2DViewPorts = [\n\t\t\tnew THREE.Vector4(), new THREE.Vector4(), new THREE.Vector4(),\n\t\t\tnew THREE.Vector4(), new THREE.Vector4(), new THREE.Vector4()\n\t\t];\n\n\t\t// init\n\n\t\tvar depthMaterialTemplate = new THREE.MeshDepthMaterial();\n\t\tdepthMaterialTemplate.depthPacking = THREE.RGBADepthPacking;\n\t\tdepthMaterialTemplate.clipping = true;\n\n\t\tvar distanceShader = THREE.ShaderLib[ \"distanceRGBA\" ];\n\t\tvar distanceUniforms = THREE.UniformsUtils.clone( distanceShader.uniforms );\n\n\t\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\t\tvar depthMaterial = depthMaterialTemplate.clone();\n\t\t\tdepthMaterial.morphTargets = useMorphing;\n\t\t\tdepthMaterial.skinning = useSkinning;\n\n\t\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t\tvar distanceMaterial = new THREE.ShaderMaterial( {\n\t\t\t\tdefines: {\n\t\t\t\t\t'USE_SHADOWMAP': ''\n\t\t\t\t},\n\t\t\t\tuniforms: distanceUniforms,\n\t\t\t\tvertexShader: distanceShader.vertexShader,\n\t\t\t\tfragmentShader: distanceShader.fragmentShader,\n\t\t\t\tmorphTargets: useMorphing,\n\t\t\t\tskinning: useSkinning,\n\t\t\t\tclipping: true\n\t\t\t} );\n\n\t\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t\t}\n\n\t\t//\n\n\t\tvar scope = this;\n\n\t\tthis.enabled = false;\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis.type = THREE.PCFShadowMap;\n\n\t\tthis.renderReverseSided = true;\n\t\tthis.renderSingleSided = true;\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\t\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\t\tif ( _lightShadows.length === 0 ) return;\n\n\t\t\t// Set GL state for depth map.\n\t\t\t_state.clearColor( 1, 1, 1, 1 );\n\t\t\t_state.disable( _gl.BLEND );\n\t\t\t_state.setDepthTest( true );\n\t\t\t_state.setScissorTest( false );\n\n\t\t\t// render depth map\n\n\t\t\tvar faceCount, isPointLight;\n\n\t\t\tfor ( var i = 0, il = _lightShadows.length; i < il; i ++ ) {\n\n\t\t\t\tvar light = _lightShadows[ i ];\n\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\t\tif ( light instanceof THREE.PointLight ) {\n\n\t\t\t\t\tfaceCount = 6;\n\t\t\t\t\tisPointLight = true;\n\n\t\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t\t// following orientation:\n\t\t\t\t\t//\n\t\t\t\t\t//  xzXZ\n\t\t\t\t\t//   y Y\n\t\t\t\t\t//\n\t\t\t\t\t// X - Positive x direction\n\t\t\t\t\t// x - Negative x direction\n\t\t\t\t\t// Y - Positive y direction\n\t\t\t\t\t// y - Negative y direction\n\t\t\t\t\t// Z - Positive z direction\n\t\t\t\t\t// z - Negative z direction\n\n\t\t\t\t\t// positive X\n\t\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// negative X\n\t\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// positive Z\n\t\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// negative Z\n\t\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t\t// positive Y\n\t\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t\t// negative Y\n\t\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfaceCount = 1;\n\t\t\t\t\tisPointLight = false;\n\n\t\t\t\t}\n\n\t\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\t\tvar pars = { minFilter: THREE.NearestFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat };\n\n\t\t\t\t\tshadow.map = new THREE.WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\n\t\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t\t}\n\n\t\t\t\tif ( shadow instanceof THREE.SpotLightShadow ) {\n\n\t\t\t\t\tshadow.update( light );\n\n\t\t\t\t}\n\n\t\t\t\tvar shadowMap = shadow.map;\n\t\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t\t_renderer.clear();\n\n\t\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t\t// run a single pass if not\n\n\t\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\t\t\t\t\tshadowCamera.matrixWorldInverse.getInverse( shadowCamera.matrixWorld );\n\n\t\t\t\t\t// compute shadow matrix\n\n\t\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t\t);\n\n\t\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\t\t_renderList.length = 0;\n\n\t\t\t\t\tprojectObject( scene, camera, shadowCamera );\n\n\t\t\t\t\t// render shadow map\n\t\t\t\t\t// render regular objects\n\n\t\t\t\t\tfor ( var j = 0, jl = _renderList.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar object = _renderList[ j ];\n\t\t\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\t\tif ( material instanceof THREE.MultiMaterial ) {\n\n\t\t\t\t\t\t\tvar groups = geometry.groups;\n\t\t\t\t\t\t\tvar materials = material.materials;\n\n\t\t\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\t\t\tvar groupMaterial = materials[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial.visible === true ) {\n\n\t\t\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld );\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Restore GL state.\n\t\t\tvar clearColor = _renderer.getClearColor(),\n\t\t\tclearAlpha = _renderer.getClearAlpha();\n\t\t\t_renderer.setClearColor( clearColor, clearAlpha );\n\n\t\t\tscope.needsUpdate = false;\n\n\t\t};\n\n\t\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld ) {\n\n\t\t\tvar geometry = object.geometry;\n\n\t\t\tvar result = null;\n\n\t\t\tvar materialVariants = _depthMaterials;\n\t\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t\t}\n\n\t\t\tif ( ! customMaterial ) {\n\n\t\t\t\tvar useMorphing = geometry.morphTargets !== undefined &&\n\t\t\t\t\t\tgeometry.morphTargets.length > 0 && material.morphTargets;\n\n\t\t\t\tvar useSkinning = object instanceof THREE.SkinnedMesh && material.skinning;\n\n\t\t\t\tvar variantIndex = 0;\n\n\t\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t\t} else {\n\n\t\t\t\tresult = customMaterial;\n\n\t\t\t}\n\n\t\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\t material.clipShadows === true &&\n\t\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult.visible = material.visible;\n\t\t\tresult.wireframe = material.wireframe;\n\n\t\t\tvar side = material.side;\n\n\t\t\tif ( scope.renderSingleSided && side == THREE.DoubleSide ) {\n\n\t\t\t\tside = THREE.FrontSide;\n\n\t\t\t}\n\n\t\t\tif ( scope.renderReverseSided ) {\n\n\t\t\t\tif ( side === THREE.FrontSide ) side = THREE.BackSide;\n\t\t\t\telse if ( side === THREE.BackSide ) side = THREE.FrontSide;\n\n\t\t\t}\n\n\t\t\tresult.side = side;\n\n\t\t\tresult.clipShadows = material.clipShadows;\n\t\t\tresult.clippingPlanes = material.clippingPlanes;\n\n\t\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\t\tresult.linewidth = material.linewidth;\n\n\t\t\tif ( isPointLight && result.uniforms.lightPos !== undefined ) {\n\n\t\t\t\tresult.uniforms.lightPos.value.copy( lightPositionWorld );\n\n\t\t\t}\n\n\t\t\treturn result;\n\n\t\t}\n\n\t\tfunction projectObject( object, camera, shadowCamera ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tif ( object.layers.test( camera.layers ) && ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Points ) ) {\n\n\t\t\t\tif ( object.castShadow && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) {\n\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible === true ) {\n\n\t\t\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\t\t\t\t\t\t_renderList.push( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar children = object.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, shadowCamera );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLState.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLState = function ( gl, extensions, paramThreeToGL ) {\n\n\t\tvar _this = this;\n\n\t\tthis.buffers = {\n\t\t\tcolor: new THREE.WebGLColorBuffer( gl, this ),\n\t\t\tdepth: new THREE.WebGLDepthBuffer( gl, this ),\n\t\t\tstencil: new THREE.WebGLStencilBuffer( gl, this )\n\t\t};\n\n\t\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\t\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\t\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\t\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\t\tvar capabilities = {};\n\n\t\tvar compressedTextureFormats = null;\n\n\t\tvar currentBlending = null;\n\t\tvar currentBlendEquation = null;\n\t\tvar currentBlendSrc = null;\n\t\tvar currentBlendDst = null;\n\t\tvar currentBlendEquationAlpha = null;\n\t\tvar currentBlendSrcAlpha = null;\n\t\tvar currentBlendDstAlpha = null;\n\t\tvar currentPremultipledAlpha = false;\n\n\t\tvar currentFlipSided = null;\n\t\tvar currentCullFace = null;\n\n\t\tvar currentLineWidth = null;\n\n\t\tvar currentPolygonOffsetFactor = null;\n\t\tvar currentPolygonOffsetUnits = null;\n\n\t\tvar currentScissorTest = null;\n\n\t\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\n\t\tvar currentTextureSlot = null;\n\t\tvar currentBoundTextures = {};\n\n\t\tvar currentScissor = new THREE.Vector4();\n\t\tvar currentViewport = new THREE.Vector4();\n\n\t\tfunction createTexture( type, target, count ) {\n\n\t\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\t\tvar texture = gl.createTexture();\n\n\t\t\tgl.bindTexture( type, texture );\n\t\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t\treturn texture;\n\n\t\t}\n\n\t\tvar emptyTextures = {};\n\t\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\t\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\n\t\t//\n\n\t\tthis.init = function () {\n\n\t\t\tthis.clearColor( 0, 0, 0, 1 );\n\t\t\tthis.clearDepth( 1 );\n\t\t\tthis.clearStencil( 0 );\n\n\t\t\tthis.enable( gl.DEPTH_TEST );\n\t\t\tthis.setDepthFunc( THREE.LessEqualDepth );\n\n\t\t\tthis.setFlipSided( false );\n\t\t\tthis.setCullFace( THREE.CullFaceBack );\n\t\t\tthis.enable( gl.CULL_FACE );\n\n\t\t\tthis.enable( gl.BLEND );\n\t\t\tthis.setBlending( THREE.NormalBlending );\n\n\t\t};\n\n\t\tthis.initAttributes = function () {\n\n\t\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\t\tnewAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.enableAttribute = function ( attribute ) {\n\n\t\t\tnewAttributes[ attribute ] = 1;\n\n\t\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t\t}\n\n\t\t\tif ( attributeDivisors[ attribute ] !== 0 ) {\n\n\t\t\t\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\t\textension.vertexAttribDivisorANGLE( attribute, 0 );\n\t\t\t\tattributeDivisors[ attribute ] = 0;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.enableAttributeAndDivisor = function ( attribute, meshPerAttribute, extension ) {\n\n\t\t\tnewAttributes[ attribute ] = 1;\n\n\t\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t\t}\n\n\t\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\t\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\n\t\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.disableUnusedAttributes = function () {\n\n\t\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.enable = function ( id ) {\n\n\t\t\tif ( capabilities[ id ] !== true ) {\n\n\t\t\t\tgl.enable( id );\n\t\t\t\tcapabilities[ id ] = true;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.disable = function ( id ) {\n\n\t\t\tif ( capabilities[ id ] !== false ) {\n\n\t\t\t\tgl.disable( id );\n\t\t\t\tcapabilities[ id ] = false;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCompressedTextureFormats = function () {\n\n\t\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\t\tcompressedTextureFormats = [];\n\n\t\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t\t     extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t\t     extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\n\n\t\t\t\t\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\n\n\t\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn compressedTextureFormats;\n\n\t\t};\n\n\t\tthis.setBlending = function ( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\t\tif ( blending !== THREE.NoBlending ) {\n\n\t\t\t\tthis.enable( gl.BLEND );\n\n\t\t\t} else {\n\n\t\t\t\tthis.disable( gl.BLEND );\n\t\t\t\tcurrentBlending = blending; // no blending, that is\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( blending === THREE.AdditiveBlending ) {\n\n\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( blending === THREE.SubtractiveBlending ) {\n\n\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( blending === THREE.MultiplyBlending ) {\n\n\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\n\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\tif ( blending === THREE.CustomBlending ) {\n\n\t\t\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\t\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\t\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\t\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\t\t\tgl.blendEquationSeparate( paramThreeToGL( blendEquation ), paramThreeToGL( blendEquationAlpha ) );\n\n\t\t\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t\t\t}\n\n\t\t\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\t\t\tgl.blendFuncSeparate( paramThreeToGL( blendSrc ), paramThreeToGL( blendDst ), paramThreeToGL( blendSrcAlpha ), paramThreeToGL( blendDstAlpha ) );\n\n\t\t\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\t\t\tcurrentBlendDst = blendDst;\n\t\t\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tcurrentBlendEquation = null;\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendEquationAlpha = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// TODO Deprecate\n\n\t\tthis.setColorWrite = function ( colorWrite ) {\n\n\t\t\tthis.buffers.color.setMask( colorWrite );\n\n\t\t};\n\n\t\tthis.setDepthTest = function ( depthTest ) {\n\n\t\t\tthis.buffers.depth.setTest( depthTest );\n\n\t\t};\n\n\t\tthis.setDepthWrite = function ( depthWrite ) {\n\n\t\t\tthis.buffers.depth.setMask( depthWrite );\n\n\t\t};\n\n\t\tthis.setDepthFunc = function ( depthFunc ) {\n\n\t\t\tthis.buffers.depth.setFunc( depthFunc );\n\n\t\t};\n\n\t\tthis.setStencilTest = function ( stencilTest ) {\n\n\t\t\tthis.buffers.stencil.setTest( stencilTest );\n\n\t\t};\n\n\t\tthis.setStencilWrite = function ( stencilWrite ) {\n\n\t\t\tthis.buffers.stencil.setMask( stencilWrite );\n\n\t\t};\n\n\t\tthis.setStencilFunc = function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\tthis.buffers.stencil.setFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t};\n\n\t\tthis.setStencilOp = function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\tthis.buffers.stencil.setOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.setFlipSided = function ( flipSided ) {\n\n\t\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\t\tif ( flipSided ) {\n\n\t\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentFlipSided = flipSided;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setCullFace = function ( cullFace ) {\n\n\t\t\tif ( cullFace !== THREE.CullFaceNone ) {\n\n\t\t\t\tthis.enable( gl.CULL_FACE );\n\n\t\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\t\tif ( cullFace === THREE.CullFaceBack ) {\n\n\t\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t\t} else if ( cullFace === THREE.CullFaceFront ) {\n\n\t\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.disable( gl.CULL_FACE );\n\n\t\t\t}\n\n\t\t\tcurrentCullFace = cullFace;\n\n\t\t};\n\n\t\tthis.setLineWidth = function ( width ) {\n\n\t\t\tif ( width !== currentLineWidth ) {\n\n\t\t\t\tgl.lineWidth( width );\n\n\t\t\t\tcurrentLineWidth = width;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setPolygonOffset = function ( polygonOffset, factor, units ) {\n\n\t\t\tif ( polygonOffset ) {\n\n\t\t\t\tthis.enable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.disable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn currentScissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( scissorTest ) {\n\n\t\t\tcurrentScissorTest = scissorTest;\n\n\t\t\tif ( scissorTest ) {\n\n\t\t\t\tthis.enable( gl.SCISSOR_TEST );\n\n\t\t\t} else {\n\n\t\t\t\tthis.disable( gl.SCISSOR_TEST );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// texture\n\n\t\tthis.activeTexture = function ( webglSlot ) {\n\n\t\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.bindTexture = function ( webglType, webglTexture ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\t_this.activeTexture();\n\n\t\t\t}\n\n\t\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\t\tif ( boundTexture === undefined ) {\n\n\t\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t\t}\n\n\t\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\t\tboundTexture.type = webglType;\n\t\t\t\tboundTexture.texture = webglTexture;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.compressedTexImage2D = function () {\n\n\t\t\ttry {\n\n\t\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( error );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.texImage2D = function () {\n\n\t\t\ttry {\n\n\t\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tconsole.error( error );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// TODO Deprecate\n\n\t\tthis.clearColor = function ( r, g, b, a ) {\n\n\t\t\tthis.buffers.color.setClear( r, g, b, a );\n\n\t\t};\n\n\t\tthis.clearDepth = function ( depth ) {\n\n\t\t\tthis.buffers.depth.setClear( depth );\n\n\t\t};\n\n\t\tthis.clearStencil = function ( stencil ) {\n\n\t\t\tthis.buffers.stencil.setClear( stencil );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.scissor = function ( scissor ) {\n\n\t\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\t\tcurrentScissor.copy( scissor );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.viewport = function ( viewport ) {\n\n\t\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\t\tcurrentViewport.copy( viewport );\n\n\t\t\t}\n\n\t\t};\n\n\t\t//\n\n\t\tthis.reset = function () {\n\n\t\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcapabilities = {};\n\n\t\t\tcompressedTextureFormats = null;\n\n\t\t\tcurrentTextureSlot = null;\n\t\t\tcurrentBoundTextures = {};\n\n\t\t\tcurrentBlending = null;\n\n\t\t\tcurrentFlipSided = null;\n\t\t\tcurrentCullFace = null;\n\n\t\t\tthis.buffers.color.reset();\n\t\t\tthis.buffers.depth.reset();\n\t\t\tthis.buffers.stencil.reset();\n\n\t\t};\n\n\t};\n\n\tTHREE.WebGLColorBuffer = function ( gl, state ) {\n\n\t\tvar locked = false;\n\n\t\tvar color = new THREE.Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new THREE.Vector4();\n\n\t\tthis.setMask = function ( colorMask ) {\n\n\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setLocked = function ( lock ) {\n\n\t\t\tlocked = lock;\n\n\t\t};\n\n\t\tthis.setClear = function ( r, g, b, a ) {\n\n\t\t\tcolor.set( r, g, b, a );\n\n\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tlocked = false;\n\n\t\t\tcurrentColorMask = null;\n\t\t\tcurrentColorClear = new THREE.Vector4();\n\n\t\t};\n\n\t};\n\n\tTHREE.WebGLDepthBuffer = function( gl, state ) {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\tthis.setTest = function ( depthTest ) {\n\n\t\t\tif ( depthTest ) {\n\n\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t} else {\n\n\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setMask = function( depthMask ){\n\n\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setFunc = function ( depthFunc ) {\n\n\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase THREE.NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase THREE.NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setLocked = function ( lock ) {\n\n\t\t\tlocked = lock;\n\n\t\t};\n\n\t\tthis.setClear = function ( depth ) {\n\n\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\tgl.clearDepth( depth );\n\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tlocked = false;\n\n\t\t\tcurrentDepthMask = null;\n\t\t\tcurrentDepthFunc = null;\n\t\t\tcurrentDepthClear = null;\n\n\t\t};\n\n\t};\n\n\tTHREE.WebGLStencilBuffer = function ( gl, state ) {\n\n\t\tvar locked = false;\n\n\t\tvar currentStencilMask = null;\n\t\tvar currentStencilFunc = null;\n\t\tvar currentStencilRef = null;\n\t\tvar currentStencilFuncMask = null;\n\t\tvar currentStencilFail  = null;\n\t\tvar currentStencilZFail = null;\n\t\tvar currentStencilZPass = null;\n\t\tvar currentStencilClear = null;\n\n\t\tthis.setTest = function ( stencilTest ) {\n\n\t\t\tif ( stencilTest ) {\n\n\t\t\t\tstate.enable( gl.STENCIL_TEST );\n\n\t\t\t} else {\n\n\t\t\t\tstate.disable( gl.STENCIL_TEST );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setMask = function ( stencilMask ) {\n\n\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setFunc = function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t     currentStencilRef \t!== stencilRef \t||\n\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\tgl.stencilFunc( stencilFunc,  stencilRef, stencilMask );\n\n\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\tcurrentStencilRef  = stencilRef;\n\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setOp\t = function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\tgl.stencilOp( stencilFail,  stencilZFail, stencilZPass );\n\n\t\t\t\tcurrentStencilFail  = stencilFail;\n\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setLocked = function ( lock ) {\n\n\t\t\tlocked = lock;\n\n\t\t};\n\n\t\tthis.setClear = function ( stencil ) {\n\n\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tlocked = false;\n\n\t\t\tcurrentStencilMask = null;\n\t\t\tcurrentStencilFunc = null;\n\t\t\tcurrentStencilRef = null;\n\t\t\tcurrentStencilFuncMask = null;\n\t\t\tcurrentStencilFail = null;\n\t\t\tcurrentStencilZFail = null;\n\t\t\tcurrentStencilZPass = null;\n\t\t\tcurrentStencilClear = null;\n\n\t\t};\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLTextures.js\n\n\t/**\n\t* @author mrdoob / http://mrdoob.com/\n\t*/\n\n\tTHREE.WebGLTextures = function ( _gl, extensions, state, properties, capabilities, paramThreeToGL, info ) {\n\n\t\tvar _infoMemory = info.memory;\n\t\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext );\n\n\t\t//\n\n\t\tfunction clampToMaxSize ( image, maxSize ) {\n\n\t\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\t\t// Warning: Scaling through the canvas will only work with images that use\n\t\t\t\t// premultiplied alpha.\n\n\t\t\t\tvar scale = maxSize / Math.max( image.width, image.height );\n\n\t\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = Math.floor( image.width * scale );\n\t\t\t\tcanvas.height = Math.floor( image.height * scale );\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\t\treturn canvas;\n\n\t\t\t}\n\n\t\t\treturn image;\n\n\t\t}\n\n\t\tfunction isPowerOfTwo( image ) {\n\n\t\t\treturn THREE.Math.isPowerOfTwo( image.width ) && THREE.Math.isPowerOfTwo( image.height );\n\n\t\t}\n\n\t\tfunction makePowerOfTwo( image ) {\n\n\t\t\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement ) {\n\n\t\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\t\tcanvas.width = THREE.Math.nearestPowerOfTwo( image.width );\n\t\t\t\tcanvas.height = THREE.Math.nearestPowerOfTwo( image.height );\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\n\n\t\t\t\treturn canvas;\n\n\t\t\t}\n\n\t\t\treturn image;\n\n\t\t}\n\n\t\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\t\tif ( texture.wrapS !== THREE.ClampToEdgeWrapping || texture.wrapT !== THREE.ClampToEdgeWrapping ) return true;\n\t\t\tif ( texture.minFilter !== THREE.NearestFilter && texture.minFilter !== THREE.LinearFilter ) return true;\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// Fallback filters for non-power-of-2 textures\n\n\t\tfunction filterFallback ( f ) {\n\n\t\t\tif ( f === THREE.NearestFilter || f === THREE.NearestMipMapNearestFilter || f === THREE.NearestMipMapLinearFilter ) {\n\n\t\t\t\treturn _gl.NEAREST;\n\n\t\t\t}\n\n\t\t\treturn _gl.LINEAR;\n\n\t\t}\n\n\t\t//\n\n\t\tfunction onTextureDispose( event ) {\n\n\t\t\tvar texture = event.target;\n\n\t\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\t\tdeallocateTexture( texture );\n\n\t\t\t_infoMemory.textures --;\n\n\n\t\t}\n\n\t\tfunction onRenderTargetDispose( event ) {\n\n\t\t\tvar renderTarget = event.target;\n\n\t\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\t\tdeallocateRenderTarget( renderTarget );\n\n\t\t\t_infoMemory.textures --;\n\n\t\t}\n\n\t\t//\n\n\t\tfunction deallocateTexture( texture ) {\n\n\t\t\tvar textureProperties = properties.get( texture );\n\n\t\t\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\n\n\t\t\t} else {\n\n\t\t\t\t// 2D texture\n\n\t\t\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t\t// remove all webgl properties\n\t\t\tproperties.delete( texture );\n\n\t\t}\n\n\t\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\t\tif ( ! renderTarget ) return;\n\n\t\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t\t}\n\n\t\t\tif ( renderTarget instanceof THREE.WebGLRenderTargetCube ) {\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t\t}\n\n\t\t\tproperties.delete( renderTarget.texture );\n\t\t\tproperties.delete( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\n\n\t\tfunction setTexture2D( texture, slot ) {\n\n\t\t\tvar textureProperties = properties.get( texture );\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tvar image = texture.image;\n\n\t\t\t\tif ( image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\n\n\t\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tfunction setTextureCube ( texture, slot ) {\n\n\t\t\tvar textureProperties = properties.get( texture );\n\n\t\t\tif ( texture.image.length === 6 ) {\n\n\t\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\t\tif ( ! textureProperties.__image__webglTextureCube ) {\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\n\n\t\t\t\t\t\t_infoMemory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\n\t\t\t\t\tvar isCompressed = texture instanceof THREE.CompressedTexture;\n\t\t\t\t\tvar isDataTexture = texture.image[ 0 ] instanceof THREE.DataTexture;\n\n\t\t\t\t\tvar cubeImage = [];\n\n\t\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\t\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tisPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\t\t\tglFormat = paramThreeToGL( texture.format ),\n\t\t\t\t\tglType = paramThreeToGL( texture.type );\n\n\t\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\n\n\t\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\t\tif ( texture.format !== THREE.RGBAFormat && texture.format !== THREE.RGBFormat ) {\n\n\t\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\" );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) {\n\n\t\t\t\t\t\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setTextureCubeDynamic ( texture, slot ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\n\n\t\t}\n\n\t\tfunction setTextureParameters ( textureType, texture, isPowerOfTwoImage ) {\n\n\t\t\tvar extension;\n\n\t\t\tif ( isPowerOfTwoImage ) {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, paramThreeToGL( texture.wrapS ) );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, paramThreeToGL( texture.wrapT ) );\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, paramThreeToGL( texture.magFilter ) );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, paramThreeToGL( texture.minFilter ) );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\n\n\t\t\t\tif ( texture.wrapS !== THREE.ClampToEdgeWrapping || texture.wrapT !== THREE.ClampToEdgeWrapping ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\n\t\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\n\n\t\t\t\tif ( texture.minFilter !== THREE.NearestFilter && texture.minFilter !== THREE.LinearFilter ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( extension ) {\n\n\t\t\t\tif ( texture.type === THREE.FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\t\tif ( texture.type === THREE.HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\n\n\t\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t_infoMemory.textures ++;\n\n\t\t\t}\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\n\t\t\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\n\n\t\t\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\n\n\t\t\t\timage = makePowerOfTwo( image );\n\n\t\t\t}\n\n\t\t\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\n\t\t\tglFormat = paramThreeToGL( texture.format ),\n\t\t\tglType = paramThreeToGL( texture.type );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\n\n\t\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\t\tif ( texture instanceof THREE.DepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tvar internalFormat = _gl.DEPTH_COMPONENT;\n\n\t\t\t\tif ( texture.type === THREE.FloatType ) {\n\n\t\t\t\t\tif ( !_isWebGL2 ) throw new Error('Float Depth Texture only supported in WebGL2.0');\n\t\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t\t} else if ( _isWebGL2 ) {\n\n\t\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\t\tinternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t\t}\n\n\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t} else if ( texture instanceof THREE.DataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture instanceof THREE.CompressedTexture ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== THREE.RGBAFormat && texture.format !== THREE.RGBFormat ) {\n\n\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( \"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\" );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\n\n\t\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texture.generateMipmaps && isPowerOfTwoImage ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\n\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\t// Render targets\n\n\t\t// Setup storage for target texture and bind it to correct framebuffer\n\t\tfunction setupFrameBufferTexture ( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\t\tvar glFormat = paramThreeToGL( renderTarget.texture.format );\n\t\t\tvar glType = paramThreeToGL( renderTarget.texture.type );\n\t\t\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t}\n\n\t\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\t\tfunction setupRenderBufferStorage ( renderbuffer, renderTarget ) {\n\n\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\n\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\n\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t} else {\n\n\t\t\t\t// FIXME: We don't support !depth !stencil\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t}\n\n\t\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\t\tfunction setupDepthTexture ( framebuffer, renderTarget ) {\n\n\t\t\tvar isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube );\n\t\t\tif ( isCube ) throw new Error('Depth Texture with cube render targets is not supported!');\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( !( renderTarget.depthTexture instanceof THREE.DepthTexture ) ) {\n\n\t\t\t\tthrow new Error('renderTarget.depthTexture must be an instance of THREE.DepthTexture');\n\n\t\t\t}\n\n\t\t\t// upload an empty depth texture with framebuffer size\n\t\t\tif ( !properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\t\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\t\t\t}\n\n\t\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t}\n\n\t\t// Setup GL resources for a non-texture depth buffer\n\t\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tvar isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube );\n\n\t\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\t\tif ( isCube ) throw new Error('target.depthTexture not supported in Cube render targets');\n\n\t\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t\t} else {\n\n\t\t\t\tif ( isCube ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t}\n\n\t\t// Set up GL resources for the render target\n\t\tfunction setupRenderTarget( renderTarget ) {\n\n\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t_infoMemory.textures ++;\n\n\t\t\tvar isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube );\n\t\t\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\n\n\t\t\t// Setup framebuffer\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\t// Setup color buffer\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\n\n\t\t\t\tif ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D );\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, null );\n\n\t\t\t}\n\n\t\t\t// Setup depth and stencil buffers\n\n\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\t\tvar texture = renderTarget.texture;\n\n\t\t\tif ( texture.generateMipmaps && isPowerOfTwo( renderTarget ) &&\n\t\t\t\t\ttexture.minFilter !== THREE.NearestFilter &&\n\t\t\t\t\ttexture.minFilter !== THREE.LinearFilter ) {\n\n\t\t\t\tvar target = renderTarget instanceof THREE.WebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n\t\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\t_gl.generateMipmap( target );\n\t\t\t\tstate.bindTexture( target, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setTexture2D = setTexture2D;\n\t\tthis.setTextureCube = setTextureCube;\n\t\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\t\tthis.setupRenderTarget = setupRenderTarget;\n\t\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\n\t};\n\n\t// File:src/renderers/webgl/WebGLUniforms.js\n\n\t/**\n\t *\n\t * Uniforms of a program.\n\t * Those form a tree structure with a special top-level container for the root,\n\t * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\n\t *\n\t *\n\t * Properties of inner nodes including the top-level container:\n\t *\n\t * .seq - array of nested uniforms\n\t * .map - nested uniforms by name\n\t *\n\t *\n\t * Methods of all nodes except the top-level container:\n\t *\n\t * .setValue( gl, value, [renderer] )\n\t *\n\t * \t\tuploads a uniform value(s)\n\t *  \tthe 'renderer' parameter is needed for sampler uniforms\n\t *\n\t *\n\t * Static methods of the top-level container (renderer factorizations):\n\t *\n\t * .upload( gl, seq, values, renderer )\n\t *\n\t * \t\tsets uniforms in 'seq' to 'values[id].value'\n\t *\n\t * .seqWithValue( seq, values ) : filteredSeq\n\t *\n\t * \t\tfilters 'seq' entries with corresponding entry in values\n\t *\n\t * .splitDynamic( seq, values ) : filteredSeq\n\t *\n\t * \t\tfilters 'seq' entries with dynamic entry and removes them from 'seq'\n\t *\n\t *\n\t * Methods of the top-level container (renderer factorizations):\n\t *\n\t * .setValue( gl, name, value )\n\t *\n\t * \t\tsets uniform with  name 'name' to 'value'\n\t *\n\t * .set( gl, obj, prop )\n\t *\n\t * \t\tsets uniform from object and property with same name than uniform\n\t *\n\t * .setOptional( gl, obj, prop )\n\t *\n\t * \t\tlike .set for an optional property of the object\n\t *\n\t *\n\t * @author tschw\n\t *\n\t */\n\n\tTHREE.WebGLUniforms = ( function() { // scope\n\n\t\tvar emptyTexture = new THREE.Texture();\n\t\tvar emptyCubeTexture = new THREE.CubeTexture();\n\n\t\t// --- Base for inner nodes (including the root) ---\n\n\t\tvar UniformContainer = function() {\n\n\t\t\t\tthis.seq = [];\n\t\t\t\tthis.map = {};\n\n\t\t\t},\n\n\t\t// --- Utilities ---\n\n\t\t// Array Caches (provide typed arrays for temporary by size)\n\n\t\t\tarrayCacheF32 = [],\n\t\t\tarrayCacheI32 = [],\n\n\t\t\tuncacheTemporaryArrays = function() {\n\n\t\t\t\tarrayCacheF32.length = 0;\n\t\t\t\tarrayCacheI32.length = 0;\n\n\t\t\t},\n\n\t\t// Flattening for arrays of vectors and matrices\n\n\t\t\tflatten = function( array, nBlocks, blockSize ) {\n\n\t\t\t\tvar firstElem = array[ 0 ];\n\n\t\t\t\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t\t\t\t// unoptimized: ! isNaN( firstElem )\n\t\t\t\t// see http://jacksondunstan.com/articles/983\n\n\t\t\t\tvar n = nBlocks * blockSize,\n\t\t\t\t\tr = arrayCacheF32[ n ];\n\n\t\t\t\tif ( r === undefined ) {\n\n\t\t\t\t\tr = new Float32Array( n );\n\t\t\t\t\tarrayCacheF32[ n ] = r;\n\n\t\t\t\t}\n\n\t\t\t\tif ( nBlocks !== 0 ) {\n\n\t\t\t\t\tfirstElem.toArray( r, 0 );\n\n\t\t\t\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\t\t\t\toffset += blockSize;\n\t\t\t\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn r;\n\n\t\t\t},\n\n\t\t// Texture unit allocation\n\n\t\t\tallocTexUnits = function( renderer, n ) {\n\n\t\t\t\tvar r = arrayCacheI32[ n ];\n\n\t\t\t\tif ( r === undefined ) {\n\n\t\t\t\t\tr = new Int32Array( n );\n\t\t\t\t\tarrayCacheI32[ n ] = r;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\t\tr[ i ] = renderer.allocTextureUnit();\n\n\t\t\t\treturn r;\n\n\t\t\t},\n\n\t\t// --- Setters ---\n\n\t\t// Note: Defining these methods externally, because they come in a bunch\n\t\t// and this way their names minify.\n\n\t\t\t// Single scalar\n\n\t\t\tsetValue1f = function( gl, v ) { gl.uniform1f( this.addr, v ); },\n\t\t\tsetValue1i = function( gl, v ) { gl.uniform1i( this.addr, v ); },\n\n\t\t\t// Single float vector (from flat array or THREE.VectorN)\n\n\t\t\tsetValue2fv = function( gl, v ) {\n\n\t\t\t\tif ( v.x === undefined ) gl.uniform2fv( this.addr, v );\n\t\t\t\telse gl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\t},\n\n\t\t\tsetValue3fv = function( gl, v ) {\n\n\t\t\t\tif ( v.x !== undefined )\n\t\t\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\t\t\t\telse if ( v.r !== undefined )\n\t\t\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\t\t\t\telse\n\t\t\t\t\tgl.uniform3fv( this.addr, v );\n\n\t\t\t},\n\n\t\t\tsetValue4fv = function( gl, v ) {\n\n\t\t\t\tif ( v.x === undefined ) gl.uniform4fv( this.addr, v );\n\t\t\t\telse gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\t},\n\n\t\t\t// Single matrix (from flat array or MatrixN)\n\n\t\t\tsetValue2fm = function( gl, v ) {\n\n\t\t\t\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\n\n\t\t\t},\n\n\t\t\tsetValue3fm = function( gl, v ) {\n\n\t\t\t\tgl.uniformMatrix3fv( this.addr, false, v.elements || v );\n\n\t\t\t},\n\n\t\t\tsetValue4fm = function( gl, v ) {\n\n\t\t\t\tgl.uniformMatrix4fv( this.addr, false, v.elements || v );\n\n\t\t\t},\n\n\t\t\t// Single texture (2D / Cube)\n\n\t\t\tsetValueT1 = function( gl, v, renderer ) {\n\n\t\t\t\tvar unit = renderer.allocTextureUnit();\n\t\t\t\tgl.uniform1i( this.addr, unit );\n\t\t\t\trenderer.setTexture2D( v || emptyTexture, unit );\n\n\t\t\t},\n\n\t\t\tsetValueT6 = function( gl, v, renderer ) {\n\n\t\t\t\tvar unit = renderer.allocTextureUnit();\n\t\t\t\tgl.uniform1i( this.addr, unit );\n\t\t\t\trenderer.setTextureCube( v || emptyCubeTexture, unit );\n\n\t\t\t},\n\n\t\t\t// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\n\t\t\tsetValue2iv = function( gl, v ) { gl.uniform2iv( this.addr, v ); },\n\t\t\tsetValue3iv = function( gl, v ) { gl.uniform3iv( this.addr, v ); },\n\t\t\tsetValue4iv = function( gl, v ) { gl.uniform4iv( this.addr, v ); },\n\n\t\t\t// Helper to pick the right setter for the singular case\n\n\t\t\tgetSingularSetter = function( type ) {\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 0x1406: return setValue1f; // FLOAT\n\t\t\t\t\tcase 0x8b50: return setValue2fv; // _VEC2\n\t\t\t\t\tcase 0x8b51: return setValue3fv; // _VEC3\n\t\t\t\t\tcase 0x8b52: return setValue4fv; // _VEC4\n\n\t\t\t\t\tcase 0x8b5a: return setValue2fm; // _MAT2\n\t\t\t\t\tcase 0x8b5b: return setValue3fm; // _MAT3\n\t\t\t\t\tcase 0x8b5c: return setValue4fm; // _MAT4\n\n\t\t\t\t\tcase 0x8b5e: return setValueT1; // SAMPLER_2D\n\t\t\t\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\n\t\t\t\t\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\n\t\t\t\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\t\t\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\t\t\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t// Array of scalars\n\n\t\t\tsetValue1fv = function( gl, v ) { gl.uniform1fv( this.addr, v ); },\n\t\t\tsetValue1iv = function( gl, v ) { gl.uniform1iv( this.addr, v ); },\n\n\t\t\t// Array of vectors (flat or from THREE classes)\n\n\t\t\tsetValueV2a = function( gl, v ) {\n\n\t\t\t\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\n\n\t\t\t},\n\n\t\t\tsetValueV3a = function( gl, v ) {\n\n\t\t\t\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\n\n\t\t\t},\n\n\t\t\tsetValueV4a = function( gl, v ) {\n\n\t\t\t\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\n\n\t\t\t},\n\n\t\t\t// Array of matrices (flat or from THREE clases)\n\n\t\t\tsetValueM2a = function( gl, v ) {\n\n\t\t\t\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\n\n\t\t\t},\n\n\t\t\tsetValueM3a = function( gl, v ) {\n\n\t\t\t\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\n\n\t\t\t},\n\n\t\t\tsetValueM4a = function( gl, v ) {\n\n\t\t\t\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\n\n\t\t\t},\n\n\t\t\t// Array of textures (2D / Cube)\n\n\t\t\tsetValueT1a = function( gl, v, renderer ) {\n\n\t\t\t\tvar n = v.length,\n\t\t\t\t\tunits = allocTexUnits( renderer, n );\n\n\t\t\t\tgl.uniform1iv( this.addr, units );\n\n\t\t\t\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\t\t\t\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetValueT6a = function( gl, v, renderer ) {\n\n\t\t\t\tvar n = v.length,\n\t\t\t\t\tunits = allocTexUnits( renderer, n );\n\n\t\t\t\tgl.uniform1iv( this.addr, units );\n\n\t\t\t\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\t\t\t\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\n\t\t\t// Helper to pick the right setter for a pure (bottom-level) array\n\n\t\t\tgetPureArraySetter = function( type ) {\n\n\t\t\t\tswitch ( type ) {\n\n\t\t\t\t\tcase 0x1406: return setValue1fv; // FLOAT\n\t\t\t\t\tcase 0x8b50: return setValueV2a; // _VEC2\n\t\t\t\t\tcase 0x8b51: return setValueV3a; // _VEC3\n\t\t\t\t\tcase 0x8b52: return setValueV4a; // _VEC4\n\n\t\t\t\t\tcase 0x8b5a: return setValueM2a; // _MAT2\n\t\t\t\t\tcase 0x8b5b: return setValueM3a; // _MAT3\n\t\t\t\t\tcase 0x8b5c: return setValueM4a; // _MAT4\n\n\t\t\t\t\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\n\t\t\t\t\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\n\n\t\t\t\t\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\n\t\t\t\t\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\n\t\t\t\t\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\n\t\t\t\t\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t// --- Uniform Classes ---\n\n\t\t\tSingleUniform = function SingleUniform( id, activeInfo, addr ) {\n\n\t\t\t\tthis.id = id;\n\t\t\t\tthis.addr = addr;\n\t\t\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t\t\t// this.path = activeInfo.name; // DEBUG\n\n\t\t\t},\n\n\t\t\tPureArrayUniform = function( id, activeInfo, addr ) {\n\n\t\t\t\tthis.id = id;\n\t\t\t\tthis.addr = addr;\n\t\t\t\tthis.size = activeInfo.size;\n\t\t\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t\t\t// this.path = activeInfo.name; // DEBUG\n\n\t\t\t},\n\n\t\t\tStructuredUniform = function( id ) {\n\n\t\t\t\tthis.id = id;\n\n\t\t\t\tUniformContainer.call( this ); // mix-in\n\n\t\t\t};\n\n\t\tStructuredUniform.prototype.setValue = function( gl, value ) {\n\n\t\t\t// Note: Don't need an extra 'renderer' parameter, since samplers\n\t\t\t// are not allowed in structured uniforms.\n\n\t\t\tvar seq = this.seq;\n\n\t\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\t\tvar u = seq[ i ];\n\t\t\t\tu.setValue( gl, value[ u.id ] );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// --- Top-level ---\n\n\t\t// Parser - builds up the property tree from the path strings\n\n\t\tvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g,\n\t\t\t// extracts\n\t\t\t// \t- the identifier (member name or array index)\n\t\t\t//  - followed by an optional right bracket (found when array index)\n\t\t\t//  - followed by an optional left bracket or dot (type of subscript)\n\t\t\t//\n\t\t\t// Note: These portions can be read in a non-overlapping fashion and\n\t\t\t// allow straightforward parsing of the hierarchy that WebGL encodes\n\t\t\t// in the uniform names.\n\n\t\t\taddUniform = function( container, uniformObject ) {\n\n\t\t\t\tcontainer.seq.push( uniformObject );\n\t\t\t\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n\t\t\t},\n\n\t\t\tparseUniform = function( activeInfo, addr, container ) {\n\n\t\t\t\tvar path = activeInfo.name,\n\t\t\t\t\tpathLength = path.length;\n\n\t\t\t\t// reset RegExp object, because of the early exit of a previous run\n\t\t\t\tRePathPart.lastIndex = 0;\n\n\t\t\t\tfor (; ;) {\n\n\t\t\t\t\tvar match = RePathPart.exec( path ),\n\t\t\t\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\t\t\t\tid = match[ 1 ],\n\t\t\t\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\t\t\t\tsubscript = match[ 3 ];\n\n\t\t\t\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\t\t\t\tif ( subscript === undefined ||\n\t\t\t\t\t\t\tsubscript === '[' && matchEnd + 2 === pathLength ) {\n\t\t\t\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\t\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\t\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\t\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\t\t\t\tvar map = container.map,\n\t\t\t\t\t\t\tnext = map[ id ];\n\n\t\t\t\t\t\tif ( next === undefined ) {\n\n\t\t\t\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\t\t\t\taddUniform( container, next );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcontainer = next;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t// Root Container\n\n\t\t\tWebGLUniforms = function WebGLUniforms( gl, program, renderer ) {\n\n\t\t\t\tUniformContainer.call( this );\n\n\t\t\t\tthis.renderer = renderer;\n\n\t\t\t\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\t\t\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\t\t\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\t\t\t\tpath = info.name,\n\t\t\t\t\t\taddr = gl.getUniformLocation( program, path );\n\n\t\t\t\t\tparseUniform( info, addr, this );\n\n\t\t\t\t}\n\n\t\t\t};\n\n\n\t\tWebGLUniforms.prototype.setValue = function( gl, name, value ) {\n\n\t\t\tvar u = this.map[ name ];\n\n\t\t\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\n\n\t\t};\n\n\t\tWebGLUniforms.prototype.set = function( gl, object, name ) {\n\n\t\t\tvar u = this.map[ name ];\n\n\t\t\tif ( u !== undefined ) u.setValue( gl, object[ name ], this.renderer );\n\n\t\t};\n\n\t\tWebGLUniforms.prototype.setOptional = function( gl, object, name ) {\n\n\t\t\tvar v = object[ name ];\n\n\t\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t\t};\n\n\n\t\t// Static interface\n\n\t\tWebGLUniforms.upload = function( gl, seq, values, renderer ) {\n\n\t\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\t\tvar u = seq[ i ],\n\t\t\t\t\tv = values[ u.id ];\n\n\t\t\t\tif ( v.needsUpdate !== false ) {\n\t\t\t\t\t// note: always updating when .needsUpdate is undefined\n\n\t\t\t\t\tu.setValue( gl, v.value, renderer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tWebGLUniforms.seqWithValue = function( seq, values ) {\n\n\t\t\tvar r = [];\n\n\t\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\t\tvar u = seq[ i ];\n\t\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t\t}\n\n\t\t\treturn r;\n\n\t\t};\n\n\t\tWebGLUniforms.splitDynamic = function( seq, values ) {\n\n\t\t\tvar r = null,\n\t\t\t\tn = seq.length,\n\t\t\t\tw = 0;\n\n\t\t\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\t\t\tvar u = seq[ i ],\n\t\t\t\t\tv = values[ u.id ];\n\n\t\t\t\tif ( v && v.dynamic === true ) {\n\n\t\t\t\t\tif ( r === null ) r = [];\n\t\t\t\t\tr.push( u );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in-place compact 'seq', removing the matches\n\t\t\t\t\tif ( w < i ) seq[ w ] = u;\n\t\t\t\t\t++ w;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( w < n ) seq.length = w;\n\n\t\t\treturn r;\n\n\t\t};\n\n\t\tWebGLUniforms.evalDynamic = function( seq, values, object, camera ) {\n\n\t\t\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\t\tvar v = values[ seq[ i ].id ],\n\t\t\t\t\tf = v.onUpdateCallback;\n\n\t\t\t\tif ( f !== undefined ) f.call( v, object, camera );\n\n\t\t\t}\n\n\t\t};\n\n\t\treturn WebGLUniforms;\n\n\t} )();\n\n\t// File:src/renderers/webgl/plugins/LensFlarePlugin.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.LensFlarePlugin = function ( renderer, flares ) {\n\n\t\tvar gl = renderer.context;\n\t\tvar state = renderer.state;\n\n\t\tvar vertexBuffer, elementBuffer;\n\t\tvar shader, program, attributes, uniforms;\n\n\t\tvar tempTexture, occlusionTexture;\n\n\t\tfunction init() {\n\n\t\t\tvar vertices = new Float32Array( [\n\t\t\t\t- 1, - 1,  0, 0,\n\t\t\t\t 1, - 1,  1, 0,\n\t\t\t\t 1,  1,  1, 1,\n\t\t\t\t- 1,  1,  0, 1\n\t\t\t] );\n\n\t\t\tvar faces = new Uint16Array( [\n\t\t\t\t0, 1, 2,\n\t\t\t\t0, 2, 3\n\t\t\t] );\n\n\t\t\t// buffers\n\n\t\t\tvertexBuffer     = gl.createBuffer();\n\t\t\telementBuffer    = gl.createBuffer();\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t\t// textures\n\n\t\t\ttempTexture      = gl.createTexture();\n\t\t\tocclusionTexture = gl.createTexture();\n\n\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\t\t\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\n\t\t\tshader = {\n\n\t\t\t\tvertexShader: [\n\n\t\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\t\"uniform vec3 screenPosition;\",\n\t\t\t\t\t\"uniform vec2 scale;\",\n\t\t\t\t\t\"uniform float rotation;\",\n\n\t\t\t\t\t\"uniform sampler2D occlusionMap;\",\n\n\t\t\t\t\t\"attribute vec2 position;\",\n\t\t\t\t\t\"attribute vec2 uv;\",\n\n\t\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\t\"vUV = uv;\",\n\n\t\t\t\t\t\t\"vec2 pos = position;\",\n\n\t\t\t\t\t\t\"if ( renderType == 2 ) {\",\n\n\t\t\t\t\t\t\t\"vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );\",\n\t\t\t\t\t\t\t\"visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );\",\n\n\t\t\t\t\t\t\t\"vVisibility =        visibility.r / 9.0;\",\n\t\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.g / 9.0;\",\n\t\t\t\t\t\t\t\"vVisibility *=       visibility.b / 9.0;\",\n\t\t\t\t\t\t\t\"vVisibility *= 1.0 - visibility.a / 9.0;\",\n\n\t\t\t\t\t\t\t\"pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\",\n\t\t\t\t\t\t\t\"pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\",\n\n\t\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\t\"gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\",\n\n\t\t\t\t\t\"}\"\n\n\t\t\t\t].join( \"\\n\" ),\n\n\t\t\t\tfragmentShader: [\n\n\t\t\t\t\t\"uniform lowp int renderType;\",\n\n\t\t\t\t\t\"uniform sampler2D map;\",\n\t\t\t\t\t\"uniform float opacity;\",\n\t\t\t\t\t\"uniform vec3 color;\",\n\n\t\t\t\t\t\"varying vec2 vUV;\",\n\t\t\t\t\t\"varying float vVisibility;\",\n\n\t\t\t\t\t\"void main() {\",\n\n\t\t\t\t\t\t// pink square\n\n\t\t\t\t\t\t\"if ( renderType == 0 ) {\",\n\n\t\t\t\t\t\t\t\"gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\",\n\n\t\t\t\t\t\t// restore\n\n\t\t\t\t\t\t\"} else if ( renderType == 1 ) {\",\n\n\t\t\t\t\t\t\t\"gl_FragColor = texture2D( map, vUV );\",\n\n\t\t\t\t\t\t// flare\n\n\t\t\t\t\t\t\"} else {\",\n\n\t\t\t\t\t\t\t\"vec4 texture = texture2D( map, vUV );\",\n\t\t\t\t\t\t\t\"texture.a *= opacity * vVisibility;\",\n\t\t\t\t\t\t\t\"gl_FragColor = texture;\",\n\t\t\t\t\t\t\t\"gl_FragColor.rgb *= color;\",\n\n\t\t\t\t\t\t\"}\",\n\n\t\t\t\t\t\"}\"\n\n\t\t\t\t].join( \"\\n\" )\n\n\t\t\t};\n\n\t\t\tprogram = createProgram( shader );\n\n\t\t\tattributes = {\n\t\t\t\tvertex: gl.getAttribLocation ( program, \"position\" ),\n\t\t\t\tuv:     gl.getAttribLocation ( program, \"uv\" )\n\t\t\t};\n\n\t\t\tuniforms = {\n\t\t\t\trenderType:     gl.getUniformLocation( program, \"renderType\" ),\n\t\t\t\tmap:            gl.getUniformLocation( program, \"map\" ),\n\t\t\t\tocclusionMap:   gl.getUniformLocation( program, \"occlusionMap\" ),\n\t\t\t\topacity:        gl.getUniformLocation( program, \"opacity\" ),\n\t\t\t\tcolor:          gl.getUniformLocation( program, \"color\" ),\n\t\t\t\tscale:          gl.getUniformLocation( program, \"scale\" ),\n\t\t\t\trotation:       gl.getUniformLocation( program, \"rotation\" ),\n\t\t\t\tscreenPosition: gl.getUniformLocation( program, \"screenPosition\" )\n\t\t\t};\n\n\t\t}\n\n\t\t/*\n\t\t * Render lens flares\n\t\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\n\t\t *         reads these back and calculates occlusion.\n\t\t */\n\n\t\tthis.render = function ( scene, camera, viewport ) {\n\n\t\t\tif ( flares.length === 0 ) return;\n\n\t\t\tvar tempPosition = new THREE.Vector3();\n\n\t\t\tvar invAspect = viewport.w / viewport.z,\n\t\t\t\thalfViewportWidth = viewport.z * 0.5,\n\t\t\t\thalfViewportHeight = viewport.w * 0.5;\n\n\t\t\tvar size = 16 / viewport.w,\n\t\t\t\tscale = new THREE.Vector2( size * invAspect, size );\n\n\t\t\tvar screenPosition = new THREE.Vector3( 1, 1, 0 ),\n\t\t\t\tscreenPositionPixels = new THREE.Vector2( 1, 1 );\n\n\t\t\tvar validArea = new THREE.Box2();\n\n\t\t\tvalidArea.min.set( 0, 0 );\n\t\t\tvalidArea.max.set( viewport.z - 16, viewport.w - 16 );\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\tinit();\n\n\t\t\t}\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tstate.initAttributes();\n\t\t\tstate.enableAttribute( attributes.vertex );\n\t\t\tstate.enableAttribute( attributes.uv );\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t\t// loop through all lens flares to update their occlusion and positions\n\t\t\t// setup gl and common used attribs/uniforms\n\n\t\t\tgl.uniform1i( uniforms.occlusionMap, 0 );\n\t\t\tgl.uniform1i( uniforms.map, 1 );\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\t\tstate.disable( gl.CULL_FACE );\n\t\t\tstate.setDepthWrite( false );\n\n\t\t\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\n\n\t\t\t\tsize = 16 / viewport.w;\n\t\t\t\tscale.set( size * invAspect, size );\n\n\t\t\t\t// calc object screen position\n\n\t\t\t\tvar flare = flares[ i ];\n\n\t\t\t\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\n\n\t\t\t\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\n\t\t\t\ttempPosition.applyProjection( camera.projectionMatrix );\n\n\t\t\t\t// setup arrays for gl programs\n\n\t\t\t\tscreenPosition.copy( tempPosition );\n\n\t\t\t\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\n\n\t\t\t\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\n\t\t\t\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\n\n\t\t\t\t// screen cull\n\n\t\t\t\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\n\n\t\t\t\t\t// save current RGB to temp texture\n\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, null );\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t\t// render pink quad\n\n\t\t\t\t\tgl.uniform1i( uniforms.renderType, 0 );\n\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\n\t\t\t\t\tstate.disable( gl.BLEND );\n\t\t\t\t\tstate.enable( gl.DEPTH_TEST );\n\n\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t\t// copy result to occlusionMap\n\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\n\t\t\t\t\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\n\n\n\t\t\t\t\t// restore graphics\n\n\t\t\t\t\tgl.uniform1i( uniforms.renderType, 1 );\n\t\t\t\t\tstate.disable( gl.DEPTH_TEST );\n\n\t\t\t\t\tstate.activeTexture( gl.TEXTURE1 );\n\t\t\t\t\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\n\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\n\t\t\t\t\t// update object positions\n\n\t\t\t\t\tflare.positionScreen.copy( screenPosition );\n\n\t\t\t\t\tif ( flare.customUpdateCallback ) {\n\n\t\t\t\t\t\tflare.customUpdateCallback( flare );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tflare.updateLensFlares();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// render flares\n\n\t\t\t\t\tgl.uniform1i( uniforms.renderType, 2 );\n\t\t\t\t\tstate.enable( gl.BLEND );\n\n\t\t\t\t\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar sprite = flare.lensFlares[ j ];\n\n\t\t\t\t\t\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\n\n\t\t\t\t\t\t\tscreenPosition.x = sprite.x;\n\t\t\t\t\t\t\tscreenPosition.y = sprite.y;\n\t\t\t\t\t\t\tscreenPosition.z = sprite.z;\n\n\t\t\t\t\t\t\tsize = sprite.size * sprite.scale / viewport.w;\n\n\t\t\t\t\t\t\tscale.x = size * invAspect;\n\t\t\t\t\t\t\tscale.y = size;\n\n\t\t\t\t\t\t\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\n\t\t\t\t\t\t\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\n\t\t\t\t\t\t\tgl.uniform1f( uniforms.rotation, sprite.rotation );\n\n\t\t\t\t\t\t\tgl.uniform1f( uniforms.opacity, sprite.opacity );\n\t\t\t\t\t\t\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\n\n\t\t\t\t\t\t\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\n\t\t\t\t\t\t\trenderer.setTexture2D( sprite.texture, 1 );\n\n\t\t\t\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// restore gl\n\n\t\t\tstate.enable( gl.CULL_FACE );\n\t\t\tstate.enable( gl.DEPTH_TEST );\n\t\t\tstate.setDepthWrite( true );\n\n\t\t\trenderer.resetGLState();\n\n\t\t};\n\n\t\tfunction createProgram ( shader ) {\n\n\t\t\tvar program = gl.createProgram();\n\n\t\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\t\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\n\t\t\tvar prefix = \"precision \" + renderer.getPrecision() + \" float;\\n\";\n\n\t\t\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\n\t\t\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\n\n\t\t\tgl.compileShader( fragmentShader );\n\t\t\tgl.compileShader( vertexShader );\n\n\t\t\tgl.attachShader( program, fragmentShader );\n\t\t\tgl.attachShader( program, vertexShader );\n\n\t\t\tgl.linkProgram( program );\n\n\t\t\treturn program;\n\n\t\t}\n\n\t};\n\n\t// File:src/renderers/webgl/plugins/SpritePlugin.js\n\n\t/**\n\t * @author mikael emtinger / http://gomo.se/\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.SpritePlugin = function ( renderer, sprites ) {\n\n\t\tvar gl = renderer.context;\n\t\tvar state = renderer.state;\n\n\t\tvar vertexBuffer, elementBuffer;\n\t\tvar program, attributes, uniforms;\n\n\t\tvar texture;\n\n\t\t// decompose matrixWorld\n\n\t\tvar spritePosition = new THREE.Vector3();\n\t\tvar spriteRotation = new THREE.Quaternion();\n\t\tvar spriteScale = new THREE.Vector3();\n\n\t\tfunction init() {\n\n\t\t\tvar vertices = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5,  0, 0,\n\t\t\t\t  0.5, - 0.5,  1, 0,\n\t\t\t\t  0.5,   0.5,  1, 1,\n\t\t\t\t- 0.5,   0.5,  0, 1\n\t\t\t] );\n\n\t\t\tvar faces = new Uint16Array( [\n\t\t\t\t0, 1, 2,\n\t\t\t\t0, 2, 3\n\t\t\t] );\n\n\t\t\tvertexBuffer  = gl.createBuffer();\n\t\t\telementBuffer = gl.createBuffer();\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\t\t\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\n\n\t\t\tprogram = createProgram();\n\n\t\t\tattributes = {\n\t\t\t\tposition:\t\t\tgl.getAttribLocation ( program, 'position' ),\n\t\t\t\tuv:\t\t\t\t\tgl.getAttribLocation ( program, 'uv' )\n\t\t\t};\n\n\t\t\tuniforms = {\n\t\t\t\tuvOffset:\t\t\tgl.getUniformLocation( program, 'uvOffset' ),\n\t\t\t\tuvScale:\t\t\tgl.getUniformLocation( program, 'uvScale' ),\n\n\t\t\t\trotation:\t\t\tgl.getUniformLocation( program, 'rotation' ),\n\t\t\t\tscale:\t\t\t\tgl.getUniformLocation( program, 'scale' ),\n\n\t\t\t\tcolor:\t\t\t\tgl.getUniformLocation( program, 'color' ),\n\t\t\t\tmap:\t\t\t\tgl.getUniformLocation( program, 'map' ),\n\t\t\t\topacity:\t\t\tgl.getUniformLocation( program, 'opacity' ),\n\n\t\t\t\tmodelViewMatrix: \tgl.getUniformLocation( program, 'modelViewMatrix' ),\n\t\t\t\tprojectionMatrix:\tgl.getUniformLocation( program, 'projectionMatrix' ),\n\n\t\t\t\tfogType:\t\t\tgl.getUniformLocation( program, 'fogType' ),\n\t\t\t\tfogDensity:\t\t\tgl.getUniformLocation( program, 'fogDensity' ),\n\t\t\t\tfogNear:\t\t\tgl.getUniformLocation( program, 'fogNear' ),\n\t\t\t\tfogFar:\t\t\t\tgl.getUniformLocation( program, 'fogFar' ),\n\t\t\t\tfogColor:\t\t\tgl.getUniformLocation( program, 'fogColor' ),\n\n\t\t\t\talphaTest:\t\t\tgl.getUniformLocation( program, 'alphaTest' )\n\t\t\t};\n\n\t\t\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\t\tcanvas.width = 8;\n\t\t\tcanvas.height = 8;\n\n\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\tcontext.fillStyle = 'white';\n\t\t\tcontext.fillRect( 0, 0, 8, 8 );\n\n\t\t\ttexture = new THREE.Texture( canvas );\n\t\t\ttexture.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( sprites.length === 0 ) return;\n\n\t\t\t// setup gl\n\n\t\t\tif ( program === undefined ) {\n\n\t\t\t\tinit();\n\n\t\t\t}\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tstate.initAttributes();\n\t\t\tstate.enableAttribute( attributes.position );\n\t\t\tstate.enableAttribute( attributes.uv );\n\t\t\tstate.disableUnusedAttributes();\n\n\t\t\tstate.disable( gl.CULL_FACE );\n\t\t\tstate.enable( gl.BLEND );\n\n\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\n\t\t\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\n\t\t\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\n\n\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\n\n\t\t\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\n\n\t\t\tstate.activeTexture( gl.TEXTURE0 );\n\t\t\tgl.uniform1i( uniforms.map, 0 );\n\n\t\t\tvar oldFogType = 0;\n\t\t\tvar sceneFogType = 0;\n\t\t\tvar fog = scene.fog;\n\n\t\t\tif ( fog ) {\n\n\t\t\t\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\n\n\t\t\t\tif ( fog instanceof THREE.Fog ) {\n\n\t\t\t\t\tgl.uniform1f( uniforms.fogNear, fog.near );\n\t\t\t\t\tgl.uniform1f( uniforms.fogFar, fog.far );\n\n\t\t\t\t\tgl.uniform1i( uniforms.fogType, 1 );\n\t\t\t\t\toldFogType = 1;\n\t\t\t\t\tsceneFogType = 1;\n\n\t\t\t\t} else if ( fog instanceof THREE.FogExp2 ) {\n\n\t\t\t\t\tgl.uniform1f( uniforms.fogDensity, fog.density );\n\n\t\t\t\t\tgl.uniform1i( uniforms.fogType, 2 );\n\t\t\t\t\toldFogType = 2;\n\t\t\t\t\tsceneFogType = 2;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tgl.uniform1i( uniforms.fogType, 0 );\n\t\t\t\toldFogType = 0;\n\t\t\t\tsceneFogType = 0;\n\n\t\t\t}\n\n\n\t\t\t// update positions and sort\n\n\t\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\t\tvar sprite = sprites[ i ];\n\n\t\t\t\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\n\t\t\t\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\n\n\t\t\t}\n\n\t\t\tsprites.sort( painterSortStable );\n\n\t\t\t// render all sprites\n\n\t\t\tvar scale = [];\n\n\t\t\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\n\n\t\t\t\tvar sprite = sprites[ i ];\n\t\t\t\tvar material = sprite.material;\n\n\t\t\t\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\n\t\t\t\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\n\n\t\t\t\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\n\n\t\t\t\tscale[ 0 ] = spriteScale.x;\n\t\t\t\tscale[ 1 ] = spriteScale.y;\n\n\t\t\t\tvar fogType = 0;\n\n\t\t\t\tif ( scene.fog && material.fog ) {\n\n\t\t\t\t\tfogType = sceneFogType;\n\n\t\t\t\t}\n\n\t\t\t\tif ( oldFogType !== fogType ) {\n\n\t\t\t\t\tgl.uniform1i( uniforms.fogType, fogType );\n\t\t\t\t\toldFogType = fogType;\n\n\t\t\t\t}\n\n\t\t\t\tif ( material.map !== null ) {\n\n\t\t\t\t\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\n\t\t\t\t\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\n\t\t\t\t\tgl.uniform2f( uniforms.uvScale, 1, 1 );\n\n\t\t\t\t}\n\n\t\t\t\tgl.uniform1f( uniforms.opacity, material.opacity );\n\t\t\t\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\n\n\t\t\t\tgl.uniform1f( uniforms.rotation, material.rotation );\n\t\t\t\tgl.uniform2fv( uniforms.scale, scale );\n\n\t\t\t\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst );\n\t\t\t\tstate.setDepthTest( material.depthTest );\n\t\t\t\tstate.setDepthWrite( material.depthWrite );\n\n\t\t\t\tif ( material.map ) {\n\n\t\t\t\t\trenderer.setTexture2D( material.map, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setTexture2D( texture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\n\n\t\t\t}\n\n\t\t\t// restore gl\n\n\t\t\tstate.enable( gl.CULL_FACE );\n\n\t\t\trenderer.resetGLState();\n\n\t\t};\n\n\t\tfunction createProgram () {\n\n\t\t\tvar program = gl.createProgram();\n\n\t\t\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\n\t\t\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\n\n\t\t\tgl.shaderSource( vertexShader, [\n\n\t\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t\t'uniform float rotation;',\n\t\t\t\t'uniform vec2 scale;',\n\t\t\t\t'uniform vec2 uvOffset;',\n\t\t\t\t'uniform vec2 uvScale;',\n\n\t\t\t\t'attribute vec2 position;',\n\t\t\t\t'attribute vec2 uv;',\n\n\t\t\t\t'varying vec2 vUV;',\n\n\t\t\t\t'void main() {',\n\n\t\t\t\t\t'vUV = uvOffset + uv * uvScale;',\n\n\t\t\t\t\t'vec2 alignedPosition = position * scale;',\n\n\t\t\t\t\t'vec2 rotatedPosition;',\n\t\t\t\t\t'rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\n\t\t\t\t\t'rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\n\n\t\t\t\t\t'vec4 finalPosition;',\n\n\t\t\t\t\t'finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\n\t\t\t\t\t'finalPosition.xy += rotatedPosition;',\n\t\t\t\t\t'finalPosition = projectionMatrix * finalPosition;',\n\n\t\t\t\t\t'gl_Position = finalPosition;',\n\n\t\t\t\t'}'\n\n\t\t\t].join( '\\n' ) );\n\n\t\t\tgl.shaderSource( fragmentShader, [\n\n\t\t\t\t'precision ' + renderer.getPrecision() + ' float;',\n\n\t\t\t\t'uniform vec3 color;',\n\t\t\t\t'uniform sampler2D map;',\n\t\t\t\t'uniform float opacity;',\n\n\t\t\t\t'uniform int fogType;',\n\t\t\t\t'uniform vec3 fogColor;',\n\t\t\t\t'uniform float fogDensity;',\n\t\t\t\t'uniform float fogNear;',\n\t\t\t\t'uniform float fogFar;',\n\t\t\t\t'uniform float alphaTest;',\n\n\t\t\t\t'varying vec2 vUV;',\n\n\t\t\t\t'void main() {',\n\n\t\t\t\t\t'vec4 texture = texture2D( map, vUV );',\n\n\t\t\t\t\t'if ( texture.a < alphaTest ) discard;',\n\n\t\t\t\t\t'gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\n\n\t\t\t\t\t'if ( fogType > 0 ) {',\n\n\t\t\t\t\t\t'float depth = gl_FragCoord.z / gl_FragCoord.w;',\n\t\t\t\t\t\t'float fogFactor = 0.0;',\n\n\t\t\t\t\t\t'if ( fogType == 1 ) {',\n\n\t\t\t\t\t\t\t'fogFactor = smoothstep( fogNear, fogFar, depth );',\n\n\t\t\t\t\t\t'} else {',\n\n\t\t\t\t\t\t\t'const float LOG2 = 1.442695;',\n\t\t\t\t\t\t\t'fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );',\n\t\t\t\t\t\t\t'fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\n\n\t\t\t\t\t\t'}',\n\n\t\t\t\t\t\t'gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );',\n\n\t\t\t\t\t'}',\n\n\t\t\t\t'}'\n\n\t\t\t].join( '\\n' ) );\n\n\t\t\tgl.compileShader( vertexShader );\n\t\t\tgl.compileShader( fragmentShader );\n\n\t\t\tgl.attachShader( program, vertexShader );\n\t\t\tgl.attachShader( program, fragmentShader );\n\n\t\t\tgl.linkProgram( program );\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction painterSortStable ( a, b ) {\n\t\t\t\n\t\t\tif ( a.renderOrder !== b.renderOrder ) {\n\n\t\t\t\treturn a.renderOrder - b.renderOrder;\n\n\t\t\t} else if ( a.z !== b.z ) {\n\n\t\t\t\treturn b.z - a.z;\n\n\t\t\t} else {\n\n\t\t\t\treturn b.id - a.id;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// File:src/Three.Legacy.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tObject.assign( THREE, {\n\t\tFace4: function ( a, b, c, d, normal, color, materialIndex ) {\n\t\t\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\t\t\treturn new THREE.Face3( a, b, c, normal, color, materialIndex );\n\t\t},\n\t\tLineStrip: 0,\n\t\tLinePieces: 1,\n\t\tMeshFaceMaterial: THREE.MultiMaterial,\n\t\tPointCloud: function ( geometry, material ) {\n\t\t\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\t\t\treturn new THREE.Points( geometry, material );\n\t\t},\n\t\tParticle: THREE.Sprite,\n\t\tParticleSystem: function ( geometry, material ) {\n\t\t\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\t\t\treturn new THREE.Points( geometry, material );\n\t\t},\n\t\tPointCloudMaterial: function ( parameters ) {\n\t\t\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\t\t\treturn new THREE.PointsMaterial( parameters );\n\t\t},\n\t\tParticleBasicMaterial: function ( parameters ) {\n\t\t\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\t\t\treturn new THREE.PointsMaterial( parameters );\n\t\t},\n\t\tParticleSystemMaterial: function ( parameters ) {\n\t\t\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\t\t\treturn new THREE.PointsMaterial( parameters );\n\t\t},\n\t\tVertex: function ( x, y, z ) {\n\t\t\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\t\t\treturn new THREE.Vector3( x, y, z );\n\t\t}\n\t} );\n\n\t//\n\n\tObject.assign( THREE.Box2.prototype, {\n\t\tempty: function () {\n\t\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\t\treturn this.isEmpty();\n\t\t},\n\t\tisIntersectionBox: function ( box ) {\n\t\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\t\treturn this.intersectsBox( box );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Box3.prototype, {\n\t\tempty: function () {\n\t\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\t\treturn this.isEmpty();\n\t\t},\n\t\tisIntersectionBox: function ( box ) {\n\t\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\t\treturn this.intersectsBox( box );\n\t\t},\n\t\tisIntersectionSphere: function ( sphere ) {\n\t\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\t\treturn this.intersectsSphere( sphere );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Matrix3.prototype, {\n\t\tmultiplyVector3: function ( vector ) {\n\t\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix3( this );\n\t\t},\n\t\tmultiplyVector3Array: function ( a ) {\n\t\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\t\treturn this.applyToVector3Array( a );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Matrix4.prototype, {\n\t\textractPosition: function ( m ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\t\treturn this.copyPosition( m );\n\t\t},\n\t\tsetRotationFromQuaternion: function ( q ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\t\treturn this.makeRotationFromQuaternion( q );\n\t\t},\n\t\tmultiplyVector3: function ( vector ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead.' );\n\t\t\treturn vector.applyProjection( this );\n\t\t},\n\t\tmultiplyVector4: function ( vector ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix4( this );\n\t\t},\n\t\tmultiplyVector3Array: function ( a ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead.' );\n\t\t\treturn this.applyToVector3Array( a );\n\t\t},\n\t\trotateAxis: function ( v ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\t\tv.transformDirection( this );\n\t\t},\n\t\tcrossVector: function ( vector ) {\n\t\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\t\treturn vector.applyMatrix4( this );\n\t\t},\n\t\ttranslate: function ( v ) {\n\t\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\t\t},\n\t\trotateX: function ( angle ) {\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\t\t},\n\t\trotateY: function ( angle ) {\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\t\t},\n\t\trotateZ: function ( angle ) {\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\t\t},\n\t\trotateByAxis: function ( axis, angle ) {\n\t\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Plane.prototype, {\n\t\tisIntersectionLine: function ( line ) {\n\t\t\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\t\t\treturn this.intersectsLine( line );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Quaternion.prototype, {\n\t\tmultiplyVector3: function ( vector ) {\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\t\t\treturn vector.applyQuaternion( this );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Ray.prototype, {\n\t\tisIntersectionBox: function ( box ) {\n\t\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\t\treturn this.intersectsBox( box );\n\t\t},\n\t\tisIntersectionPlane: function ( plane ) {\n\t\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\t\treturn this.intersectsPlane( plane );\n\t\t},\n\t\tisIntersectionSphere: function ( sphere ) {\n\t\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\t\treturn this.intersectsSphere( sphere );\n\t\t}\n\t} );\n\n\tObject.assign( THREE.Vector3.prototype, {\n\t\tsetEulerFromRotationMatrix: function () {\n\t\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\t\t},\n\t\tsetEulerFromQuaternion: function () {\n\t\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\t\t},\n\t\tgetPositionFromMatrix: function ( m ) {\n\t\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\t\treturn this.setFromMatrixPosition( m );\n\t\t},\n\t\tgetScaleFromMatrix: function ( m ) {\n\t\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\t\treturn this.setFromMatrixScale( m );\n\t\t},\n\t\tgetColumnFromMatrix: function ( index, matrix ) {\n\t\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\t\treturn this.setFromMatrixColumn( matrix, index );\n\t\t}\n\t} );\n\n\t//\n\n\tObject.assign( THREE.Object3D.prototype, {\n\t\tgetChildByName: function ( name ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\t\treturn this.getObjectByName( name );\n\t\t},\n\t\trenderDepth: function ( value ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\t\t},\n\t\ttranslate: function ( distance, axis ) {\n\t\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\t\treturn this.translateOnAxis( axis, distance );\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.Object3D.prototype, {\n\t\teulerOrder: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\t\treturn this.rotation.order;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\t\tthis.rotation.order = value;\n\t\t\t}\n\t\t},\n\t\tuseQuaternion: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.LOD.prototype, {\n\t\tobjects: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\t\treturn this.levels;\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tTHREE.PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\t\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\t\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\t\tthis.setFocalLength( focalLength );\n\n\t};\n\n\t//\n\n\tObject.defineProperties( THREE.Light.prototype, {\n\t\tonlyShadow: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\t\t\t}\n\t\t},\n\t\tshadowCameraFov: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\t\tthis.shadow.camera.fov = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraLeft: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\t\tthis.shadow.camera.left = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraRight: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\t\tthis.shadow.camera.right = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraTop: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\t\tthis.shadow.camera.top = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraBottom: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\t\tthis.shadow.camera.bottom = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraNear: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\t\tthis.shadow.camera.near = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraFar: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\t\tthis.shadow.camera.far = value;\n\t\t\t}\n\t\t},\n\t\tshadowCameraVisible: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\t\t\t}\n\t\t},\n\t\tshadowBias: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\t\tthis.shadow.bias = value;\n\t\t\t}\n\t\t},\n\t\tshadowDarkness: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\t\t\t}\n\t\t},\n\t\tshadowMapWidth: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\t\tthis.shadow.mapSize.width = value;\n\t\t\t}\n\t\t},\n\t\tshadowMapHeight: {\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\t\tthis.shadow.mapSize.height = value;\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tObject.defineProperties( THREE.BufferAttribute.prototype, {\n\t\tlength: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Please use .count.' );\n\t\t\t\treturn this.array.length;\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.assign( THREE.BufferGeometry.prototype, {\n\t\taddIndex: function ( index ) {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\t\tthis.setIndex( index );\n\t\t},\n\t\taddDrawCall: function ( start, count, indexOffset ) {\n\t\t\tif ( indexOffset !== undefined ) {\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\t\t\t}\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\t\tthis.addGroup( start, count );\n\t\t},\n\t\tclearDrawCalls: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\t\tthis.clearGroups();\n\t\t},\n\t\tcomputeTangents: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\t\t},\n\t\tcomputeOffsets: function () {\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.BufferGeometry.prototype, {\n\t\tdrawcalls: {\n\t\t\tget: function () {\n\t\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\t\treturn this.groups;\n\t\t\t}\n\t\t},\n\t\toffsets: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\t\treturn this.groups;\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tObject.defineProperties( THREE.Material.prototype, {\n\t\twrapAround: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapAround has been removed.' );\n\t\t\t}\n\t\t},\n\t\twrapRGB: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .wrapRGB has been removed.' );\n\t\t\t\treturn new THREE.Color();\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.MeshPhongMaterial.prototype, {\n\t\tmetal: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.ShaderMaterial.prototype, {\n\t\tderivatives: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\t\treturn this.extensions.derivatives;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\t\tthis.extensions.derivatives = value;\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tTHREE.EventDispatcher.prototype = Object.assign( Object.create( {\n\n\t\t// Note: Extra base ensures these properties are not 'assign'ed.\n\n\t\tconstructor: THREE.EventDispatcher,\n\n\t\tapply: function ( target ) {\n\n\t\t\tconsole.warn( \"THREE.EventDispatcher: .apply is deprecated, \" +\n\t\t\t\t\t\"just inherit or Object.assign the prototype to mix-in.\" );\n\n\t\t\tObject.assign( target, this );\n\n\t\t}\n\n\t} ), THREE.EventDispatcher.prototype );\n\n\t//\n\n\tObject.assign( THREE.WebGLRenderer.prototype, {\n\t\tsupportsFloatTextures: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\t\treturn this.extensions.get( 'OES_texture_float' );\n\t\t},\n\t\tsupportsHalfFloatTextures: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\t\t},\n\t\tsupportsStandardDerivatives: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\t\t},\n\t\tsupportsCompressedTextureS3TC: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\t\t},\n\t\tsupportsCompressedTexturePVRTC: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\t\t},\n\t\tsupportsBlendMinMax: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\t\t},\n\t\tsupportsVertexTextures: function () {\n\t\t\treturn this.capabilities.vertexTextures;\n\t\t},\n\t\tsupportsInstancedArrays: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\t\t},\n\t\tenableScissorTest: function ( boolean ) {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\t\tthis.setScissorTest( boolean );\n\t\t},\n\t\tinitMaterial: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\t\t},\n\t\taddPrePlugin: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\t\t},\n\t\taddPostPlugin: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\t\t},\n\t\tupdateShadowMap: function () {\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.WebGLRenderer.prototype, {\n\t\tshadowMapEnabled: {\n\t\t\tget: function () {\n\t\t\t\treturn this.shadowMap.enabled;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\t\tthis.shadowMap.enabled = value;\n\t\t\t}\n\t\t},\n\t\tshadowMapType: {\n\t\t\tget: function () {\n\t\t\t\treturn this.shadowMap.type;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\t\tthis.shadowMap.type = value;\n\t\t\t}\n\t\t},\n\t\tshadowMapCullFace: {\n\t\t\tget: function () {\n\t\t\t\treturn this.shadowMap.cullFace;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\n\t\t\t\tthis.shadowMap.cullFace = value;\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.defineProperties( THREE.WebGLShadowMap.prototype, {\n\t\tcullFace: {\n\t\t\tget: function () {\n\t\t\t\treturn this.renderReverseSided ? THREE.CullFaceFront : THREE.CullFaceBack;\n\t\t\t},\n\t\t\tset: function ( cullFace ) {\n\t\t\t\tvar value = ( cullFace !== THREE.CullFaceBack );\n\t\t\t\tconsole.warn( \"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \" + value + \".\" );\n\t\t\t\tthis.renderReverseSided = value;\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tObject.defineProperties( THREE.WebGLRenderTarget.prototype, {\n\t\twrapS: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\t\treturn this.texture.wrapS;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\t\tthis.texture.wrapS = value;\n\t\t\t}\n\t\t},\n\t\twrapT: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\t\treturn this.texture.wrapT;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\t\tthis.texture.wrapT = value;\n\t\t\t}\n\t\t},\n\t\tmagFilter: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\t\treturn this.texture.magFilter;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\t\tthis.texture.magFilter = value;\n\t\t\t}\n\t\t},\n\t\tminFilter: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\t\treturn this.texture.minFilter;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\t\tthis.texture.minFilter = value;\n\t\t\t}\n\t\t},\n\t\tanisotropy: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\t\treturn this.texture.anisotropy;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\t\tthis.texture.anisotropy = value;\n\t\t\t}\n\t\t},\n\t\toffset: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\t\treturn this.texture.offset;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\t\tthis.texture.offset = value;\n\t\t\t}\n\t\t},\n\t\trepeat: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\t\treturn this.texture.repeat;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\t\tthis.texture.repeat = value;\n\t\t\t}\n\t\t},\n\t\tformat: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\t\treturn this.texture.format;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\t\tthis.texture.format = value;\n\t\t\t}\n\t\t},\n\t\ttype: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\t\treturn this.texture.type;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\t\tthis.texture.type = value;\n\t\t\t}\n\t\t},\n\t\tgenerateMipmaps: {\n\t\t\tget: function () {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\t\treturn this.texture.generateMipmaps;\n\t\t\t},\n\t\t\tset: function ( value ) {\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\t\tthis.texture.generateMipmaps = value;\n\t\t\t}\n\t\t}\n\t} );\n\n\t//\n\n\tObject.assign( THREE.Audio.prototype, {\n\t\tload: function ( file ) {\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Please use THREE.AudioLoader.' );\n\t\t\tvar scope = this;\n\t\t\tvar audioLoader = new THREE.AudioLoader();\n\t\t\taudioLoader.load( file, function ( buffer ) {\n\t\t\t\tscope.setBuffer( buffer );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\t} );\n\n\tObject.assign( THREE.AudioAnalyser.prototype, {\n\t\tgetData: function ( file ) {\n\t\t\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\t\t\treturn this.getFrequencyData();\n\t\t}\n\t} );\n\n\t//\n\n\tTHREE.GeometryUtils = {\n\n\t\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\n\t\t\tvar matrix;\n\n\t\t\tif ( geometry2 instanceof THREE.Mesh ) {\n\n\t\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\t\tmatrix = geometry2.matrix;\n\t\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t\t}\n\n\t\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t\t},\n\n\t\tcenter: function ( geometry ) {\n\n\t\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\t\treturn geometry.center();\n\n\t\t}\n\n\t};\n\n\tTHREE.ImageUtils = {\n\n\t\tcrossOrigin: undefined,\n\n\t\tloadTexture: function ( url, mapping, onLoad, onError ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\t\t\tvar loader = new THREE.TextureLoader();\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\t\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\t\t\tvar loader = new THREE.CubeTextureLoader();\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\t\t\tif ( mapping ) texture.mapping = mapping;\n\n\t\t\treturn texture;\n\n\t\t},\n\n\t\tloadCompressedTexture: function () {\n\n\t\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n\t\t},\n\n\t\tloadCompressedTextureCube: function () {\n\n\t\t\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n\t\t}\n\n\t};\n\n\t//\n\n\tTHREE.Projector = function () {\n\n\t\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\n\n\t\tthis.projectVector = function ( vector, camera ) {\n\n\t\t\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\n\t\t\tvector.project( camera );\n\n\t\t};\n\n\t\tthis.unprojectVector = function ( vector, camera ) {\n\n\t\t\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\n\t\t\tvector.unproject( camera );\n\n\t\t};\n\n\t\tthis.pickingRay = function ( vector, camera ) {\n\n\t\t\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\n\n\t\t};\n\n\t};\n\n\t//\n\n\tTHREE.CanvasRenderer = function () {\n\n\t\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\n\n\t\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\t\tthis.clear = function () {};\n\t\tthis.render = function () {};\n\t\tthis.setClearColor = function () {};\n\t\tthis.setSize = function () {};\n\n\t};\n\n\t// File:src/extras/CurveUtils.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t */\n\n\tTHREE.CurveUtils = {\n\n\t\ttangentQuadraticBezier: function ( t, p0, p1, p2 ) {\n\n\t\t\treturn 2 * ( 1 - t ) * ( p1 - p0 ) + 2 * t * ( p2 - p1 );\n\n\t\t},\n\n\t\t// Puay Bing, thanks for helping with this derivative!\n\n\t\ttangentCubicBezier: function ( t, p0, p1, p2, p3 ) {\n\n\t\t\treturn - 3 * p0 * ( 1 - t ) * ( 1 - t )  +\n\t\t\t\t3 * p1 * ( 1 - t ) * ( 1 - t ) - 6 * t * p1 * ( 1 - t ) +\n\t\t\t\t6 * t *  p2 * ( 1 - t ) - 3 * t * t * p2 +\n\t\t\t\t3 * t * t * p3;\n\n\t\t},\n\n\t\ttangentSpline: function ( t, p0, p1, p2, p3 ) {\n\n\t\t\t// To check if my formulas are correct\n\n\t\t\tvar h00 = 6 * t * t - 6 * t; \t// derived from 2t^3 − 3t^2 + 1\n\t\t\tvar h10 = 3 * t * t - 4 * t + 1; // t^3 − 2t^2 + t\n\t\t\tvar h01 = - 6 * t * t + 6 * t; \t// − 2t3 + 3t2\n\t\t\tvar h11 = 3 * t * t - 2 * t;\t// t3 − t2\n\n\t\t\treturn h00 + h10 + h01 + h11;\n\n\t\t},\n\n\t\t// Catmull-Rom\n\n\t\tinterpolate: function( p0, p1, p2, p3, t ) {\n\n\t\t\tvar v0 = ( p2 - p0 ) * 0.5;\n\t\t\tvar v1 = ( p3 - p1 ) * 0.5;\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t * t2;\n\t\t\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n\t\t}\n\n\t};\n\n\t// File:src/extras/SceneUtils.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.SceneUtils = {\n\n\t\tcreateMultiMaterialObject: function ( geometry, materials ) {\n\n\t\t\tvar group = new THREE.Group();\n\n\t\t\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\n\n\t\t\t\tgroup.add( new THREE.Mesh( geometry, materials[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t},\n\n\t\tdetach: function ( child, parent, scene ) {\n\n\t\t\tchild.applyMatrix( parent.matrixWorld );\n\t\t\tparent.remove( child );\n\t\t\tscene.add( child );\n\n\t\t},\n\n\t\tattach: function ( child, scene, parent ) {\n\n\t\t\tvar matrixWorldInverse = new THREE.Matrix4();\n\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\t\t\tchild.applyMatrix( matrixWorldInverse );\n\n\t\t\tscene.remove( child );\n\t\t\tparent.add( child );\n\n\t\t}\n\n\t};\n\n\t// File:src/extras/ShapeUtils.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t */\n\n\tTHREE.ShapeUtils = {\n\n\t\t// calculate area of the contour polygon\n\n\t\tarea: function ( contour ) {\n\n\t\t\tvar n = contour.length;\n\t\t\tvar a = 0.0;\n\n\t\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t\t}\n\n\t\t\treturn a * 0.5;\n\n\t\t},\n\n\t\ttriangulate: ( function () {\n\n\t\t\t/**\n\t\t\t * This code is a quick port of code written in C++ which was submitted to\n\t\t\t * flipcode.com by John W. Ratcliff  // July 22, 2000\n\t\t\t * See original code and more information here:\n\t\t\t * http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml\n\t\t\t *\n\t\t\t * ported to actionscript by Zevan Rosser\n\t\t\t * www.actionsnippet.com\n\t\t\t *\n\t\t\t * ported to javascript by Joshua Koo\n\t\t\t * http://www.lab4games.net/zz85/blog\n\t\t\t *\n\t\t\t */\n\n\t\t\tfunction snip( contour, u, v, w, n, verts ) {\n\n\t\t\t\tvar p;\n\t\t\t\tvar ax, ay, bx, by;\n\t\t\t\tvar cx, cy, px, py;\n\n\t\t\t\tax = contour[ verts[ u ] ].x;\n\t\t\t\tay = contour[ verts[ u ] ].y;\n\n\t\t\t\tbx = contour[ verts[ v ] ].x;\n\t\t\t\tby = contour[ verts[ v ] ].y;\n\n\t\t\t\tcx = contour[ verts[ w ] ].x;\n\t\t\t\tcy = contour[ verts[ w ] ].y;\n\n\t\t\t\tif ( Number.EPSILON > ( ( ( bx - ax ) * ( cy - ay ) ) - ( ( by - ay ) * ( cx - ax ) ) ) ) return false;\n\n\t\t\t\tvar aX, aY, bX, bY, cX, cY;\n\t\t\t\tvar apx, apy, bpx, bpy, cpx, cpy;\n\t\t\t\tvar cCROSSap, bCROSScp, aCROSSbp;\n\n\t\t\t\taX = cx - bx;  aY = cy - by;\n\t\t\t\tbX = ax - cx;  bY = ay - cy;\n\t\t\t\tcX = bx - ax;  cY = by - ay;\n\n\t\t\t\tfor ( p = 0; p < n; p ++ ) {\n\n\t\t\t\t\tpx = contour[ verts[ p ] ].x;\n\t\t\t\t\tpy = contour[ verts[ p ] ].y;\n\n\t\t\t\t\tif ( ( ( px === ax ) && ( py === ay ) ) ||\n\t\t\t\t\t\t ( ( px === bx ) && ( py === by ) ) ||\n\t\t\t\t\t\t ( ( px === cx ) && ( py === cy ) ) )\tcontinue;\n\n\t\t\t\t\tapx = px - ax;  apy = py - ay;\n\t\t\t\t\tbpx = px - bx;  bpy = py - by;\n\t\t\t\t\tcpx = px - cx;  cpy = py - cy;\n\n\t\t\t\t\t// see if p is inside triangle abc\n\n\t\t\t\t\taCROSSbp = aX * bpy - aY * bpx;\n\t\t\t\t\tcCROSSap = cX * apy - cY * apx;\n\t\t\t\t\tbCROSScp = bX * cpy - bY * cpx;\n\n\t\t\t\t\tif ( ( aCROSSbp >= - Number.EPSILON ) && ( bCROSScp >= - Number.EPSILON ) && ( cCROSSap >= - Number.EPSILON ) ) return false;\n\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\t// takes in an contour array and returns\n\n\t\t\treturn function triangulate( contour, indices ) {\n\n\t\t\t\tvar n = contour.length;\n\n\t\t\t\tif ( n < 3 ) return null;\n\n\t\t\t\tvar result = [],\n\t\t\t\t\tverts = [],\n\t\t\t\t\tvertIndices = [];\n\n\t\t\t\t/* we want a counter-clockwise polygon in verts */\n\n\t\t\t\tvar u, v, w;\n\n\t\t\t\tif ( THREE.ShapeUtils.area( contour ) > 0.0 ) {\n\n\t\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = v;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( v = 0; v < n; v ++ ) verts[ v ] = ( n - 1 ) - v;\n\n\t\t\t\t}\n\n\t\t\t\tvar nv = n;\n\n\t\t\t\t/*  remove nv - 2 vertices, creating 1 triangle every time */\n\n\t\t\t\tvar count = 2 * nv;   /* error detection */\n\n\t\t\t\tfor ( v = nv - 1; nv > 2; ) {\n\n\t\t\t\t\t/* if we loop, it is probably a non-simple polygon */\n\n\t\t\t\t\tif ( ( count -- ) <= 0 ) {\n\n\t\t\t\t\t\t//** Triangulate: ERROR - probable bad polygon!\n\n\t\t\t\t\t\t//throw ( \"Warning, unable to triangulate polygon!\" );\n\t\t\t\t\t\t//return null;\n\t\t\t\t\t\t// Sometimes warning is fine, especially polygons are triangulated in reverse.\n\t\t\t\t\t\tconsole.warn( 'THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()' );\n\n\t\t\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\t\t\treturn result;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t/* three consecutive vertices in current polygon, <u,v,w> */\n\n\t\t\t\t\tu = v; \t \tif ( nv <= u ) u = 0;     /* previous */\n\t\t\t\t\tv = u + 1;  if ( nv <= v ) v = 0;     /* new v    */\n\t\t\t\t\tw = v + 1;  if ( nv <= w ) w = 0;     /* next     */\n\n\t\t\t\t\tif ( snip( contour, u, v, w, nv, verts ) ) {\n\n\t\t\t\t\t\tvar a, b, c, s, t;\n\n\t\t\t\t\t\t/* true names of the vertices */\n\n\t\t\t\t\t\ta = verts[ u ];\n\t\t\t\t\t\tb = verts[ v ];\n\t\t\t\t\t\tc = verts[ w ];\n\n\t\t\t\t\t\t/* output Triangle */\n\n\t\t\t\t\t\tresult.push( [ contour[ a ],\n\t\t\t\t\t\t\tcontour[ b ],\n\t\t\t\t\t\t\tcontour[ c ] ] );\n\n\n\t\t\t\t\t\tvertIndices.push( [ verts[ u ], verts[ v ], verts[ w ] ] );\n\n\t\t\t\t\t\t/* remove v from the remaining polygon */\n\n\t\t\t\t\t\tfor ( s = v, t = v + 1; t < nv; s ++, t ++ ) {\n\n\t\t\t\t\t\t\tverts[ s ] = verts[ t ];\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnv --;\n\n\t\t\t\t\t\t/* reset error detection counter */\n\n\t\t\t\t\t\tcount = 2 * nv;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( indices ) return vertIndices;\n\t\t\t\treturn result;\n\n\t\t\t}\n\n\t\t} )(),\n\n\t\ttriangulateShape: function ( contour, holes ) {\n\n\t\t\tfunction point_in_segment_2D_colin( inSegPt1, inSegPt2, inOtherPt ) {\n\n\t\t\t\t// inOtherPt needs to be collinear to the inSegment\n\t\t\t\tif ( inSegPt1.x !== inSegPt2.x ) {\n\n\t\t\t\t\tif ( inSegPt1.x < inSegPt2.x ) {\n\n\t\t\t\t\t\treturn\t( ( inSegPt1.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt2.x ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn\t( ( inSegPt2.x <= inOtherPt.x ) && ( inOtherPt.x <= inSegPt1.x ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( inSegPt1.y < inSegPt2.y ) {\n\n\t\t\t\t\t\treturn\t( ( inSegPt1.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt2.y ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\treturn\t( ( inSegPt2.y <= inOtherPt.y ) && ( inOtherPt.y <= inSegPt1.y ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction intersect_segments_2D( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1, inSeg2Pt2, inExcludeAdjacentSegs ) {\n\n\t\t\t\tvar seg1dx = inSeg1Pt2.x - inSeg1Pt1.x,   seg1dy = inSeg1Pt2.y - inSeg1Pt1.y;\n\t\t\t\tvar seg2dx = inSeg2Pt2.x - inSeg2Pt1.x,   seg2dy = inSeg2Pt2.y - inSeg2Pt1.y;\n\n\t\t\t\tvar seg1seg2dx = inSeg1Pt1.x - inSeg2Pt1.x;\n\t\t\t\tvar seg1seg2dy = inSeg1Pt1.y - inSeg2Pt1.y;\n\n\t\t\t\tvar limit\t\t= seg1dy * seg2dx - seg1dx * seg2dy;\n\t\t\t\tvar perpSeg1\t= seg1dy * seg1seg2dx - seg1dx * seg1seg2dy;\n\n\t\t\t\tif ( Math.abs( limit ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\n\t\t\t\t\tvar perpSeg2;\n\t\t\t\t\tif ( limit > 0 ) {\n\n\t\t\t\t\t\tif ( ( perpSeg1 < 0 ) || ( perpSeg1 > limit ) ) \t\treturn [];\n\t\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\t\tif ( ( perpSeg2 < 0 ) || ( perpSeg2 > limit ) ) \t\treturn [];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( ( perpSeg1 > 0 ) || ( perpSeg1 < limit ) ) \t\treturn [];\n\t\t\t\t\t\tperpSeg2 = seg2dy * seg1seg2dx - seg2dx * seg1seg2dy;\n\t\t\t\t\t\tif ( ( perpSeg2 > 0 ) || ( perpSeg2 < limit ) ) \t\treturn [];\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// i.e. to reduce rounding errors\n\t\t\t\t\t// intersection at endpoint of segment#1?\n\t\t\t\t\tif ( perpSeg2 === 0 ) {\n\n\t\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( perpSeg2 === limit ) {\n\n\t\t\t\t\t\tif ( ( inExcludeAdjacentSegs ) &&\n\t\t\t\t\t\t\t ( ( perpSeg1 === 0 ) || ( perpSeg1 === limit ) ) )\t\treturn [];\n\t\t\t\t\t\treturn [ inSeg1Pt2 ];\n\n\t\t\t\t\t}\n\t\t\t\t\t// intersection at endpoint of segment#2?\n\t\t\t\t\tif ( perpSeg1 === 0 )\t\treturn [ inSeg2Pt1 ];\n\t\t\t\t\tif ( perpSeg1 === limit )\treturn [ inSeg2Pt2 ];\n\n\t\t\t\t\t// return real intersection point\n\t\t\t\t\tvar factorSeg1 = perpSeg2 / limit;\n\t\t\t\t\treturn\t[ { x: inSeg1Pt1.x + factorSeg1 * seg1dx,\n\t\t\t\t\t\t\t\ty: inSeg1Pt1.y + factorSeg1 * seg1dy } ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( ( perpSeg1 !== 0 ) ||\n\t\t\t\t\t\t ( seg2dy * seg1seg2dx !== seg2dx * seg1seg2dy ) ) \t\t\treturn [];\n\n\t\t\t\t\t// they are collinear or degenerate\n\t\t\t\t\tvar seg1Pt = ( ( seg1dx === 0 ) && ( seg1dy === 0 ) );\t// segment1 is just a point?\n\t\t\t\t\tvar seg2Pt = ( ( seg2dx === 0 ) && ( seg2dy === 0 ) );\t// segment2 is just a point?\n\t\t\t\t\t// both segments are points\n\t\t\t\t\tif ( seg1Pt && seg2Pt ) {\n\n\t\t\t\t\t\tif ( ( inSeg1Pt1.x !== inSeg2Pt1.x ) ||\n\t\t\t\t\t\t\t ( inSeg1Pt1.y !== inSeg2Pt1.y ) )\t\treturn [];\t// they are distinct  points\n\t\t\t\t\t\treturn [ inSeg1Pt1 ];                 \t\t\t\t\t\t// they are the same point\n\n\t\t\t\t\t}\n\t\t\t\t\t// segment#1  is a single point\n\t\t\t\t\tif ( seg1Pt ) {\n\n\t\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg2Pt1, inSeg2Pt2, inSeg1Pt1 ) )\t\treturn [];\t\t// but not in segment#2\n\t\t\t\t\t\treturn [ inSeg1Pt1 ];\n\n\t\t\t\t\t}\n\t\t\t\t\t// segment#2  is a single point\n\t\t\t\t\tif ( seg2Pt ) {\n\n\t\t\t\t\t\tif ( ! point_in_segment_2D_colin( inSeg1Pt1, inSeg1Pt2, inSeg2Pt1 ) )\t\treturn [];\t\t// but not in segment#1\n\t\t\t\t\t\treturn [ inSeg2Pt1 ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// they are collinear segments, which might overlap\n\t\t\t\t\tvar seg1min, seg1max, seg1minVal, seg1maxVal;\n\t\t\t\t\tvar seg2min, seg2max, seg2minVal, seg2maxVal;\n\t\t\t\t\tif ( seg1dx !== 0 ) {\n\n\t\t\t\t\t\t// the segments are NOT on a vertical line\n\t\t\t\t\t\tif ( inSeg1Pt1.x < inSeg1Pt2.x ) {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.x;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.x;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.x;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.x;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( inSeg2Pt1.x < inSeg2Pt2.x ) {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.x;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.x;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.x;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.x;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// the segments are on a vertical line\n\t\t\t\t\t\tif ( inSeg1Pt1.y < inSeg1Pt2.y ) {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt1; seg1minVal = inSeg1Pt1.y;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt2; seg1maxVal = inSeg1Pt2.y;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg1min = inSeg1Pt2; seg1minVal = inSeg1Pt2.y;\n\t\t\t\t\t\t\tseg1max = inSeg1Pt1; seg1maxVal = inSeg1Pt1.y;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( inSeg2Pt1.y < inSeg2Pt2.y ) {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt1; seg2minVal = inSeg2Pt1.y;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt2; seg2maxVal = inSeg2Pt2.y;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tseg2min = inSeg2Pt2; seg2minVal = inSeg2Pt2.y;\n\t\t\t\t\t\t\tseg2max = inSeg2Pt1; seg2maxVal = inSeg2Pt1.y;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( seg1minVal <= seg2minVal ) {\n\n\t\t\t\t\t\tif ( seg1maxVal <  seg2minVal )\treturn [];\n\t\t\t\t\t\tif ( seg1maxVal === seg2minVal )\t{\n\n\t\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\t\treturn [ seg2min ];\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg2min, seg1max ];\n\t\t\t\t\t\treturn\t[ seg2min, seg2max ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( seg1minVal >  seg2maxVal )\treturn [];\n\t\t\t\t\t\tif ( seg1minVal === seg2maxVal )\t{\n\n\t\t\t\t\t\t\tif ( inExcludeAdjacentSegs )\t\treturn [];\n\t\t\t\t\t\t\treturn [ seg1min ];\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( seg1maxVal <= seg2maxVal )\treturn [ seg1min, seg1max ];\n\t\t\t\t\t\treturn\t[ seg1min, seg2max ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction isPointInsideAngle( inVertex, inLegFromPt, inLegToPt, inOtherPt ) {\n\n\t\t\t\t// The order of legs is important\n\n\t\t\t\t// translation of all points, so that Vertex is at (0,0)\n\t\t\t\tvar legFromPtX\t= inLegFromPt.x - inVertex.x,  legFromPtY\t= inLegFromPt.y - inVertex.y;\n\t\t\t\tvar legToPtX\t= inLegToPt.x\t- inVertex.x,  legToPtY\t\t= inLegToPt.y\t- inVertex.y;\n\t\t\t\tvar otherPtX\t= inOtherPt.x\t- inVertex.x,  otherPtY\t\t= inOtherPt.y\t- inVertex.y;\n\n\t\t\t\t// main angle >0: < 180 deg.; 0: 180 deg.; <0: > 180 deg.\n\t\t\t\tvar from2toAngle\t= legFromPtX * legToPtY - legFromPtY * legToPtX;\n\t\t\t\tvar from2otherAngle\t= legFromPtX * otherPtY - legFromPtY * otherPtX;\n\n\t\t\t\tif ( Math.abs( from2toAngle ) > Number.EPSILON ) {\n\n\t\t\t\t\t// angle != 180 deg.\n\n\t\t\t\t\tvar other2toAngle\t\t= otherPtX * legToPtY - otherPtY * legToPtX;\n\t\t\t\t\t// console.log( \"from2to: \" + from2toAngle + \", from2other: \" + from2otherAngle + \", other2to: \" + other2toAngle );\n\n\t\t\t\t\tif ( from2toAngle > 0 ) {\n\n\t\t\t\t\t\t// main angle < 180 deg.\n\t\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) && ( other2toAngle >= 0 ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// main angle > 180 deg.\n\t\t\t\t\t\treturn\t( ( from2otherAngle >= 0 ) || ( other2toAngle >= 0 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// angle == 180 deg.\n\t\t\t\t\t// console.log( \"from2to: 180 deg., from2other: \" + from2otherAngle  );\n\t\t\t\t\treturn\t( from2otherAngle > 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tfunction removeHoles( contour, holes ) {\n\n\t\t\t\tvar shape = contour.concat(); // work on this shape\n\t\t\t\tvar hole;\n\n\t\t\t\tfunction isCutLineInsideAngles( inShapeIdx, inHoleIdx ) {\n\n\t\t\t\t\t// Check if hole point lies within angle around shape point\n\t\t\t\t\tvar lastShapeIdx = shape.length - 1;\n\n\t\t\t\t\tvar prevShapeIdx = inShapeIdx - 1;\n\t\t\t\t\tif ( prevShapeIdx < 0 )\t\t\tprevShapeIdx = lastShapeIdx;\n\n\t\t\t\t\tvar nextShapeIdx = inShapeIdx + 1;\n\t\t\t\t\tif ( nextShapeIdx > lastShapeIdx )\tnextShapeIdx = 0;\n\n\t\t\t\t\tvar insideAngle = isPointInsideAngle( shape[ inShapeIdx ], shape[ prevShapeIdx ], shape[ nextShapeIdx ], hole[ inHoleIdx ] );\n\t\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t\t// console.log( \"Vertex (Shape): \" + inShapeIdx + \", Point: \" + hole[inHoleIdx].x + \"/\" + hole[inHoleIdx].y );\n\t\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if shape point lies within angle around hole point\n\t\t\t\t\tvar lastHoleIdx = hole.length - 1;\n\n\t\t\t\t\tvar prevHoleIdx = inHoleIdx - 1;\n\t\t\t\t\tif ( prevHoleIdx < 0 )\t\t\tprevHoleIdx = lastHoleIdx;\n\n\t\t\t\t\tvar nextHoleIdx = inHoleIdx + 1;\n\t\t\t\t\tif ( nextHoleIdx > lastHoleIdx )\tnextHoleIdx = 0;\n\n\t\t\t\t\tinsideAngle = isPointInsideAngle( hole[ inHoleIdx ], hole[ prevHoleIdx ], hole[ nextHoleIdx ], shape[ inShapeIdx ] );\n\t\t\t\t\tif ( ! insideAngle ) {\n\n\t\t\t\t\t\t// console.log( \"Vertex (Hole): \" + inHoleIdx + \", Point: \" + shape[inShapeIdx].x + \"/\" + shape[inShapeIdx].y );\n\t\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\ttrue;\n\n\t\t\t\t}\n\n\t\t\t\tfunction intersectsShapeEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t\t// checks for intersections with shape edges\n\t\t\t\t\tvar sIdx, nextIdx, intersection;\n\t\t\t\t\tfor ( sIdx = 0; sIdx < shape.length; sIdx ++ ) {\n\n\t\t\t\t\t\tnextIdx = sIdx + 1; nextIdx %= shape.length;\n\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, shape[ sIdx ], shape[ nextIdx ], true );\n\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\tvar indepHoles = [];\n\n\t\t\t\tfunction intersectsHoleEdge( inShapePt, inHolePt ) {\n\n\t\t\t\t\t// checks for intersections with hole edges\n\t\t\t\t\tvar ihIdx, chkHole,\n\t\t\t\t\t\thIdx, nextIdx, intersection;\n\t\t\t\t\tfor ( ihIdx = 0; ihIdx < indepHoles.length; ihIdx ++ ) {\n\n\t\t\t\t\t\tchkHole = holes[ indepHoles[ ihIdx ]];\n\t\t\t\t\t\tfor ( hIdx = 0; hIdx < chkHole.length; hIdx ++ ) {\n\n\t\t\t\t\t\t\tnextIdx = hIdx + 1; nextIdx %= chkHole.length;\n\t\t\t\t\t\t\tintersection = intersect_segments_2D( inShapePt, inHolePt, chkHole[ hIdx ], chkHole[ nextIdx ], true );\n\t\t\t\t\t\t\tif ( intersection.length > 0 )\t\treturn\ttrue;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\treturn\tfalse;\n\n\t\t\t\t}\n\n\t\t\t\tvar holeIndex, shapeIndex,\n\t\t\t\t\tshapePt, holePt,\n\t\t\t\t\tholeIdx, cutKey, failedCuts = [],\n\t\t\t\t\ttmpShape1, tmpShape2,\n\t\t\t\t\ttmpHole1, tmpHole2;\n\n\t\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tindepHoles.push( h );\n\n\t\t\t\t}\n\n\t\t\t\tvar minShapeIndex = 0;\n\t\t\t\tvar counter = indepHoles.length * 2;\n\t\t\t\twhile ( indepHoles.length > 0 ) {\n\n\t\t\t\t\tcounter --;\n\t\t\t\t\tif ( counter < 0 ) {\n\n\t\t\t\t\t\tconsole.log( \"Infinite Loop! Holes left:\" + indepHoles.length + \", Probably Hole outside Shape!\" );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// search for shape-vertex and hole-vertex,\n\t\t\t\t\t// which can be connected without intersections\n\t\t\t\t\tfor ( shapeIndex = minShapeIndex; shapeIndex < shape.length; shapeIndex ++ ) {\n\n\t\t\t\t\t\tshapePt = shape[ shapeIndex ];\n\t\t\t\t\t\tholeIndex\t= - 1;\n\n\t\t\t\t\t\t// search for hole which can be reached without intersections\n\t\t\t\t\t\tfor ( var h = 0; h < indepHoles.length; h ++ ) {\n\n\t\t\t\t\t\t\tholeIdx = indepHoles[ h ];\n\n\t\t\t\t\t\t\t// prevent multiple checks\n\t\t\t\t\t\t\tcutKey = shapePt.x + \":\" + shapePt.y + \":\" + holeIdx;\n\t\t\t\t\t\t\tif ( failedCuts[ cutKey ] !== undefined )\t\t\tcontinue;\n\n\t\t\t\t\t\t\thole = holes[ holeIdx ];\n\t\t\t\t\t\t\tfor ( var h2 = 0; h2 < hole.length; h2 ++ ) {\n\n\t\t\t\t\t\t\t\tholePt = hole[ h2 ];\n\t\t\t\t\t\t\t\tif ( ! isCutLineInsideAngles( shapeIndex, h2 ) )\t\tcontinue;\n\t\t\t\t\t\t\t\tif ( intersectsShapeEdge( shapePt, holePt ) )\t\tcontinue;\n\t\t\t\t\t\t\t\tif ( intersectsHoleEdge( shapePt, holePt ) )\t\tcontinue;\n\n\t\t\t\t\t\t\t\tholeIndex = h2;\n\t\t\t\t\t\t\t\tindepHoles.splice( h, 1 );\n\n\t\t\t\t\t\t\t\ttmpShape1 = shape.slice( 0, shapeIndex + 1 );\n\t\t\t\t\t\t\t\ttmpShape2 = shape.slice( shapeIndex );\n\t\t\t\t\t\t\t\ttmpHole1 = hole.slice( holeIndex );\n\t\t\t\t\t\t\t\ttmpHole2 = hole.slice( 0, holeIndex + 1 );\n\n\t\t\t\t\t\t\t\tshape = tmpShape1.concat( tmpHole1 ).concat( tmpHole2 ).concat( tmpShape2 );\n\n\t\t\t\t\t\t\t\tminShapeIndex = shapeIndex;\n\n\t\t\t\t\t\t\t\t// Debug only, to show the selected cuts\n\t\t\t\t\t\t\t\t// glob_CutLines.push( [ shapePt, holePt ] );\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t\t\tfailedCuts[ cutKey ] = true;\t\t\t// remember failure\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( holeIndex >= 0 )\tbreak;\t\t// hole-vertex found\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn shape; \t\t\t/* shape with no holes */\n\n\t\t\t}\n\n\n\t\t\tvar i, il, f, face,\n\t\t\t\tkey, index,\n\t\t\t\tallPointsMap = {};\n\n\t\t\t// To maintain reference to old shape, one must match coordinates, or offset the indices from original arrays. It's probably easier to do the first.\n\n\t\t\tvar allpoints = contour.concat();\n\n\t\t\tfor ( var h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tArray.prototype.push.apply( allpoints, holes[ h ] );\n\n\t\t\t}\n\n\t\t\t//console.log( \"allpoints\",allpoints, allpoints.length );\n\n\t\t\t// prepare all points map\n\n\t\t\tfor ( i = 0, il = allpoints.length; i < il; i ++ ) {\n\n\t\t\t\tkey = allpoints[ i ].x + \":\" + allpoints[ i ].y;\n\n\t\t\t\tif ( allPointsMap[ key ] !== undefined ) {\n\n\t\t\t\t\tconsole.warn( \"THREE.Shape: Duplicate point\", key );\n\n\t\t\t\t}\n\n\t\t\t\tallPointsMap[ key ] = i;\n\n\t\t\t}\n\n\t\t\t// remove holes by cutting paths to holes and adding them to the shape\n\t\t\tvar shapeWithoutHoles = removeHoles( contour, holes );\n\n\t\t\tvar triangles = THREE.ShapeUtils.triangulate( shapeWithoutHoles, false ); // True returns indices for points of spooled shape\n\t\t\t//console.log( \"triangles\",triangles, triangles.length );\n\n\t\t\t// check all face vertices against all points map\n\n\t\t\tfor ( i = 0, il = triangles.length; i < il; i ++ ) {\n\n\t\t\t\tface = triangles[ i ];\n\n\t\t\t\tfor ( f = 0; f < 3; f ++ ) {\n\n\t\t\t\t\tkey = face[ f ].x + \":\" + face[ f ].y;\n\n\t\t\t\t\tindex = allPointsMap[ key ];\n\n\t\t\t\t\tif ( index !== undefined ) {\n\n\t\t\t\t\t\tface[ f ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn triangles.concat();\n\n\t\t},\n\n\t\tisClockWise: function ( pts ) {\n\n\t\t\treturn THREE.ShapeUtils.area( pts ) < 0;\n\n\t\t},\n\n\t\t// Bezier Curves formulas obtained from\n\t\t// http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n\t\t// Quad Bezier Functions\n\n\t\tb2: ( function () {\n\n\t\t\tfunction b2p0( t, p ) {\n\n\t\t\t\tvar k = 1 - t;\n\t\t\t\treturn k * k * p;\n\n\t\t\t}\n\n\t\t\tfunction b2p1( t, p ) {\n\n\t\t\t\treturn 2 * ( 1 - t ) * t * p;\n\n\t\t\t}\n\n\t\t\tfunction b2p2( t, p ) {\n\n\t\t\t\treturn t * t * p;\n\n\t\t\t}\n\n\t\t\treturn function b2( t, p0, p1, p2 ) {\n\n\t\t\t\treturn b2p0( t, p0 ) + b2p1( t, p1 ) + b2p2( t, p2 );\n\n\t\t\t};\n\n\t\t} )(),\n\n\t\t// Cubic Bezier Functions\n\n\t\tb3: ( function () {\n\n\t\t\tfunction b3p0( t, p ) {\n\n\t\t\t\tvar k = 1 - t;\n\t\t\t\treturn k * k * k * p;\n\n\t\t\t}\n\n\t\t\tfunction b3p1( t, p ) {\n\n\t\t\t\tvar k = 1 - t;\n\t\t\t\treturn 3 * k * k * t * p;\n\n\t\t\t}\n\n\t\t\tfunction b3p2( t, p ) {\n\n\t\t\t\tvar k = 1 - t;\n\t\t\t\treturn 3 * k * t * t * p;\n\n\t\t\t}\n\n\t\t\tfunction b3p3( t, p ) {\n\n\t\t\t\treturn t * t * t * p;\n\n\t\t\t}\n\n\t\t\treturn function b3( t, p0, p1, p2, p3 ) {\n\n\t\t\t\treturn b3p0( t, p0 ) + b3p1( t, p1 ) + b3p2( t, p2 ) + b3p3( t, p3 );\n\n\t\t\t};\n\n\t\t} )()\n\n\t};\n\n\t// File:src/extras/core/Curve.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * Extensible curve object\n\t *\n\t * Some common of Curve methods\n\t * .getPoint(t), getTangent(t)\n\t * .getPointAt(u), getTagentAt(u)\n\t * .getPoints(), .getSpacedPoints()\n\t * .getLength()\n\t * .updateArcLengths()\n\t *\n\t * This following classes subclasses THREE.Curve:\n\t *\n\t * -- 2d classes --\n\t * THREE.LineCurve\n\t * THREE.QuadraticBezierCurve\n\t * THREE.CubicBezierCurve\n\t * THREE.SplineCurve\n\t * THREE.ArcCurve\n\t * THREE.EllipseCurve\n\t *\n\t * -- 3d classes --\n\t * THREE.LineCurve3\n\t * THREE.QuadraticBezierCurve3\n\t * THREE.CubicBezierCurve3\n\t * THREE.SplineCurve3\n\t *\n\t * A series of curves can be represented as a THREE.CurvePath\n\t *\n\t **/\n\n\t/**************************************************************\n\t *\tAbstract Curve base class\n\t **************************************************************/\n\n\tTHREE.Curve = function () {\n\n\t};\n\n\tTHREE.Curve.prototype = {\n\n\t\tconstructor: THREE.Curve,\n\n\t\t// Virtual base class method to overwrite and implement in subclasses\n\t\t//\t- t [0 .. 1]\n\n\t\tgetPoint: function ( t ) {\n\n\t\t\tconsole.warn( \"THREE.Curve: Warning, getPoint() not implemented!\" );\n\t\t\treturn null;\n\n\t\t},\n\n\t\t// Get point at relative position in curve according to arc length\n\t\t// - u [0 .. 1]\n\n\t\tgetPointAt: function ( u ) {\n\n\t\t\tvar t = this.getUtoTmapping( u );\n\t\t\treturn this.getPoint( t );\n\n\t\t},\n\n\t\t// Get sequence of points using getPoint( t )\n\n\t\tgetPoints: function ( divisions ) {\n\n\t\t\tif ( ! divisions ) divisions = 5;\n\n\t\t\tvar d, pts = [];\n\n\t\t\tfor ( d = 0; d <= divisions; d ++ ) {\n\n\t\t\t\tpts.push( this.getPoint( d / divisions ) );\n\n\t\t\t}\n\n\t\t\treturn pts;\n\n\t\t},\n\n\t\t// Get sequence of points using getPointAt( u )\n\n\t\tgetSpacedPoints: function ( divisions ) {\n\n\t\t\tif ( ! divisions ) divisions = 5;\n\n\t\t\tvar d, pts = [];\n\n\t\t\tfor ( d = 0; d <= divisions; d ++ ) {\n\n\t\t\t\tpts.push( this.getPointAt( d / divisions ) );\n\n\t\t\t}\n\n\t\t\treturn pts;\n\n\t\t},\n\n\t\t// Get total curve arc length\n\n\t\tgetLength: function () {\n\n\t\t\tvar lengths = this.getLengths();\n\t\t\treturn lengths[ lengths.length - 1 ];\n\n\t\t},\n\n\t\t// Get list of cumulative segment lengths\n\n\t\tgetLengths: function ( divisions ) {\n\n\t\t\tif ( ! divisions ) divisions = ( this.__arcLengthDivisions ) ? ( this.__arcLengthDivisions ) : 200;\n\n\t\t\tif ( this.cacheArcLengths\n\t\t\t\t&& ( this.cacheArcLengths.length === divisions + 1 )\n\t\t\t\t&& ! this.needsUpdate ) {\n\n\t\t\t\t//console.log( \"cached\", this.cacheArcLengths );\n\t\t\t\treturn this.cacheArcLengths;\n\n\t\t\t}\n\n\t\t\tthis.needsUpdate = false;\n\n\t\t\tvar cache = [];\n\t\t\tvar current, last = this.getPoint( 0 );\n\t\t\tvar p, sum = 0;\n\n\t\t\tcache.push( 0 );\n\n\t\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\t\tcurrent = this.getPoint ( p / divisions );\n\t\t\t\tsum += current.distanceTo( last );\n\t\t\t\tcache.push( sum );\n\t\t\t\tlast = current;\n\n\t\t\t}\n\n\t\t\tthis.cacheArcLengths = cache;\n\n\t\t\treturn cache; // { sums: cache, sum:sum }; Sum is in the last element.\n\n\t\t},\n\n\t\tupdateArcLengths: function() {\n\n\t\t\tthis.needsUpdate = true;\n\t\t\tthis.getLengths();\n\n\t\t},\n\n\t\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\t\tgetUtoTmapping: function ( u, distance ) {\n\n\t\t\tvar arcLengths = this.getLengths();\n\n\t\t\tvar i = 0, il = arcLengths.length;\n\n\t\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\t\tif ( distance ) {\n\n\t\t\t\ttargetArcLength = distance;\n\n\t\t\t} else {\n\n\t\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t\t}\n\n\t\t\t//var time = Date.now();\n\n\t\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\t\tvar low = 0, high = il - 1, comparison;\n\n\t\t\twhile ( low <= high ) {\n\n\t\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\t\tlow = i + 1;\n\n\t\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\t\thigh = i - 1;\n\n\t\t\t\t} else {\n\n\t\t\t\t\thigh = i;\n\t\t\t\t\tbreak;\n\n\t\t\t\t\t// DONE\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ti = high;\n\n\t\t\t//console.log('b' , i, low, high, Date.now()- time);\n\n\t\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\t\tvar t = i / ( il - 1 );\n\t\t\t\treturn t;\n\n\t\t\t}\n\n\t\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\t\tvar lengthBefore = arcLengths[ i ];\n\t\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t\t// determine where we are between the 'before' and 'after' points\n\n\t\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t\t// add that fractional amount to t\n\n\t\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\t\treturn t;\n\n\t\t},\n\n\t\t// Returns a unit vector tangent at t\n\t\t// In case any sub curve does not implement its tangent derivation,\n\t\t// 2 points a small delta apart will be used to find its gradient\n\t\t// which seems to give a reasonable approximation\n\n\t\tgetTangent: function( t ) {\n\n\t\t\tvar delta = 0.0001;\n\t\t\tvar t1 = t - delta;\n\t\t\tvar t2 = t + delta;\n\n\t\t\t// Capping in case of danger\n\n\t\t\tif ( t1 < 0 ) t1 = 0;\n\t\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\t\tvar pt1 = this.getPoint( t1 );\n\t\t\tvar pt2 = this.getPoint( t2 );\n\n\t\t\tvar vec = pt2.clone().sub( pt1 );\n\t\t\treturn vec.normalize();\n\n\t\t},\n\n\t\tgetTangentAt: function ( u ) {\n\n\t\t\tvar t = this.getUtoTmapping( u );\n\t\t\treturn this.getTangent( t );\n\n\t\t}\n\n\t};\n\n\t// TODO: Transformation for Curves?\n\n\t/**************************************************************\n\t *\t3D Curves\n\t **************************************************************/\n\n\t// A Factory method for creating new curve subclasses\n\n\tTHREE.Curve.create = function ( constructor, getPointFunc ) {\n\n\t\tconstructor.prototype = Object.create( THREE.Curve.prototype );\n\t\tconstructor.prototype.constructor = constructor;\n\t\tconstructor.prototype.getPoint = getPointFunc;\n\n\t\treturn constructor;\n\n\t};\n\n\t// File:src/extras/core/CurvePath.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t *\n\t **/\n\n\t/**************************************************************\n\t *\tCurved Path - a curve path is simply a array of connected\n\t *  curves, but retains the api of a curve\n\t **************************************************************/\n\n\tTHREE.CurvePath = function () {\n\n\t\tthis.curves = [];\n\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t};\n\n\tTHREE.CurvePath.prototype = Object.assign( Object.create( THREE.Curve.prototype ), {\n\n\t\tconstructor: THREE.CurvePath,\n\n\t\tadd: function ( curve ) {\n\n\t\t\tthis.curves.push( curve );\n\n\t\t},\n\n\t\tclosePath: function () {\n\n\t\t\t// TODO Test\n\t\t\t// and verify for vector3 (needs to implement equals)\n\t\t\t// Add a line curve if start and end of lines are not connected\n\t\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\t\tthis.curves.push( new THREE.LineCurve( endPoint, startPoint ) );\n\n\t\t\t}\n\n\t\t},\n\n\t\t// To get accurate point with reference to\n\t\t// entire path distance at time t,\n\t\t// following has to be done:\n\n\t\t// 1. Length of each sub path have to be known\n\t\t// 2. Locate and identify type of curve\n\t\t// 3. Get t for the curve\n\t\t// 4. Return curve.getPointAt(t')\n\n\t\tgetPoint: function ( t ) {\n\n\t\t\tvar d = t * this.getLength();\n\t\t\tvar curveLengths = this.getCurveLengths();\n\t\t\tvar i = 0;\n\n\t\t\t// To think about boundaries points.\n\n\t\t\twhile ( i < curveLengths.length ) {\n\n\t\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\t\tvar u = 1 - diff / curve.getLength();\n\n\t\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t\t}\n\n\t\t\t\ti ++;\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t\t},\n\n\t\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t\t// getPoint() depends on getLength\n\n\t\tgetLength: function () {\n\n\t\t\tvar lens = this.getCurveLengths();\n\t\t\treturn lens[ lens.length - 1 ];\n\n\t\t},\n\n\t\t// cacheLengths must be recalculated.\n\t\tupdateArcLengths: function () {\n\n\t\t\tthis.needsUpdate = true;\n\t\t\tthis.cacheLengths = null;\n\t\t\tthis.getLengths();\n\n\t\t},\n\n\t\t// Compute lengths and cache them\n\t\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\t\tgetCurveLengths: function () {\n\n\t\t\t// We use cache values if curves and cache array are same length\n\n\t\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\t\treturn this.cacheLengths;\n\n\t\t\t}\n\n\t\t\t// Get length of sub-curve\n\t\t\t// Push sums into cached array\n\n\t\t\tvar lengths = [], sums = 0;\n\n\t\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\t\tsums += this.curves[ i ].getLength();\n\t\t\t\tlengths.push( sums );\n\n\t\t\t}\n\n\t\t\tthis.cacheLengths = lengths;\n\n\t\t\treturn lengths;\n\n\t\t},\n\n\t\t/**************************************************************\n\t\t *\tCreate Geometries Helpers\n\t\t **************************************************************/\n\n\t\t/// Generate geometry from path points (for Line or Points objects)\n\n\t\tcreatePointsGeometry: function ( divisions ) {\n\n\t\t\tvar pts = this.getPoints( divisions );\n\t\t\treturn this.createGeometry( pts );\n\n\t\t},\n\n\t\t// Generate geometry from equidistant sampling along the path\n\n\t\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\t\tvar pts = this.getSpacedPoints( divisions );\n\t\t\treturn this.createGeometry( pts );\n\n\t\t},\n\n\t\tcreateGeometry: function ( points ) {\n\n\t\t\tvar geometry = new THREE.Geometry();\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tvar point = points[ i ];\n\t\t\t\tgeometry.vertices.push( new THREE.Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t\t}\n\n\t\t\treturn geometry;\n\n\t\t}\n\n\t} );\n\n\t// File:src/extras/core/Font.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.Font = function ( data ) {\n\n\t\tthis.data = data;\n\n\t};\n\n\tObject.assign( THREE.Font.prototype, {\n\n\t\tgenerateShapes: function ( text, size, divisions ) {\n\n\t\t\tfunction createPaths( text ) {\n\n\t\t\t\tvar chars = String( text ).split( '' );\n\t\t\t\tvar scale = size / data.resolution;\n\t\t\t\tvar offset = 0;\n\n\t\t\t\tvar paths = [];\n\n\t\t\t\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\t\t\t\tvar ret = createPath( chars[ i ], scale, offset );\n\t\t\t\t\toffset += ret.offset;\n\n\t\t\t\t\tpaths.push( ret.path );\n\n\t\t\t\t}\n\n\t\t\t\treturn paths;\n\n\t\t\t}\n\n\t\t\tfunction createPath( c, scale, offset ) {\n\n\t\t\t\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\n\n\t\t\t\tif ( ! glyph ) return;\n\n\t\t\t\tvar path = new THREE.Path();\n\n\t\t\t\tvar pts = [], b2 = THREE.ShapeUtils.b2, b3 = THREE.ShapeUtils.b3;\n\t\t\t\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\n\n\t\t\t\tif ( glyph.o ) {\n\n\t\t\t\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\t\t\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\t\t\t\tvar action = outline[ i ++ ];\n\n\t\t\t\t\t\tswitch ( action ) {\n\n\t\t\t\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\t\t\t\tx = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\ty = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\t\t\t\tcpx  = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\tcpy  = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\t\tb2( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\t\t\t\t\tb2( t, cpy0, cpy1, cpy );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\t\t\t\tcpx  = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\tcpy  = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\tcpy1 = outline[ i ++ ] * scale;\n\t\t\t\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offset;\n\t\t\t\t\t\t\t\tcpy2 = outline[ i ++ ] * scale;\n\n\t\t\t\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\t\t\t\tlaste = pts[ pts.length - 1 ];\n\n\t\t\t\t\t\t\t\tif ( laste ) {\n\n\t\t\t\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t\t\t\t\tfor ( var i2 = 1; i2 <= divisions; i2 ++ ) {\n\n\t\t\t\t\t\t\t\t\t\tvar t = i2 / divisions;\n\t\t\t\t\t\t\t\t\t\tb3( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\t\t\t\t\tb3( t, cpy0, cpy1, cpy2, cpy );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn { offset: glyph.ha * scale, path: path };\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( size === undefined ) size = 100;\n\t\t\tif ( divisions === undefined ) divisions = 4;\n\n\t\t\tvar data = this.data;\n\n\t\t\tvar paths = createPaths( text );\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t} );\n\n\t// File:src/extras/core/Path.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * Creates free form 2d path using series of points, lines or curves.\n\t *\n\t **/\n\n\tTHREE.Path = function ( points ) {\n\n\t\tTHREE.CurvePath.call( this );\n\n\t\tthis.actions = [];\n\n\t\tif ( points ) {\n\n\t\t\tthis.fromPoints( points );\n\n\t\t}\n\n\t};\n\n\tTHREE.Path.prototype = Object.assign( Object.create( THREE.CurvePath.prototype ), {\n\n\t\tconstructor: THREE.Path,\n\n\t\t// TODO Clean up PATH API\n\n\t\t// Create path using straight lines to connect all points\n\t\t// - vectors: array of Vector2\n\n\t\tfromPoints: function ( vectors ) {\n\n\t\t\tthis.moveTo( vectors[ 0 ].x, vectors[ 0 ].y );\n\n\t\t\tfor ( var i = 1, l = vectors.length; i < l; i ++ ) {\n\n\t\t\t\tthis.lineTo( vectors[ i ].x, vectors[ i ].y );\n\n\t\t\t}\n\n\t\t},\n\n\t\tmoveTo: function ( x, y ) {\n\n\t\t\tthis.actions.push( { action: 'moveTo', args: [ x, y ] } );\n\n\t\t},\n\n\t\tlineTo: function ( x, y ) {\n\n\t\t\tvar lastargs = this.actions[ this.actions.length - 1 ].args;\n\n\t\t\tvar x0 = lastargs[ lastargs.length - 2 ];\n\t\t\tvar y0 = lastargs[ lastargs.length - 1 ];\n\n\t\t\tvar curve = new THREE.LineCurve( new THREE.Vector2( x0, y0 ), new THREE.Vector2( x, y ) );\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.actions.push( { action: 'lineTo', args: [ x, y ] } );\n\n\t\t},\n\n\t\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\t\tvar lastargs = this.actions[ this.actions.length - 1 ].args;\n\n\t\t\tvar x0 = lastargs[ lastargs.length - 2 ];\n\t\t\tvar y0 = lastargs[ lastargs.length - 1 ];\n\n\t\t\tvar curve = new THREE.QuadraticBezierCurve(\n\t\t\t\tnew THREE.Vector2( x0, y0 ),\n\t\t\t\tnew THREE.Vector2( aCPx, aCPy ),\n\t\t\t\tnew THREE.Vector2( aX, aY )\n\t\t\t);\n\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.actions.push( { action: 'quadraticCurveTo', args: [ aCPx, aCPy, aX, aY ] } );\n\n\t\t},\n\n\t\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\t\tvar lastargs = this.actions[ this.actions.length - 1 ].args;\n\n\t\t\tvar x0 = lastargs[ lastargs.length - 2 ];\n\t\t\tvar y0 = lastargs[ lastargs.length - 1 ];\n\n\t\t\tvar curve = new THREE.CubicBezierCurve(\n\t\t\t\tnew THREE.Vector2( x0, y0 ),\n\t\t\t\tnew THREE.Vector2( aCP1x, aCP1y ),\n\t\t\t\tnew THREE.Vector2( aCP2x, aCP2y ),\n\t\t\t\tnew THREE.Vector2( aX, aY )\n\t\t\t);\n\n\t\t\tthis.curves.push( curve );\n\n\t\t\tthis.actions.push( { action: 'bezierCurveTo', args: [ aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ] } );\n\n\t\t},\n\n\t\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\t\tvar args = Array.prototype.slice.call( arguments );\n\n\t\t\tvar lastargs = this.actions[ this.actions.length - 1 ].args;\n\n\t\t\tvar x0 = lastargs[ lastargs.length - 2 ];\n\t\t\tvar y0 = lastargs[ lastargs.length - 1 ];\n\n\t\t\tvar npts = [ new THREE.Vector2( x0, y0 ) ];\n\t\t\tArray.prototype.push.apply( npts, pts );\n\n\t\t\tvar curve = new THREE.SplineCurve( npts );\n\t\t\tthis.curves.push( curve );\n\n\t\t\tvar lastPoint = pts[ pts.length - 1 ];\n\t\t\targs.push( lastPoint.x );\n\t\t\targs.push( lastPoint.y );\n\n\t\t\tthis.actions.push( { action: 'splineThru', args: args } );\n\n\t\t},\n\n\t\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\t\tvar lastargs = this.actions[ this.actions.length - 1 ].args;\n\t\t\tvar x0 = lastargs[ lastargs.length - 2 ];\n\t\t\tvar y0 = lastargs[ lastargs.length - 1 ];\n\n\t\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\t},\n\n\t\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\t},\n\n\t\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\t\tvar lastargs = this.actions[ this.actions.length - 1 ].args;\n\t\t\tvar x0 = lastargs[ lastargs.length - 2 ];\n\t\t\tvar y0 = lastargs[ lastargs.length - 1 ];\n\n\t\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\t},\n\n\t\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\t\tvar args = [\n\t\t\t\taX, aY,\n\t\t\t\txRadius, yRadius,\n\t\t\t\taStartAngle, aEndAngle,\n\t\t\t\taClockwise,\n\t\t\t\taRotation || 0 // aRotation is optional.\n\t\t\t];\n\n\t\t\tvar curve = new THREE.EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\t\t\tthis.curves.push( curve );\n\n\t\t\tvar lastPoint = curve.getPoint( 1 );\n\t\t\targs.push( lastPoint.x );\n\t\t\targs.push( lastPoint.y );\n\n\t\t\tthis.actions.push( { action: 'ellipse', args: args } );\n\n\t\t},\n\n\t\tgetSpacedPoints: function ( divisions ) {\n\n\t\t\tif ( ! divisions ) divisions = 40;\n\n\t\t\tvar points = [];\n\n\t\t\tfor ( var i = 0; i < divisions; i ++ ) {\n\n\t\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t\t\t//if ( !this.getPoint( i / divisions ) ) throw \"DIE\";\n\n\t\t\t}\n\n\t\t\tif ( this.autoClose ) {\n\n\t\t\t\tpoints.push( points[ 0 ] );\n\n\t\t\t}\n\n\t\t\treturn points;\n\n\t\t},\n\n\t\tgetPoints: function ( divisions ) {\n\n\t\t\tdivisions = divisions || 12;\n\n\t\t\tvar b2 = THREE.ShapeUtils.b2;\n\t\t\tvar b3 = THREE.ShapeUtils.b3;\n\n\t\t\tvar points = [];\n\n\t\t\tvar cpx, cpy, cpx2, cpy2, cpx1, cpy1, cpx0, cpy0,\n\t\t\t\tlaste, tx, ty;\n\n\t\t\tfor ( var i = 0, l = this.actions.length; i < l; i ++ ) {\n\n\t\t\t\tvar item = this.actions[ i ];\n\n\t\t\t\tvar action = item.action;\n\t\t\t\tvar args = item.args;\n\n\t\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'moveTo':\n\n\t\t\t\t\tpoints.push( new THREE.Vector2( args[ 0 ], args[ 1 ] ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'lineTo':\n\n\t\t\t\t\tpoints.push( new THREE.Vector2( args[ 0 ], args[ 1 ] ) );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'quadraticCurveTo':\n\n\t\t\t\t\tcpx  = args[ 2 ];\n\t\t\t\t\tcpy  = args[ 3 ];\n\n\t\t\t\t\tcpx1 = args[ 0 ];\n\t\t\t\t\tcpy1 = args[ 1 ];\n\n\t\t\t\t\tif ( points.length > 0 ) {\n\n\t\t\t\t\t\tlaste = points[ points.length - 1 ];\n\n\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlaste = this.actions[ i - 1 ].args;\n\n\t\t\t\t\t\tcpx0 = laste[ laste.length - 2 ];\n\t\t\t\t\t\tcpy0 = laste[ laste.length - 1 ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var j = 1; j <= divisions; j ++ ) {\n\n\t\t\t\t\t\tvar t = j / divisions;\n\n\t\t\t\t\t\ttx = b2( t, cpx0, cpx1, cpx );\n\t\t\t\t\t\tty = b2( t, cpy0, cpy1, cpy );\n\n\t\t\t\t\t\tpoints.push( new THREE.Vector2( tx, ty ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bezierCurveTo':\n\n\t\t\t\t\tcpx  = args[ 4 ];\n\t\t\t\t\tcpy  = args[ 5 ];\n\n\t\t\t\t\tcpx1 = args[ 0 ];\n\t\t\t\t\tcpy1 = args[ 1 ];\n\n\t\t\t\t\tcpx2 = args[ 2 ];\n\t\t\t\t\tcpy2 = args[ 3 ];\n\n\t\t\t\t\tif ( points.length > 0 ) {\n\n\t\t\t\t\t\tlaste = points[ points.length - 1 ];\n\n\t\t\t\t\t\tcpx0 = laste.x;\n\t\t\t\t\t\tcpy0 = laste.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlaste = this.actions[ i - 1 ].args;\n\n\t\t\t\t\t\tcpx0 = laste[ laste.length - 2 ];\n\t\t\t\t\t\tcpy0 = laste[ laste.length - 1 ];\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\tfor ( var j = 1; j <= divisions; j ++ ) {\n\n\t\t\t\t\t\tvar t = j / divisions;\n\n\t\t\t\t\t\ttx = b3( t, cpx0, cpx1, cpx2, cpx );\n\t\t\t\t\t\tty = b3( t, cpy0, cpy1, cpy2, cpy );\n\n\t\t\t\t\t\tpoints.push( new THREE.Vector2( tx, ty ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'splineThru':\n\n\t\t\t\t\tlaste = this.actions[ i - 1 ].args;\n\n\t\t\t\t\tvar last = new THREE.Vector2( laste[ laste.length - 2 ], laste[ laste.length - 1 ] );\n\t\t\t\t\tvar spts = [ last ];\n\n\t\t\t\t\tvar n = divisions * args[ 0 ].length;\n\n\t\t\t\t\tspts = spts.concat( args[ 0 ] );\n\n\t\t\t\t\tvar spline = new THREE.SplineCurve( spts );\n\n\t\t\t\t\tfor ( var j = 1; j <= n; j ++ ) {\n\n\t\t\t\t\t\tpoints.push( spline.getPointAt( j / n ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'arc':\n\n\t\t\t\t\tvar aX = args[ 0 ], aY = args[ 1 ],\n\t\t\t\t\t\taRadius = args[ 2 ],\n\t\t\t\t\t\taStartAngle = args[ 3 ], aEndAngle = args[ 4 ],\n\t\t\t\t\t\taClockwise = !! args[ 5 ];\n\n\t\t\t\t\tvar deltaAngle = aEndAngle - aStartAngle;\n\t\t\t\t\tvar angle;\n\t\t\t\t\tvar tdivisions = divisions * 2;\n\n\t\t\t\t\tfor ( var j = 1; j <= tdivisions; j ++ ) {\n\n\t\t\t\t\t\tvar t = j / tdivisions;\n\n\t\t\t\t\t\tif ( ! aClockwise ) {\n\n\t\t\t\t\t\t\tt = 1 - t;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tangle = aStartAngle + t * deltaAngle;\n\n\t\t\t\t\t\ttx = aX + aRadius * Math.cos( angle );\n\t\t\t\t\t\tty = aY + aRadius * Math.sin( angle );\n\n\t\t\t\t\t\t//console.log('t', t, 'angle', angle, 'tx', tx, 'ty', ty);\n\n\t\t\t\t\t\tpoints.push( new THREE.Vector2( tx, ty ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//console.log(points);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'ellipse':\n\n\t\t\t\t\tvar aX = args[ 0 ], aY = args[ 1 ],\n\t\t\t\t\t\txRadius = args[ 2 ],\n\t\t\t\t\t\tyRadius = args[ 3 ],\n\t\t\t\t\t\taStartAngle = args[ 4 ], aEndAngle = args[ 5 ],\n\t\t\t\t\t\taClockwise = !! args[ 6 ],\n\t\t\t\t\t\taRotation = args[ 7 ];\n\n\n\t\t\t\t\tvar deltaAngle = aEndAngle - aStartAngle;\n\t\t\t\t\tvar angle;\n\t\t\t\t\tvar tdivisions = divisions * 2;\n\n\t\t\t\t\tvar cos, sin;\n\t\t\t\t\tif ( aRotation !== 0 ) {\n\n\t\t\t\t\t\tcos = Math.cos( aRotation );\n\t\t\t\t\t\tsin = Math.sin( aRotation );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var j = 1; j <= tdivisions; j ++ ) {\n\n\t\t\t\t\t\tvar t = j / tdivisions;\n\n\t\t\t\t\t\tif ( ! aClockwise ) {\n\n\t\t\t\t\t\t\tt = 1 - t;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tangle = aStartAngle + t * deltaAngle;\n\n\t\t\t\t\t\ttx = aX + xRadius * Math.cos( angle );\n\t\t\t\t\t\tty = aY + yRadius * Math.sin( angle );\n\n\t\t\t\t\t\tif ( aRotation !== 0 ) {\n\n\t\t\t\t\t\t\tvar x = tx, y = ty;\n\n\t\t\t\t\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\t\t\t\t\ttx = ( x - aX ) * cos - ( y - aY ) * sin + aX;\n\t\t\t\t\t\t\tty = ( x - aX ) * sin + ( y - aY ) * cos + aY;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//console.log('t', t, 'angle', angle, 'tx', tx, 'ty', ty);\n\n\t\t\t\t\t\tpoints.push( new THREE.Vector2( tx, ty ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//console.log(points);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t} // end switch\n\n\t\t\t}\n\n\n\n\t\t\t// Normalize to remove the closing point by default.\n\t\t\tvar lastPoint = points[ points.length - 1 ];\n\t\t\tif ( Math.abs( lastPoint.x - points[ 0 ].x ) < Number.EPSILON &&\n\t\t\t\t\t Math.abs( lastPoint.y - points[ 0 ].y ) < Number.EPSILON )\n\t\t\t\tpoints.splice( points.length - 1, 1 );\n\n\t\t\tif ( this.autoClose ) {\n\n\t\t\t\tpoints.push( points[ 0 ] );\n\n\t\t\t}\n\n\t\t\treturn points;\n\n\t\t},\n\n\t\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\t\tfunction extractSubpaths( inActions ) {\n\n\t\t\t\tvar subPaths = [], lastPath = new THREE.Path();\n\n\t\t\t\tfor ( var i = 0, l = inActions.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar item = inActions[ i ];\n\n\t\t\t\t\tvar args = item.args;\n\t\t\t\t\tvar action = item.action;\n\n\t\t\t\t\tif ( action === 'moveTo' ) {\n\n\t\t\t\t\t\tif ( lastPath.actions.length !== 0 ) {\n\n\t\t\t\t\t\t\tsubPaths.push( lastPath );\n\t\t\t\t\t\t\tlastPath = new THREE.Path();\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlastPath[ action ].apply( lastPath, args );\n\n\t\t\t\t}\n\n\t\t\t\tif ( lastPath.actions.length !== 0 ) {\n\n\t\t\t\t\tsubPaths.push( lastPath );\n\n\t\t\t\t}\n\n\t\t\t\t// console.log(subPaths);\n\n\t\t\t\treturn\tsubPaths;\n\n\t\t\t}\n\n\t\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\t\tvar shapes = [];\n\n\t\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\t\tvar tmpShape = new THREE.Shape();\n\t\t\t\t\ttmpShape.actions = tmpPath.actions;\n\t\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t\t}\n\n\t\t\t\t//console.log(\"shape\", shapes);\n\n\t\t\t\treturn shapes;\n\n\t\t\t}\n\n\t\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\t\tvar inside = false;\n\t\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\t\tvar edgeLowPt  = inPolygon[ p ];\n\t\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t\t// not parallel\n\t\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\t\tedgeLowPt  = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// parallel or collinear\n\t\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t\t// continue;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn\tinside;\n\n\t\t\t}\n\n\t\t\tvar isClockWise = THREE.ShapeUtils.isClockWise;\n\n\t\t\tvar subPaths = extractSubpaths( this.actions );\n\t\t\tif ( subPaths.length === 0 ) return [];\n\n\t\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\t\tif ( subPaths.length === 1 ) {\n\n\t\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\t\ttmpShape = new THREE.Shape();\n\t\t\t\ttmpShape.actions = tmpPath.actions;\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\t\tshapes.push( tmpShape );\n\t\t\t\treturn shapes;\n\n\t\t\t}\n\n\t\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\t\tvar betterShapeHoles = [];\n\t\t\tvar newShapes = [];\n\t\t\tvar newShapeHoles = [];\n\t\t\tvar mainIdx = 0;\n\t\t\tvar tmpPoints;\n\n\t\t\tnewShapes[ mainIdx ] = undefined;\n\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\t\ttmpPath = subPaths[ i ];\n\t\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\t\tif ( solid ) {\n\n\t\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\t\tnewShapes[ mainIdx ] = { s: new THREE.Shape(), p: tmpPoints };\n\t\t\t\t\tnewShapes[ mainIdx ].s.actions = tmpPath.actions;\n\t\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t\t//console.log('cw', i);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t\t//console.log('ccw', i);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\t\tif ( newShapes.length > 1 ) {\n\n\t\t\t\tvar ambiguous = false;\n\t\t\t\tvar toChange = [];\n\n\t\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar tmpHoles;\n\n\t\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\t\tshapes.push( tmpShape );\n\t\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//console.log(\"shape\", shapes);\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t} );\n\n\t// File:src/extras/core/Shape.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * Defines a 2d shape plane using paths.\n\t **/\n\n\t// STEP 1 Create a path.\n\t// STEP 2 Turn path into shape.\n\t// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n\t// STEP 3a - Extract points from each shape, turn to vertices\n\t// STEP 3b - Triangulate each shape, add faces.\n\n\tTHREE.Shape = function () {\n\n\t\tTHREE.Path.apply( this, arguments );\n\n\t\tthis.holes = [];\n\n\t};\n\n\tTHREE.Shape.prototype = Object.assign( Object.create( THREE.Path.prototype ), {\n\n\t\tconstructor: THREE.Shape,\n\n\t\t// Convenience method to return ExtrudeGeometry\n\n\t\textrude: function ( options ) {\n\n\t\t\treturn new THREE.ExtrudeGeometry( this, options );\n\n\t\t},\n\n\t\t// Convenience method to return ShapeGeometry\n\n\t\tmakeGeometry: function ( options ) {\n\n\t\t\treturn new THREE.ShapeGeometry( this, options );\n\n\t\t},\n\n\t\tgetPointsHoles: function ( divisions ) {\n\n\t\t\tvar holesPts = [];\n\n\t\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t\t}\n\n\t\t\treturn holesPts;\n\n\t\t},\n\n\t\t// Get points of shape and holes (keypoints based on segments parameter)\n\n\t\textractAllPoints: function ( divisions ) {\n\n\t\t\treturn {\n\n\t\t\t\tshape: this.getPoints( divisions ),\n\t\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t\t};\n\n\t\t},\n\n\t\textractPoints: function ( divisions ) {\n\n\t\t\treturn this.extractAllPoints( divisions );\n\n\t\t}\n\n\t} );\n\n\t// File:src/extras/curves/LineCurve.js\n\n\t/**************************************************************\n\t *\tLine\n\t **************************************************************/\n\n\tTHREE.LineCurve = function ( v1, v2 ) {\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t};\n\n\tTHREE.LineCurve.prototype = Object.create( THREE.Curve.prototype );\n\tTHREE.LineCurve.prototype.constructor = THREE.LineCurve;\n\n\tTHREE.LineCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar point = this.v2.clone().sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\treturn point;\n\n\t};\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\n\tTHREE.LineCurve.prototype.getPointAt = function ( u ) {\n\n\t\treturn this.getPoint( u );\n\n\t};\n\n\tTHREE.LineCurve.prototype.getTangent = function( t ) {\n\n\t\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\t\treturn tangent.normalize();\n\n\t};\n\n\t// File:src/extras/curves/QuadraticBezierCurve.js\n\n\t/**************************************************************\n\t *\tQuadratic Bezier curve\n\t **************************************************************/\n\n\n\tTHREE.QuadraticBezierCurve = function ( v0, v1, v2 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t};\n\n\tTHREE.QuadraticBezierCurve.prototype = Object.create( THREE.Curve.prototype );\n\tTHREE.QuadraticBezierCurve.prototype.constructor = THREE.QuadraticBezierCurve;\n\n\n\tTHREE.QuadraticBezierCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar b2 = THREE.ShapeUtils.b2;\n\n\t\treturn new THREE.Vector2(\n\t\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\tb2( t, this.v0.y, this.v1.y, this.v2.y )\n\t\t);\n\n\t};\n\n\n\tTHREE.QuadraticBezierCurve.prototype.getTangent = function( t ) {\n\n\t\tvar tangentQuadraticBezier = THREE.CurveUtils.tangentQuadraticBezier;\n\n\t\treturn new THREE.Vector2(\n\t\t\ttangentQuadraticBezier( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\ttangentQuadraticBezier( t, this.v0.y, this.v1.y, this.v2.y )\n\t\t).normalize();\n\n\t};\n\n\t// File:src/extras/curves/CubicBezierCurve.js\n\n\t/**************************************************************\n\t *\tCubic Bezier curve\n\t **************************************************************/\n\n\tTHREE.CubicBezierCurve = function ( v0, v1, v2, v3 ) {\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t};\n\n\tTHREE.CubicBezierCurve.prototype = Object.create( THREE.Curve.prototype );\n\tTHREE.CubicBezierCurve.prototype.constructor = THREE.CubicBezierCurve;\n\n\tTHREE.CubicBezierCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar b3 = THREE.ShapeUtils.b3;\n\n\t\treturn new THREE.Vector2( \n\t\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t\t);\n\n\t};\n\n\tTHREE.CubicBezierCurve.prototype.getTangent = function( t ) {\n\n\t\tvar tangentCubicBezier = THREE.CurveUtils.tangentCubicBezier;\n\n\t\treturn new THREE.Vector2( \n\t\t\ttangentCubicBezier( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\ttangentCubicBezier( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y )\n\t\t).normalize();\n\n\t};\n\n\t// File:src/extras/curves/SplineCurve.js\n\n\t/**************************************************************\n\t *\tSpline curve\n\t **************************************************************/\n\n\tTHREE.SplineCurve = function ( points /* array of Vector2 */ ) {\n\n\t\tthis.points = ( points == undefined ) ? [] : points;\n\n\t};\n\n\tTHREE.SplineCurve.prototype = Object.create( THREE.Curve.prototype );\n\tTHREE.SplineCurve.prototype.constructor = THREE.SplineCurve;\n\n\tTHREE.SplineCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar points = this.points;\n\t\tvar point = ( points.length - 1 ) * t;\n\n\t\tvar intPoint = Math.floor( point );\n\t\tvar weight = point - intPoint;\n\n\t\tvar point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tvar point1 = points[ intPoint ];\n\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tvar interpolate = THREE.CurveUtils.interpolate;\n\n\t\treturn new THREE.Vector2(\n\t\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight )\n\t\t);\n\n\t};\n\n\t// File:src/extras/curves/EllipseCurve.js\n\n\t/**************************************************************\n\t *\tEllipse curve\n\t **************************************************************/\n\n\tTHREE.EllipseCurve = function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\t\t\n\t\tthis.aRotation = aRotation || 0;\n\n\t};\n\n\tTHREE.EllipseCurve.prototype = Object.create( THREE.Curve.prototype );\n\tTHREE.EllipseCurve.prototype.constructor = THREE.EllipseCurve;\n\n\tTHREE.EllipseCurve.prototype.getPoint = function ( t ) {\n\n\t\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\n\t\tif ( deltaAngle < 0 ) deltaAngle += Math.PI * 2;\n\t\tif ( deltaAngle > Math.PI * 2 ) deltaAngle -= Math.PI * 2;\n\n\t\tvar angle;\n\n\t\tif ( this.aClockwise === true ) {\n\n\t\t\tangle = this.aEndAngle + ( 1 - t ) * ( Math.PI * 2 - deltaAngle );\n\n\t\t} else {\n\n\t\t\tangle = this.aStartAngle + t * deltaAngle;\n\n\t\t}\n\t\t\n\t\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\t\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tvar cos = Math.cos( this.aRotation );\n\t\t\tvar sin = Math.sin( this.aRotation );\n\n\t\t\tvar tx = x, ty = y;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = ( tx - this.aX ) * cos - ( ty - this.aY ) * sin + this.aX;\n\t\t\ty = ( tx - this.aX ) * sin + ( ty - this.aY ) * cos + this.aY;\n\n\t\t}\n\n\t\treturn new THREE.Vector2( x, y );\n\n\t};\n\n\t// File:src/extras/curves/ArcCurve.js\n\n\t/**************************************************************\n\t *\tArc curve\n\t **************************************************************/\n\n\tTHREE.ArcCurve = function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tTHREE.EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t};\n\n\tTHREE.ArcCurve.prototype = Object.create( THREE.EllipseCurve.prototype );\n\tTHREE.ArcCurve.prototype.constructor = THREE.ArcCurve;\n\n\t// File:src/extras/curves/LineCurve3.js\n\n\t/**************************************************************\n\t *\tLine3D\n\t **************************************************************/\n\n\tTHREE.LineCurve3 = THREE.Curve.create(\n\n\t\tfunction ( v1, v2 ) {\n\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar vector = new THREE.Vector3();\n\n\t\t\tvector.subVectors( this.v2, this.v1 ); // diff\n\t\t\tvector.multiplyScalar( t );\n\t\t\tvector.add( this.v1 );\n\n\t\t\treturn vector;\n\n\t\t}\n\n\t);\n\n\t// File:src/extras/curves/QuadraticBezierCurve3.js\n\n\t/**************************************************************\n\t *\tQuadratic Bezier 3D curve\n\t **************************************************************/\n\n\tTHREE.QuadraticBezierCurve3 = THREE.Curve.create(\n\n\t\tfunction ( v0, v1, v2 ) {\n\n\t\t\tthis.v0 = v0;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar b2 = THREE.ShapeUtils.b2;\t\t\n\n\t\t\treturn new THREE.Vector3(\n\t\t\t\tb2( t, this.v0.x, this.v1.x, this.v2.x ),\n\t\t\t\tb2( t, this.v0.y, this.v1.y, this.v2.y ),\n\t\t\t\tb2( t, this.v0.z, this.v1.z, this.v2.z )\n\t\t\t);\n\n\t\t}\n\n\t);\n\n\t// File:src/extras/curves/CubicBezierCurve3.js\n\n\t/**************************************************************\n\t *\tCubic Bezier 3D curve\n\t **************************************************************/\n\n\tTHREE.CubicBezierCurve3 = THREE.Curve.create(\n\n\t\tfunction ( v0, v1, v2, v3 ) {\n\n\t\t\tthis.v0 = v0;\n\t\t\tthis.v1 = v1;\n\t\t\tthis.v2 = v2;\n\t\t\tthis.v3 = v3;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar b3 = THREE.ShapeUtils.b3;\n\n\t\t\treturn new THREE.Vector3(\n\t\t\t\tb3( t, this.v0.x, this.v1.x, this.v2.x, this.v3.x ),\n\t\t\t\tb3( t, this.v0.y, this.v1.y, this.v2.y, this.v3.y ),\n\t\t\t\tb3( t, this.v0.z, this.v1.z, this.v2.z, this.v3.z )\n\t\t\t);\n\n\t\t}\n\n\t);\n\n\t// File:src/extras/curves/SplineCurve3.js\n\n\t/**************************************************************\n\t *\tSpline 3D curve\n\t **************************************************************/\n\n\n\tTHREE.SplineCurve3 = THREE.Curve.create(\n\n\t\tfunction ( points /* array of Vector3 */ ) {\n\n\t\t\tconsole.warn( 'THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3' );\n\t\t\tthis.points = ( points == undefined ) ? [] : points;\n\n\t\t},\n\n\t\tfunction ( t ) {\n\n\t\t\tvar points = this.points;\n\t\t\tvar point = ( points.length - 1 ) * t;\n\n\t\t\tvar intPoint = Math.floor( point );\n\t\t\tvar weight = point - intPoint;\n\n\t\t\tvar point0 = points[ intPoint == 0 ? intPoint : intPoint - 1 ];\n\t\t\tvar point1 = points[ intPoint ];\n\t\t\tvar point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\t\tvar point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\t\tvar interpolate = THREE.CurveUtils.interpolate;\n\n\t\t\treturn new THREE.Vector3(\n\t\t\t\tinterpolate( point0.x, point1.x, point2.x, point3.x, weight ),\n\t\t\t\tinterpolate( point0.y, point1.y, point2.y, point3.y, weight ),\n\t\t\t\tinterpolate( point0.z, point1.z, point2.z, point3.z, weight )\n\t\t\t);\n\n\t\t}\n\n\t);\n\n\t// File:src/extras/curves/CatmullRomCurve3.js\n\n\t/**\n\t * @author zz85 https://github.com/zz85\n\t *\n\t * Centripetal CatmullRom Curve - which is useful for avoiding\n\t * cusps and self-intersections in non-uniform catmull rom curves.\n\t * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n\t *\n\t * curve.type accepts centripetal(default), chordal and catmullrom\n\t * curve.tension is used for catmullrom which defaults to 0.5\n\t */\n\n\tTHREE.CatmullRomCurve3 = ( function() {\n\n\t\tvar\n\t\t\ttmp = new THREE.Vector3(),\n\t\t\tpx = new CubicPoly(),\n\t\t\tpy = new CubicPoly(),\n\t\t\tpz = new CubicPoly();\n\n\t\t/*\n\t\tBased on an optimized c++ solution in\n\t\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t\t - http://ideone.com/NoEbVM\n\n\t\tThis CubicPoly class could be used for reusing some variables and calculations,\n\t\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\t\twhich can be placed in CurveUtils.\n\t\t*/\n\n\t\tfunction CubicPoly() {\n\n\t\t}\n\n\t\t/*\n\t\t * Compute coefficients for a cubic polynomial\n\t\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t\t * such that\n\t\t *   p(0) = x0, p(1) = x1\n\t\t *  and\n\t\t *   p'(0) = t0, p'(1) = t1.\n\t\t */\n\t\tCubicPoly.prototype.init = function( x0, x1, t0, t1 ) {\n\n\t\t\tthis.c0 = x0;\n\t\t\tthis.c1 = t0;\n\t\t\tthis.c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\t\tthis.c3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t\t};\n\n\t\tCubicPoly.prototype.initNonuniformCatmullRom = function( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\t// initCubicPoly\n\t\t\tthis.init( x1, x2, t1, t2 );\n\n\t\t};\n\n\t\t// standard Catmull-Rom spline: interpolate between x1 and x2 with previous/following points x1/x4\n\t\tCubicPoly.prototype.initCatmullRom = function( x0, x1, x2, x3, tension ) {\n\n\t\t\tthis.init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t};\n\n\t\tCubicPoly.prototype.calc = function( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn this.c0 + this.c1 * t + this.c2 * t2 + this.c3 * t3;\n\n\t\t};\n\n\t\t// Subclass Three.js curve\n\t\treturn THREE.Curve.create(\n\n\t\t\tfunction ( p /* array of Vector3 */ ) {\n\n\t\t\t\tthis.points = p || [];\n\t\t\t\tthis.closed = false;\n\n\t\t\t},\n\n\t\t\tfunction ( t ) {\n\n\t\t\t\tvar points = this.points,\n\t\t\t\t\tpoint, intPoint, weight, l;\n\n\t\t\t\tl = points.length;\n\n\t\t\t\tif ( l < 2 ) console.log( 'duh, you need at least 2 points' );\n\n\t\t\t\tpoint = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\t\t\tintPoint = Math.floor( point );\n\t\t\t\tweight = point - intPoint;\n\n\t\t\t\tif ( this.closed ) {\n\n\t\t\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\n\n\t\t\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\t\t\tintPoint = l - 2;\n\t\t\t\t\tweight = 1;\n\n\t\t\t\t}\n\n\t\t\t\tvar p0, p1, p2, p3; // 4 points\n\n\t\t\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// extrapolate first point\n\t\t\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\t\t\tp0 = tmp;\n\n\t\t\t\t}\n\n\t\t\t\tp1 = points[ intPoint % l ];\n\t\t\t\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\t\t\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// extrapolate last point\n\t\t\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\t\t\tp3 = tmp;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.type === undefined || this.type === 'centripetal' || this.type === 'chordal' ) {\n\n\t\t\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\t\t\tvar pow = this.type === 'chordal' ? 0.5 : 0.25;\n\t\t\t\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\t\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\t\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t\t\t// safety check for repeated points\n\t\t\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t\t\t} else if ( this.type === 'catmullrom' ) {\n\n\t\t\t\t\tvar tension = this.tension !== undefined ? this.tension : 0.5;\n\t\t\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, tension );\n\t\t\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, tension );\n\t\t\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, tension );\n\n\t\t\t\t}\n\n\t\t\t\tvar v = new THREE.Vector3(\n\t\t\t\t\tpx.calc( weight ),\n\t\t\t\t\tpy.calc( weight ),\n\t\t\t\t\tpz.calc( weight )\n\t\t\t\t);\n\n\t\t\t\treturn v;\n\n\t\t\t}\n\n\t\t);\n\n\t} )();\n\n\t// File:src/extras/curves/ClosedSplineCurve3.js\n\n\t/**************************************************************\n\t *\tClosed Spline 3D curve\n\t **************************************************************/\n\n\n\tTHREE.ClosedSplineCurve3 = function ( points ) {\n\n\t\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3.' );\n\n\t\tTHREE.CatmullRomCurve3.call( this, points );\n\t\tthis.type = 'catmullrom';\n\t\tthis.closed = true;\n\n\t};\n\n\tTHREE.ClosedSplineCurve3.prototype = Object.create( THREE.CatmullRomCurve3.prototype );\n\n\t// File:src/extras/geometries/BoxGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Cube.as\n\t */\n\n\tTHREE.BoxGeometry = function ( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\t\tthis.mergeVertices();\n\n\t};\n\n\tTHREE.BoxGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.BoxGeometry.prototype.constructor = THREE.BoxGeometry;\n\n\tTHREE.CubeGeometry = THREE.BoxGeometry;\n\n\t// File:src/extras/geometries/BoxBufferGeometry.js\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tTHREE.BoxBufferGeometry = function ( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'BoxBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tvar scope = this;\n\n\t\t// segments\n\t\twidthSegments = Math.floor( widthSegments ) || 1;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\t\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t\t// these are used to calculate buffer length\n\t\tvar vertexCount = calculateVertexCount( widthSegments, heightSegments, depthSegments );\n\t\tvar indexCount = calculateIndexCount( widthSegments, heightSegments, depthSegments );\n\n\t\t// buffers\n\t\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\t\tvar vertices = new Float32Array( vertexCount * 3 );\n\t\tvar normals = new Float32Array( vertexCount * 3 );\n\t\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t\t// offset variables\n\t\tvar vertexBufferOffset = 0;\n\t\tvar uvBufferOffset = 0;\n\t\tvar indexBufferOffset = 0;\n\t\tvar numberOfVertices = 0;\n\n\t\t// group variables\n\t\tvar groupStart = 0;\n\n\t\t// build each side of the box geometry\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height,   width,  depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x',   1, - 1, depth, height, - width,  depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y',   1,   1, width, depth,    height, widthSegments, depthSegments,  2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y',   1, - 1, width, depth,  - height, widthSegments, depthSegments,  3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z',   1, - 1, width, height,   depth,  widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth,  widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\t\tthis.setIndex( new THREE.BufferAttribute( indices, 1 ) );\n\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );\n\n\t\t// helper functions\n\n\t\tfunction calculateVertexCount ( w, h, d ) {\n\n\t\t\tvar vertices = 0;\n\n\t\t\t// calculate the amount of vertices for each side (plane)\n\t\t\tvertices += (w + 1) * (h + 1) * 2; // xy\n\t\t\tvertices += (w + 1) * (d + 1) * 2; // xz\n\t\t\tvertices += (d + 1) * (h + 1) * 2; // zy\n\n\t\t\treturn vertices;\n\n\t\t}\n\n\t\tfunction calculateIndexCount ( w, h, d ) {\n\n\t\t\tvar index = 0;\n\n\t\t\t// calculate the amount of squares for each side\n\t\t\tindex += w * h * 2; // xy\n\t\t\tindex += w * d * 2; // xz\n\t\t\tindex += d * h * 2; // zy\n\n\t\t\treturn index * 6; // two triangles per square => six vertices per square\n\n\t\t}\n\n\t\tfunction buildPlane ( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tvar segmentWidth\t= width / gridX;\n\t\t\tvar segmentHeight = height / gridY;\n\n\t\t\tvar widthHalf = width / 2;\n\t\t\tvar heightHalf = height / 2;\n\t\t\tvar depthHalf = depth / 2;\n\n\t\t\tvar gridX1 = gridX + 1;\n\t\t\tvar gridY1 = gridY + 1;\n\n\t\t\tvar vertexCounter = 0;\n\t\t\tvar groupCount = 0;\n\n\t\t\tvar vector = new THREE.Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\t\t\t\t\tvertices[ vertexBufferOffset ] = vector.x;\n\t\t\t\t\tvertices[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\t\tvertices[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t\t// set values to correct vector component\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\t\t\t\t\tnormals[ vertexBufferOffset ] = vector.x;\n\t\t\t\t\tnormals[ vertexBufferOffset + 1 ] = vector.y;\n\t\t\t\t\tnormals[ vertexBufferOffset + 2 ] = vector.z;\n\n\t\t\t\t\t// uvs\n\t\t\t\t\tuvs[ uvBufferOffset ] = ix / gridX;\n\t\t\t\t\tuvs[ uvBufferOffset + 1 ] = 1 - ( iy / gridY );\n\n\t\t\t\t\t// update offsets and counters\n\t\t\t\t\tvertexBufferOffset += 3;\n\t\t\t\t\tuvBufferOffset += 2;\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\t// indices\n\t\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// face one\n\t\t\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t\t\t// face two\n\t\t\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t\t\t// update offsets and counters\n\t\t\t\t\tindexBufferOffset += 6;\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t};\n\n\tTHREE.BoxBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.BoxBufferGeometry.prototype.constructor = THREE.BoxBufferGeometry;\n\n\t// File:src/extras/geometries/CircleGeometry.js\n\n\t/**\n\t * @author hughes\n\t */\n\n\tTHREE.CircleGeometry = function ( radius, segments, thetaStart, thetaLength ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\n\t};\n\n\tTHREE.CircleGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.CircleGeometry.prototype.constructor = THREE.CircleGeometry;\n\n\t// File:src/extras/geometries/CircleBufferGeometry.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t */\n\n\tTHREE.CircleBufferGeometry = function ( radius, segments, thetaStart, thetaLength ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'CircleBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tradius = radius || 50;\n\t\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\tvar vertices = segments + 2;\n\n\t\tvar positions = new Float32Array( vertices * 3 );\n\t\tvar normals = new Float32Array( vertices * 3 );\n\t\tvar uvs = new Float32Array( vertices * 2 );\n\n\t\t// center data is already zero, but need to set a few extras\n\t\tnormals[ 2 ] = 1.0;\n\t\tuvs[ 0 ] = 0.5;\n\t\tuvs[ 1 ] = 0.5;\n\n\t\tfor ( var s = 0, i = 3, ii = 2 ; s <= segments; s ++, i += 3, ii += 2 ) {\n\n\t\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t\tpositions[ i ] = radius * Math.cos( segment );\n\t\t\tpositions[ i + 1 ] = radius * Math.sin( segment );\n\n\t\t\tnormals[ i + 2 ] = 1; // normal z\n\n\t\t\tuvs[ ii ] = ( positions[ i ] / radius + 1 ) / 2;\n\t\t\tuvs[ ii + 1 ] = ( positions[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t}\n\n\t\tvar indices = [];\n\n\t\tfor ( var i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\tthis.setIndex( new THREE.BufferAttribute( new Uint16Array( indices ), 1 ) );\n\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );\n\t\tthis.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );\n\n\t\tthis.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );\n\n\t};\n\n\tTHREE.CircleBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.CircleBufferGeometry.prototype.constructor = THREE.CircleBufferGeometry;\n\n\t// File:src/extras/geometries/CylinderBufferGeometry.js\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tTHREE.CylinderBufferGeometry = function( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'CylinderBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tvar scope = this;\n\n\t\tradiusTop = radiusTop !== undefined ? radiusTop : 20;\n\t\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 20;\n\t\theight = height !== undefined ? height : 100;\n\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\theightSegments = Math.floor( heightSegments ) || 1;\n\n\t\topenEnded = openEnded !== undefined ? openEnded : false;\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;\n\n\t\t// used to calculate buffer length\n\n\t\tvar nbCap = 0;\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) nbCap ++;\n\t\t\tif ( radiusBottom > 0 ) nbCap ++;\n\n\t\t}\n\n\t\tvar vertexCount = calculateVertexCount();\n\t\tvar indexCount = calculateIndexCount();\n\n\t\t// buffers\n\n\t\tvar indices = new THREE.BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ), 1 );\n\t\tvar vertices = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar normals = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar uvs = new THREE.BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t\t// helper variables\n\n\t\tvar index = 0,\n\t\t    indexOffset = 0,\n\t\t    indexArray = [],\n\t\t    halfHeight = height / 2;\n\n\t\t// group variables\n\t\tvar groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.addAttribute( 'position', vertices );\n\t\tthis.addAttribute( 'normal', normals );\n\t\tthis.addAttribute( 'uv', uvs );\n\n\t\t// helper functions\n\n\t\tfunction calculateVertexCount() {\n\n\t\t\tvar count = ( radialSegments + 1 ) * ( heightSegments + 1 );\n\n\t\t\tif ( openEnded === false ) {\n\n\t\t\t\tcount += ( ( radialSegments + 1 ) * nbCap ) + ( radialSegments * nbCap );\n\n\t\t\t}\n\n\t\t\treturn count;\n\n\t\t}\n\n\t\tfunction calculateIndexCount() {\n\n\t\t\tvar count = radialSegments * heightSegments * 2 * 3;\n\n\t\t\tif ( openEnded === false ) {\n\n\t\t\t\tcount += radialSegments * nbCap * 3;\n\n\t\t\t}\n\n\t\t\treturn count;\n\n\t\t}\n\n\t\tfunction generateTorso() {\n\n\t\t\tvar x, y;\n\t\t\tvar normal = new THREE.Vector3();\n\t\t\tvar vertex = new THREE.Vector3();\n\n\t\t\tvar groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tvar tanTheta = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tvar indexRow = [];\n\n\t\t\t\tvar v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\t\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\t\t// vertex\n\t\t\t\t\tvertex.x = radius * Math.sin( u * thetaLength + thetaStart );\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * Math.cos( u * thetaLength + thetaStart );\n\t\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\t\t\t\t\tnormal.copy( vertex );\n\n\t\t\t\t\t// handle special case if radiusTop/radiusBottom is zero\n\n\t\t\t\t\tif ( ( radiusTop === 0 && y === 0 ) || ( radiusBottom === 0 && y === heightSegments ) ) {\n\n\t\t\t\t\t\tnormal.x = Math.sin( u * thetaLength + thetaStart );\n\t\t\t\t\t\tnormal.z = Math.cos( u * thetaLength + thetaStart );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnormal.setY( Math.sqrt( normal.x * normal.x + normal.z * normal.z ) * tanTheta ).normalize();\n\t\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\t\t\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\t\t\t\t\tindexRow.push( index );\n\n\t\t\t\t\t// increase index\n\t\t\t\t\tindex ++;\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\t\t\t\t\tvar i1 = indexArray[ y ][ x ];\n\t\t\t\t\tvar i2 = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tvar i3 = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tvar i4 = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// face one\n\t\t\t\t\tindices.setX( indexOffset, i1 ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t\t// face two\n\t\t\t\t\tindices.setX( indexOffset, i2 ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, i3 ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, i4 ); indexOffset ++;\n\n\t\t\t\t\t// update counters\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\t\tvar uv = new THREE.Vector2();\n\t\t\tvar vertex = new THREE.Vector3();\n\n\t\t\tvar groupCount = 0;\n\n\t\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// save the index of the first center vertex\n\t\t\tcenterIndexStart = index;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\t\t\t\tvertices.setXYZ( index, 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\t\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t\t// uv\n\t\t\t\tuv.x = 0.5;\n\t\t\t\tuv.y = 0.5;\n\n\t\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tcenterIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\t\t\t\tnormals.setXYZ( index, 0, sign, 0 );\n\n\t\t\t\t// uv\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tvar c = centerIndexStart + x;\n\t\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\t\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\t\t\t\t\tindices.setX( indexOffset, i + 1 ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, i ); indexOffset ++;\n\t\t\t\t\tindices.setX( indexOffset, c ); indexOffset ++;\n\n\t\t\t\t}\n\n\t\t\t\t// update counters\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t};\n\n\tTHREE.CylinderBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.CylinderBufferGeometry.prototype.constructor = THREE.CylinderBufferGeometry;\n\n\t// File:src/extras/geometries/CylinderGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.CylinderGeometry = function ( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\t\tthis.mergeVertices();\n\n\t};\n\n\tTHREE.CylinderGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.CylinderGeometry.prototype.constructor = THREE.CylinderGeometry;\n\n\t// File:src/extras/geometries/ConeBufferGeometry.js\n\n\t/*\n\t * @author: abelnation / http://github.com/abelnation\n\t */\n\n\tTHREE.ConeBufferGeometry = function (\n\t\tradius, height,\n\t\tradialSegments, heightSegments,\n\t\topenEnded, thetaStart, thetaLength ) {\n\n\t\tTHREE.CylinderBufferGeometry.call( this,\n\t\t\t0, radius, height,\n\t\t\tradialSegments, heightSegments,\n\t\t\topenEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t};\n\n\tTHREE.ConeBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.ConeBufferGeometry.prototype.constructor = THREE.ConeBufferGeometry;\n\n\t// File:src/extras/geometries/ConeGeometry.js\n\n\t/**\n\t * @author abelnation / http://github.com/abelnation\n\t */\n\n\tTHREE.ConeGeometry = function (\n\t\tradius, height,\n\t\tradialSegments, heightSegments,\n\t\topenEnded, thetaStart, thetaLength ) {\n\n\t\tTHREE.CylinderGeometry.call( this,\n\t\t\t0, radius, height,\n\t\t\tradialSegments, heightSegments,\n\t\t\topenEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t};\n\n\tTHREE.ConeGeometry.prototype = Object.create( THREE.CylinderGeometry.prototype );\n\tTHREE.ConeGeometry.prototype.constructor = THREE.ConeGeometry;\n\n\t// File:src/extras/geometries/EdgesGeometry.js\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tTHREE.EdgesGeometry = function ( geometry, thresholdAngle ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t\tvar thresholdDot = Math.cos( THREE.Math.DEG2RAD * thresholdAngle );\n\n\t\tvar edge = [ 0, 0 ], hash = {};\n\n\t\tfunction sortFunction( a, b ) {\n\n\t\t\treturn a - b;\n\n\t\t}\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tvar geometry2;\n\n\t\tif ( geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\tgeometry2 = new THREE.Geometry();\n\t\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t\t} else {\n\n\t\t\tgeometry2 = geometry.clone();\n\n\t\t}\n\n\t\tgeometry2.mergeVertices();\n\t\tgeometry2.computeFaceNormals();\n\n\t\tvar vertices = geometry2.vertices;\n\t\tvar faces = geometry2.faces;\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\tvar key = edge.toString();\n\n\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\thash[ key ] = { vert1: edge[ 0 ], vert2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t\t} else {\n\n\t\t\t\t\thash[ key ].face2 = i;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar coords = [];\n\n\t\tfor ( var key in hash ) {\n\n\t\t\tvar h = hash[ key ];\n\n\t\t\tif ( h.face2 === undefined || faces[ h.face1 ].normal.dot( faces[ h.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\t\tvar vertex = vertices[ h.vert1 ];\n\t\t\t\tcoords.push( vertex.x );\n\t\t\t\tcoords.push( vertex.y );\n\t\t\t\tcoords.push( vertex.z );\n\n\t\t\t\tvertex = vertices[ h.vert2 ];\n\t\t\t\tcoords.push( vertex.x );\n\t\t\t\tcoords.push( vertex.y );\n\t\t\t\tcoords.push( vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( coords ), 3 ) );\n\n\t};\n\n\tTHREE.EdgesGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.EdgesGeometry.prototype.constructor = THREE.EdgesGeometry;\n\n\t// File:src/extras/geometries/ExtrudeGeometry.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t *\n\t * Creates extruded geometry from a path shape.\n\t *\n\t * parameters = {\n\t *\n\t *  curveSegments: <int>, // number of points on the curves\n\t *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n\t *  amount: <int>, // Depth to extrude the shape\n\t *\n\t *  bevelEnabled: <bool>, // turn on bevel\n\t *  bevelThickness: <float>, // how deep into the original shape bevel goes\n\t *  bevelSize: <float>, // how far from shape outline is bevel\n\t *  bevelSegments: <int>, // number of bevel layers\n\t *\n\t *  extrudePath: <THREE.CurvePath> // 3d spline path to extrude shape along. (creates Frames if .frames aren't defined)\n\t *  frames: <THREE.TubeGeometry.FrenetFrames> // containing arrays of tangents, normals, binormals\n\t *\n\t *  uvGenerator: <Object> // object that provides UV generator functions\n\t *\n\t * }\n\t **/\n\n\tTHREE.ExtrudeGeometry = function ( shapes, options ) {\n\n\t\tif ( typeof( shapes ) === \"undefined\" ) {\n\n\t\t\tshapes = [];\n\t\t\treturn;\n\n\t\t}\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tthis.addShapeList( shapes, options );\n\n\t\tthis.computeFaceNormals();\n\n\t\t// can't really use automatic vertex normals\n\t\t// as then front and back sides get smoothed too\n\t\t// should do separate smoothing just for sides\n\n\t\t//this.computeVertexNormals();\n\n\t\t//console.log( \"took\", ( Date.now() - startTime ) );\n\n\t};\n\n\tTHREE.ExtrudeGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.ExtrudeGeometry.prototype.constructor = THREE.ExtrudeGeometry;\n\n\tTHREE.ExtrudeGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\t\tvar sl = shapes.length;\n\n\t\tfor ( var s = 0; s < sl; s ++ ) {\n\n\t\t\tvar shape = shapes[ s ];\n\t\t\tthis.addShape( shape, options );\n\n\t\t}\n\n\t};\n\n\tTHREE.ExtrudeGeometry.prototype.addShape = function ( shape, options ) {\n\n\t\tvar amount = options.amount !== undefined ? options.amount : 100;\n\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\n\t\tvar extrudePath = options.extrudePath;\n\t\tvar extrudePts, extrudeByPath = false;\n\n\t\t// Use default WorldUVGenerator if no UV generators are specified.\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : THREE.ExtrudeGeometry.WorldUVGenerator;\n\n\t\tvar splineTube, binormal, normal, position2;\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// Reuse TNB from TubeGeomtry for now.\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = options.frames !== undefined ? options.frames : new THREE.TubeGeometry.FrenetFrames( extrudePath, steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new THREE.Vector3();\n\t\t\tnormal = new THREE.Vector3();\n\t\t\tposition2 = new THREE.Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\n\t\tvar scope = this;\n\n\t\tvar shapesOffset = this.vertices.length;\n\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! THREE.ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\n\t\t\t\tif ( THREE.ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treverse = false; // If vertices are in order now, we shouldn't need to worry about them again (hopefully)!\n\n\t\t}\n\n\n\t\tvar faces = THREE.ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t/* Vertices */\n\n\t\tvar contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\tvertices = vertices.concat( ahole );\n\n\t\t}\n\n\n\t\tfunction scalePt2 ( pt, vec, size ) {\n\n\t\t\tif ( ! vec ) console.error( \"THREE.ExtrudeGeometry: vec does not exist\" );\n\n\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t}\n\n\t\tvar b, bs, t, z,\n\t\t\tvert, vlen = vertices.length,\n\t\t\tface, flen = faces.length;\n\n\n\t\t// Find directions for point movement\n\n\n\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t//\n\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\tvar v_trans_x, v_trans_y, shrink_by = 1;\t\t// resulting translation vector for inPt\n\n\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\tvar v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n\n\t\t\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t// check for collinear edges\n\t\t\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t// not collinear\n\n\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\tvar v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\tvar sf = (  ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x    ) /\n\t\t\t\t\t\t  ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t//  but prevent crazy spikes\n\t\t\t\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\treturn\tnew THREE.Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false;\t\t// assumes: opposite\n\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\tv_trans_y =  v_prev_x;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tnew THREE.Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t}\n\n\n\t\tvar contourMovements = [];\n\n\t\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\tif ( j === il ) j = 0;\n\t\t\tif ( k === il ) k = 0;\n\n\t\t\t//  (j)---(i)---(k)\n\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t}\n\n\t\tvar holesMovements = [], oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\tahole = holes[ h ];\n\n\t\t\toneHoleMovements = [];\n\n\t\t\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t}\n\n\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t}\n\n\n\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\tfor ( b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * ( 1 - t );\n\n\t\t\t//z = bevelThickness * t;\n\t\t\tbs = bevelSize * ( Math.sin ( t * Math.PI / 2 ) ); // curved\n\t\t\t//bs = bevelSize * t; // linear\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\tv( vert.x, vert.y,  - z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y,  - z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tbs = bevelSize;\n\n\t\t// Back facing vertices\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t} else {\n\n\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Add stepped vertices...\n\t\t// Including front facing vertices\n\n\t\tvar s;\n\n\t\tfor ( s = 1; s <= steps; s ++ ) {\n\n\t\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, amount / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * ( 1 - t );\n\t\t\t//bs = bevelSize * ( 1-Math.sin ( ( 1 - t ) * Math.PI/2 ) );\n\t\t\tbs = bevelSize * Math.sin ( t * Math.PI / 2 );\n\n\t\t\t// contract shape\n\n\t\t\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\tv( vert.x, vert.y,  amount + z );\n\n\t\t\t}\n\n\t\t\t// expand holes\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y,  amount + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t/////  Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\tvar layer = 0; // steps + 1\n\t\t\t\tvar offset = vlen * layer;\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Bottom faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t}\n\n\t\t\t\t// Top faces\n\n\t\t\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\tface = faces[ i ];\n\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar layeroffset = 0;\n\t\t\tsidewalls( contour, layeroffset );\n\t\t\tlayeroffset += contour.length;\n\n\t\t\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tahole = holes[ h ];\n\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t//, true\n\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\tvar j, k;\n\t\t\ti = contour.length;\n\n\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\tj = i;\n\t\t\t\tk = i - 1;\n\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\tvar s = 0, sl = steps  + bevelSegments * 2;\n\n\t\t\t\tfor ( s = 0; s < sl; s ++ ) {\n\n\t\t\t\t\tvar slen1 = vlen * s;\n\t\t\t\t\tvar slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\tvar a = layeroffset + j + slen1,\n\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\tf4( a, b, c, d, contour, s, sl, j, k );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tscope.vertices.push( new THREE.Vector3( x, y, z ) );\n\n\t\t}\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\ta += shapesOffset;\n\t\t\tb += shapesOffset;\n\t\t\tc += shapesOffset;\n\n\t\t\tscope.faces.push( new THREE.Face3( a, b, c, null, null, 0 ) );\n\n\t\t\tvar uvs = uvgen.generateTopUV( scope, a, b, c );\n\n\t\t\tscope.faceVertexUvs[ 0 ].push( uvs );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d, wallContour, stepIndex, stepsLength, contourIndex1, contourIndex2 ) {\n\n\t\t\ta += shapesOffset;\n\t\t\tb += shapesOffset;\n\t\t\tc += shapesOffset;\n\t\t\td += shapesOffset;\n\n\t\t\tscope.faces.push( new THREE.Face3( a, b, d, null, null, 1 ) );\n\t\t\tscope.faces.push( new THREE.Face3( b, c, d, null, null, 1 ) );\n\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, a, b, c, d );\n\n\t\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ] );\n\t\t\tscope.faceVertexUvs[ 0 ].push( [ uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ] );\n\n\t\t}\n\n\t};\n\n\tTHREE.ExtrudeGeometry.WorldUVGenerator = {\n\n\t\tgenerateTopUV: function ( geometry, indexA, indexB, indexC ) {\n\n\t\t\tvar vertices = geometry.vertices;\n\n\t\t\tvar a = vertices[ indexA ];\n\t\t\tvar b = vertices[ indexB ];\n\t\t\tvar c = vertices[ indexC ];\n\n\t\t\treturn [\n\t\t\t\tnew THREE.Vector2( a.x, a.y ),\n\t\t\t\tnew THREE.Vector2( b.x, b.y ),\n\t\t\t\tnew THREE.Vector2( c.x, c.y )\n\t\t\t];\n\n\t\t},\n\n\t\tgenerateSideWallUV: function ( geometry, indexA, indexB, indexC, indexD ) {\n\n\t\t\tvar vertices = geometry.vertices;\n\n\t\t\tvar a = vertices[ indexA ];\n\t\t\tvar b = vertices[ indexB ];\n\t\t\tvar c = vertices[ indexC ];\n\t\t\tvar d = vertices[ indexD ];\n\n\t\t\tif ( Math.abs( a.y - b.y ) < 0.01 ) {\n\n\t\t\t\treturn [\n\t\t\t\t\tnew THREE.Vector2( a.x, 1 - a.z ),\n\t\t\t\t\tnew THREE.Vector2( b.x, 1 - b.z ),\n\t\t\t\t\tnew THREE.Vector2( c.x, 1 - c.z ),\n\t\t\t\t\tnew THREE.Vector2( d.x, 1 - d.z )\n\t\t\t\t];\n\n\t\t\t} else {\n\n\t\t\t\treturn [\n\t\t\t\t\tnew THREE.Vector2( a.y, 1 - a.z ),\n\t\t\t\t\tnew THREE.Vector2( b.y, 1 - b.z ),\n\t\t\t\t\tnew THREE.Vector2( c.y, 1 - c.z ),\n\t\t\t\t\tnew THREE.Vector2( d.y, 1 - d.z )\n\t\t\t\t];\n\n\t\t\t}\n\n\t\t}\n\t};\n\n\t// File:src/extras/geometries/ShapeGeometry.js\n\n\t/**\n\t * @author jonobr1 / http://jonobr1.com\n\t *\n\t * Creates a one-sided polygonal geometry from a path shape. Similar to\n\t * ExtrudeGeometry.\n\t *\n\t * parameters = {\n\t *\n\t *\tcurveSegments: <int>, // number of points on the curves. NOT USED AT THE MOMENT.\n\t *\n\t *\tmaterial: <int> // material index for front and back faces\n\t *\tuvGenerator: <Object> // object that provides UV generator functions\n\t *\n\t * }\n\t **/\n\n\tTHREE.ShapeGeometry = function ( shapes, options ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tif ( Array.isArray( shapes ) === false ) shapes = [ shapes ];\n\n\t\tthis.addShapeList( shapes, options );\n\n\t\tthis.computeFaceNormals();\n\n\t};\n\n\tTHREE.ShapeGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.ShapeGeometry.prototype.constructor = THREE.ShapeGeometry;\n\n\t/**\n\t * Add an array of shapes to THREE.ShapeGeometry.\n\t */\n\tTHREE.ShapeGeometry.prototype.addShapeList = function ( shapes, options ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tthis.addShape( shapes[ i ], options );\n\n\t\t}\n\n\t\treturn this;\n\n\t};\n\n\t/**\n\t * Adds a shape to THREE.ShapeGeometry, based on THREE.ExtrudeGeometry.\n\t */\n\tTHREE.ShapeGeometry.prototype.addShape = function ( shape, options ) {\n\n\t\tif ( options === undefined ) options = {};\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\n\t\tvar material = options.material;\n\t\tvar uvgen = options.UVGenerator === undefined ? THREE.ExtrudeGeometry.WorldUVGenerator : options.UVGenerator;\n\n\t\t//\n\n\t\tvar i, l, hole;\n\n\t\tvar shapesOffset = this.vertices.length;\n\t\tvar shapePoints = shape.extractPoints( curveSegments );\n\n\t\tvar vertices = shapePoints.shape;\n\t\tvar holes = shapePoints.holes;\n\n\t\tvar reverse = ! THREE.ShapeUtils.isClockWise( vertices );\n\n\t\tif ( reverse ) {\n\n\t\t\tvertices = vertices.reverse();\n\n\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe...\n\n\t\t\tfor ( i = 0, l = holes.length; i < l; i ++ ) {\n\n\t\t\t\thole = holes[ i ];\n\n\t\t\t\tif ( THREE.ShapeUtils.isClockWise( hole ) ) {\n\n\t\t\t\t\tholes[ i ] = hole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treverse = false;\n\n\t\t}\n\n\t\tvar faces = THREE.ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t// Vertices\n\n\t\tfor ( i = 0, l = holes.length; i < l; i ++ ) {\n\n\t\t\thole = holes[ i ];\n\t\t\tvertices = vertices.concat( hole );\n\n\t\t}\n\n\t\t//\n\n\t\tvar vert, vlen = vertices.length;\n\t\tvar face, flen = faces.length;\n\n\t\tfor ( i = 0; i < vlen; i ++ ) {\n\n\t\t\tvert = vertices[ i ];\n\n\t\t\tthis.vertices.push( new THREE.Vector3( vert.x, vert.y, 0 ) );\n\n\t\t}\n\n\t\tfor ( i = 0; i < flen; i ++ ) {\n\n\t\t\tface = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + shapesOffset;\n\t\t\tvar b = face[ 1 ] + shapesOffset;\n\t\t\tvar c = face[ 2 ] + shapesOffset;\n\n\t\t\tthis.faces.push( new THREE.Face3( a, b, c, null, null, material ) );\n\t\t\tthis.faceVertexUvs[ 0 ].push( uvgen.generateTopUV( this, a, b, c ) );\n\n\t\t}\n\n\t};\n\n\t// File:src/extras/geometries/LatheBufferGeometry.js\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\t // points - to create a closed torus, one must use a set of points\n\t //    like so: [ a, b, c, d, a ], see first is the same as last.\n\t // segments - the number of circumference segments to create\n\t // phiStart - the starting radian\n\t // phiLength - the radian (0 to 2PI) range of the lathed section\n\t //    2PI is a closed lathe, less than 2PI is a portion.\n\n\tTHREE.LatheBufferGeometry = function ( points, segments, phiStart, phiLength ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'LatheBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments ) || 12;\n\t\tphiStart = phiStart || 0;\n\t\tphiLength = phiLength || Math.PI * 2;\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\t\tphiLength = THREE.Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// these are used to calculate buffer length\n\t\tvar vertexCount = ( segments + 1 ) * points.length;\n\t\tvar indexCount = segments * points.length * 2 * 3;\n\n\t\t// buffers\n\t\tvar indices = new THREE.BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\t\tvar vertices = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar uvs = new THREE.BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t\t// helper variables\n\t\tvar index = 0, indexOffset = 0, base;\n\t\tvar inversePointLength = 1.0 / ( points.length - 1 );\n\t\tvar inverseSegments = 1.0 / segments;\n\t\tvar vertex = new THREE.Vector3();\n\t\tvar uv = new THREE.Vector2();\n\t\tvar i, j;\n\n\t\t// generate vertices and uvs\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tvar sin = Math.sin( phi );\n\t\t\tvar cos = Math.cos( phi );\n\n\t\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\t\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tbase = j + i * points.length;\n\n\t\t\t\t// indices\n\t\t\t\tvar a = base;\n\t\t\t\tvar b = base + points.length;\n\t\t\t\tvar c = base + points.length + 1;\n\t\t\t\tvar d = base + 1;\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.addAttribute( 'position', vertices );\n\t\tthis.addAttribute( 'uv', uvs );\n\n\t\t// generate normals\n\n\t\tthis.computeVertexNormals();\n\n\t\t// if the geometry is closed, we need to average the normals along the seam.\n\t\t// because the corresponding vertices are identical (but still have different UVs).\n\n\t\tif( phiLength === Math.PI * 2 ) {\n\n\t\t\tvar normals = this.attributes.normal.array;\n\t\t\tvar n1 = new THREE.Vector3();\n\t\t\tvar n2 = new THREE.Vector3();\n\t\t\tvar n = new THREE.Vector3();\n\n\t\t\t// this is the buffer offset for the last line of vertices\n\t\t\tbase = segments * points.length * 3;\n\n\t\t\tfor( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t\t// select the normal of the vertex in the first line\n\t\t\t\tn1.x = normals[ j + 0 ];\n\t\t\t\tn1.y = normals[ j + 1 ];\n\t\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t\t// select the normal of the vertex in the last line\n\t\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t\t// average normals\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t\t// assign the new values to both normals\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t\t} // next row\n\n\t\t}\n\n\t};\n\n\tTHREE.LatheBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.LatheBufferGeometry.prototype.constructor = THREE.LatheBufferGeometry;\n\n\t// File:src/extras/geometries/LatheGeometry.js\n\n\t/**\n\t * @author astrodud / http://astrodud.isgreat.org/\n\t * @author zz85 / https://github.com/zz85\n\t * @author bhouston / http://clara.io\n\t */\n\n\t// points - to create a closed torus, one must use a set of points\n\t//    like so: [ a, b, c, d, a ], see first is the same as last.\n\t// segments - the number of circumference segments to create\n\t// phiStart - the starting radian\n\t// phiLength - the radian (0 to 2PI) range of the lathed section\n\t//    2PI is a closed lathe, less than 2PI is a portion.\n\n\tTHREE.LatheGeometry = function ( points, segments, phiStart, phiLength ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\t\tthis.mergeVertices();\n\n\t};\n\n\tTHREE.LatheGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.LatheGeometry.prototype.constructor = THREE.LatheGeometry;\n\n\t// File:src/extras/geometries/PlaneGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n\t */\n\n\tTHREE.PlaneGeometry = function ( width, height, widthSegments, heightSegments ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\n\t};\n\n\tTHREE.PlaneGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.PlaneGeometry.prototype.constructor = THREE.PlaneGeometry;\n\n\t// File:src/extras/geometries/PlaneBufferGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as\n\t */\n\n\tTHREE.PlaneBufferGeometry = function ( width, height, widthSegments, heightSegments ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'PlaneBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tvar width_half = width / 2;\n\t\tvar height_half = height / 2;\n\n\t\tvar gridX = Math.floor( widthSegments ) || 1;\n\t\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar segment_width = width / gridX;\n\t\tvar segment_height = height / gridY;\n\n\t\tvar vertices = new Float32Array( gridX1 * gridY1 * 3 );\n\t\tvar normals = new Float32Array( gridX1 * gridY1 * 3 );\n\t\tvar uvs = new Float32Array( gridX1 * gridY1 * 2 );\n\n\t\tvar offset = 0;\n\t\tvar offset2 = 0;\n\n\t\tfor ( var iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segment_height - height_half;\n\n\t\t\tfor ( var ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\t\tvertices[ offset ] = x;\n\t\t\t\tvertices[ offset + 1 ] = - y;\n\n\t\t\t\tnormals[ offset + 2 ] = 1;\n\n\t\t\t\tuvs[ offset2 ] = ix / gridX;\n\t\t\t\tuvs[ offset2 + 1 ] = 1 - ( iy / gridY );\n\n\t\t\t\toffset += 3;\n\t\t\t\toffset2 += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\toffset = 0;\n\n\t\tvar indices = new ( ( vertices.length / 3 ) > 65535 ? Uint32Array : Uint16Array )( gridX * gridY * 6 );\n\n\t\tfor ( var iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( var ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = ix + gridX1 * iy;\n\t\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices[ offset ] = a;\n\t\t\t\tindices[ offset + 1 ] = b;\n\t\t\t\tindices[ offset + 2 ] = d;\n\n\t\t\t\tindices[ offset + 3 ] = b;\n\t\t\t\tindices[ offset + 4 ] = c;\n\t\t\t\tindices[ offset + 5 ] = d;\n\n\t\t\t\toffset += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( new THREE.BufferAttribute( indices, 1 ) );\n\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );\n\n\t};\n\n\tTHREE.PlaneBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.PlaneBufferGeometry.prototype.constructor = THREE.PlaneBufferGeometry;\n\n\t// File:src/extras/geometries/RingBufferGeometry.js\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tTHREE.RingBufferGeometry = function ( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'RingBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tinnerRadius = innerRadius || 20;\n\t\touterRadius = outerRadius || 50;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\t\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t\t// these are used to calculate buffer length\n\t\tvar vertexCount = ( thetaSegments + 1 ) * ( phiSegments + 1 );\n\t\tvar indexCount = thetaSegments * phiSegments * 2 * 3;\n\n\t\t// buffers\n\t\tvar indices = new THREE.BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\t\tvar vertices = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar normals = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar uvs = new THREE.BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t\t// some helper variables\n\t\tvar index = 0, indexOffset = 0, segment;\n\t\tvar radius = innerRadius;\n\t\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tvar vertex = new THREE.Vector3();\n\t\tvar uv = new THREE.Vector2();\n\t\tvar j, i;\n\n\t\t// generate vertices, normals and uvs\n\n\t\t// values are generate from the inside of the ring to the outside\n\n\t\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\t\t\t\tnormals.setXYZ( index, 0, 0, 1 );\n\n\t\t\t\t// uv\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\t\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t\t// increase index\n\t\t\t\tindex++;\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\t\t// indices\n\t\t\t\tvar a = segment;\n\t\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\t\tvar d = segment + 1;\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.addAttribute( 'position', vertices );\n\t\tthis.addAttribute( 'normal', normals );\n\t\tthis.addAttribute( 'uv', uvs );\n\n\t};\n\n\tTHREE.RingBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.RingBufferGeometry.prototype.constructor = THREE.RingBufferGeometry;\n\n\t// File:src/extras/geometries/RingGeometry.js\n\n\t/**\n\t * @author Kaleb Murphy\n\t */\n\n\tTHREE.RingGeometry = function ( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\n\t};\n\n\tTHREE.RingGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.RingGeometry.prototype.constructor = THREE.RingGeometry;\n\n\t// File:src/extras/geometries/SphereGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.SphereGeometry = function ( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\n\t};\n\n\tTHREE.SphereGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.SphereGeometry.prototype.constructor = THREE.SphereGeometry;\n\n\t// File:src/extras/geometries/SphereBufferGeometry.js\n\n\t/**\n\t * @author benaadams / https://twitter.com/ben_a_adams\n\t * based on THREE.SphereGeometry\n\t */\n\n\tTHREE.SphereBufferGeometry = function ( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'SphereBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tradius = radius || 50;\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\t\tphiStart = phiStart !== undefined ? phiStart : 0;\n\t\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\t\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\t\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\t\tvar thetaEnd = thetaStart + thetaLength;\n\n\t\tvar vertexCount = ( ( widthSegments + 1 ) * ( heightSegments + 1 ) );\n\n\t\tvar positions = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar normals = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar uvs = new THREE.BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t\tvar index = 0, vertices = [], normal = new THREE.Vector3();\n\n\t\tfor ( var y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar verticesRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\tfor ( var x = 0; x <= widthSegments; x ++ ) {\n\n\t\t\t\tvar u = x / widthSegments;\n\n\t\t\t\tvar px = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvar py = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvar pz = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tnormal.set( px, py, pz ).normalize();\n\n\t\t\t\tpositions.setXYZ( index, px, py, pz );\n\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\t\t\t\tuvs.setXY( index, u, 1 - v );\n\n\t\t\t\tverticesRow.push( index );\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\tvertices.push( verticesRow );\n\n\t\t}\n\n\t\tvar indices = [];\n\n\t\tfor ( var y = 0; y < heightSegments; y ++ ) {\n\n\t\t\tfor ( var x = 0; x < widthSegments; x ++ ) {\n\n\t\t\t\tvar v1 = vertices[ y ][ x + 1 ];\n\t\t\t\tvar v2 = vertices[ y ][ x ];\n\t\t\t\tvar v3 = vertices[ y + 1 ][ x ];\n\t\t\t\tvar v4 = vertices[ y + 1 ][ x + 1 ];\n\n\t\t\t\tif ( y !== 0 || thetaStart > 0 ) indices.push( v1, v2, v4 );\n\t\t\t\tif ( y !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( v2, v3, v4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( new ( positions.count > 65535 ? THREE.Uint32Attribute : THREE.Uint16Attribute )( indices, 1 ) );\n\t\tthis.addAttribute( 'position', positions );\n\t\tthis.addAttribute( 'normal', normals );\n\t\tthis.addAttribute( 'uv', uvs );\n\n\t\tthis.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );\n\n\t};\n\n\tTHREE.SphereBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.SphereBufferGeometry.prototype.constructor = THREE.SphereBufferGeometry;\n\n\t// File:src/extras/geometries/TextGeometry.js\n\n\t/**\n\t * @author zz85 / http://www.lab4games.net/zz85/blog\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t * Text = 3D Text\n\t *\n\t * parameters = {\n\t *  font: <THREE.Font>, // font\n\t *\n\t *  size: <float>, // size of the text\n\t *  height: <float>, // thickness to extrude text\n\t *  curveSegments: <int>, // number of points on the curves\n\t *\n\t *  bevelEnabled: <bool>, // turn on bevel\n\t *  bevelThickness: <float>, // how deep into text bevel goes\n\t *  bevelSize: <float> // how far from text outline is bevel\n\t * }\n\t */\n\n\tTHREE.TextGeometry = function ( text, parameters ) {\n\n\t\tparameters = parameters || {};\n\n\t\tvar font = parameters.font;\n\n\t\tif ( font instanceof THREE.Font === false ) {\n\n\t\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\t\treturn new THREE.Geometry();\n\n\t\t}\n\n\t\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\n\n\t\t// translate parameters to ExtrudeGeometry API\n\n\t\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\n\n\t\t// defaults\n\n\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\t\tTHREE.ExtrudeGeometry.call( this, shapes, parameters );\n\n\t\tthis.type = 'TextGeometry';\n\n\t};\n\n\tTHREE.TextGeometry.prototype = Object.create( THREE.ExtrudeGeometry.prototype );\n\tTHREE.TextGeometry.prototype.constructor = THREE.TextGeometry;\n\n\t// File:src/extras/geometries/TorusBufferGeometry.js\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t */\n\n\tTHREE.TorusBufferGeometry = function ( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'TorusBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradius = radius || 100;\n\t\ttube = tube || 40;\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\t\tarc = arc || Math.PI * 2;\n\n\t\t// used to calculate buffer length\n\t\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\t\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t\t// buffers\n\t\tvar indices = new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount );\n\t\tvar vertices = new Float32Array( vertexCount * 3 );\n\t\tvar normals = new Float32Array( vertexCount * 3 );\n\t\tvar uvs = new Float32Array( vertexCount * 2 );\n\n\t\t// offset variables\n\t\tvar vertexBufferOffset = 0;\n\t\tvar uvBufferOffset = 0;\n\t\tvar indexBufferOffset = 0;\n\n\t\t// helper variables\n\t\tvar center = new THREE.Vector3();\n\t\tvar vertex = new THREE.Vector3();\n\t\tvar normal = new THREE.Vector3();\n\n\t\tvar j, i;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tvar u = i / tubularSegments * arc;\n\t\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices[ vertexBufferOffset ] = vertex.x;\n\t\t\t\tvertices[ vertexBufferOffset + 1 ] = vertex.y;\n\t\t\t\tvertices[ vertexBufferOffset + 2 ] = vertex.z;\n\n\t\t\t\t// this vector is used to calculate the normal\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\n\t\t\t\t// normal\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals[ vertexBufferOffset ] = normal.x;\n\t\t\t\tnormals[ vertexBufferOffset + 1 ] = normal.y;\n\t\t\t\tnormals[ vertexBufferOffset + 2 ] = normal.z;\n\n\t\t\t\t// uv\n\t\t\t\tuvs[ uvBufferOffset ] = i / tubularSegments;\n\t\t\t\tuvs[ uvBufferOffset + 1 ] = j / radialSegments;\n\n\t\t\t\t// update offsets\n\t\t\t\tvertexBufferOffset += 3;\n\t\t\t\tuvBufferOffset += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\t\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// face one\n\t\t\t\tindices[ indexBufferOffset ] = a;\n\t\t\t\tindices[ indexBufferOffset + 1 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 2 ] = d;\n\n\t\t\t\t// face two\n\t\t\t\tindices[ indexBufferOffset + 3 ] = b;\n\t\t\t\tindices[ indexBufferOffset + 4 ] = c;\n\t\t\t\tindices[ indexBufferOffset + 5 ] = d;\n\n\t\t\t\t// update offset\n\t\t\t\tindexBufferOffset += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\t\tthis.setIndex( new THREE.BufferAttribute( indices, 1 ) );\n\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );\n\t\tthis.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );\n\t\tthis.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );\n\n\t};\n\n\tTHREE.TorusBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.TorusBufferGeometry.prototype.constructor = THREE.TorusBufferGeometry;\n\n\t// File:src/extras/geometries/TorusGeometry.js\n\n\t/**\n\t * @author oosmoxiecode\n\t * @author mrdoob / http://mrdoob.com/\n\t * based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3DLite/src/away3dlite/primitives/Torus.as?r=2888\n\t */\n\n\tTHREE.TorusGeometry = function ( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tthis.fromBufferGeometry( new THREE.TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\n\t};\n\n\tTHREE.TorusGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.TorusGeometry.prototype.constructor = THREE.TorusGeometry;\n\n\t// File:src/extras/geometries/TorusKnotBufferGeometry.js\n\n\t/**\n\t * @author Mugen87 / https://github.com/Mugen87\n\t *\n\t * see: http://www.blackpawn.com/texts/pqtorus/\n\t */\n\tTHREE.TorusKnotBufferGeometry = function ( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tthis.type = 'TorusKnotBufferGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\tradius = radius || 100;\n\t\ttube = tube || 40;\n\t\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\t\tradialSegments = Math.floor( radialSegments ) || 8;\n\t\tp = p || 2;\n\t\tq = q || 3;\n\n\t\t// used to calculate buffer length\n\t\tvar vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );\n\t\tvar indexCount = radialSegments * tubularSegments * 2 * 3;\n\n\t\t// buffers\n\t\tvar indices = new THREE.BufferAttribute( new ( indexCount > 65535 ? Uint32Array : Uint16Array )( indexCount ) , 1 );\n\t\tvar vertices = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar normals = new THREE.BufferAttribute( new Float32Array( vertexCount * 3 ), 3 );\n\t\tvar uvs = new THREE.BufferAttribute( new Float32Array( vertexCount * 2 ), 2 );\n\n\t\t// helper variables\n\t\tvar i, j, index = 0, indexOffset = 0;\n\n\t\tvar vertex = new THREE.Vector3();\n\t\tvar normal = new THREE.Vector3();\n\t\tvar uv = new THREE.Vector2();\n\n\t\tvar P1 = new THREE.Vector3();\n\t\tvar P2 = new THREE.Vector3();\n\n\t\tvar B = new THREE.Vector3();\n\t\tvar T = new THREE.Vector3();\n\t\tvar N = new THREE.Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\t// vertex\n\t\t\t\tvertices.setXYZ( index, vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\t\t\t\tnormals.setXYZ( index, normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\t\t\t\tuvs.setXY( index, uv.x, uv.y );\n\n\t\t\t\t// increase index\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\t\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// face one\n\t\t\t\tindices.setX( indexOffset, a ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t\t// face two\n\t\t\t\tindices.setX( indexOffset, b ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, c ); indexOffset++;\n\t\t\t\tindices.setX( indexOffset, d ); indexOffset++;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.addAttribute( 'position', vertices );\n\t\tthis.addAttribute( 'normal', normals );\n\t\tthis.addAttribute( 'uv', uvs );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tvar cu = Math.cos( u );\n\t\t\tvar su = Math.sin( u );\n\t\t\tvar quOverP = q / p * u;\n\t\t\tvar cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t};\n\n\tTHREE.TorusKnotBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.TorusKnotBufferGeometry.prototype.constructor = THREE.TorusKnotBufferGeometry;\n\n\t// File:src/extras/geometries/TorusKnotGeometry.js\n\n\t/**\n\t * @author oosmoxiecode\n\t */\n\n\tTHREE.TorusKnotGeometry = function ( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\tif( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\t\tthis.fromBufferGeometry( new THREE.TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\t\tthis.mergeVertices();\n\n\t};\n\n\tTHREE.TorusKnotGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.TorusKnotGeometry.prototype.constructor = THREE.TorusKnotGeometry;\n\n\t// File:src/extras/geometries/TubeGeometry.js\n\n\t/**\n\t * @author WestLangley / https://github.com/WestLangley\n\t * @author zz85 / https://github.com/zz85\n\t * @author miningold / https://github.com/miningold\n\t * @author jonobr1 / https://github.com/jonobr1\n\t *\n\t * Modified from the TorusKnotGeometry by @oosmoxiecode\n\t *\n\t * Creates a tube which extrudes along a 3d spline\n\t *\n\t * Uses parallel transport frames as described in\n\t * http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\t */\n\n\tTHREE.TubeGeometry = function ( path, segments, radius, radialSegments, closed, taper ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\tsegments: segments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed,\n\t\t\ttaper: taper\n\t\t};\n\n\t\tsegments = segments || 64;\n\t\tradius = radius || 1;\n\t\tradialSegments = radialSegments || 8;\n\t\tclosed = closed || false;\n\t\ttaper = taper || THREE.TubeGeometry.NoTaper;\n\n\t\tvar grid = [];\n\n\t\tvar scope = this,\n\n\t\t\ttangent,\n\t\t\tnormal,\n\t\t\tbinormal,\n\n\t\t\tnumpoints = segments + 1,\n\n\t\t\tu, v, r,\n\n\t\t\tcx, cy,\n\t\t\tpos, pos2 = new THREE.Vector3(),\n\t\t\ti, j,\n\t\t\tip, jp,\n\t\t\ta, b, c, d,\n\t\t\tuva, uvb, uvc, uvd;\n\n\t\tvar frames = new THREE.TubeGeometry.FrenetFrames( path, segments, closed ),\n\t\t\ttangents = frames.tangents,\n\t\t\tnormals = frames.normals,\n\t\t\tbinormals = frames.binormals;\n\n\t\t// proxy internals\n\t\tthis.tangents = tangents;\n\t\tthis.normals = normals;\n\t\tthis.binormals = binormals;\n\n\t\tfunction vert( x, y, z ) {\n\n\t\t\treturn scope.vertices.push( new THREE.Vector3( x, y, z ) ) - 1;\n\n\t\t}\n\n\t\t// construct the grid\n\n\t\tfor ( i = 0; i < numpoints; i ++ ) {\n\n\t\t\tgrid[ i ] = [];\n\n\t\t\tu = i / ( numpoints - 1 );\n\n\t\t\tpos = path.getPointAt( u );\n\n\t\t\ttangent = tangents[ i ];\n\t\t\tnormal = normals[ i ];\n\t\t\tbinormal = binormals[ i ];\n\n\t\t\tr = radius * taper( u );\n\n\t\t\tfor ( j = 0; j < radialSegments; j ++ ) {\n\n\t\t\t\tv = j / radialSegments * 2 * Math.PI;\n\n\t\t\t\tcx = - r * Math.cos( v ); // TODO: Hack: Negating it so it faces outside.\n\t\t\t\tcy = r * Math.sin( v );\n\n\t\t\t\tpos2.copy( pos );\n\t\t\t\tpos2.x += cx * normal.x + cy * binormal.x;\n\t\t\t\tpos2.y += cx * normal.y + cy * binormal.y;\n\t\t\t\tpos2.z += cx * normal.z + cy * binormal.z;\n\n\t\t\t\tgrid[ i ][ j ] = vert( pos2.x, pos2.y, pos2.z );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// construct the mesh\n\n\t\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( j = 0; j < radialSegments; j ++ ) {\n\n\t\t\t\tip = ( closed ) ? ( i + 1 ) % segments : i + 1;\n\t\t\t\tjp = ( j + 1 ) % radialSegments;\n\n\t\t\t\ta = grid[ i ][ j ];\t\t// *** NOT NECESSARILY PLANAR ! ***\n\t\t\t\tb = grid[ ip ][ j ];\n\t\t\t\tc = grid[ ip ][ jp ];\n\t\t\t\td = grid[ i ][ jp ];\n\n\t\t\t\tuva = new THREE.Vector2( i / segments, j / radialSegments );\n\t\t\t\tuvb = new THREE.Vector2( ( i + 1 ) / segments, j / radialSegments );\n\t\t\t\tuvc = new THREE.Vector2( ( i + 1 ) / segments, ( j + 1 ) / radialSegments );\n\t\t\t\tuvd = new THREE.Vector2( i / segments, ( j + 1 ) / radialSegments );\n\n\t\t\t\tthis.faces.push( new THREE.Face3( a, b, d ) );\n\t\t\t\tthis.faceVertexUvs[ 0 ].push( [ uva, uvb, uvd ] );\n\n\t\t\t\tthis.faces.push( new THREE.Face3( b, c, d ) );\n\t\t\t\tthis.faceVertexUvs[ 0 ].push( [ uvb.clone(), uvc, uvd.clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeFaceNormals();\n\t\tthis.computeVertexNormals();\n\n\t};\n\n\tTHREE.TubeGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.TubeGeometry.prototype.constructor = THREE.TubeGeometry;\n\n\tTHREE.TubeGeometry.NoTaper = function ( u ) {\n\n\t\treturn 1;\n\n\t};\n\n\tTHREE.TubeGeometry.SinusoidalTaper = function ( u ) {\n\n\t\treturn Math.sin( Math.PI * u );\n\n\t};\n\n\t// For computing of Frenet frames, exposing the tangents, normals and binormals the spline\n\tTHREE.TubeGeometry.FrenetFrames = function ( path, segments, closed ) {\n\n\t\tvar\tnormal = new THREE.Vector3(),\n\n\t\t\ttangents = [],\n\t\t\tnormals = [],\n\t\t\tbinormals = [],\n\n\t\t\tvec = new THREE.Vector3(),\n\t\t\tmat = new THREE.Matrix4(),\n\n\t\t\tnumpoints = segments + 1,\n\t\t\ttheta,\n\t\t\tsmallest,\n\n\t\t\ttx, ty, tz,\n\t\t\ti, u;\n\n\n\t\t// expose internals\n\t\tthis.tangents = tangents;\n\t\tthis.normals = normals;\n\t\tthis.binormals = binormals;\n\n\t\t// compute the tangent vectors for each segment on the path\n\n\t\tfor ( i = 0; i < numpoints; i ++ ) {\n\n\t\t\tu = i / ( numpoints - 1 );\n\n\t\t\ttangents[ i ] = path.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\tinitialNormal3();\n\n\t\t/*\n\t\tfunction initialNormal1(lastBinormal) {\n\t\t\t// fixed start binormal. Has dangers of 0 vectors\n\t\t\tnormals[ 0 ] = new THREE.Vector3();\n\t\t\tbinormals[ 0 ] = new THREE.Vector3();\n\t\t\tif (lastBinormal===undefined) lastBinormal = new THREE.Vector3( 0, 0, 1 );\n\t\t\tnormals[ 0 ].crossVectors( lastBinormal, tangents[ 0 ] ).normalize();\n\t\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ).normalize();\n\t\t}\n\n\t\tfunction initialNormal2() {\n\n\t\t\t// This uses the Frenet-Serret formula for deriving binormal\n\t\t\tvar t2 = path.getTangentAt( epsilon );\n\n\t\t\tnormals[ 0 ] = new THREE.Vector3().subVectors( t2, tangents[ 0 ] ).normalize();\n\t\t\tbinormals[ 0 ] = new THREE.Vector3().crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\t\t\tnormals[ 0 ].crossVectors( binormals[ 0 ], tangents[ 0 ] ).normalize(); // last binormal x tangent\n\t\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ).normalize();\n\n\t\t}\n\t\t*/\n\n\t\tfunction initialNormal3() {\n\n\t\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t\t// and in the direction of the smallest tangent xyz component\n\n\t\t\tnormals[ 0 ] = new THREE.Vector3();\n\t\t\tbinormals[ 0 ] = new THREE.Vector3();\n\t\t\tsmallest = Number.MAX_VALUE;\n\t\t\ttx = Math.abs( tangents[ 0 ].x );\n\t\t\tty = Math.abs( tangents[ 0 ].y );\n\t\t\ttz = Math.abs( tangents[ 0 ].z );\n\n\t\t\tif ( tx <= smallest ) {\n\n\t\t\t\tsmallest = tx;\n\t\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t\t}\n\n\t\t\tif ( ty <= smallest ) {\n\n\t\t\t\tsmallest = ty;\n\t\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t\t}\n\n\t\t\tif ( tz <= smallest ) {\n\n\t\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t\t}\n\n\t\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\t\t}\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the path\n\n\t\tfor ( i = 1; i < numpoints; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( THREE.Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed ) {\n\n\t\t\ttheta = Math.acos( THREE.Math.clamp( normals[ 0 ].dot( normals[ numpoints - 1 ] ), - 1, 1 ) );\n\t\t\ttheta /= ( numpoints - 1 );\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ numpoints - 1 ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i < numpoints; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// File:src/extras/geometries/PolyhedronGeometry.js\n\n\t/**\n\t * @author clockworkgeek / https://github.com/clockworkgeek\n\t * @author timothypratley / https://github.com/timothypratley\n\t * @author WestLangley / http://github.com/WestLangley\n\t*/\n\n\tTHREE.PolyhedronGeometry = function ( vertices, indices, radius, detail ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\tradius = radius || 1;\n\t\tdetail = detail || 0;\n\n\t\tvar that = this;\n\n\t\tfor ( var i = 0, l = vertices.length; i < l; i += 3 ) {\n\n\t\t\tprepare( new THREE.Vector3( vertices[ i ], vertices[ i + 1 ], vertices[ i + 2 ] ) );\n\n\t\t}\n\n\t\tvar p = this.vertices;\n\n\t\tvar faces = [];\n\n\t\tfor ( var i = 0, j = 0, l = indices.length; i < l; i += 3, j ++ ) {\n\n\t\t\tvar v1 = p[ indices[ i ] ];\n\t\t\tvar v2 = p[ indices[ i + 1 ] ];\n\t\t\tvar v3 = p[ indices[ i + 2 ] ];\n\n\t\t\tfaces[ j ] = new THREE.Face3( v1.index, v2.index, v3.index, [ v1.clone(), v2.clone(), v3.clone() ] );\n\n\t\t}\n\n\t\tvar centroid = new THREE.Vector3();\n\n\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tsubdivide( faces[ i ], detail );\n\n\t\t}\n\n\n\t\t// Handle case when face straddles the seam\n\n\t\tfor ( var i = 0, l = this.faceVertexUvs[ 0 ].length; i < l; i ++ ) {\n\n\t\t\tvar uvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\tvar x0 = uvs[ 0 ].x;\n\t\t\tvar x1 = uvs[ 1 ].x;\n\t\t\tvar x2 = uvs[ 2 ].x;\n\n\t\t\tvar max = Math.max( x0, x1, x2 );\n\t\t\tvar min = Math.min( x0, x1, x2 );\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( x0 < 0.2 ) uvs[ 0 ].x += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvs[ 1 ].x += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvs[ 2 ].x += 1;\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Apply radius\n\n\t\tfor ( var i = 0, l = this.vertices.length; i < l; i ++ ) {\n\n\t\t\tthis.vertices[ i ].multiplyScalar( radius );\n\n\t\t}\n\n\n\t\t// Merge vertices\n\n\t\tthis.mergeVertices();\n\n\t\tthis.computeFaceNormals();\n\n\t\tthis.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );\n\n\n\t\t// Project vector onto sphere's surface\n\n\t\tfunction prepare( vector ) {\n\n\t\t\tvar vertex = vector.normalize().clone();\n\t\t\tvertex.index = that.vertices.push( vertex ) - 1;\n\n\t\t\t// Texture coords are equivalent to map coords, calculate angle and convert to fraction of a circle.\n\n\t\t\tvar u = azimuth( vector ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vector ) / Math.PI + 0.5;\n\t\t\tvertex.uv = new THREE.Vector2( u, 1 - v );\n\n\t\t\treturn vertex;\n\n\t\t}\n\n\n\t\t// Approximate a curved face with recursively sub-divided triangles.\n\n\t\tfunction make( v1, v2, v3 ) {\n\n\t\t\tvar face = new THREE.Face3( v1.index, v2.index, v3.index, [ v1.clone(), v2.clone(), v3.clone() ] );\n\t\t\tthat.faces.push( face );\n\n\t\t\tcentroid.copy( v1 ).add( v2 ).add( v3 ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tthat.faceVertexUvs[ 0 ].push( [\n\t\t\t\tcorrectUV( v1.uv, v1, azi ),\n\t\t\t\tcorrectUV( v2.uv, v2, azi ),\n\t\t\t\tcorrectUV( v3.uv, v3, azi )\n\t\t\t] );\n\n\t\t}\n\n\n\t\t// Analytically subdivide a face to the required detail level.\n\n\t\tfunction subdivide( face, detail ) {\n\n\t\t\tvar cols = Math.pow( 2, detail );\n\t\t\tvar a = prepare( that.vertices[ face.a ] );\n\t\t\tvar b = prepare( that.vertices[ face.b ] );\n\t\t\tvar c = prepare( that.vertices[ face.c ] );\n\t\t\tvar v = [];\n\n\t\t\t// Construct all of the vertices for this subdivision.\n\n\t\t\tfor ( var i = 0 ; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tvar aj = prepare( a.clone().lerp( c, i / cols ) );\n\t\t\t\tvar bj = prepare( b.clone().lerp( c, i / cols ) );\n\t\t\t\tvar rows = cols - i;\n\n\t\t\t\tfor ( var j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = prepare( aj.clone().lerp( bj, j / rows ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Construct all of the faces.\n\n\t\t\tfor ( var i = 0; i < cols ; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tmake(\n\t\t\t\t\t\t\tv[ i ][ k + 1 ],\n\t\t\t\t\t\t\tv[ i + 1 ][ k ],\n\t\t\t\t\t\t\tv[ i ][ k ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tmake(\n\t\t\t\t\t\t\tv[ i ][ k + 1 ],\n\t\t\t\t\t\t\tv[ i + 1 ][ k + 1 ],\n\t\t\t\t\t\t\tv[ i + 1 ][ k ]\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\n\t\t// Texture fixing helper. Spheres have some odd behaviours.\n\n\t\tfunction correctUV( uv, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) uv = new THREE.Vector2( uv.x - 1, uv.y );\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) uv = new THREE.Vector2( azimuth / 2 / Math.PI + 0.5, uv.y );\n\t\t\treturn uv.clone();\n\n\t\t}\n\n\n\t};\n\n\tTHREE.PolyhedronGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.PolyhedronGeometry.prototype.constructor = THREE.PolyhedronGeometry;\n\n\t// File:src/extras/geometries/DodecahedronGeometry.js\n\n\t/**\n\t * @author Abe Pazos / https://hamoid.com\n\t */\n\n\tTHREE.DodecahedronGeometry = function ( radius, detail ) {\n\n\t\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tvar r = 1 / t;\n\n\t\tvar vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,    - 1, - 1,  1,\n\t\t\t- 1,  1, - 1,    - 1,  1,  1,\n\t\t\t 1, - 1, - 1,     1, - 1,  1,\n\t\t\t 1,  1, - 1,     1,  1,  1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t 0, - r, - t,     0, - r,  t,\n\t\t\t 0,  r, - t,     0,  r,  t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t,  0,    - r,  t,  0,\n\t\t\t r, - t,  0,     r,  t,  0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t,  0, - r,     t,  0, - r,\n\t\t\t- t,  0,  r,     t,  0,  r\n\t\t];\n\n\t\tvar indices = [\n\t\t\t 3, 11,  7,      3,  7, 15,      3, 15, 13,\n\t\t\t 7, 19, 17,      7, 17,  6,      7,  6, 15,\n\t\t\t17,  4,  8,     17,  8, 10,     17, 10,  6,\n\t\t\t 8,  0, 16,      8, 16,  2,      8,  2, 10,\n\t\t\t 0, 12,  1,      0,  1, 18,      0, 18, 16,\n\t\t\t 6, 10,  2,      6,  2, 13,      6, 13, 15,\n\t\t\t 2, 16, 18,      2, 18,  3,      2,  3, 13,\n\t\t\t18,  1,  9,     18,  9, 11,     18, 11,  3,\n\t\t\t 4, 14, 12,      4, 12,  0,      4,  0,  8,\n\t\t\t11,  9,  5,     11,  5, 19,     11, 19,  7,\n\t\t\t19,  5, 14,     19, 14,  4,     19,  4, 17,\n\t\t\t 1, 12, 14,      1, 14,  5,      1,  5,  9\n\t\t];\n\n\t\tTHREE.PolyhedronGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t};\n\n\tTHREE.DodecahedronGeometry.prototype = Object.create( THREE.PolyhedronGeometry.prototype );\n\tTHREE.DodecahedronGeometry.prototype.constructor = THREE.DodecahedronGeometry;\n\n\t// File:src/extras/geometries/IcosahedronGeometry.js\n\n\t/**\n\t * @author timothypratley / https://github.com/timothypratley\n\t */\n\n\tTHREE.IcosahedronGeometry = function ( radius, detail ) {\n\n\t\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tvar vertices = [\n\t\t\t- 1,  t,  0,    1,  t,  0,   - 1, - t,  0,    1, - t,  0,\n\t\t\t 0, - 1,  t,    0,  1,  t,    0, - 1, - t,    0,  1, - t,\n\t\t\t t,  0, - 1,    t,  0,  1,   - t,  0, - 1,   - t,  0,  1\n\t\t];\n\n\t\tvar indices = [\n\t\t\t 0, 11,  5,    0,  5,  1,    0,  1,  7,    0,  7, 10,    0, 10, 11,\n\t\t\t 1,  5,  9,    5, 11,  4,   11, 10,  2,   10,  7,  6,    7,  1,  8,\n\t\t\t 3,  9,  4,    3,  4,  2,    3,  2,  6,    3,  6,  8,    3,  8,  9,\n\t\t\t 4,  9,  5,    2,  4, 11,    6,  2, 10,    8,  6,  7,    9,  8,  1\n\t\t];\n\n\t\tTHREE.PolyhedronGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t};\n\n\tTHREE.IcosahedronGeometry.prototype = Object.create( THREE.PolyhedronGeometry.prototype );\n\tTHREE.IcosahedronGeometry.prototype.constructor = THREE.IcosahedronGeometry;\n\n\t// File:src/extras/geometries/OctahedronGeometry.js\n\n\t/**\n\t * @author timothypratley / https://github.com/timothypratley\n\t */\n\n\tTHREE.OctahedronGeometry = function ( radius, detail ) {\n\n\t\tvar vertices = [\n\t\t\t1, 0, 0,   - 1, 0, 0,    0, 1, 0,    0, - 1, 0,    0, 0, 1,    0, 0, - 1\n\t\t];\n\n\t\tvar indices = [\n\t\t\t0, 2, 4,    0, 4, 3,    0, 3, 5,    0, 5, 2,    1, 2, 5,    1, 5, 3,    1, 3, 4,    1, 4, 2\n\t\t];\n\n\t\tTHREE.PolyhedronGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t};\n\n\tTHREE.OctahedronGeometry.prototype = Object.create( THREE.PolyhedronGeometry.prototype );\n\tTHREE.OctahedronGeometry.prototype.constructor = THREE.OctahedronGeometry;\n\n\t// File:src/extras/geometries/TetrahedronGeometry.js\n\n\t/**\n\t * @author timothypratley / https://github.com/timothypratley\n\t */\n\n\tTHREE.TetrahedronGeometry = function ( radius, detail ) {\n\n\t\tvar vertices = [\n\t\t\t 1,  1,  1,   - 1, - 1,  1,   - 1,  1, - 1,    1, - 1, - 1\n\t\t];\n\n\t\tvar indices = [\n\t\t\t 2,  1,  0,    0,  3,  2,    1,  3,  0,    2,  3,  1\n\t\t];\n\n\t\tTHREE.PolyhedronGeometry.call( this, vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t};\n\n\tTHREE.TetrahedronGeometry.prototype = Object.create( THREE.PolyhedronGeometry.prototype );\n\tTHREE.TetrahedronGeometry.prototype.constructor = THREE.TetrahedronGeometry;\n\n\t// File:src/extras/geometries/ParametricGeometry.js\n\n\t/**\n\t * @author zz85 / https://github.com/zz85\n\t * Parametric Surfaces Geometry\n\t * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n\t *\n\t * new THREE.ParametricGeometry( parametricFunction, uSegments, ySegements );\n\t *\n\t */\n\n\tTHREE.ParametricGeometry = function ( func, slices, stacks ) {\n\n\t\tTHREE.Geometry.call( this );\n\n\t\tthis.type = 'ParametricGeometry';\n\n\t\tthis.parameters = {\n\t\t\tfunc: func,\n\t\t\tslices: slices,\n\t\t\tstacks: stacks\n\t\t};\n\n\t\tvar verts = this.vertices;\n\t\tvar faces = this.faces;\n\t\tvar uvs = this.faceVertexUvs[ 0 ];\n\n\t\tvar i, j, p;\n\t\tvar u, v;\n\n\t\tvar sliceCount = slices + 1;\n\n\t\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\t\tv = i / stacks;\n\n\t\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\t\tu = j / slices;\n\n\t\t\t\tp = func( u, v );\n\t\t\t\tverts.push( p );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar a, b, c, d;\n\t\tvar uva, uvb, uvc, uvd;\n\n\t\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\t\ta = i * sliceCount + j;\n\t\t\t\tb = i * sliceCount + j + 1;\n\t\t\t\tc = ( i + 1 ) * sliceCount + j + 1;\n\t\t\t\td = ( i + 1 ) * sliceCount + j;\n\n\t\t\t\tuva = new THREE.Vector2( j / slices, i / stacks );\n\t\t\t\tuvb = new THREE.Vector2( ( j + 1 ) / slices, i / stacks );\n\t\t\t\tuvc = new THREE.Vector2( ( j + 1 ) / slices, ( i + 1 ) / stacks );\n\t\t\t\tuvd = new THREE.Vector2( j / slices, ( i + 1 ) / stacks );\n\n\t\t\t\tfaces.push( new THREE.Face3( a, b, d ) );\n\t\t\t\tuvs.push( [ uva, uvb, uvd ] );\n\n\t\t\t\tfaces.push( new THREE.Face3( b, c, d ) );\n\t\t\t\tuvs.push( [ uvb.clone(), uvc, uvd.clone() ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.log(this);\n\n\t\t// magic bullet\n\t\t// var diff = this.mergeVertices();\n\t\t// console.log('removed ', diff, ' vertices by merging');\n\n\t\tthis.computeFaceNormals();\n\t\tthis.computeVertexNormals();\n\n\t};\n\n\tTHREE.ParametricGeometry.prototype = Object.create( THREE.Geometry.prototype );\n\tTHREE.ParametricGeometry.prototype.constructor = THREE.ParametricGeometry;\n\n\t// File:src/extras/geometries/WireframeGeometry.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.WireframeGeometry = function ( geometry ) {\n\n\t\tTHREE.BufferGeometry.call( this );\n\n\t\tvar edge = [ 0, 0 ], hash = {};\n\n\t\tfunction sortFunction( a, b ) {\n\n\t\t\treturn a - b;\n\n\t\t}\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tif ( geometry instanceof THREE.Geometry ) {\n\n\t\t\tvar vertices = geometry.vertices;\n\t\t\tvar faces = geometry.faces;\n\t\t\tvar numEdges = 0;\n\n\t\t\t// allocate maximal size\n\t\t\tvar edges = new Uint32Array( 6 * faces.length );\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\tedge[ 0 ] = face[ keys[ j ] ];\n\t\t\t\t\tedge[ 1 ] = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\t\tvar key = edge.toString();\n\n\t\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ edges [ 2 * i + j ] ];\n\n\t\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\t\tcoords[ index + 0 ] = vertex.x;\n\t\t\t\t\tcoords[ index + 1 ] = vertex.y;\n\t\t\t\t\tcoords[ index + 2 ] = vertex.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( coords, 3 ) );\n\n\t\t} else if ( geometry instanceof THREE.BufferGeometry ) {\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// Indexed BufferGeometry\n\n\t\t\t\tvar indices = geometry.index.array;\n\t\t\t\tvar vertices = geometry.attributes.position;\n\t\t\t\tvar groups = geometry.groups;\n\t\t\t\tvar numEdges = 0;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgeometry.addGroup( 0, indices.length );\n\n\t\t\t\t}\n\n\t\t\t\t// allocate maximal size\n\t\t\t\tvar edges = new Uint32Array( 2 * indices.length );\n\n\t\t\t\tfor ( var o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tvar group = groups[ o ];\n\n\t\t\t\t\tvar start = group.start;\n\t\t\t\t\tvar count = group.count;\n\n\t\t\t\t\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\n\n\t\t\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tedge[ 0 ] = indices[ i + j ];\n\t\t\t\t\t\t\tedge[ 1 ] = indices[ i + ( j + 1 ) % 3 ];\n\t\t\t\t\t\t\tedge.sort( sortFunction );\n\n\t\t\t\t\t\t\tvar key = edge.toString();\n\n\t\t\t\t\t\t\tif ( hash[ key ] === undefined ) {\n\n\t\t\t\t\t\t\t\tedges[ 2 * numEdges ] = edge[ 0 ];\n\t\t\t\t\t\t\t\tedges[ 2 * numEdges + 1 ] = edge[ 1 ];\n\t\t\t\t\t\t\t\thash[ key ] = true;\n\t\t\t\t\t\t\t\tnumEdges ++;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\t\tfor ( var i = 0, l = numEdges; i < l; i ++ ) {\n\n\t\t\t\t\tfor ( var j = 0; j < 2; j ++ ) {\n\n\t\t\t\t\t\tvar index = 6 * i + 3 * j;\n\t\t\t\t\t\tvar index2 = edges[ 2 * i + j ];\n\n\t\t\t\t\t\tcoords[ index + 0 ] = vertices.getX( index2 );\n\t\t\t\t\t\tcoords[ index + 1 ] = vertices.getY( index2 );\n\t\t\t\t\t\tcoords[ index + 2 ] = vertices.getZ( index2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( coords, 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tvar vertices = geometry.attributes.position.array;\n\t\t\t\tvar numEdges = vertices.length / 3;\n\t\t\t\tvar numTris = numEdges / 3;\n\n\t\t\t\tvar coords = new Float32Array( numEdges * 2 * 3 );\n\n\t\t\t\tfor ( var i = 0, l = numTris; i < l; i ++ ) {\n\n\t\t\t\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tvar index = 18 * i + 6 * j;\n\n\t\t\t\t\t\tvar index1 = 9 * i + 3 * j;\n\t\t\t\t\t\tcoords[ index + 0 ] = vertices[ index1 ];\n\t\t\t\t\t\tcoords[ index + 1 ] = vertices[ index1 + 1 ];\n\t\t\t\t\t\tcoords[ index + 2 ] = vertices[ index1 + 2 ];\n\n\t\t\t\t\t\tvar index2 = 9 * i + 3 * ( ( j + 1 ) % 3 );\n\t\t\t\t\t\tcoords[ index + 3 ] = vertices[ index2 ];\n\t\t\t\t\t\tcoords[ index + 4 ] = vertices[ index2 + 1 ];\n\t\t\t\t\t\tcoords[ index + 5 ] = vertices[ index2 + 2 ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tthis.addAttribute( 'position', new THREE.BufferAttribute( coords, 3 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tTHREE.WireframeGeometry.prototype = Object.create( THREE.BufferGeometry.prototype );\n\tTHREE.WireframeGeometry.prototype.constructor = THREE.WireframeGeometry;\n\n\t// File:src/extras/helpers/AxisHelper.js\n\n\t/**\n\t * @author sroucheray / http://sroucheray.org/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.AxisHelper = function ( size ) {\n\n\t\tsize = size || 1;\n\n\t\tvar vertices = new Float32Array( [\n\t\t\t0, 0, 0,  size, 0, 0,\n\t\t\t0, 0, 0,  0, size, 0,\n\t\t\t0, 0, 0,  0, 0, size\n\t\t] );\n\n\t\tvar colors = new Float32Array( [\n\t\t\t1, 0, 0,  1, 0.6, 0,\n\t\t\t0, 1, 0,  0.6, 1, 0,\n\t\t\t0, 0, 1,  0, 0.6, 1\n\t\t] );\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );\n\n\t\tvar material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );\n\n\t\tTHREE.LineSegments.call( this, geometry, material );\n\n\t};\n\n\tTHREE.AxisHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.AxisHelper.prototype.constructor = THREE.AxisHelper;\n\n\t// File:src/extras/helpers/ArrowHelper.js\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author zz85 / http://github.com/zz85\n\t * @author bhouston / http://clara.io\n\t *\n\t * Creates an arrow for visualizing directions\n\t *\n\t * Parameters:\n\t *  dir - Vector3\n\t *  origin - Vector3\n\t *  length - Number\n\t *  color - color in hex value\n\t *  headLength - Number\n\t *  headWidth - Number\n\t */\n\n\tTHREE.ArrowHelper = ( function () {\n\n\t\tvar lineGeometry = new THREE.BufferGeometry();\n\t\tlineGeometry.addAttribute( 'position', new THREE.Float32Attribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\tvar coneGeometry = new THREE.CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\tconeGeometry.translate( 0, - 0.5, 0 );\n\n\t\treturn function ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t\t\t// dir is assumed to be normalized\n\n\t\t\tTHREE.Object3D.call( this );\n\n\t\t\tif ( color === undefined ) color = 0xffff00;\n\t\t\tif ( length === undefined ) length = 1;\n\t\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\t\tthis.position.copy( origin );\n\n\t\t\tthis.line = new THREE.Line( lineGeometry, new THREE.LineBasicMaterial( { color: color } ) );\n\t\t\tthis.line.matrixAutoUpdate = false;\n\t\t\tthis.add( this.line );\n\n\t\t\tthis.cone = new THREE.Mesh( coneGeometry, new THREE.MeshBasicMaterial( { color: color } ) );\n\t\t\tthis.cone.matrixAutoUpdate = false;\n\t\t\tthis.add( this.cone );\n\n\t\t\tthis.setDirection( dir );\n\t\t\tthis.setLength( length, headLength, headWidth );\n\n\t\t};\n\n\t}() );\n\n\tTHREE.ArrowHelper.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.ArrowHelper.prototype.constructor = THREE.ArrowHelper;\n\n\tTHREE.ArrowHelper.prototype.setDirection = ( function () {\n\n\t\tvar axis = new THREE.Vector3();\n\t\tvar radians;\n\n\t\treturn function setDirection( dir ) {\n\n\t\t\t// dir is assumed to be normalized\n\n\t\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\t\tradians = Math.acos( dir.y );\n\n\t\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t\t}\n\n\t\t};\n\n\t}() );\n\n\tTHREE.ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\t\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t};\n\n\tTHREE.ArrowHelper.prototype.setColor = function ( color ) {\n\n\t\tthis.line.material.color.copy( color );\n\t\tthis.cone.material.color.copy( color );\n\n\t};\n\n\t// File:src/extras/helpers/BoxHelper.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.BoxHelper = function ( object, color ) {\n\t\t\n\t\tif ( color === undefined ) color = 0xffff00;\n\n\t\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tvar positions = new Float32Array( 8 * 3 );\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\t\tgeometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );\n\t\tgeometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );\n\n\t\tTHREE.LineSegments.call( this, geometry, new THREE.LineBasicMaterial( { color: color } ) );\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tthis.update( object );\n\n\t\t}\n\n\t};\n\n\tTHREE.BoxHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.BoxHelper.prototype.constructor = THREE.BoxHelper;\n\n\tTHREE.BoxHelper.prototype.update = ( function () {\n\n\t\tvar box = new THREE.Box3();\n\n\t\treturn function update( object ) {\n\n\t\t\tif ( object instanceof THREE.Box3 ) {\n\n\t\t\t\tbox.copy( object );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromObject( object );\n\n\t\t\t}\n\n\t\t\tif ( box.isEmpty() ) return;\n\n\t\t\tvar min = box.min;\n\t\t\tvar max = box.max;\n\n\t\t\t/*\n\t\t\t  5____4\n\t\t\t1/___0/|\n\t\t\t| 6__|_7\n\t\t\t2/___3/\n\n\t\t\t0: max.x, max.y, max.z\n\t\t\t1: min.x, max.y, max.z\n\t\t\t2: min.x, min.y, max.z\n\t\t\t3: max.x, min.y, max.z\n\t\t\t4: max.x, max.y, min.z\n\t\t\t5: min.x, max.y, min.z\n\t\t\t6: min.x, min.y, min.z\n\t\t\t7: max.x, min.y, min.z\n\t\t\t*/\n\n\t\t\tvar position = this.geometry.attributes.position;\n\t\t\tvar array = position.array;\n\n\t\t\tarray[  0 ] = max.x; array[  1 ] = max.y; array[  2 ] = max.z;\n\t\t\tarray[  3 ] = min.x; array[  4 ] = max.y; array[  5 ] = max.z;\n\t\t\tarray[  6 ] = min.x; array[  7 ] = min.y; array[  8 ] = max.z;\n\t\t\tarray[  9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t\tthis.geometry.computeBoundingSphere();\n\n\t\t};\n\n\t} )();\n\n\t// File:src/extras/helpers/BoundingBoxHelper.js\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\t// a helper to show the world-axis-aligned bounding box for an object\n\n\tTHREE.BoundingBoxHelper = function ( object, hex ) {\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0x888888;\n\n\t\tthis.object = object;\n\n\t\tthis.box = new THREE.Box3();\n\n\t\tTHREE.Mesh.call( this, new THREE.BoxGeometry( 1, 1, 1 ), new THREE.MeshBasicMaterial( { color: color, wireframe: true } ) );\n\n\t};\n\n\tTHREE.BoundingBoxHelper.prototype = Object.create( THREE.Mesh.prototype );\n\tTHREE.BoundingBoxHelper.prototype.constructor = THREE.BoundingBoxHelper;\n\n\tTHREE.BoundingBoxHelper.prototype.update = function () {\n\n\t\tthis.box.setFromObject( this.object );\n\n\t\tthis.box.size( this.scale );\n\n\t\tthis.box.center( this.position );\n\n\t};\n\n\t// File:src/extras/helpers/CameraHelper.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t *\n\t *\t- shows frustum, line of sight and up of the camera\n\t *\t- suitable for fast updates\n\t * \t- based on frustum visualization in lightgl.js shadowmap example\n\t *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n\t */\n\n\tTHREE.CameraHelper = function ( camera ) {\n\n\t\tvar geometry = new THREE.Geometry();\n\t\tvar material = new THREE.LineBasicMaterial( { color: 0xffffff, vertexColors: THREE.FaceColors } );\n\n\t\tvar pointMap = {};\n\n\t\t// colors\n\n\t\tvar hexFrustum = 0xffaa00;\n\t\tvar hexCone = 0xff0000;\n\t\tvar hexUp = 0x00aaff;\n\t\tvar hexTarget = 0xffffff;\n\t\tvar hexCross = 0x333333;\n\n\t\t// near\n\n\t\taddLine( \"n1\", \"n2\", hexFrustum );\n\t\taddLine( \"n2\", \"n4\", hexFrustum );\n\t\taddLine( \"n4\", \"n3\", hexFrustum );\n\t\taddLine( \"n3\", \"n1\", hexFrustum );\n\n\t\t// far\n\n\t\taddLine( \"f1\", \"f2\", hexFrustum );\n\t\taddLine( \"f2\", \"f4\", hexFrustum );\n\t\taddLine( \"f4\", \"f3\", hexFrustum );\n\t\taddLine( \"f3\", \"f1\", hexFrustum );\n\n\t\t// sides\n\n\t\taddLine( \"n1\", \"f1\", hexFrustum );\n\t\taddLine( \"n2\", \"f2\", hexFrustum );\n\t\taddLine( \"n3\", \"f3\", hexFrustum );\n\t\taddLine( \"n4\", \"f4\", hexFrustum );\n\n\t\t// cone\n\n\t\taddLine( \"p\", \"n1\", hexCone );\n\t\taddLine( \"p\", \"n2\", hexCone );\n\t\taddLine( \"p\", \"n3\", hexCone );\n\t\taddLine( \"p\", \"n4\", hexCone );\n\n\t\t// up\n\n\t\taddLine( \"u1\", \"u2\", hexUp );\n\t\taddLine( \"u2\", \"u3\", hexUp );\n\t\taddLine( \"u3\", \"u1\", hexUp );\n\n\t\t// target\n\n\t\taddLine( \"c\", \"t\", hexTarget );\n\t\taddLine( \"p\", \"c\", hexCross );\n\n\t\t// cross\n\n\t\taddLine( \"cn1\", \"cn2\", hexCross );\n\t\taddLine( \"cn3\", \"cn4\", hexCross );\n\n\t\taddLine( \"cf1\", \"cf2\", hexCross );\n\t\taddLine( \"cf3\", \"cf4\", hexCross );\n\n\t\tfunction addLine( a, b, hex ) {\n\n\t\t\taddPoint( a, hex );\n\t\t\taddPoint( b, hex );\n\n\t\t}\n\n\t\tfunction addPoint( id, hex ) {\n\n\t\t\tgeometry.vertices.push( new THREE.Vector3() );\n\t\t\tgeometry.colors.push( new THREE.Color( hex ) );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( geometry.vertices.length - 1 );\n\n\t\t}\n\n\t\tTHREE.LineSegments.call( this, geometry, material );\n\n\t\tthis.camera = camera;\n\t\tif( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t};\n\n\tTHREE.CameraHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.CameraHelper.prototype.constructor = THREE.CameraHelper;\n\n\tTHREE.CameraHelper.prototype.update = function () {\n\n\t\tvar geometry, pointMap;\n\n\t\tvar vector = new THREE.Vector3();\n\t\tvar camera = new THREE.Camera();\n\n\t\tfunction setPoint( point, x, y, z ) {\n\n\t\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\t\tvar points = pointMap[ point ];\n\n\t\t\tif ( points !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\t\tgeometry.vertices[ points[ i ] ].copy( vector );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn function update() {\n\n\t\t\tgeometry = this.geometry;\n\t\t\tpointMap = this.pointMap;\n\n\t\t\tvar w = 1, h = 1;\n\n\t\t\t// we need just camera projection matrix\n\t\t\t// world matrix must be identity\n\n\t\t\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\n\n\t\t\t// center / target\n\n\t\t\tsetPoint( \"c\", 0, 0, - 1 );\n\t\t\tsetPoint( \"t\", 0, 0,  1 );\n\n\t\t\t// near\n\n\t\t\tsetPoint( \"n1\", - w, - h, - 1 );\n\t\t\tsetPoint( \"n2\",   w, - h, - 1 );\n\t\t\tsetPoint( \"n3\", - w,   h, - 1 );\n\t\t\tsetPoint( \"n4\",   w,   h, - 1 );\n\n\t\t\t// far\n\n\t\t\tsetPoint( \"f1\", - w, - h, 1 );\n\t\t\tsetPoint( \"f2\",   w, - h, 1 );\n\t\t\tsetPoint( \"f3\", - w,   h, 1 );\n\t\t\tsetPoint( \"f4\",   w,   h, 1 );\n\n\t\t\t// up\n\n\t\t\tsetPoint( \"u1\",   w * 0.7, h * 1.1, - 1 );\n\t\t\tsetPoint( \"u2\", - w * 0.7, h * 1.1, - 1 );\n\t\t\tsetPoint( \"u3\",         0, h * 2,   - 1 );\n\n\t\t\t// cross\n\n\t\t\tsetPoint( \"cf1\", - w,   0, 1 );\n\t\t\tsetPoint( \"cf2\",   w,   0, 1 );\n\t\t\tsetPoint( \"cf3\",   0, - h, 1 );\n\t\t\tsetPoint( \"cf4\",   0,   h, 1 );\n\n\t\t\tsetPoint( \"cn1\", - w,   0, - 1 );\n\t\t\tsetPoint( \"cn2\",   w,   0, - 1 );\n\t\t\tsetPoint( \"cn3\",   0, - h, - 1 );\n\t\t\tsetPoint( \"cn4\",   0,   h, - 1 );\n\n\t\t\tgeometry.verticesNeedUpdate = true;\n\n\t\t};\n\n\t}();\n\n\t// File:src/extras/helpers/DirectionalLightHelper.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t */\n\n\tTHREE.DirectionalLightHelper = function ( light, size ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new THREE.Float32Attribute( [\n\t\t\t- size,   size, 0,\n\t\t\t  size,   size, 0,\n\t\t\t  size, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size,   size, 0\n\t\t], 3 ) );\n\n\t\tvar material = new THREE.LineBasicMaterial( { fog: false } );\n\n\t\tthis.add( new THREE.Line( geometry, material ) );\n\n\t\tgeometry = new THREE.BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new THREE.Float32Attribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.add( new THREE.Line( geometry, material ));\n\n\t\tthis.update();\n\n\t};\n\n\tTHREE.DirectionalLightHelper.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.DirectionalLightHelper.prototype.constructor = THREE.DirectionalLightHelper;\n\n\tTHREE.DirectionalLightHelper.prototype.dispose = function () {\n\n\t\tvar lightPlane = this.children[ 0 ];\n\t\tvar targetLine = this.children[ 1 ];\n\n\t\tlightPlane.geometry.dispose();\n\t\tlightPlane.material.dispose();\n\t\ttargetLine.geometry.dispose();\n\t\ttargetLine.material.dispose();\n\n\t};\n\n\tTHREE.DirectionalLightHelper.prototype.update = function () {\n\n\t\tvar v1 = new THREE.Vector3();\n\t\tvar v2 = new THREE.Vector3();\n\t\tvar v3 = new THREE.Vector3();\n\n\t\treturn function update() {\n\n\t\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t\tv3.subVectors( v2, v1 );\n\n\t\t\tvar lightPlane = this.children[ 0 ];\n\t\t\tvar targetLine = this.children[ 1 ];\n\n\t\t\tlightPlane.lookAt( v3 );\n\t\t\tlightPlane.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\t\ttargetLine.lookAt( v3 );\n\t\t\ttargetLine.scale.z = v3.length();\n\n\t\t};\n\n\t}();\n\n\t// File:src/extras/helpers/EdgesHelper.js\n\n\t/**\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @param object THREE.Mesh whose geometry will be used\n\t * @param hex line color\n\t * @param thresholdAngle the minimum angle (in degrees),\n\t * between the face normals of adjacent faces,\n\t * that is required to render an edge. A value of 10 means\n\t * an edge is only rendered if the angle is at least 10 degrees.\n\t */\n\n\tTHREE.EdgesHelper = function ( object, hex, thresholdAngle ) {\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xffffff;\n\n\t\tTHREE.LineSegments.call( this, new THREE.EdgesGeometry( object.geometry, thresholdAngle ), new THREE.LineBasicMaterial( { color: color } ) );\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t};\n\n\tTHREE.EdgesHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.EdgesHelper.prototype.constructor = THREE.EdgesHelper;\n\n\t// File:src/extras/helpers/FaceNormalsHelper.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t*/\n\n\tTHREE.FaceNormalsHelper = function ( object, size, hex, linewidth ) {\n\n\t\t// FaceNormalsHelper only supports THREE.Geometry\n\n\t\tthis.object = object;\n\n\t\tthis.size = ( size !== undefined ) ? size : 1;\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\t\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t\t//\n\n\t\tvar nNormals = 0;\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry instanceof THREE.Geometry ) {\n\n\t\t\tnNormals = objGeometry.faces.length;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t\t}\n\n\t\t//\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\tvar positions = new THREE.Float32Attribute( nNormals * 2 * 3, 3 );\n\n\t\tgeometry.addAttribute( 'position', positions );\n\n\t\tTHREE.LineSegments.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t\t//\n\n\t\tthis.matrixAutoUpdate = false;\n\t\tthis.update();\n\n\t};\n\n\tTHREE.FaceNormalsHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.FaceNormalsHelper.prototype.constructor = THREE.FaceNormalsHelper;\n\n\tTHREE.FaceNormalsHelper.prototype.update = ( function () {\n\n\t\tvar v1 = new THREE.Vector3();\n\t\tvar v2 = new THREE.Vector3();\n\t\tvar normalMatrix = new THREE.Matrix3();\n\n\t\treturn function update() {\n\n\t\t\tthis.object.updateMatrixWorld( true );\n\n\t\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\t\tvar position = this.geometry.attributes.position;\n\n\t\t\t//\n\n\t\t\tvar objGeometry = this.object.geometry;\n\n\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\tvar faces = objGeometry.faces;\n\n\t\t\tvar idx = 0;\n\n\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t\t.divideScalar( 3 )\n\t\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\tidx = idx + 1;\n\n\t\t\t}\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() );\n\n\t// File:src/extras/helpers/GridHelper.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.GridHelper = function ( size, step, color1, color2 ) {\n\n\t\tcolor1 = new THREE.Color( color1 !== undefined ? color1 : 0x444444 );\n\t\tcolor2 = new THREE.Color( color2 !== undefined ? color2 : 0x888888 );\n\n\t\tvar vertices = [];\n\t\tvar colors = [];\n\n\t\tfor ( var i = - size, j = 0; i <= size; i += step ) {\n\n\t\t\tvertices.push( - size, 0, i, size, 0, i );\n\t\t\tvertices.push( i, 0, - size, i, 0, size );\n\n\t\t\tvar color = i === 0 ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\t\tgeometry.addAttribute( 'position', new THREE.Float32Attribute( vertices, 3 ) );\n\t\tgeometry.addAttribute( 'color', new THREE.Float32Attribute( colors, 3 ) );\n\n\t\tvar material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );\n\n\t\tTHREE.LineSegments.call( this, geometry, material );\n\n\t};\n\n\tTHREE.GridHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.GridHelper.prototype.constructor = THREE.GridHelper;\n\n\tTHREE.GridHelper.prototype.setColors = function () {\n\n\t\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n\t};\n\n\t// File:src/extras/helpers/HemisphereLightHelper.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.HemisphereLightHelper = function ( light, sphereSize ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.colors = [ new THREE.Color(), new THREE.Color() ];\n\n\t\tvar geometry = new THREE.SphereGeometry( sphereSize, 4, 2 );\n\t\tgeometry.rotateX( - Math.PI / 2 );\n\n\t\tfor ( var i = 0, il = 8; i < il; i ++ ) {\n\n\t\t\tgeometry.faces[ i ].color = this.colors[ i < 4 ? 0 : 1 ];\n\n\t\t}\n\n\t\tvar material = new THREE.MeshBasicMaterial( { vertexColors: THREE.FaceColors, wireframe: true } );\n\n\t\tthis.lightSphere = new THREE.Mesh( geometry, material );\n\t\tthis.add( this.lightSphere );\n\n\t\tthis.update();\n\n\t};\n\n\tTHREE.HemisphereLightHelper.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.HemisphereLightHelper.prototype.constructor = THREE.HemisphereLightHelper;\n\n\tTHREE.HemisphereLightHelper.prototype.dispose = function () {\n\n\t\tthis.lightSphere.geometry.dispose();\n\t\tthis.lightSphere.material.dispose();\n\n\t};\n\n\tTHREE.HemisphereLightHelper.prototype.update = function () {\n\n\t\tvar vector = new THREE.Vector3();\n\n\t\treturn function update() {\n\n\t\t\tthis.colors[ 0 ].copy( this.light.color ).multiplyScalar( this.light.intensity );\n\t\t\tthis.colors[ 1 ].copy( this.light.groundColor ).multiplyScalar( this.light.intensity );\n\n\t\t\tthis.lightSphere.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\t\t\tthis.lightSphere.geometry.colorsNeedUpdate = true;\n\n\t\t};\n\n\t}();\n\n\t// File:src/extras/helpers/PointLightHelper.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.PointLightHelper = function ( light, sphereSize ) {\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tvar geometry = new THREE.SphereBufferGeometry( sphereSize, 4, 2 );\n\t\tvar material = new THREE.MeshBasicMaterial( { wireframe: true, fog: false } );\n\t\tmaterial.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\tTHREE.Mesh.call( this, geometry, material );\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/*\n\t\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\t\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\t\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\t\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\t\tvar d = light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\n\t\tthis.add( this.lightDistance );\n\t\t*/\n\n\t};\n\n\tTHREE.PointLightHelper.prototype = Object.create( THREE.Mesh.prototype );\n\tTHREE.PointLightHelper.prototype.constructor = THREE.PointLightHelper;\n\n\tTHREE.PointLightHelper.prototype.dispose = function () {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t};\n\n\tTHREE.PointLightHelper.prototype.update = function () {\n\n\t\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\t/*\n\t\tvar d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t};\n\n\t// File:src/extras/helpers/SkeletonHelper.js\n\n\t/**\n\t * @author Sean Griffin / http://twitter.com/sgrif\n\t * @author Michael Guerrero / http://realitymeltdown.com\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author ikerr / http://verold.com\n\t */\n\n\tTHREE.SkeletonHelper = function ( object ) {\n\n\t\tthis.bones = this.getBoneList( object );\n\n\t\tvar geometry = new THREE.Geometry();\n\n\t\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.parent instanceof THREE.Bone ) {\n\n\t\t\t\tgeometry.vertices.push( new THREE.Vector3() );\n\t\t\t\tgeometry.vertices.push( new THREE.Vector3() );\n\t\t\t\tgeometry.colors.push( new THREE.Color( 0, 0, 1 ) );\n\t\t\t\tgeometry.colors.push( new THREE.Color( 0, 1, 0 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.dynamic = true;\n\n\t\tvar material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\t\tTHREE.LineSegments.call( this, geometry, material );\n\n\t\tthis.root = object;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t};\n\n\n\tTHREE.SkeletonHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.SkeletonHelper.prototype.constructor = THREE.SkeletonHelper;\n\n\tTHREE.SkeletonHelper.prototype.getBoneList = function( object ) {\n\n\t\tvar boneList = [];\n\n\t\tif ( object instanceof THREE.Bone ) {\n\n\t\t\tboneList.push( object );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\t\tboneList.push.apply( boneList, this.getBoneList( object.children[ i ] ) );\n\n\t\t}\n\n\t\treturn boneList;\n\n\t};\n\n\tTHREE.SkeletonHelper.prototype.update = function () {\n\n\t\tvar geometry = this.geometry;\n\n\t\tvar matrixWorldInv = new THREE.Matrix4().getInverse( this.root.matrixWorld );\n\n\t\tvar boneMatrix = new THREE.Matrix4();\n\n\t\tvar j = 0;\n\n\t\tfor ( var i = 0; i < this.bones.length; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.parent instanceof THREE.Bone ) {\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\tgeometry.vertices[ j ].setFromMatrixPosition( boneMatrix );\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\tgeometry.vertices[ j + 1 ].setFromMatrixPosition( boneMatrix );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.verticesNeedUpdate = true;\n\n\t\tgeometry.computeBoundingSphere();\n\n\t};\n\n\t// File:src/extras/helpers/SpotLightHelper.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t*/\n\n\tTHREE.SpotLightHelper = function ( light ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\tvar positions = [\n\t\t\t0, 0, 0,   0,   0,   1,\n\t\t\t0, 0, 0,   1,   0,   1,\n\t\t\t0, 0, 0, - 1,   0,   1,\n\t\t\t0, 0, 0,   0,   1,   1,\n\t\t\t0, 0, 0,   0, - 1,   1\n\t\t];\n\n\t\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.addAttribute( 'position', new THREE.Float32Attribute( positions, 3 ) );\n\n\t\tvar material = new THREE.LineBasicMaterial( { fog: false } );\n\n\t\tthis.cone = new THREE.LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t};\n\n\tTHREE.SpotLightHelper.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.SpotLightHelper.prototype.constructor = THREE.SpotLightHelper;\n\n\tTHREE.SpotLightHelper.prototype.dispose = function () {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t};\n\n\tTHREE.SpotLightHelper.prototype.update = function () {\n\n\t\tvar vector = new THREE.Vector3();\n\t\tvar vector2 = new THREE.Vector3();\n\n\t\treturn function update() {\n\n\t\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t\tvector.setFromMatrixPosition( this.light.matrixWorld );\n\t\t\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\t\tthis.cone.lookAt( vector2.sub( vector ) );\n\n\t\t\tthis.cone.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\t};\n\n\t}();\n\n\t// File:src/extras/helpers/VertexNormalsHelper.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t*/\n\n\tTHREE.VertexNormalsHelper = function ( object, size, hex, linewidth ) {\n\n\t\tthis.object = object;\n\n\t\tthis.size = ( size !== undefined ) ? size : 1;\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\t\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t\t//\n\n\t\tvar nNormals = 0;\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry instanceof THREE.Geometry ) {\n\n\t\t\tnNormals = objGeometry.faces.length * 3;\n\n\t\t} else if ( objGeometry instanceof THREE.BufferGeometry ) {\n\n\t\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t\t}\n\n\t\t//\n\n\t\tvar geometry = new THREE.BufferGeometry();\n\n\t\tvar positions = new THREE.Float32Attribute( nNormals * 2 * 3, 3 );\n\n\t\tgeometry.addAttribute( 'position', positions );\n\n\t\tTHREE.LineSegments.call( this, geometry, new THREE.LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t\t//\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t};\n\n\tTHREE.VertexNormalsHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.VertexNormalsHelper.prototype.constructor = THREE.VertexNormalsHelper;\n\n\tTHREE.VertexNormalsHelper.prototype.update = ( function () {\n\n\t\tvar v1 = new THREE.Vector3();\n\t\tvar v2 = new THREE.Vector3();\n\t\tvar normalMatrix = new THREE.Matrix3();\n\n\t\treturn function update() {\n\n\t\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\t\tthis.object.updateMatrixWorld( true );\n\n\t\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\t\tvar position = this.geometry.attributes.position;\n\n\t\t\t//\n\n\t\t\tvar objGeometry = this.object.geometry;\n\n\t\t\tif ( objGeometry instanceof THREE.Geometry ) {\n\n\t\t\t\tvar vertices = objGeometry.vertices;\n\n\t\t\t\tvar faces = objGeometry.faces;\n\n\t\t\t\tvar idx = 0;\n\n\t\t\t\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar face = faces[ i ];\n\n\t\t\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( objGeometry instanceof THREE.BufferGeometry ) {\n\n\t\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\t\tvar idx = 0;\n\n\t\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\t\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\t\t\tidx = idx + 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}() );\n\n\t// File:src/extras/helpers/WireframeHelper.js\n\n\t/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.WireframeHelper = function ( object, hex ) {\n\n\t\tvar color = ( hex !== undefined ) ? hex : 0xffffff;\n\n\t\tTHREE.LineSegments.call( this, new THREE.WireframeGeometry( object.geometry ), new THREE.LineBasicMaterial( { color: color } ) );\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t};\n\n\tTHREE.WireframeHelper.prototype = Object.create( THREE.LineSegments.prototype );\n\tTHREE.WireframeHelper.prototype.constructor = THREE.WireframeHelper;\n\n\t// File:src/extras/objects/ImmediateRenderObject.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.ImmediateRenderObject = function ( material ) {\n\n\t\tTHREE.Object3D.call( this );\n\n\t\tthis.material = material;\n\t\tthis.render = function ( renderCallback ) {};\n\n\t};\n\n\tTHREE.ImmediateRenderObject.prototype = Object.create( THREE.Object3D.prototype );\n\tTHREE.ImmediateRenderObject.prototype.constructor = THREE.ImmediateRenderObject;\n\n\t// File:src/extras/objects/MorphBlendMesh.js\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t */\n\n\tTHREE.MorphBlendMesh = function( geometry, material ) {\n\n\t\tTHREE.Mesh.call( this, geometry, material );\n\n\t\tthis.animationsMap = {};\n\t\tthis.animationsList = [];\n\n\t\t// prepare default animation\n\t\t// (all frames played together in 1 second)\n\n\t\tvar numFrames = this.geometry.morphTargets.length;\n\n\t\tvar name = \"__default\";\n\n\t\tvar startFrame = 0;\n\t\tvar endFrame = numFrames - 1;\n\n\t\tvar fps = numFrames / 1;\n\n\t\tthis.createAnimation( name, startFrame, endFrame, fps );\n\t\tthis.setAnimationWeight( name, 1 );\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype = Object.create( THREE.Mesh.prototype );\n\tTHREE.MorphBlendMesh.prototype.constructor = THREE.MorphBlendMesh;\n\n\tTHREE.MorphBlendMesh.prototype.createAnimation = function ( name, start, end, fps ) {\n\n\t\tvar animation = {\n\n\t\t\tstart: start,\n\t\t\tend: end,\n\n\t\t\tlength: end - start + 1,\n\n\t\t\tfps: fps,\n\t\t\tduration: ( end - start ) / fps,\n\n\t\t\tlastFrame: 0,\n\t\t\tcurrentFrame: 0,\n\n\t\t\tactive: false,\n\n\t\t\ttime: 0,\n\t\t\tdirection: 1,\n\t\t\tweight: 1,\n\n\t\t\tdirectionBackwards: false,\n\t\t\tmirroredLoop: false\n\n\t\t};\n\n\t\tthis.animationsMap[ name ] = animation;\n\t\tthis.animationsList.push( animation );\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.autoCreateAnimations = function ( fps ) {\n\n\t\tvar pattern = /([a-z]+)_?(\\d+)/i;\n\n\t\tvar firstAnimation, frameRanges = {};\n\n\t\tvar geometry = this.geometry;\n\n\t\tfor ( var i = 0, il = geometry.morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morph = geometry.morphTargets[ i ];\n\t\t\tvar chunks = morph.name.match( pattern );\n\n\t\t\tif ( chunks && chunks.length > 1 ) {\n\n\t\t\t\tvar name = chunks[ 1 ];\n\n\t\t\t\tif ( ! frameRanges[ name ] ) frameRanges[ name ] = { start: Infinity, end: - Infinity };\n\n\t\t\t\tvar range = frameRanges[ name ];\n\n\t\t\t\tif ( i < range.start ) range.start = i;\n\t\t\t\tif ( i > range.end ) range.end = i;\n\n\t\t\t\tif ( ! firstAnimation ) firstAnimation = name;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var name in frameRanges ) {\n\n\t\t\tvar range = frameRanges[ name ];\n\t\t\tthis.createAnimation( name, range.start, range.end, fps );\n\n\t\t}\n\n\t\tthis.firstAnimation = firstAnimation;\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.setAnimationDirectionForward = function ( name ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.direction = 1;\n\t\t\tanimation.directionBackwards = false;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.setAnimationDirectionBackward = function ( name ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.direction = - 1;\n\t\t\tanimation.directionBackwards = true;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.setAnimationFPS = function ( name, fps ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.fps = fps;\n\t\t\tanimation.duration = ( animation.end - animation.start ) / animation.fps;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.setAnimationDuration = function ( name, duration ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.duration = duration;\n\t\t\tanimation.fps = ( animation.end - animation.start ) / animation.duration;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.setAnimationWeight = function ( name, weight ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.weight = weight;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.setAnimationTime = function ( name, time ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.time = time;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.getAnimationTime = function ( name ) {\n\n\t\tvar time = 0;\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\ttime = animation.time;\n\n\t\t}\n\n\t\treturn time;\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.getAnimationDuration = function ( name ) {\n\n\t\tvar duration = - 1;\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tduration = animation.duration;\n\n\t\t}\n\n\t\treturn duration;\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.playAnimation = function ( name ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.time = 0;\n\t\t\tanimation.active = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( \"THREE.MorphBlendMesh: animation[\" + name + \"] undefined in .playAnimation()\" );\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.stopAnimation = function ( name ) {\n\n\t\tvar animation = this.animationsMap[ name ];\n\n\t\tif ( animation ) {\n\n\t\t\tanimation.active = false;\n\n\t\t}\n\n\t};\n\n\tTHREE.MorphBlendMesh.prototype.update = function ( delta ) {\n\n\t\tfor ( var i = 0, il = this.animationsList.length; i < il; i ++ ) {\n\n\t\t\tvar animation = this.animationsList[ i ];\n\n\t\t\tif ( ! animation.active ) continue;\n\n\t\t\tvar frameTime = animation.duration / animation.length;\n\n\t\t\tanimation.time += animation.direction * delta;\n\n\t\t\tif ( animation.mirroredLoop ) {\n\n\t\t\t\tif ( animation.time > animation.duration || animation.time < 0 ) {\n\n\t\t\t\t\tanimation.direction *= - 1;\n\n\t\t\t\t\tif ( animation.time > animation.duration ) {\n\n\t\t\t\t\t\tanimation.time = animation.duration;\n\t\t\t\t\t\tanimation.directionBackwards = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( animation.time < 0 ) {\n\n\t\t\t\t\t\tanimation.time = 0;\n\t\t\t\t\t\tanimation.directionBackwards = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tanimation.time = animation.time % animation.duration;\n\n\t\t\t\tif ( animation.time < 0 ) animation.time += animation.duration;\n\n\t\t\t}\n\n\t\t\tvar keyframe = animation.start + THREE.Math.clamp( Math.floor( animation.time / frameTime ), 0, animation.length - 1 );\n\t\t\tvar weight = animation.weight;\n\n\t\t\tif ( keyframe !== animation.currentFrame ) {\n\n\t\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = 0;\n\t\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = 1 * weight;\n\n\t\t\t\tthis.morphTargetInfluences[ keyframe ] = 0;\n\n\t\t\t\tanimation.lastFrame = animation.currentFrame;\n\t\t\t\tanimation.currentFrame = keyframe;\n\n\t\t\t}\n\n\t\t\tvar mix = ( animation.time % frameTime ) / frameTime;\n\n\t\t\tif ( animation.directionBackwards ) mix = 1 - mix;\n\n\t\t\tif ( animation.currentFrame !== animation.lastFrame ) {\n\n\t\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = mix * weight;\n\t\t\t\tthis.morphTargetInfluences[ animation.lastFrame ] = ( 1 - mix ) * weight;\n\n\t\t\t} else {\n\n\t\t\t\tthis.morphTargetInfluences[ animation.currentFrame ] = weight;\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module) {'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n\t/**\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author mr.doob / http://mrdoob.com/\n\t */\n\n\tvar Detector = {\n\n\t\tcanvas: !!window.CanvasRenderingContext2D,\n\t\twebgl: function () {\n\n\t\t\ttry {\n\n\t\t\t\tvar canvas = document.createElement('canvas');return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));\n\t\t\t} catch (e) {\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}(),\n\t\tworkers: !!window.Worker,\n\t\tfileapi: window.File && window.FileReader && window.FileList && window.Blob,\n\n\t\tgetWebGLErrorMessage: function getWebGLErrorMessage() {\n\n\t\t\tvar element = document.createElement('div');\n\t\t\telement.id = 'webgl-error-message';\n\t\t\telement.style.fontFamily = 'monospace';\n\t\t\telement.style.fontSize = '13px';\n\t\t\telement.style.fontWeight = 'normal';\n\t\t\telement.style.textAlign = 'center';\n\t\t\telement.style.background = '#fff';\n\t\t\telement.style.color = '#000';\n\t\t\telement.style.padding = '1.5em';\n\t\t\telement.style.width = '400px';\n\t\t\telement.style.margin = '5em auto 0';\n\n\t\t\tif (!this.webgl) {\n\n\t\t\t\telement.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support <a href=\"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation\" style=\"color:#000\">WebGL</a>.<br />', 'Find out how to get it <a href=\"http://get.webgl.org/\" style=\"color:#000\">here</a>.'].join('\\n') : ['Your browser does not seem to support <a href=\"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation\" style=\"color:#000\">WebGL</a>.<br/>', 'Find out how to get it <a href=\"http://get.webgl.org/\" style=\"color:#000\">here</a>.'].join('\\n');\n\t\t\t}\n\n\t\t\treturn element;\n\t\t},\n\n\t\taddGetWebGLMessage: function addGetWebGLMessage(parameters) {\n\n\t\t\tvar parent, id, element;\n\n\t\t\tparameters = parameters || {};\n\n\t\t\tparent = parameters.parent !== undefined ? parameters.parent : document.body;\n\t\t\tid = parameters.id !== undefined ? parameters.id : 'oldie';\n\n\t\t\telement = Detector.getWebGLErrorMessage();\n\t\t\telement.id = id;\n\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t};\n\n\t// browserify support\n\tif (( false ? 'undefined' : _typeof(module)) === 'object') {\n\n\t\tmodule.exports = Detector;\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)(module)))\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\n\t\tif(!module.webpackPolyfill) {\n\t\t\tmodule.deprecate = function() {};\n\t\t\tmodule.paths = [];\n\t\t\t// module.parent = undefined by default\n\t\t\tmodule.children = [];\n\t\t\tmodule.webpackPolyfill = 1;\n\t\t}\n\t\treturn module;\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _mathf = __webpack_require__(6);\n\n\tvar _mathf2 = _interopRequireDefault(_mathf);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar FLIGHT_SPEED = 12;\n\tvar BANK_SPEED = 0.5;\n\tvar SPIN_SPEED = 1;\n\tvar SIDEWAYS_SPEED = 5;\n\tvar FLAG_ADJUST_SPEED = 55;\n\tvar SCARF_SEG_DIST = 0.3;\n\n\tvar Player = function (_THREE$Object3D) {\n\t  _inherits(Player, _THREE$Object3D);\n\n\t  function Player() {\n\t    _classCallCheck(this, Player);\n\n\t    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Player).call(this));\n\n\t    _this.angularVelocity = new THREE.Vector3();\n\t    _this.bankVelocity = 0.0;\n\t    _this.velocity = new THREE.Vector3();\n\t    _this.bankVelocity = 0.0;\n\t    _this.rotation.set(0, 0, 0, 'ZXY');\n\t    _this.scarf = null;\n\t    _this.spin = 0.0;\n\t    _this.gridPos = {\n\t      x: 0,\n\t      y: 0\n\t    };\n\t    _this.initScarf();\n\t    return _this;\n\t  }\n\n\t  _createClass(Player, [{\n\t    key: 'initScarf',\n\t    value: function initScarf() {\n\t      var geometry = new THREE.Geometry();\n\t      for (var i = 0; i < 20; ++i) {\n\t        geometry.vertices.push(new THREE.Vector3(this.position.x, this.position.y, this.position.z + i * SCARF_SEG_DIST));\n\t      }\n\t      var line = new THREE.MeshLine();\n\t      var material = new THREE.MeshLineMaterial({\n\t        color: new THREE.Color(0x663322)\n\t      });\n\t      line.setGeometry(geometry, function (v) {\n\t        return 0.3;\n\t      });\n\t      var mesh = new THREE.Mesh(line.geometry, material); // this syntax could definitely be improved!\n\t      this.scarf = line;\n\t      window.flight.scene.add(mesh);\n\t    }\n\t  }, {\n\t    key: 'update',\n\t    value: function update() {\n\t      var dt = window.flight.deltaTime;\n\t      var input = window.flight.input;\n\n\t      // Twist\n\t      this.angularVelocity.y += dt * input.x * SPIN_SPEED;\n\t      this.rotation.y += this.angularVelocity.y * dt;\n\t      this.rotation.y += dt * 0.1;\n\t      this.angularVelocity.y -= this.angularVelocity.y * dt;\n\n\t      // Move left and right\n\t      this.velocity.x += dt * -input.x * SIDEWAYS_SPEED;\n\t      this.position.add(this.velocity.clone().multiplyScalar(dt));\n\t      this.velocity.x -= this.velocity.x * dt * 0.3;\n\n\t      // Move forward\n\t      this.position.z += dt * FLIGHT_SPEED;\n\n\t      // Bank\n\t      this.bankVelocity += input.x * BANK_SPEED * dt;\n\t      this.bankVelocity -= this.bankVelocity * dt;\n\t      this.rotation.z += this.bankVelocity * dt;\n\t      this.rotation.z -= Math.sign(this.rotation.z) * Math.pow(this.rotation.z, 2) * dt * 5;\n\n\t      // Positions array is interleved vector3\n\t      var positions = this.scarf.positions;\n\t      var numPoints = positions.length;\n\t      for (var i = 0; i < numPoints; i += 3) {\n\t        if (i === 0) {\n\t          // Position first scarf point at balloon position\n\t          positions[i] = this.position.x;\n\t          positions[i + 1] = this.position.y - 3;\n\t          positions[i + 2] = this.position.z;\n\t        } else {\n\t          // i - 3 for previous point\n\t          positions[i] = _mathf2.default.moveTowards(positions[i], positions[i - 3], FLAG_ADJUST_SPEED / numPoints * Math.abs(positions[i] - positions[i - 3]));\n\t          positions[i + 1] = positions[i - 2];\n\t          if (Math.abs(positions[i + 2] - positions[i - 1]) > SCARF_SEG_DIST) {\n\t            positions[i + 2] += positions[i - 1] - positions[i + 2] - SCARF_SEG_DIST;\n\t          }\n\t          positions[i] += Math.sin(positions[i + 2] * 0.2) * 0.3 / (i + 1);\n\t        }\n\t      }\n\t      this.scarf.process();\n\t      this.scarf.geometry.computeBoundingBox();\n\t      this.scarf.geometry.computeBoundingSphere();\n\t    }\n\t  }]);\n\n\t  return Player;\n\t}(THREE.Object3D);\n\n\texports.default = Player;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Mathf = function () {\n\t  function Mathf() {\n\t    _classCallCheck(this, Mathf);\n\t  }\n\n\t  _createClass(Mathf, null, [{\n\t    key: \"clamp\",\n\t    value: function clamp(num, min, max) {\n\t      return num < min ? min : num > max ? max : num;\n\t    }\n\t  }, {\n\t    key: \"lerp\",\n\t    value: function lerp(from, to, t) {\n\t      return from + t * (to - from);\n\t    }\n\t  }, {\n\t    key: \"inverseLerp\",\n\t    value: function inverseLerp(from, to, t) {\n\t      var v = from;\n\t      if (t <= from) {\n\t        v = from;\n\t      } else if (t >= to) {\n\t        v = to;\n\t      }\n\t      v = (t - from) / (to - from);\n\t      return v;\n\t    }\n\t  }, {\n\t    key: \"randRange\",\n\t    value: function randRange(min, max) {\n\t      return Math.random() * (max - min) + min;\n\t    }\n\t  }, {\n\t    key: \"moveTowards\",\n\t    value: function moveTowards(current, target, maxDelta) {\n\t      var delta = target - current;\n\t      if (Math.abs(delta) > maxDelta) {\n\t        delta = maxDelta * Math.sign(delta);\n\t      }\n\t      return current + delta;\n\t    }\n\t  }]);\n\n\t  return Mathf;\n\t}();\n\n\texports.default = Mathf;\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _mathf = __webpack_require__(6);\n\n\tvar _mathf2 = _interopRequireDefault(_mathf);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar SEGS_X = 8;\n\tvar SEGS_Y = 8;\n\tvar VERTS_X = SEGS_X + 1;\n\n\tvar TerrainPatch = function (_THREE$Mesh) {\n\t  _inherits(TerrainPatch, _THREE$Mesh);\n\n\t  function TerrainPatch(opts) {\n\t    _classCallCheck(this, TerrainPatch);\n\n\t    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(TerrainPatch).call(this));\n\n\t    _this.objects = [];\n\t    _this.width = opts.hasOwnProperty('width') ? opts.width : 0;\n\t    _this.height = opts.hasOwnProperty('height') ? opts.height : 0;\n\t    _this.heightmap = opts.hasOwnProperty('heightmap') ? opts.heightmap : undefined;\n\t    var position = opts.hasOwnProperty('position') ? opts.position : new THREE.Vector3();\n\t    _this.position.set(position.x, position.y, position.z);\n\t    _this.material = opts.hasOwnProperty('material') ? opts.material : undefined;\n\t    _this.verts = null;\n\t    _this.verts3 = [];\n\t    _this.geometry = _this.createGeometry();\n\t    _this.geometry.computeBoundingBox();\n\t    _this.geometry.computeBoundingSphere();\n\t    _this.scatters = [];\n\t    _this.getNormal(_this.position);\n\t    return _this;\n\t  }\n\n\t  /**\n\t   * @description Rebuilds the terrain heightmap and scatter geometry.\n\t   */\n\n\n\t  _createClass(TerrainPatch, [{\n\t    key: 'rebuild',\n\t    value: function rebuild(scene) {\n\t      var _this2 = this;\n\n\t      var vertsX = SEGS_X + 1;\n\t      var vertsY = SEGS_Y + 1;\n\t      var v = 0;\n\t      for (var i = 0; i < vertsY; ++i) {\n\t        for (var j = 0; j < vertsX; ++j, v += 3) {\n\t          this.verts[v + 1] = 0.0;\n\t          var noise = this.heightmap.getHeight(this.verts[v] + this.position.x, this.verts[v + 2] + this.position.z);\n\t          this.verts[v + 1] = noise;\n\t        }\n\t      }\n\t      this.geometry.attributes.position.needsUpdate = true;\n\t      this.geometry.computeVertexNormals();\n\t      this.geometry.computeBoundingBox();\n\t      this.geometry.computeBoundingSphere();\n\n\t      // Regenerate scatter\n\t      this.scatters.forEach(function (v) {\n\t        scene.remove(v.scatterMesh);\n\t        v.scatterMesh.geometry.dispose();\n\t        v.scatterMesh = _this2.createScatterGeometry(v.opts);\n\t        window.flight.scene.add(v.scatterMesh);\n\t      });\n\t    }\n\n\t    /**\n\t     * @description Adds a mesh to scatter on to the terrain.\n\t     */\n\n\t  }, {\n\t    key: 'addScatterObject',\n\t    value: function addScatterObject(opts) {\n\n\t      var scatterMesh = this.createScatterGeometry(opts);\n\n\t      // Store data for terrain to be able to rebuild scatter when regenerated\n\t      this.scatters.push({\n\t        scatterMesh: scatterMesh, // The batched scatter mesh\n\t        opts: opts\n\t      });\n\n\t      window.flight.scene.add(scatterMesh);\n\t    }\n\n\t    /**\n\t     * @description Creates the scatter geometry mesh.\n\t     */\n\n\t  }, {\n\t    key: 'createScatterGeometry',\n\t    value: function createScatterGeometry(opts) {\n\n\t      var mesh = opts.hasOwnProperty('mesh') ? opts.mesh : null;\n\t      var count = opts.hasOwnProperty('count') ? opts.count : 0;\n\t      var minSize = opts.hasOwnProperty('minSize') ? opts.minSize : null;\n\t      var maxSize = opts.hasOwnProperty('maxSize') ? opts.maxSize : null;\n\t      var minHeight = opts.hasOwnProperty('minHeight') ? opts.minHeight : 0;\n\t      var maxHeight = opts.hasOwnProperty('maxHeight') ? opts.maxHeight : 128;\n\t      var lockXZScale = opts.hasOwnProperty('lockXZScale') ? opts.lockXZScale : false;\n\t      var maxSlope = opts.hasOwnProperty('maxSlope') ? opts.maxSlope : 0;\n\n\t      var meshGeo = mesh.geometry;\n\t      var vertCount = meshGeo.attributes.position.count;\n\n\t      var matrix = new THREE.Matrix4();\n\t      var rotation = new THREE.Quaternion();\n\t      var position = new THREE.Vector3();\n\t      var scale = new THREE.Vector3();\n\n\t      // Scatter geometry\n\t      var geometry = new THREE.BufferGeometry();\n\n\t      // Vertex positions\n\t      var posAttrib = new THREE.Float32Attribute(new Float32Array(vertCount * meshGeo.attributes.position.itemSize * count), meshGeo.attributes.position.itemSize);\n\n\t      // Vertex normals\n\t      var normAttrib = new THREE.Float32Attribute(new Float32Array(vertCount * meshGeo.attributes.position.itemSize * count), meshGeo.attributes.position.itemSize);\n\n\t      // Vertex colours\n\t      var colorAttrib = new THREE.Float32Attribute(new Float32Array(vertCount * meshGeo.attributes.color.itemSize * count), meshGeo.attributes.color.itemSize);\n\n\t      geometry.addAttribute('position', posAttrib);\n\t      geometry.addAttribute('normal', normAttrib);\n\t      geometry.addAttribute('color', colorAttrib);\n\n\t      var size = void 0;\n\t      var sway = 0.05;\n\n\t      // Create individual objects for the scatter\n\t      for (var i = 0; i < count; ++i) {\n\n\t        var coord = {\n\t          x: _mathf2.default.randRange(this.position.x, this.position.x + this.width),\n\t          y: 0,\n\t          z: _mathf2.default.randRange(this.position.z, this.position.z + this.height)\n\t        };\n\n\t        var pos = this.getPosition(coord);\n\t        var normal = this.getNormal(coord);\n\n\t        // Min height for spawn\n\t        if (pos.y < minHeight || pos.y > maxHeight || normal.y < maxSlope) {\n\t          continue;\n\t        }\n\n\t        position.set(pos.x, pos.y, pos.z);\n\n\t        rotation.setFromEuler(new THREE.Euler(_mathf2.default.randRange(-sway, sway), _mathf2.default.randRange(0, Math.PI * 2), _mathf2.default.randRange(-sway, sway), THREE.Euler.DefaultOrder));\n\n\t        var pScale = _mathf2.default.lerp(0.5, 1.0, this.heightmap.perlinNoise(pos.x + this.position.x, pos.z + this.position.z, 3));\n\n\t        var xScale = _mathf2.default.randRange(minSize.x, maxSize.x);\n\t        size = {\n\t          x: xScale,\n\t          y: _mathf2.default.randRange(minSize.y, maxSize.y),\n\t          z: lockXZScale ? xScale : _mathf2.default.randRange(minSize.z, maxSize.z)\n\t        };\n\n\t        scale.set(size.x * pScale, size.y * pScale, size.z * pScale);\n\t        matrix.compose(position, rotation, scale);\n\t        meshGeo.applyMatrix(matrix);\n\t        geometry.merge(meshGeo, i * vertCount);\n\t        meshGeo.applyMatrix(matrix.getInverse(matrix));\n\t      }\n\n\t      var scatterMesh = new THREE.Mesh(geometry, mesh.material);\n\t      scatterMesh.castShadow = true; // mesh.castShadow;\n\t      return scatterMesh;\n\t    }\n\n\t    /**\n\t     * @description Gets an object space position on the landscape based on normalized XZ coordinates.\n\t     * @returns {Vector3} The position.\n\t     */\n\n\t  }, {\n\t    key: 'getPosition',\n\t    value: function getPosition(coord) {\n\n\t      var localCoord = {\n\t        x: (coord.x - this.position.x) / this.width,\n\t        y: (coord.z - this.position.z) / this.height\n\t      };\n\n\t      // Base vertex index\n\t      var ix1 = Math.floor(localCoord.x * SEGS_X);\n\t      var iy1 = Math.floor(localCoord.y * SEGS_Y);\n\n\t      var i1 = (VERTS_X * iy1 + ix1) * 3; // Bottom right\n\t      var i2 = i1 + 3; // Bottom left\n\t      var i3 = i1 + VERTS_X * 3; // Top right\n\t      var i4 = i3 + 3; // Top left\n\n\t      // Grid index interpolant time values collected from remainder\n\t      var rx1 = localCoord.x * SEGS_X - ix1;\n\t      var ry1 = localCoord.y * SEGS_Y - iy1;\n\n\t      var h1 = void 0,\n\t          h2 = void 0,\n\t          h = void 0;\n\n\t      // Interpolate heights of each vert using bilinear interpolation\n\t      h1 = _mathf2.default.lerp(this.verts[i1 + 1], this.verts[i2 + 1], rx1); // Bottom left to bottom right\n\t      h2 = _mathf2.default.lerp(this.verts[i3 + 1], this.verts[i4 + 1], rx1); // Top left to top right\n\t      h = _mathf2.default.lerp(h1, h2, ry1);\n\n\t      return new THREE.Vector3(coord.x, h, coord.z);\n\t    }\n\n\t    /**\n\t     * Gets the normal of the terrain at the given normalized XY coordinates.\n\t     * @return {Vector3} The normal.\n\t     */\n\n\t  }, {\n\t    key: 'getNormal',\n\t    value: function getNormal(coord) {\n\n\t      var localCoord = {\n\t        x: (coord.x - this.position.x) / this.width,\n\t        y: (coord.z - this.position.z) / this.height\n\t      };\n\n\t      // Base vertex index\n\t      var ix1 = Math.floor(localCoord.x * SEGS_X);\n\t      var iy1 = Math.floor(localCoord.y * SEGS_Y);\n\n\t      var i1 = (VERTS_X * iy1 + ix1) * 3; // Bottom right\n\t      var i2 = i1 + 3; // Bottom left\n\t      var i3 = i1 + VERTS_X * 3; // Top right\n\t      var i4 = i3 + 3; // Top left\n\n\t      // Grid index interpolant time values collected from remainder\n\t      var rx1 = localCoord.x * SEGS_X - ix1;\n\t      var ry1 = localCoord.y * SEGS_Y - iy1;\n\n\t      var norms = this.geometry.attributes.normal.array;\n\n\t      // Interpolate heights of each vert using bilinear interpolation\n\t      var v1 = new THREE.Vector3();\n\t      v1.lerpVectors(new THREE.Vector3(norms[i1], norms[i1 + 1], norms[i1 + 2]), new THREE.Vector3(norms[i2], norms[i2 + 1], norms[i2 + 2]), rx1);\n\t      var v2 = new THREE.Vector3();\n\t      v2.lerpVectors(new THREE.Vector3(norms[i3], norms[i3 + 1], norms[i3 + 2]), new THREE.Vector3(norms[i4], norms[i4 + 1], norms[i4 + 2]), rx1);\n\t      var n = new THREE.Vector3();\n\t      n.lerpVectors(v1, v2, ry1);\n\t      return n;\n\t    }\n\n\t    /**\n\t     * Creates terrain geometry data and heightmap.\n\t     */\n\n\t  }, {\n\t    key: 'createGeometry',\n\t    value: function createGeometry() {\n\t      var geo = new THREE.BufferGeometry();\n\t      var vertsX = SEGS_X + 1;\n\t      var vertsY = SEGS_Y + 1;\n\n\t      this.verts = new Float32Array(vertsX * vertsY * 3);\n\t      this.uvs = new Float32Array(vertsX * vertsY * 2);\n\t      var v = 0;\n\t      var uv = 0;\n\t      var stepX = this.width / SEGS_X;\n\t      var stepY = this.height / SEGS_Y;\n\t      for (var j = 0; j < vertsY; ++j) {\n\t        for (var i = 0; i < vertsX; ++i, v += 3, uv += 2) {\n\t          var pos = {\n\t            x: i * stepX,\n\t            y: 0,\n\t            z: j * stepY\n\t          };\n\t          var noise = this.heightmap.getHeight(pos.x + this.position.x, pos.z + this.position.z);\n\t          pos.y = noise;\n\t          if (pos.y < -15) {\n\t            // let helper = new THREE.AxisHelper( 10 );\n\t            // helper.position.set( pos.x + this.position.x, -15, pos.z + this.position.z );\n\t            // window.flight.scene.add( helper );\n\t          }\n\t          this.verts[v] = pos.x;\n\t          this.verts[v + 1] = pos.y;\n\t          this.verts[v + 2] = pos.z;\n\t          this.uvs[uv] = i / (vertsX - 1);\n\t          this.uvs[uv + 1] = j / (vertsY - 1);\n\t        }\n\t      }\n\n\t      var indices = new Uint32Array(SEGS_X * SEGS_Y * 6);\n\n\t      for (var _i = 0, t = 0, _j = 0, _v = 0; _i < SEGS_Y; ++_i, _v = _i * vertsX) {\n\t        for (_j = 0; _j < SEGS_X; ++_j, t += 6, _v++) {\n\t          indices[t] = _v;\n\t          indices[t + 1] = _v + vertsX;\n\t          indices[t + 2] = _v + vertsX + 1;\n\t          indices[t + 3] = _v;\n\t          indices[t + 4] = _v + vertsX + 1;\n\t          indices[t + 5] = _v + 1;\n\t        }\n\t      }\n\n\t      geo.addAttribute('position', new THREE.BufferAttribute(this.verts, 3));\n\t      geo.addAttribute('uv', new THREE.BufferAttribute(this.uvs, 2));\n\t      geo.setIndex(new THREE.BufferAttribute(indices, 1));\n\t      geo.computeVertexNormals();\n\t      return geo;\n\t    }\n\t  }]);\n\n\t  return TerrainPatch;\n\t}(THREE.Mesh);\n\n\texports.default = TerrainPatch;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _ImprovedNoise = __webpack_require__(9);\n\n\tvar _ImprovedNoise2 = _interopRequireDefault(_ImprovedNoise);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar VALLEY_01_SCALE = 0.025;\n\tvar VALLEY_02_SCALE = 0.01;\n\tvar VALLEY_01_MULT = 1.0;\n\tvar VALLEY_02_MULT = 0.5;\n\tvar HEIGHT_MULT = 10.0;\n\tvar RIVER_WIDTH = 100.0;\n\n\tvar Heightmap = function () {\n\t  function Heightmap(opts) {\n\t    _classCallCheck(this, Heightmap);\n\n\t    this.noise = new _ImprovedNoise2.default();\n\t    this.scale = opts.hasOwnProperty('scale') ? opts.scale : 100;\n\t    this.height = opts.hasOwnProperty('height') ? opts.height : 0;\n\t    this.noiseOffset = opts.hasOwnProperty('noiseOffset') ? opts.noiseOffset : 0;\n\t    this.rScale = 1 / this.scale;\n\t  }\n\n\t  _createClass(Heightmap, [{\n\t    key: 'lerp',\n\t    value: function lerp(from, to, t) {\n\t      return (1 - t) * from + t * to;\n\t    }\n\t  }, {\n\t    key: 'clamp',\n\t    value: function clamp(val, min, max) {\n\t      var t = val < min ? min : val;\n\t      return t > max ? max : t;\n\t    }\n\t  }, {\n\t    key: 'getHeight',\n\t    value: function getHeight(x, y) {\n\t      var n1 = this.clamp(this.perlinNoise(x, y, 0.5) + 0.2, 0, 1);\n\t      var n2 = this.perlinNoise(x, y, 2);\n\t      var height = n1 + n2;\n\t      height *= this.clamp(Math.pow(height + 0.5, 5), 0, 1);\n\t      height = this.lerp(height, this.step(height, 5), this.perlinNoise(x, 0.2, 1));\n\t      height *= 0.3;\n\t      height *= Math.pow(Math.abs(VALLEY_01_SCALE * x), 2) * VALLEY_01_MULT + 0.5;\n\t      height += Math.pow(Math.abs(VALLEY_02_SCALE * x), 2) * VALLEY_02_MULT;\n\n\t      // River\n\t      var river = RIVER_WIDTH / Math.abs(x - (this.perlinNoise(x, y, 0.5) - 0.5) * 200);\n\t      height -= 0.5 * this.clamp(river, 0, 5);\n\n\t      return height * HEIGHT_MULT;\n\t    }\n\t  }, {\n\t    key: 'perlinNoise',\n\t    value: function perlinNoise(x, y, frequency) {\n\t      x += this.noiseOffset.x;\n\t      y += this.noiseOffset.y;\n\t      x = x < 0 ? 0 : x;\n\t      y = y < 0 ? 0 : y;\n\t      return this.noise.noise(x * this.rScale * frequency, 0, y * this.rScale * frequency) + 0.5;\n\t    }\n\t  }, {\n\t    key: 'step',\n\t    value: function step(height, steps) {\n\t      return Math.floor(height * steps) / steps;\n\t    }\n\t  }]);\n\n\t  return Heightmap;\n\t}();\n\n\texports.default = Heightmap;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\t// http://mrl.nyu.edu/~perlin/noise/\n\n\tvar ImprovedNoise = function ImprovedNoise() {\n\n\t  var p = [151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180];\n\n\t  for (var i = 0; i < 256; i++) {\n\n\t    p[256 + i] = p[i];\n\t  }\n\n\t  function fade(t) {\n\n\t    return t * t * t * (t * (t * 6 - 15) + 10);\n\t  }\n\n\t  function lerp(t, a, b) {\n\n\t    return a + t * (b - a);\n\t  }\n\n\t  function grad(hash, x, y, z) {\n\n\t    var h = hash & 15;\n\t    var u = h < 8 ? x : y,\n\t        v = h < 4 ? y : h === 12 || h === 14 ? x : z;\n\t    return ((h & 1) === 0 ? u : -u) + ((h & 2) === 0 ? v : -v);\n\t  }\n\n\t  return {\n\n\t    noise: function noise(x, y, z) {\n\n\t      var floorX = ~~x,\n\t          floorY = ~~y,\n\t          floorZ = ~~z;\n\n\t      var X = floorX & 255,\n\t          Y = floorY & 255,\n\t          Z = floorZ & 255;\n\n\t      x -= floorX;\n\t      y -= floorY;\n\t      z -= floorZ;\n\n\t      var xMinus1 = x - 1,\n\t          yMinus1 = y - 1,\n\t          zMinus1 = z - 1;\n\n\t      var u = fade(x),\n\t          v = fade(y),\n\t          w = fade(z);\n\n\t      var A = p[X] + Y,\n\t          AA = p[A] + Z,\n\t          AB = p[A + 1] + Z,\n\t          B = p[X + 1] + Y,\n\t          BA = p[B] + Z,\n\t          BB = p[B + 1] + Z;\n\n\t      return lerp(w, lerp(v, lerp(u, grad(p[AA], x, y, z), grad(p[BA], xMinus1, y, z)), lerp(u, grad(p[AB], x, yMinus1, z), grad(p[BB], xMinus1, yMinus1, z))), lerp(v, lerp(u, grad(p[AA + 1], x, y, zMinus1), grad(p[BA + 1], xMinus1, y, z - 1)), lerp(u, grad(p[AB + 1], x, yMinus1, zMinus1), grad(p[BB + 1], xMinus1, yMinus1, zMinus1))));\n\t    }\n\t  };\n\t};\n\n\texports.default = ImprovedNoise;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t  value: true\n\t});\n\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _mathf = __webpack_require__(6);\n\n\tvar _mathf2 = _interopRequireDefault(_mathf);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar FLIGHT_SPEED = 30;\n\tvar FLOCK_DIST = 16;\n\tvar PLAYER_SEP_DIST = 80;\n\tvar SEPARATION_FORCE = 100;\n\n\tvar Bird = function (_THREE$Mesh) {\n\t  _inherits(Bird, _THREE$Mesh);\n\n\t  function Bird() {\n\t    _classCallCheck(this, Bird);\n\n\t    var geometry = new THREE.Geometry();\n\t    geometry.vertices.push(new THREE.Vector3(0, 0, 0.5), new THREE.Vector3(1.2, 0, 0), new THREE.Vector3(0, 0, -0.5), new THREE.Vector3(0, 0, -0.5), new THREE.Vector3(-1.2, 0, 0), new THREE.Vector3(0, 0, 0.5));\n\t    geometry.faces.push(new THREE.Face3(0, 1, 2));\n\t    geometry.faces.push(new THREE.Face3(3, 4, 5));\n\t    geometry.computeBoundingSphere();\n\n\t    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Bird).call(this, geometry, new THREE.MeshBasicMaterial({\n\t      color: 0xffffff\n\t    })));\n\n\t    _this.velocity = new THREE.Vector3(0, 0, FLIGHT_SPEED);\n\t    return _this;\n\t  }\n\n\t  _createClass(Bird, [{\n\t    key: 'update',\n\t    value: function update(dt, center, player) {\n\t      this.velocity.z = FLIGHT_SPEED;\n\t      // Add veloctity\n\t      this.position.add(this.velocity.clone().multiplyScalar(dt));\n\n\t      var balloonPos = player.position.clone();\n\t      balloonPos.y += 16;\n\n\t      // Difference between player and this position\n\t      var pv = balloonPos.sub(this.position);\n\t      var pDist = pv.lengthSq();\n\t      var pvN = pv.clone().normalize();\n\t      // this.position.x += dt * Math.sin( this.position.z / 10 ) * 2;\n\t      if (Math.sqrt(pDist) < PLAYER_SEP_DIST) {\n\t        // Separate from player\n\t        var force = 1.0 / (pDist * 0.02);\n\t        // window.flight.debug.drawRay( this.position, pvN.multiplyScalar( -force ), new THREE.Color( 0x00ff00 ) );\n\t        var separation = pvN.multiplyScalar(-force * SEPARATION_FORCE * dt);\n\t        this.position.add(new THREE.Vector3(separation.x, separation.y, 0));\n\t      } else {\n\t        // Difference between center and this position\n\t        var v = center.clone().sub(this.position);\n\t        // Distance to center\n\t        var dist = v.length();\n\t        var vN = v.clone().normalize();\n\t        if (dist > FLOCK_DIST) {\n\t          this.position.add(vN.multiplyScalar(dt));\n\t        }\n\t      }\n\t      // Do some flappin\n\t      var geo = this.geometry;\n\t      geo.vertices[1].y = Math.sin(this.position.z * 0.65);\n\t      geo.vertices[4].y = Math.sin(this.position.z * 0.65);\n\t      geo.verticesNeedUpdate = true;\n\t    }\n\t  }]);\n\n\t  return Bird;\n\t}(THREE.Mesh);\n\n\texports.default = Bird;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*eslint-disable no-unused-vars*/\n\t/*!\n\t * jQuery JavaScript Library v3.1.0\n\t * https://jquery.com/\n\t *\n\t * Includes Sizzle.js\n\t * https://sizzlejs.com/\n\t *\n\t * Copyright jQuery Foundation and other contributors\n\t * Released under the MIT license\n\t * https://jquery.org/license\n\t *\n\t * Date: 2016-07-07T21:44Z\n\t */\n\t( function( global, factory ) {\n\n\t\t\"use strict\";\n\n\t\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t\t// is present, execute the factory and get jQuery.\n\t\t\t// For environments that do not have a `window` with a `document`\n\t\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t\t// This accentuates the need for the creation of a real `window`.\n\t\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t\t// See ticket #14549 for more info.\n\t\t\tmodule.exports = global.document ?\n\t\t\t\tfactory( global, true ) :\n\t\t\t\tfunction( w ) {\n\t\t\t\t\tif ( !w.document ) {\n\t\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t\t}\n\t\t\t\t\treturn factory( w );\n\t\t\t\t};\n\t\t} else {\n\t\t\tfactory( global );\n\t\t}\n\n\t// Pass this if window is not defined yet\n\t} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n\t// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n\t// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n\t// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n\t// enough that all such attempts are guarded in a try block.\n\t\"use strict\";\n\n\tvar arr = [];\n\n\tvar document = window.document;\n\n\tvar getProto = Object.getPrototypeOf;\n\n\tvar slice = arr.slice;\n\n\tvar concat = arr.concat;\n\n\tvar push = arr.push;\n\n\tvar indexOf = arr.indexOf;\n\n\tvar class2type = {};\n\n\tvar toString = class2type.toString;\n\n\tvar hasOwn = class2type.hasOwnProperty;\n\n\tvar fnToString = hasOwn.toString;\n\n\tvar ObjectFunctionString = fnToString.call( Object );\n\n\tvar support = {};\n\n\n\n\t\tfunction DOMEval( code, doc ) {\n\t\t\tdoc = doc || document;\n\n\t\t\tvar script = doc.createElement( \"script\" );\n\n\t\t\tscript.text = code;\n\t\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t\t}\n\t/* global Symbol */\n\t// Defining this global in .eslintrc would create a danger of using the global\n\t// unguarded in another place, it seems safer to define global only for this module\n\n\n\n\tvar\n\t\tversion = \"3.1.0\",\n\n\t\t// Define a local copy of jQuery\n\t\tjQuery = function( selector, context ) {\n\n\t\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\t\treturn new jQuery.fn.init( selector, context );\n\t\t},\n\n\t\t// Support: Android <=4.0 only\n\t\t// Make sure we trim BOM and NBSP\n\t\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t\t// Matches dashed string for camelizing\n\t\trmsPrefix = /^-ms-/,\n\t\trdashAlpha = /-([a-z])/g,\n\n\t\t// Used by jQuery.camelCase as callback to replace()\n\t\tfcamelCase = function( all, letter ) {\n\t\t\treturn letter.toUpperCase();\n\t\t};\n\n\tjQuery.fn = jQuery.prototype = {\n\n\t\t// The current version of jQuery being used\n\t\tjquery: version,\n\n\t\tconstructor: jQuery,\n\n\t\t// The default length of a jQuery object is 0\n\t\tlength: 0,\n\n\t\ttoArray: function() {\n\t\t\treturn slice.call( this );\n\t\t},\n\n\t\t// Get the Nth element in the matched element set OR\n\t\t// Get the whole matched element set as a clean array\n\t\tget: function( num ) {\n\t\t\treturn num != null ?\n\n\t\t\t\t// Return just the one element from the set\n\t\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t\t// Return all the elements in a clean array\n\t\t\t\tslice.call( this );\n\t\t},\n\n\t\t// Take an array of elements and push it onto the stack\n\t\t// (returning the new matched element set)\n\t\tpushStack: function( elems ) {\n\n\t\t\t// Build a new jQuery matched element set\n\t\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t\t// Add the old object onto the stack (as a reference)\n\t\t\tret.prevObject = this;\n\n\t\t\t// Return the newly-formed element set\n\t\t\treturn ret;\n\t\t},\n\n\t\t// Execute a callback for every element in the matched set.\n\t\teach: function( callback ) {\n\t\t\treturn jQuery.each( this, callback );\n\t\t},\n\n\t\tmap: function( callback ) {\n\t\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\t\treturn callback.call( elem, i, elem );\n\t\t\t} ) );\n\t\t},\n\n\t\tslice: function() {\n\t\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t\t},\n\n\t\tfirst: function() {\n\t\t\treturn this.eq( 0 );\n\t\t},\n\n\t\tlast: function() {\n\t\t\treturn this.eq( -1 );\n\t\t},\n\n\t\teq: function( i ) {\n\t\t\tvar len = this.length,\n\t\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t\t},\n\n\t\tend: function() {\n\t\t\treturn this.prevObject || this.constructor();\n\t\t},\n\n\t\t// For internal use only.\n\t\t// Behaves like an Array's method, not like a jQuery method.\n\t\tpush: push,\n\t\tsort: arr.sort,\n\t\tsplice: arr.splice\n\t};\n\n\tjQuery.extend = jQuery.fn.extend = function() {\n\t\tvar options, name, src, copy, copyIsArray, clone,\n\t\t\ttarget = arguments[ 0 ] || {},\n\t\t\ti = 1,\n\t\t\tlength = arguments.length,\n\t\t\tdeep = false;\n\n\t\t// Handle a deep copy situation\n\t\tif ( typeof target === \"boolean\" ) {\n\t\t\tdeep = target;\n\n\t\t\t// Skip the boolean and the target\n\t\t\ttarget = arguments[ i ] || {};\n\t\t\ti++;\n\t\t}\n\n\t\t// Handle case when target is a string or something (possible in deep copy)\n\t\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\n\t\t\ttarget = {};\n\t\t}\n\n\t\t// Extend jQuery itself if only one argument is passed\n\t\tif ( i === length ) {\n\t\t\ttarget = this;\n\t\t\ti--;\n\t\t}\n\n\t\tfor ( ; i < length; i++ ) {\n\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t\t// Extend the base object\n\t\t\t\tfor ( name in options ) {\n\t\t\t\t\tsrc = target[ name ];\n\t\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\tif ( target === copy ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the modified object\n\t\treturn target;\n\t};\n\n\tjQuery.extend( {\n\n\t\t// Unique for each copy of jQuery on the page\n\t\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t\t// Assume jQuery is ready without the ready module\n\t\tisReady: true,\n\n\t\terror: function( msg ) {\n\t\t\tthrow new Error( msg );\n\t\t},\n\n\t\tnoop: function() {},\n\n\t\tisFunction: function( obj ) {\n\t\t\treturn jQuery.type( obj ) === \"function\";\n\t\t},\n\n\t\tisArray: Array.isArray,\n\n\t\tisWindow: function( obj ) {\n\t\t\treturn obj != null && obj === obj.window;\n\t\t},\n\n\t\tisNumeric: function( obj ) {\n\n\t\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t\t// strings and numbers (primitives or objects)\n\t\t\t// that can be coerced to finite numbers (gh-2662)\n\t\t\tvar type = jQuery.type( obj );\n\t\t\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t\t\t// subtraction forces infinities to NaN\n\t\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t\t},\n\n\t\tisPlainObject: function( obj ) {\n\t\t\tvar proto, Ctor;\n\n\t\t\t// Detect obvious negatives\n\t\t\t// Use toString instead of jQuery.type to catch host objects\n\t\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tproto = getProto( obj );\n\n\t\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\t\tif ( !proto ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t\t},\n\n\t\tisEmptyObject: function( obj ) {\n\n\t\t\t/* eslint-disable no-unused-vars */\n\t\t\t// See https://github.com/eslint/eslint/issues/6125\n\t\t\tvar name;\n\n\t\t\tfor ( name in obj ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\ttype: function( obj ) {\n\t\t\tif ( obj == null ) {\n\t\t\t\treturn obj + \"\";\n\t\t\t}\n\n\t\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\t\ttypeof obj;\n\t\t},\n\n\t\t// Evaluates a script in a global context\n\t\tglobalEval: function( code ) {\n\t\t\tDOMEval( code );\n\t\t},\n\n\t\t// Convert dashed to camelCase; used by the css and data modules\n\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t// Microsoft forgot to hump their vendor prefix (#9572)\n\t\tcamelCase: function( string ) {\n\t\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t\t},\n\n\t\tnodeName: function( elem, name ) {\n\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t\t},\n\n\t\teach: function( obj, callback ) {\n\t\t\tvar length, i = 0;\n\n\t\t\tif ( isArrayLike( obj ) ) {\n\t\t\t\tlength = obj.length;\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn obj;\n\t\t},\n\n\t\t// Support: Android <=4.0 only\n\t\ttrim: function( text ) {\n\t\t\treturn text == null ?\n\t\t\t\t\"\" :\n\t\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t\t},\n\n\t\t// results is for internal usage only\n\t\tmakeArray: function( arr, results ) {\n\t\t\tvar ret = results || [];\n\n\t\t\tif ( arr != null ) {\n\t\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tpush.call( ret, arr );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t},\n\n\t\tinArray: function( elem, arr, i ) {\n\t\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t\t},\n\n\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\tmerge: function( first, second ) {\n\t\t\tvar len = +second.length,\n\t\t\t\tj = 0,\n\t\t\t\ti = first.length;\n\n\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\tfirst[ i++ ] = second[ j ];\n\t\t\t}\n\n\t\t\tfirst.length = i;\n\n\t\t\treturn first;\n\t\t},\n\n\t\tgrep: function( elems, callback, invert ) {\n\t\t\tvar callbackInverse,\n\t\t\t\tmatches = [],\n\t\t\t\ti = 0,\n\t\t\t\tlength = elems.length,\n\t\t\t\tcallbackExpect = !invert;\n\n\t\t\t// Go through the array, only saving the items\n\t\t\t// that pass the validator function\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn matches;\n\t\t},\n\n\t\t// arg is for internal usage only\n\t\tmap: function( elems, callback, arg ) {\n\t\t\tvar length, value,\n\t\t\t\ti = 0,\n\t\t\t\tret = [];\n\n\t\t\t// Go through the array, translating each of the items to their new values\n\t\t\tif ( isArrayLike( elems ) ) {\n\t\t\t\tlength = elems.length;\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\t\tif ( value != null ) {\n\t\t\t\t\t\tret.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Go through every key on the object,\n\t\t\t} else {\n\t\t\t\tfor ( i in elems ) {\n\t\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\t\tif ( value != null ) {\n\t\t\t\t\t\tret.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Flatten any nested arrays\n\t\t\treturn concat.apply( [], ret );\n\t\t},\n\n\t\t// A global GUID counter for objects\n\t\tguid: 1,\n\n\t\t// Bind a function to a context, optionally partially applying any\n\t\t// arguments.\n\t\tproxy: function( fn, context ) {\n\t\t\tvar tmp, args, proxy;\n\n\t\t\tif ( typeof context === \"string\" ) {\n\t\t\t\ttmp = fn[ context ];\n\t\t\t\tcontext = fn;\n\t\t\t\tfn = tmp;\n\t\t\t}\n\n\t\t\t// Quick check to determine if target is callable, in the spec\n\t\t\t// this throws a TypeError, but we will just return undefined.\n\t\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t// Simulated bind\n\t\t\targs = slice.call( arguments, 2 );\n\t\t\tproxy = function() {\n\t\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t\t};\n\n\t\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\t\treturn proxy;\n\t\t},\n\n\t\tnow: Date.now,\n\n\t\t// jQuery.support is not used in Core but other projects attach their\n\t\t// properties to it so it needs to exist.\n\t\tsupport: support\n\t} );\n\n\tif ( typeof Symbol === \"function\" ) {\n\t\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n\t}\n\n\t// Populate the class2type map\n\tjQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\n\tfunction isArrayLike( obj ) {\n\n\t\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t\t// `in` check used to prevent JIT error (gh-2145)\n\t\t// hasOwn isn't used here due to false negatives\n\t\t// regarding Nodelist length in IE\n\t\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\t\ttype = jQuery.type( obj );\n\n\t\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn type === \"array\" || length === 0 ||\n\t\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n\t}\n\tvar Sizzle =\n\t/*!\n\t * Sizzle CSS Selector Engine v2.3.0\n\t * https://sizzlejs.com/\n\t *\n\t * Copyright jQuery Foundation and other contributors\n\t * Released under the MIT license\n\t * http://jquery.org/license\n\t *\n\t * Date: 2016-01-04\n\t */\n\t(function( window ) {\n\n\tvar i,\n\t\tsupport,\n\t\tExpr,\n\t\tgetText,\n\t\tisXML,\n\t\ttokenize,\n\t\tcompile,\n\t\tselect,\n\t\toutermostContext,\n\t\tsortInput,\n\t\thasDuplicate,\n\n\t\t// Local document vars\n\t\tsetDocument,\n\t\tdocument,\n\t\tdocElem,\n\t\tdocumentIsHTML,\n\t\trbuggyQSA,\n\t\trbuggyMatches,\n\t\tmatches,\n\t\tcontains,\n\n\t\t// Instance-specific data\n\t\texpando = \"sizzle\" + 1 * new Date(),\n\t\tpreferredDoc = window.document,\n\t\tdirruns = 0,\n\t\tdone = 0,\n\t\tclassCache = createCache(),\n\t\ttokenCache = createCache(),\n\t\tcompilerCache = createCache(),\n\t\tsortOrder = function( a, b ) {\n\t\t\tif ( a === b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// Instance methods\n\t\thasOwn = ({}).hasOwnProperty,\n\t\tarr = [],\n\t\tpop = arr.pop,\n\t\tpush_native = arr.push,\n\t\tpush = arr.push,\n\t\tslice = arr.slice,\n\t\t// Use a stripped-down indexOf as it's faster than native\n\t\t// https://jsperf.com/thor-indexof-vs-for/5\n\t\tindexOf = function( list, elem ) {\n\t\t\tvar i = 0,\n\t\t\t\tlen = list.length;\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tif ( list[i] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\n\t\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t\t// Regular expressions\n\n\t\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\t\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\t\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\t\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t\t// Operator (capture 2)\n\t\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\t\"*\\\\]\",\n\n\t\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t\t// 2. simple (capture 6)\n\t\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t\t// 3. anything else (capture 2)\n\t\t\t\".*\" +\n\t\t\t\")\\\\)|)\",\n\n\t\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\t\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\t\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\t\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\t\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\t\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\t\trpseudo = new RegExp( pseudos ),\n\t\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\t\tmatchExpr = {\n\t\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t\t// For use in libraries implementing .is()\n\t\t\t// We use this for POS matching in `select`\n\t\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t\t},\n\n\t\trinputs = /^(?:input|select|textarea|button)$/i,\n\t\trheader = /^h\\d$/i,\n\n\t\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\t\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\t\trsibling = /[+~]/,\n\n\t\t// CSS escapes\n\t\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\t\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\t\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t\t// NaN means non-codepoint\n\t\t\t// Support: Firefox<24\n\t\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\t\treturn high !== high || escapedWhitespace ?\n\t\t\t\tescaped :\n\t\t\t\thigh < 0 ?\n\t\t\t\t\t// BMP codepoint\n\t\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t\t},\n\n\t\t// CSS string/identifier serialization\n\t\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\t\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,\n\t\tfcssescape = function( ch, asCodePoint ) {\n\t\t\tif ( asCodePoint ) {\n\n\t\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\t\treturn \"\\uFFFD\";\n\t\t\t\t}\n\n\t\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t\t}\n\n\t\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\t\treturn \"\\\\\" + ch;\n\t\t},\n\n\t\t// Used for iframes\n\t\t// See setDocument()\n\t\t// Removing the function wrapper causes a \"Permission Denied\"\n\t\t// error in IE\n\t\tunloadHandler = function() {\n\t\t\tsetDocument();\n\t\t},\n\n\t\tdisabledAncestor = addCombinator(\n\t\t\tfunction( elem ) {\n\t\t\t\treturn elem.disabled === true;\n\t\t\t},\n\t\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t\t);\n\n\t// Optimize for push.apply( _, NodeList )\n\ttry {\n\t\tpush.apply(\n\t\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\t\tpreferredDoc.childNodes\n\t\t);\n\t\t// Support: Android<4.0\n\t\t// Detect silently failing push.apply\n\t\tarr[ preferredDoc.childNodes.length ].nodeType;\n\t} catch ( e ) {\n\t\tpush = { apply: arr.length ?\n\n\t\t\t// Leverage slice if possible\n\t\t\tfunction( target, els ) {\n\t\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t\t} :\n\n\t\t\t// Support: IE<9\n\t\t\t// Otherwise append directly\n\t\t\tfunction( target, els ) {\n\t\t\t\tvar j = target.length,\n\t\t\t\t\ti = 0;\n\t\t\t\t// Can't trust NodeList.length\n\t\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\t\ttarget.length = j - 1;\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction Sizzle( selector, context, results, seed ) {\n\t\tvar m, i, elem, nid, match, groups, newSelector,\n\t\t\tnewContext = context && context.ownerDocument,\n\n\t\t\t// nodeType defaults to 9, since context defaults to document\n\t\t\tnodeType = context ? context.nodeType : 9;\n\n\t\tresults = results || [];\n\n\t\t// Return early from calls with invalid selector or context\n\t\tif ( typeof selector !== \"string\" || !selector ||\n\t\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\t\treturn results;\n\t\t}\n\n\t\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\t\tif ( !seed ) {\n\n\t\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\t\tsetDocument( context );\n\t\t\t}\n\t\t\tcontext = context || document;\n\n\t\t\tif ( documentIsHTML ) {\n\n\t\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t\t// ID selector\n\t\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t\t// Document context\n\t\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Element context\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Type selector\n\t\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\t\treturn results;\n\n\t\t\t\t\t// Class selector\n\t\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Take advantage of querySelectorAll\n\t\t\t\tif ( support.qsa &&\n\t\t\t\t\t!compilerCache[ selector + \" \" ] &&\n\t\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\t\tnewContext = context;\n\t\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t\t// Support: IE <=8\n\t\t\t\t\t// Exclude object elements\n\t\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\t\ti = groups.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\t\tcontext;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( newSelector ) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// All others\n\t\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n\t}\n\n\t/**\n\t * Create key-value caches of limited size\n\t * @returns {function(string, object)} Returns the Object data after storing it on itself with\n\t *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n\t *\tdeleting the oldest entry\n\t */\n\tfunction createCache() {\n\t\tvar keys = [];\n\n\t\tfunction cache( key, value ) {\n\t\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t\t// Only keep the most recent entries\n\t\t\t\tdelete cache[ keys.shift() ];\n\t\t\t}\n\t\t\treturn (cache[ key + \" \" ] = value);\n\t\t}\n\t\treturn cache;\n\t}\n\n\t/**\n\t * Mark a function for special use by Sizzle\n\t * @param {Function} fn The function to mark\n\t */\n\tfunction markFunction( fn ) {\n\t\tfn[ expando ] = true;\n\t\treturn fn;\n\t}\n\n\t/**\n\t * Support testing using an element\n\t * @param {Function} fn Passed the created element and returns a boolean result\n\t */\n\tfunction assert( fn ) {\n\t\tvar el = document.createElement(\"fieldset\");\n\n\t\ttry {\n\t\t\treturn !!fn( el );\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t} finally {\n\t\t\t// Remove from its parent by default\n\t\t\tif ( el.parentNode ) {\n\t\t\t\tel.parentNode.removeChild( el );\n\t\t\t}\n\t\t\t// release memory in IE\n\t\t\tel = null;\n\t\t}\n\t}\n\n\t/**\n\t * Adds the same handler for all of the specified attrs\n\t * @param {String} attrs Pipe-separated list of attributes\n\t * @param {Function} handler The method that will be applied\n\t */\n\tfunction addHandle( attrs, handler ) {\n\t\tvar arr = attrs.split(\"|\"),\n\t\t\ti = arr.length;\n\n\t\twhile ( i-- ) {\n\t\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t\t}\n\t}\n\n\t/**\n\t * Checks document order of two siblings\n\t * @param {Element} a\n\t * @param {Element} b\n\t * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n\t */\n\tfunction siblingCheck( a, b ) {\n\t\tvar cur = b && a,\n\t\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t\t// Use IE sourceIndex if available on both nodes\n\t\tif ( diff ) {\n\t\t\treturn diff;\n\t\t}\n\n\t\t// Check if b follows a\n\t\tif ( cur ) {\n\t\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\t\tif ( cur === b ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn a ? 1 : -1;\n\t}\n\n\t/**\n\t * Returns a function to use in pseudos for input types\n\t * @param {String} type\n\t */\n\tfunction createInputPseudo( type ) {\n\t\treturn function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === type;\n\t\t};\n\t}\n\n\t/**\n\t * Returns a function to use in pseudos for buttons\n\t * @param {String} type\n\t */\n\tfunction createButtonPseudo( type ) {\n\t\treturn function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t\t};\n\t}\n\n\t/**\n\t * Returns a function to use in pseudos for :enabled/:disabled\n\t * @param {Boolean} disabled true for :disabled; false for :enabled\n\t */\n\tfunction createDisabledPseudo( disabled ) {\n\t\t// Known :disabled false positives:\n\t\t// IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset)\n\t\t// not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\t\treturn function( elem ) {\n\n\t\t\t// Check form elements and option elements for explicit disabling\n\t\t\treturn \"label\" in elem && elem.disabled === disabled ||\n\t\t\t\t\"form\" in elem && elem.disabled === disabled ||\n\n\t\t\t\t// Check non-disabled form elements for fieldset[disabled] ancestors\n\t\t\t\t\"form\" in elem && elem.disabled === false && (\n\t\t\t\t\t// Support: IE6-11+\n\t\t\t\t\t// Ancestry is covered for us\n\t\t\t\t\telem.isDisabled === disabled ||\n\n\t\t\t\t\t// Otherwise, assume any non-<option> under fieldset[disabled] is disabled\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\t(\"label\" in elem || !disabledAncestor( elem )) !== disabled\n\t\t\t\t);\n\t\t};\n\t}\n\n\t/**\n\t * Returns a function to use in pseudos for positionals\n\t * @param {Function} fn\n\t */\n\tfunction createPositionalPseudo( fn ) {\n\t\treturn markFunction(function( argument ) {\n\t\t\targument = +argument;\n\t\t\treturn markFunction(function( seed, matches ) {\n\t\t\t\tvar j,\n\t\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\t\ti = matchIndexes.length;\n\n\t\t\t\t// Match elements found at the specified indexes\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Checks a node for validity as a Sizzle context\n\t * @param {Element|Object=} context\n\t * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n\t */\n\tfunction testContext( context ) {\n\t\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n\t}\n\n\t// Expose support vars for convenience\n\tsupport = Sizzle.support = {};\n\n\t/**\n\t * Detects XML nodes\n\t * @param {Element|Object} elem An element or a document\n\t * @returns {Boolean} True iff elem is a non-HTML XML node\n\t */\n\tisXML = Sizzle.isXML = function( elem ) {\n\t\t// documentElement is verified for cases where it doesn't yet exist\n\t\t// (such as loading iframes in IE - #4833)\n\t\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\t\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n\t};\n\n\t/**\n\t * Sets document-related variables once based on the current document\n\t * @param {Element|Object} [doc] An element or document object to use to set the document\n\t * @returns {Object} Returns the current document\n\t */\n\tsetDocument = Sizzle.setDocument = function( node ) {\n\t\tvar hasCompare, subWindow,\n\t\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t\t// Return early if doc is invalid or already selected\n\t\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\t\treturn document;\n\t\t}\n\n\t\t// Update global variables\n\t\tdocument = doc;\n\t\tdocElem = document.documentElement;\n\t\tdocumentIsHTML = !isXML( document );\n\n\t\t// Support: IE 9-11, Edge\n\t\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t\tif ( preferredDoc !== document &&\n\t\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t\t// Support: IE 11, Edge\n\t\t\tif ( subWindow.addEventListener ) {\n\t\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t\t// Support: IE 9 - 10 only\n\t\t\t} else if ( subWindow.attachEvent ) {\n\t\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t\t}\n\t\t}\n\n\t\t/* Attributes\n\t\t---------------------------------------------------------------------- */\n\n\t\t// Support: IE<8\n\t\t// Verify that getAttribute really returns attributes and not properties\n\t\t// (excepting IE8 booleans)\n\t\tsupport.attributes = assert(function( el ) {\n\t\t\tel.className = \"i\";\n\t\t\treturn !el.getAttribute(\"className\");\n\t\t});\n\n\t\t/* getElement(s)By*\n\t\t---------------------------------------------------------------------- */\n\n\t\t// Check if getElementsByTagName(\"*\") returns only elements\n\t\tsupport.getElementsByTagName = assert(function( el ) {\n\t\t\tel.appendChild( document.createComment(\"\") );\n\t\t\treturn !el.getElementsByTagName(\"*\").length;\n\t\t});\n\n\t\t// Support: IE<9\n\t\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t\t// Support: IE<10\n\t\t// Check if getElementById returns elements by name\n\t\t// The broken getElementById methods don't pick up programmatically-set names,\n\t\t// so use a roundabout getElementsByName test\n\t\tsupport.getById = assert(function( el ) {\n\t\t\tdocElem.appendChild( el ).id = expando;\n\t\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t\t});\n\n\t\t// ID find and filter\n\t\tif ( support.getById ) {\n\t\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t\treturn m ? [ m ] : [];\n\t\t\t\t}\n\t\t\t};\n\t\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t\t};\n\t\t\t};\n\t\t} else {\n\t\t\t// Support: IE6/7\n\t\t\t// getElementById is not reliable as a find shortcut\n\t\t\tdelete Expr.find[\"ID\"];\n\n\t\t\tExpr.filter[\"ID\"] =  function( id ) {\n\t\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\t\treturn node && node.value === attrId;\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\t// Tag\n\t\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\t\tfunction( tag, context ) {\n\t\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t\t} else if ( support.qsa ) {\n\t\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t\t}\n\t\t\t} :\n\n\t\t\tfunction( tag, context ) {\n\t\t\t\tvar elem,\n\t\t\t\t\ttmp = [],\n\t\t\t\t\ti = 0,\n\t\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t\t// Filter out possible comments\n\t\t\t\tif ( tag === \"*\" ) {\n\t\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn tmp;\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t\t};\n\n\t\t// Class\n\t\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t};\n\n\t\t/* QSA/matchesSelector\n\t\t---------------------------------------------------------------------- */\n\n\t\t// QSA and matchesSelector support\n\n\t\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\t\trbuggyMatches = [];\n\n\t\t// qSa(:focus) reports false when true (Chrome 21)\n\t\t// We allow this because of a bug in IE8/9 that throws an error\n\t\t// whenever `document.activeElement` is accessed on an iframe\n\t\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t\t// See https://bugs.jquery.com/ticket/13378\n\t\trbuggyQSA = [];\n\n\t\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t\t// Build QSA regex\n\t\t\t// Regex strategy adopted from Diego Perini\n\t\t\tassert(function( el ) {\n\t\t\t\t// Select is set to empty string on purpose\n\t\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t\t// setting a boolean content attribute,\n\t\t\t\t// since its presence should be enough\n\t\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t\t}\n\n\t\t\t\t// Support: IE8\n\t\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t\t}\n\n\t\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t\t}\n\n\t\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t\t// IE8 throws error here and will not see later tests\n\t\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t\t}\n\n\t\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tassert(function( el ) {\n\t\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t\t// Support: Windows 8 Native Apps\n\t\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\t\tvar input = document.createElement(\"input\");\n\t\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t\t// Support: IE8\n\t\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t\t}\n\n\t\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t\t// IE8 throws error here and will not see later tests\n\t\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t\t}\n\n\t\t\t\t// Support: IE9-11+\n\t\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t\t}\n\n\t\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\t\trbuggyQSA.push(\",.*:\");\n\t\t\t});\n\t\t}\n\n\t\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\t\tdocElem.webkitMatchesSelector ||\n\t\t\tdocElem.mozMatchesSelector ||\n\t\t\tdocElem.oMatchesSelector ||\n\t\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\t\tassert(function( el ) {\n\t\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t\t// on a disconnected node (IE 9)\n\t\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t\t// This should fail with an exception\n\t\t\t\t// Gecko does not error, returns false instead\n\t\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t\t});\n\t\t}\n\n\t\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\t\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t\t/* Contains\n\t\t---------------------------------------------------------------------- */\n\t\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t\t// Element contains another\n\t\t// Purposefully self-exclusive\n\t\t// As in, an element does not contain itself\n\t\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\t\tfunction( a, b ) {\n\t\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\t\tbup = b && b.parentNode;\n\t\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\t\tadown.contains ?\n\t\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t\t));\n\t\t\t} :\n\t\t\tfunction( a, b ) {\n\t\t\t\tif ( b ) {\n\t\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\n\t\t/* Sorting\n\t\t---------------------------------------------------------------------- */\n\n\t\t// Document order sorting\n\t\tsortOrder = hasCompare ?\n\t\tfunction( a, b ) {\n\n\t\t\t// Flag for duplicate removal\n\t\t\tif ( a === b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\t\tif ( compare ) {\n\t\t\t\treturn compare;\n\t\t\t}\n\n\t\t\t// Calculate position if both inputs belong to the same document\n\t\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t\t// Otherwise we know they are disconnected\n\t\t\t\t1;\n\n\t\t\t// Disconnected nodes\n\t\t\tif ( compare & 1 ||\n\t\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\t// Maintain original order\n\t\t\t\treturn sortInput ?\n\t\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t\t0;\n\t\t\t}\n\n\t\t\treturn compare & 4 ? -1 : 1;\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\t// Exit early if the nodes are identical\n\t\t\tif ( a === b ) {\n\t\t\t\thasDuplicate = true;\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tvar cur,\n\t\t\t\ti = 0,\n\t\t\t\taup = a.parentNode,\n\t\t\t\tbup = b.parentNode,\n\t\t\t\tap = [ a ],\n\t\t\t\tbp = [ b ];\n\n\t\t\t// Parentless nodes are either documents or disconnected\n\t\t\tif ( !aup || !bup ) {\n\t\t\t\treturn a === document ? -1 :\n\t\t\t\t\tb === document ? 1 :\n\t\t\t\t\taup ? -1 :\n\t\t\t\t\tbup ? 1 :\n\t\t\t\t\tsortInput ?\n\t\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t\t0;\n\n\t\t\t// If the nodes are siblings, we can do a quick check\n\t\t\t} else if ( aup === bup ) {\n\t\t\t\treturn siblingCheck( a, b );\n\t\t\t}\n\n\t\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\t\tcur = a;\n\t\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\t\tap.unshift( cur );\n\t\t\t}\n\t\t\tcur = b;\n\t\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\t\tbp.unshift( cur );\n\t\t\t}\n\n\t\t\t// Walk down the tree looking for a discrepancy\n\t\t\twhile ( ap[i] === bp[i] ) {\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\treturn i ?\n\t\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t\t// Otherwise nodes in our document sort first\n\t\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t\t0;\n\t\t};\n\n\t\treturn document;\n\t};\n\n\tSizzle.matches = function( expr, elements ) {\n\t\treturn Sizzle( expr, null, null, elements );\n\t};\n\n\tSizzle.matchesSelector = function( elem, expr ) {\n\t\t// Set document vars if needed\n\t\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\t\tsetDocument( elem );\n\t\t}\n\n\t\t// Make sure that attribute selectors are quoted\n\t\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\t\tif ( support.matchesSelector && documentIsHTML &&\n\t\t\t!compilerCache[ expr + \" \" ] &&\n\t\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\t\ttry {\n\t\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n\t};\n\n\tSizzle.contains = function( context, elem ) {\n\t\t// Set document vars if needed\n\t\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\treturn contains( context, elem );\n\t};\n\n\tSizzle.attr = function( elem, name ) {\n\t\t// Set document vars if needed\n\t\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\t\tsetDocument( elem );\n\t\t}\n\n\t\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\t\tundefined;\n\n\t\treturn val !== undefined ?\n\t\t\tval :\n\t\t\tsupport.attributes || !documentIsHTML ?\n\t\t\t\telem.getAttribute( name ) :\n\t\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t};\n\n\tSizzle.escape = function( sel ) {\n\t\treturn (sel + \"\").replace( rcssescape, fcssescape );\n\t};\n\n\tSizzle.error = function( msg ) {\n\t\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n\t};\n\n\t/**\n\t * Document sorting and removing duplicates\n\t * @param {ArrayLike} results\n\t */\n\tSizzle.uniqueSort = function( results ) {\n\t\tvar elem,\n\t\t\tduplicates = [],\n\t\t\tj = 0,\n\t\t\ti = 0;\n\n\t\t// Unless we *know* we can detect duplicates, assume their presence\n\t\thasDuplicate = !support.detectDuplicates;\n\t\tsortInput = !support.sortStable && results.slice( 0 );\n\t\tresults.sort( sortOrder );\n\n\t\tif ( hasDuplicate ) {\n\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\t\tj = duplicates.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile ( j-- ) {\n\t\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t\t}\n\t\t}\n\n\t\t// Clear input after sorting to release objects\n\t\t// See https://github.com/jquery/sizzle/pull/225\n\t\tsortInput = null;\n\n\t\treturn results;\n\t};\n\n\t/**\n\t * Utility function for retrieving the text value of an array of DOM nodes\n\t * @param {Array|Element} elem\n\t */\n\tgetText = Sizzle.getText = function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( (node = elem[i++]) ) {\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += getText( node );\n\t\t\t}\n\t\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\t// Use textContent for elements\n\t\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\t\treturn elem.textContent;\n\t\t\t} else {\n\t\t\t\t// Traverse its children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tret += getText( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t};\n\n\tExpr = Sizzle.selectors = {\n\n\t\t// Can be adjusted by the user\n\t\tcacheLength: 50,\n\n\t\tcreatePseudo: markFunction,\n\n\t\tmatch: matchExpr,\n\n\t\tattrHandle: {},\n\n\t\tfind: {},\n\n\t\trelative: {\n\t\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\t\" \": { dir: \"parentNode\" },\n\t\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\t\"~\": { dir: \"previousSibling\" }\n\t\t},\n\n\t\tpreFilter: {\n\t\t\t\"ATTR\": function( match ) {\n\t\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t\t}\n\n\t\t\t\treturn match.slice( 0, 4 );\n\t\t\t},\n\n\t\t\t\"CHILD\": function( match ) {\n\t\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t\t1 type (only|nth|...)\n\t\t\t\t\t2 what (child|of-type)\n\t\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t\t5 sign of xn-component\n\t\t\t\t\t6 x of xn-component\n\t\t\t\t\t7 sign of y-component\n\t\t\t\t\t8 y of y-component\n\t\t\t\t*/\n\t\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t\t// nth-* requires argument\n\t\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t\t} else if ( match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\treturn match;\n\t\t\t},\n\n\t\t\t\"PSEUDO\": function( match ) {\n\t\t\t\tvar excess,\n\t\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\t// Accept quoted arguments as-is\n\t\t\t\tif ( match[3] ) {\n\t\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t\t// excess is a negative index\n\t\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t\t}\n\n\t\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\t\treturn match.slice( 0, 3 );\n\t\t\t}\n\t\t},\n\n\t\tfilter: {\n\n\t\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\t\tfunction() { return true; } :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t\t};\n\t\t\t},\n\n\t\t\t\"CLASS\": function( className ) {\n\t\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\t\treturn pattern ||\n\t\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t\t});\n\t\t\t},\n\n\t\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\t\tif ( result == null ) {\n\t\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t\t}\n\t\t\t\t\tif ( !operator ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tresult += \"\";\n\n\t\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\t\tfalse;\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\t\tofType = what === \"of-type\";\n\n\t\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t\t} :\n\n\t\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t},\n\n\t\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t\t// pseudo-class names are case-insensitive\n\t\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\t\tvar args,\n\t\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t\t// The user may use createPseudo to indicate that\n\t\t\t\t// arguments are needed to create the filter function\n\t\t\t\t// just as Sizzle does\n\t\t\t\tif ( fn[ expando ] ) {\n\t\t\t\t\treturn fn( argument );\n\t\t\t\t}\n\n\t\t\t\t// But maintain support for old signatures\n\t\t\t\tif ( fn.length > 1 ) {\n\t\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}) :\n\t\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn fn;\n\t\t\t}\n\t\t},\n\n\t\tpseudos: {\n\t\t\t// Potentially complex pseudos\n\t\t\t\"not\": markFunction(function( selector ) {\n\t\t\t\t// Trim the selector passed to compile\n\t\t\t\t// to avoid treating leading and trailing\n\t\t\t\t// spaces as combinators\n\t\t\t\tvar input = [],\n\t\t\t\t\tresults = [],\n\t\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\t\treturn matcher[ expando ] ?\n\t\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\t\tvar elem,\n\t\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\t\tinput[0] = null;\n\t\t\t\t\t\treturn !results.pop();\n\t\t\t\t\t};\n\t\t\t}),\n\n\t\t\t\"has\": markFunction(function( selector ) {\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t\t};\n\t\t\t}),\n\n\t\t\t\"contains\": markFunction(function( text ) {\n\t\t\t\ttext = text.replace( runescape, funescape );\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t\t};\n\t\t\t}),\n\n\t\t\t// \"Whether an element is represented by a :lang() selector\n\t\t\t// is based solely on the element's language value\n\t\t\t// being equal to the identifier C,\n\t\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t\t// The identifier C does not have to be a valid language name.\"\n\t\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t\t// lang value must be a valid identifier\n\t\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t\t}\n\t\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\t\treturn function( elem ) {\n\t\t\t\t\tvar elemLang;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\t\t\t}),\n\n\t\t\t// Miscellaneous\n\t\t\t\"target\": function( elem ) {\n\t\t\t\tvar hash = window.location && window.location.hash;\n\t\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t\t},\n\n\t\t\t\"root\": function( elem ) {\n\t\t\t\treturn elem === docElem;\n\t\t\t},\n\n\t\t\t\"focus\": function( elem ) {\n\t\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t\t},\n\n\t\t\t// Boolean properties\n\t\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\t\"checked\": function( elem ) {\n\t\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t\t},\n\n\t\t\t\"selected\": function( elem ) {\n\t\t\t\t// Accessing this property makes selected-by-default\n\t\t\t\t// options in Safari work properly\n\t\t\t\tif ( elem.parentNode ) {\n\t\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t\t}\n\n\t\t\t\treturn elem.selected === true;\n\t\t\t},\n\n\t\t\t// Contents\n\t\t\t\"empty\": function( elem ) {\n\t\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t\"parent\": function( elem ) {\n\t\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t\t},\n\n\t\t\t// Element/input types\n\t\t\t\"header\": function( elem ) {\n\t\t\t\treturn rheader.test( elem.nodeName );\n\t\t\t},\n\n\t\t\t\"input\": function( elem ) {\n\t\t\t\treturn rinputs.test( elem.nodeName );\n\t\t\t},\n\n\t\t\t\"button\": function( elem ) {\n\t\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t\t},\n\n\t\t\t\"text\": function( elem ) {\n\t\t\t\tvar attr;\n\t\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t\t// Support: IE<8\n\t\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t\t},\n\n\t\t\t// Position-in-collection\n\t\t\t\"first\": createPositionalPseudo(function() {\n\t\t\t\treturn [ 0 ];\n\t\t\t}),\n\n\t\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\t\treturn [ length - 1 ];\n\t\t\t}),\n\n\t\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t\t}),\n\n\t\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\t\tvar i = 0;\n\t\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\t\tmatchIndexes.push( i );\n\t\t\t\t}\n\t\t\t\treturn matchIndexes;\n\t\t\t}),\n\n\t\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\t\tvar i = 1;\n\t\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\t\tmatchIndexes.push( i );\n\t\t\t\t}\n\t\t\t\treturn matchIndexes;\n\t\t\t}),\n\n\t\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\t\tmatchIndexes.push( i );\n\t\t\t\t}\n\t\t\t\treturn matchIndexes;\n\t\t\t}),\n\n\t\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\t\tmatchIndexes.push( i );\n\t\t\t\t}\n\t\t\t\treturn matchIndexes;\n\t\t\t})\n\t\t}\n\t};\n\n\tExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n\t// Add button/input type pseudos\n\tfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\t\tExpr.pseudos[ i ] = createInputPseudo( i );\n\t}\n\tfor ( i in { submit: true, reset: true } ) {\n\t\tExpr.pseudos[ i ] = createButtonPseudo( i );\n\t}\n\n\t// Easy API for creating new setFilters\n\tfunction setFilters() {}\n\tsetFilters.prototype = Expr.filters = Expr.pseudos;\n\tExpr.setFilters = new setFilters();\n\n\ttokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\t\tvar matched, match, tokens, type,\n\t\t\tsoFar, groups, preFilters,\n\t\t\tcached = tokenCache[ selector + \" \" ];\n\n\t\tif ( cached ) {\n\t\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t\t}\n\n\t\tsoFar = selector;\n\t\tgroups = [];\n\t\tpreFilters = Expr.preFilter;\n\n\t\twhile ( soFar ) {\n\n\t\t\t// Comma and first run\n\t\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\t\tif ( match ) {\n\t\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t\t}\n\t\t\t\tgroups.push( (tokens = []) );\n\t\t\t}\n\n\t\t\tmatched = false;\n\n\t\t\t// Combinators\n\t\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\t// Cast descendant combinators to space\n\t\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\n\t\t\t// Filters\n\t\t\tfor ( type in Expr.filter ) {\n\t\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\t\tmatched = match.shift();\n\t\t\t\t\ttokens.push({\n\t\t\t\t\t\tvalue: matched,\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tmatches: match\n\t\t\t\t\t});\n\t\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !matched ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Return the length of the invalid excess\n\t\t// if we're just parsing\n\t\t// Otherwise, throw an error or return tokens\n\t\treturn parseOnly ?\n\t\t\tsoFar.length :\n\t\t\tsoFar ?\n\t\t\t\tSizzle.error( selector ) :\n\t\t\t\t// Cache the tokens\n\t\t\t\ttokenCache( selector, groups ).slice( 0 );\n\t};\n\n\tfunction toSelector( tokens ) {\n\t\tvar i = 0,\n\t\t\tlen = tokens.length,\n\t\t\tselector = \"\";\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tselector += tokens[i].value;\n\t\t}\n\t\treturn selector;\n\t}\n\n\tfunction addCombinator( matcher, combinator, base ) {\n\t\tvar dir = combinator.dir,\n\t\t\tskip = combinator.next,\n\t\t\tkey = skip || dir,\n\t\t\tcheckNonElements = base && key === \"parentNode\",\n\t\t\tdoneName = done++;\n\n\t\treturn combinator.first ?\n\t\t\t// Check against closest ancestor/preceding element\n\t\t\tfunction( elem, context, xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} :\n\n\t\t\t// Check against all ancestor/preceding elements\n\t\t\tfunction( elem, context, xml ) {\n\t\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\t\tif ( xml ) {\n\t\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t}\n\n\tfunction elementMatcher( matchers ) {\n\t\treturn matchers.length > 1 ?\n\t\t\tfunction( elem, context, xml ) {\n\t\t\t\tvar i = matchers.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} :\n\t\t\tmatchers[0];\n\t}\n\n\tfunction multipleContexts( selector, contexts, results ) {\n\t\tvar i = 0,\n\t\t\tlen = contexts.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tSizzle( selector, contexts[i], results );\n\t\t}\n\t\treturn results;\n\t}\n\n\tfunction condense( unmatched, map, filter, context, xml ) {\n\t\tvar elem,\n\t\t\tnewUnmatched = [],\n\t\t\ti = 0,\n\t\t\tlen = unmatched.length,\n\t\t\tmapped = map != null;\n\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\t\tif ( mapped ) {\n\t\t\t\t\t\tmap.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn newUnmatched;\n\t}\n\n\tfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\t\tif ( postFilter && !postFilter[ expando ] ) {\n\t\t\tpostFilter = setMatcher( postFilter );\n\t\t}\n\t\tif ( postFinder && !postFinder[ expando ] ) {\n\t\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t\t}\n\t\treturn markFunction(function( seed, results, context, xml ) {\n\t\t\tvar temp, i, elem,\n\t\t\t\tpreMap = [],\n\t\t\t\tpostMap = [],\n\t\t\t\tpreexisting = results.length,\n\n\t\t\t\t// Get initial elements from seed or context\n\t\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\t\telems,\n\n\t\t\t\tmatcherOut = matcher ?\n\t\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t\t[] :\n\n\t\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\t\tresults :\n\t\t\t\t\tmatcherIn;\n\n\t\t\t// Find primary matches\n\t\t\tif ( matcher ) {\n\t\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t\t}\n\n\t\t\t// Apply postFilter\n\t\t\tif ( postFilter ) {\n\t\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\t\ti = temp.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( seed ) {\n\t\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\t\ttemp = [];\n\t\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Add elements to results, through postFinder if defined\n\t\t\t} else {\n\t\t\t\tmatcherOut = condense(\n\t\t\t\t\tmatcherOut === results ?\n\t\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\t\tmatcherOut\n\t\t\t\t);\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t\t} else {\n\t\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction matcherFromTokens( tokens ) {\n\t\tvar checkContext, matcher, j,\n\t\t\tlen = tokens.length,\n\t\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\t\ti = leadingRelative ? 1 : 0,\n\n\t\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\t\treturn elem === checkContext;\n\t\t\t}, implicitRelative, true ),\n\t\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t\t}, implicitRelative, true ),\n\t\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\t\tcheckContext = null;\n\t\t\t\treturn ret;\n\t\t\t} ];\n\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t\t} else {\n\t\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t\t// Return special upon seeing a positional matcher\n\t\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\t\tj = ++i;\n\t\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn setMatcher(\n\t\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\t\tmatcher,\n\t\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tmatchers.push( matcher );\n\t\t\t}\n\t\t}\n\n\t\treturn elementMatcher( matchers );\n\t}\n\n\tfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\t\tvar bySet = setMatchers.length > 0,\n\t\t\tbyElement = elementMatchers.length > 0,\n\t\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\t\tvar elem, j, matcher,\n\t\t\t\t\tmatchedCount = 0,\n\t\t\t\t\ti = \"0\",\n\t\t\t\t\tunmatched = seed && [],\n\t\t\t\t\tsetMatched = [],\n\t\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\t\tlen = elems.length;\n\n\t\t\t\tif ( outermost ) {\n\t\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t\t}\n\n\t\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t\t// Support: IE<9, Safari\n\t\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\t\tif ( bySet ) {\n\t\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t\t// makes the latter nonnegative.\n\t\t\t\tmatchedCount += i;\n\n\t\t\t\t// Apply set filters to unmatched elements\n\t\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t\t// no element matchers and no seed.\n\t\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t\t// numerically zero.\n\t\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add matches to results\n\t\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override manipulation of globals by nested matchers\n\t\t\t\tif ( outermost ) {\n\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\toutermostContext = contextBackup;\n\t\t\t\t}\n\n\t\t\t\treturn unmatched;\n\t\t\t};\n\n\t\treturn bySet ?\n\t\t\tmarkFunction( superMatcher ) :\n\t\t\tsuperMatcher;\n\t}\n\n\tcompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\t\tvar i,\n\t\t\tsetMatchers = [],\n\t\t\telementMatchers = [],\n\t\t\tcached = compilerCache[ selector + \" \" ];\n\n\t\tif ( !cached ) {\n\t\t\t// Generate a function of recursive functions that can be used to check each element\n\t\t\tif ( !match ) {\n\t\t\t\tmatch = tokenize( selector );\n\t\t\t}\n\t\t\ti = match.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\t\tif ( cached[ expando ] ) {\n\t\t\t\t\tsetMatchers.push( cached );\n\t\t\t\t} else {\n\t\t\t\t\telementMatchers.push( cached );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cache the compiled function\n\t\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t\t// Save selector and tokenization\n\t\t\tcached.selector = selector;\n\t\t}\n\t\treturn cached;\n\t};\n\n\t/**\n\t * A low-level selection function that works with Sizzle's compiled\n\t *  selector functions\n\t * @param {String|Function} selector A selector or a pre-compiled\n\t *  selector function built with Sizzle.compile\n\t * @param {Element} context\n\t * @param {Array} [results]\n\t * @param {Array} [seed] A set of elements to match against\n\t */\n\tselect = Sizzle.select = function( selector, context, results, seed ) {\n\t\tvar i, tokens, token, type, find,\n\t\t\tcompiled = typeof selector === \"function\" && selector,\n\t\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\t\tresults = results || [];\n\n\t\t// Try to minimize operations if there is only one selector in the list and no seed\n\t\t// (the latter of which guarantees us context)\n\t\tif ( match.length === 1 ) {\n\n\t\t\t// Reduce context if the leading compound selector is an ID\n\t\t\ttokens = match[0] = match[0].slice( 0 );\n\t\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\t\tif ( !context ) {\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t\t} else if ( compiled ) {\n\t\t\t\t\tcontext = context.parentNode;\n\t\t\t\t}\n\n\t\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t\t}\n\n\t\t\t// Fetch a seed set for right-to-left matching\n\t\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\ttoken = tokens[i];\n\n\t\t\t\t// Abort if we hit a combinator\n\t\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\t\tif ( (seed = find(\n\t\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t\t)) ) {\n\n\t\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Compile and execute a filtering function if one is not provided\n\t\t// Provide `match` to avoid retokenization if we modified the selector above\n\t\t( compiled || compile( selector, match ) )(\n\t\t\tseed,\n\t\t\tcontext,\n\t\t\t!documentIsHTML,\n\t\t\tresults,\n\t\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t\t);\n\t\treturn results;\n\t};\n\n\t// One-time assignments\n\n\t// Sort stability\n\tsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n\t// Support: Chrome 14-35+\n\t// Always assume duplicates if they aren't passed to the comparison function\n\tsupport.detectDuplicates = !!hasDuplicate;\n\n\t// Initialize against the default document\n\tsetDocument();\n\n\t// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n\t// Detached nodes confoundingly follow *each other*\n\tsupport.sortDetached = assert(function( el ) {\n\t\t// Should return 1, but returns 4 (following)\n\t\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n\t});\n\n\t// Support: IE<8\n\t// Prevent attribute/property \"interpolation\"\n\t// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\tif ( !assert(function( el ) {\n\t\tel.innerHTML = \"<a href='#'></a>\";\n\t\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n\t}) ) {\n\t\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t\t}\n\t\t});\n\t}\n\n\t// Support: IE<9\n\t// Use defaultValue in place of getAttribute(\"value\")\n\tif ( !support.attributes || !assert(function( el ) {\n\t\tel.innerHTML = \"<input/>\";\n\t\tel.firstChild.setAttribute( \"value\", \"\" );\n\t\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n\t}) ) {\n\t\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\t\treturn elem.defaultValue;\n\t\t\t}\n\t\t});\n\t}\n\n\t// Support: IE<9\n\t// Use getAttributeNode to fetch booleans when getAttribute lies\n\tif ( !assert(function( el ) {\n\t\treturn el.getAttribute(\"disabled\") == null;\n\t}) ) {\n\t\taddHandle( booleans, function( elem, name, isXML ) {\n\t\t\tvar val;\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t});\n\t}\n\n\treturn Sizzle;\n\n\t})( window );\n\n\n\n\tjQuery.find = Sizzle;\n\tjQuery.expr = Sizzle.selectors;\n\n\t// Deprecated\n\tjQuery.expr[ \":\" ] = jQuery.expr.pseudos;\n\tjQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n\tjQuery.text = Sizzle.getText;\n\tjQuery.isXMLDoc = Sizzle.isXML;\n\tjQuery.contains = Sizzle.contains;\n\tjQuery.escapeSelector = Sizzle.escape;\n\n\n\n\n\tvar dir = function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t};\n\n\n\tvar siblings = function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t};\n\n\n\tvar rneedsContext = jQuery.expr.match.needsContext;\n\n\tvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n\tvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n\t// Implement the identical functionality for filter and not\n\tfunction winnow( elements, qualifier, not ) {\n\t\tif ( jQuery.isFunction( qualifier ) ) {\n\t\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( qualifier.nodeType ) {\n\t\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\t\treturn ( elem === qualifier ) !== not;\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( typeof qualifier === \"string\" ) {\n\t\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t\t}\n\n\t\t\tqualifier = jQuery.filter( qualifier, elements );\n\t\t}\n\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;\n\t\t} );\n\t}\n\n\tjQuery.filter = function( expr, elems, not ) {\n\t\tvar elem = elems[ 0 ];\n\n\t\tif ( not ) {\n\t\t\texpr = \":not(\" + expr + \")\";\n\t\t}\n\n\t\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\t\treturn elem.nodeType === 1;\n\t\t\t} ) );\n\t};\n\n\tjQuery.fn.extend( {\n\t\tfind: function( selector ) {\n\t\t\tvar i, ret,\n\t\t\t\tlen = this.length,\n\t\t\t\tself = this;\n\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) );\n\t\t\t}\n\n\t\t\tret = this.pushStack( [] );\n\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t\t}\n\n\t\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t\t},\n\t\tfilter: function( selector ) {\n\t\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t\t},\n\t\tnot: function( selector ) {\n\t\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t\t},\n\t\tis: function( selector ) {\n\t\t\treturn !!winnow(\n\t\t\t\tthis,\n\n\t\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\t\tjQuery( selector ) :\n\t\t\t\t\tselector || [],\n\t\t\t\tfalse\n\t\t\t).length;\n\t\t}\n\t} );\n\n\n\t// Initialize a jQuery object\n\n\n\t// A central reference to the root jQuery(document)\n\tvar rootjQuery,\n\n\t\t// A simple way to check for HTML strings\n\t\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t\t// Strict HTML recognition (#11290: must start with <)\n\t\t// Shortcut simple #id case for speed\n\t\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\t\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\t\tvar match, elem;\n\n\t\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\t\tif ( !selector ) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\t// Method init() accepts an alternate rootjQuery\n\t\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\t\troot = root || rootjQuery;\n\n\t\t\t// Handle HTML strings\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t\t} else {\n\t\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t\t}\n\n\t\t\t\t// Match html or make sure no context is specified for #id\n\t\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) );\n\n\t\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t}\n\n\t\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t\t// HANDLE: $(expr, context)\n\t\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t\t} else {\n\t\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(DOMElement)\n\t\t\t} else if ( selector.nodeType ) {\n\t\t\t\tthis[ 0 ] = selector;\n\t\t\t\tthis.length = 1;\n\t\t\t\treturn this;\n\n\t\t\t// HANDLE: $(function)\n\t\t\t// Shortcut for document ready\n\t\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\t\treturn root.ready !== undefined ?\n\t\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\t\tselector( jQuery );\n\t\t\t}\n\n\t\t\treturn jQuery.makeArray( selector, this );\n\t\t};\n\n\t// Give the init function the jQuery prototype for later instantiation\n\tinit.prototype = jQuery.fn;\n\n\t// Initialize central reference\n\trootjQuery = jQuery( document );\n\n\n\tvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t\t// Methods guaranteed to produce a unique set when starting from a unique set\n\t\tguaranteedUnique = {\n\t\t\tchildren: true,\n\t\t\tcontents: true,\n\t\t\tnext: true,\n\t\t\tprev: true\n\t\t};\n\n\tjQuery.fn.extend( {\n\t\thas: function( target ) {\n\t\t\tvar targets = jQuery( target, this ),\n\t\t\t\tl = targets.length;\n\n\t\t\treturn this.filter( function() {\n\t\t\t\tvar i = 0;\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tclosest: function( selectors, context ) {\n\t\t\tvar cur,\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length,\n\t\t\t\tmatched = [],\n\t\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t\t// Positional selectors never match, since there's no _selection_ context\n\t\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t\t},\n\n\t\t// Determine the position of an element within the set\n\t\tindex: function( elem ) {\n\n\t\t\t// No argument, return index in parent\n\t\t\tif ( !elem ) {\n\t\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t\t}\n\n\t\t\t// Index in selector\n\t\t\tif ( typeof elem === \"string\" ) {\n\t\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t\t}\n\n\t\t\t// Locate the position of the desired element\n\t\t\treturn indexOf.call( this,\n\n\t\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t\t);\n\t\t},\n\n\t\tadd: function( selector, context ) {\n\t\t\treturn this.pushStack(\n\t\t\t\tjQuery.uniqueSort(\n\t\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\n\t\taddBack: function( selector ) {\n\t\t\treturn this.add( selector == null ?\n\t\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t\t);\n\t\t}\n\t} );\n\n\tfunction sibling( cur, dir ) {\n\t\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\t\treturn cur;\n\t}\n\n\tjQuery.each( {\n\t\tparent: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\t\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t\t},\n\t\tparents: function( elem ) {\n\t\t\treturn dir( elem, \"parentNode\" );\n\t\t},\n\t\tparentsUntil: function( elem, i, until ) {\n\t\t\treturn dir( elem, \"parentNode\", until );\n\t\t},\n\t\tnext: function( elem ) {\n\t\t\treturn sibling( elem, \"nextSibling\" );\n\t\t},\n\t\tprev: function( elem ) {\n\t\t\treturn sibling( elem, \"previousSibling\" );\n\t\t},\n\t\tnextAll: function( elem ) {\n\t\t\treturn dir( elem, \"nextSibling\" );\n\t\t},\n\t\tprevAll: function( elem ) {\n\t\t\treturn dir( elem, \"previousSibling\" );\n\t\t},\n\t\tnextUntil: function( elem, i, until ) {\n\t\t\treturn dir( elem, \"nextSibling\", until );\n\t\t},\n\t\tprevUntil: function( elem, i, until ) {\n\t\t\treturn dir( elem, \"previousSibling\", until );\n\t\t},\n\t\tsiblings: function( elem ) {\n\t\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t\t},\n\t\tchildren: function( elem ) {\n\t\t\treturn siblings( elem.firstChild );\n\t\t},\n\t\tcontents: function( elem ) {\n\t\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t\t}\n\t}, function( name, fn ) {\n\t\tjQuery.fn[ name ] = function( until, selector ) {\n\t\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\t\tselector = until;\n\t\t\t}\n\n\t\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t\t}\n\n\t\t\tif ( this.length > 1 ) {\n\n\t\t\t\t// Remove duplicates\n\t\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t\t}\n\n\t\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\t\tmatched.reverse();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.pushStack( matched );\n\t\t};\n\t} );\n\tvar rnotwhite = ( /\\S+/g );\n\n\n\n\t// Convert String-formatted options into Object-formatted ones\n\tfunction createOptions( options ) {\n\t\tvar object = {};\n\t\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\t\tobject[ flag ] = true;\n\t\t} );\n\t\treturn object;\n\t}\n\n\t/*\n\t * Create a callback list using the following parameters:\n\t *\n\t *\toptions: an optional list of space-separated options that will change how\n\t *\t\t\tthe callback list behaves or a more traditional option object\n\t *\n\t * By default a callback list will act like an event callback list and can be\n\t * \"fired\" multiple times.\n\t *\n\t * Possible options:\n\t *\n\t *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n\t *\n\t *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n\t *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n\t *\t\t\t\t\tvalues (like a Deferred)\n\t *\n\t *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n\t *\n\t *\tstopOnFalse:\tinterrupt callings when a callback returns false\n\t *\n\t */\n\tjQuery.Callbacks = function( options ) {\n\n\t\t// Convert options from String-formatted to Object-formatted if needed\n\t\t// (we check in cache first)\n\t\toptions = typeof options === \"string\" ?\n\t\t\tcreateOptions( options ) :\n\t\t\tjQuery.extend( {}, options );\n\n\t\tvar // Flag to know if list is currently firing\n\t\t\tfiring,\n\n\t\t\t// Last fire value for non-forgettable lists\n\t\t\tmemory,\n\n\t\t\t// Flag to know if list was already fired\n\t\t\tfired,\n\n\t\t\t// Flag to prevent firing\n\t\t\tlocked,\n\n\t\t\t// Actual callback list\n\t\t\tlist = [],\n\n\t\t\t// Queue of execution data for repeatable lists\n\t\t\tqueue = [],\n\n\t\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\t\tfiringIndex = -1,\n\n\t\t\t// Fire callbacks\n\t\t\tfire = function() {\n\n\t\t\t\t// Enforce single-firing\n\t\t\t\tlocked = options.once;\n\n\t\t\t\t// Execute callbacks for all pending executions,\n\t\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\t\tfired = firing = true;\n\t\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\t\tmemory = queue.shift();\n\t\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Forget the data if we're done with it\n\t\t\t\tif ( !options.memory ) {\n\t\t\t\t\tmemory = false;\n\t\t\t\t}\n\n\t\t\t\tfiring = false;\n\n\t\t\t\t// Clean up if we're done firing for good\n\t\t\t\tif ( locked ) {\n\n\t\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\t\tif ( memory ) {\n\t\t\t\t\t\tlist = [];\n\n\t\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlist = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Actual Callbacks object\n\t\t\tself = {\n\n\t\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\t\tadd: function() {\n\t\t\t\t\tif ( list ) {\n\n\t\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\n\t\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\t\tfire();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Remove a callback from the list\n\t\t\t\tremove: function() {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Check if a given callback is in the list.\n\t\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\t\thas: function( fn ) {\n\t\t\t\t\treturn fn ?\n\t\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\t\tlist.length > 0;\n\t\t\t\t},\n\n\t\t\t\t// Remove all callbacks from the list\n\t\t\t\tempty: function() {\n\t\t\t\t\tif ( list ) {\n\t\t\t\t\t\tlist = [];\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Disable .fire and .add\n\t\t\t\t// Abort any current/pending executions\n\t\t\t\t// Clear all callbacks and values\n\t\t\t\tdisable: function() {\n\t\t\t\t\tlocked = queue = [];\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tdisabled: function() {\n\t\t\t\t\treturn !list;\n\t\t\t\t},\n\n\t\t\t\t// Disable .fire\n\t\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t\t// Abort any pending executions\n\t\t\t\tlock: function() {\n\t\t\t\t\tlocked = queue = [];\n\t\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tlocked: function() {\n\t\t\t\t\treturn !!locked;\n\t\t\t\t},\n\n\t\t\t\t// Call all callbacks with the given context and arguments\n\t\t\t\tfireWith: function( context, args ) {\n\t\t\t\t\tif ( !locked ) {\n\t\t\t\t\t\targs = args || [];\n\t\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\t\tqueue.push( args );\n\t\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\t\tfire();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Call all the callbacks with the given arguments\n\t\t\t\tfire: function() {\n\t\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// To know if the callbacks have already been called at least once\n\t\t\t\tfired: function() {\n\t\t\t\t\treturn !!fired;\n\t\t\t\t}\n\t\t\t};\n\n\t\treturn self;\n\t};\n\n\n\tfunction Identity( v ) {\n\t\treturn v;\n\t}\n\tfunction Thrower( ex ) {\n\t\tthrow ex;\n\t}\n\n\tfunction adoptValue( value, resolve, reject ) {\n\t\tvar method;\n\n\t\ttry {\n\n\t\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\t\tif ( value && jQuery.isFunction( ( method = value.promise ) ) ) {\n\t\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t\t// Other thenables\n\t\t\t} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {\n\t\t\t\tmethod.call( value, resolve, reject );\n\n\t\t\t// Other non-thenables\n\t\t\t} else {\n\n\t\t\t\t// Support: Android 4.0 only\n\t\t\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\t\t\tresolve.call( undefined, value );\n\t\t\t}\n\n\t\t// For Promises/A+, convert exceptions into rejections\n\t\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t\t// Deferred#then to conditionally suppress rejection.\n\t\t} catch ( value ) {\n\n\t\t\t// Support: Android 4.0 only\n\t\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\t\treject.call( undefined, value );\n\t\t}\n\t}\n\n\tjQuery.extend( {\n\n\t\tDeferred: function( func ) {\n\t\t\tvar tuples = [\n\n\t\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t\t],\n\t\t\t\tstate = \"pending\",\n\t\t\t\tpromise = {\n\t\t\t\t\tstate: function() {\n\t\t\t\t\t\treturn state;\n\t\t\t\t\t},\n\t\t\t\t\talways: function() {\n\t\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t},\n\t\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t\t},\n\n\t\t\t\t\t// Keep pipe for back-compat\n\t\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tfns = null;\n\t\t\t\t\t\t} ).promise();\n\t\t\t\t\t},\n\t\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\t\tif ( jQuery.isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\t\tjQuery.isFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\t\tjQuery.isFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\t\tjQuery.isFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ).promise();\n\t\t\t\t\t},\n\n\t\t\t\t\t// Get a promise for this deferred\n\t\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdeferred = {};\n\n\t\t\t// Add list-specific methods\n\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\tvar list = tuple[ 2 ],\n\t\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t\t// promise.progress = list.add\n\t\t\t\t// promise.done = list.add\n\t\t\t\t// promise.fail = list.add\n\t\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t\t// Handle state\n\t\t\t\tif ( stateString ) {\n\t\t\t\t\tlist.add(\n\t\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\t\ttuples[ 0 ][ 2 ].lock\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// progress_handlers.fire\n\t\t\t\t// fulfilled_handlers.fire\n\t\t\t\t// rejected_handlers.fire\n\t\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t};\n\n\t\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t\t} );\n\n\t\t\t// Make the deferred a promise\n\t\t\tpromise.promise( deferred );\n\n\t\t\t// Call given func if any\n\t\t\tif ( func ) {\n\t\t\t\tfunc.call( deferred, deferred );\n\t\t\t}\n\n\t\t\t// All done!\n\t\t\treturn deferred;\n\t\t},\n\n\t\t// Deferred helper\n\t\twhen: function( singleValue ) {\n\t\t\tvar\n\n\t\t\t\t// count of uncompleted subordinates\n\t\t\t\tremaining = arguments.length,\n\n\t\t\t\t// count of unprocessed arguments\n\t\t\t\ti = remaining,\n\n\t\t\t\t// subordinate fulfillment data\n\t\t\t\tresolveContexts = Array( i ),\n\t\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t\t// the master Deferred\n\t\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t\t// subordinate callback factory\n\t\t\t\tupdateFunc = function( i ) {\n\t\t\t\t\treturn function( value ) {\n\t\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\t\tif ( remaining <= 1 ) {\n\t\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );\n\n\t\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\t\tjQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\t\treturn master.then();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\t\twhile ( i-- ) {\n\t\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t\t}\n\n\t\t\treturn master.promise();\n\t\t}\n\t} );\n\n\n\t// These usually indicate a programmer mistake during development,\n\t// warn about them ASAP rather than swallowing them by default.\n\tvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n\tjQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t\t// Support: IE 8 - 9 only\n\t\t// Console exists when dev tools are open, which can happen at any time\n\t\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t\t}\n\t};\n\n\n\n\n\tjQuery.readyException = function( error ) {\n\t\twindow.setTimeout( function() {\n\t\t\tthrow error;\n\t\t} );\n\t};\n\n\n\n\n\t// The deferred used on DOM ready\n\tvar readyList = jQuery.Deferred();\n\n\tjQuery.fn.ready = function( fn ) {\n\n\t\treadyList\n\t\t\t.then( fn )\n\n\t\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t\t// happens at the time of error handling instead of callback\n\t\t\t// registration.\n\t\t\t.catch( function( error ) {\n\t\t\t\tjQuery.readyException( error );\n\t\t\t} );\n\n\t\treturn this;\n\t};\n\n\tjQuery.extend( {\n\n\t\t// Is the DOM ready to be used? Set to true once it occurs.\n\t\tisReady: false,\n\n\t\t// A counter to track how many items to wait for before\n\t\t// the ready event fires. See #6781\n\t\treadyWait: 1,\n\n\t\t// Hold (or release) the ready event\n\t\tholdReady: function( hold ) {\n\t\t\tif ( hold ) {\n\t\t\t\tjQuery.readyWait++;\n\t\t\t} else {\n\t\t\t\tjQuery.ready( true );\n\t\t\t}\n\t\t},\n\n\t\t// Handle when the DOM is ready\n\t\tready: function( wait ) {\n\n\t\t\t// Abort if there are pending holds or we're already ready\n\t\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Remember that the DOM is ready\n\t\t\tjQuery.isReady = true;\n\n\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If there are functions bound, to execute\n\t\t\treadyList.resolveWith( document, [ jQuery ] );\n\t\t}\n\t} );\n\n\tjQuery.ready.then = readyList.then;\n\n\t// The ready event handler and self cleanup method\n\tfunction completed() {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\t\twindow.removeEventListener( \"load\", completed );\n\t\tjQuery.ready();\n\t}\n\n\t// Catch cases where $(document).ready() is called\n\t// after the browser event has already occurred.\n\t// Support: IE <=9 - 10 only\n\t// Older IE sometimes signals \"interactive\" too soon\n\tif ( document.readyState === \"complete\" ||\n\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\twindow.setTimeout( jQuery.ready );\n\n\t} else {\n\n\t\t// Use the handy event callback\n\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t// A fallback to window.onload, that will always work\n\t\twindow.addEventListener( \"load\", completed );\n\t}\n\n\n\n\n\t// Multifunctional method to get and set values of a collection\n\t// The value/s can optionally be executed if it's a function\n\tvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\t\tvar i = 0,\n\t\t\tlen = elems.length,\n\t\t\tbulk = key == null;\n\n\t\t// Sets many values\n\t\tif ( jQuery.type( key ) === \"object\" ) {\n\t\t\tchainable = true;\n\t\t\tfor ( i in key ) {\n\t\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t\t}\n\n\t\t// Sets one value\n\t\t} else if ( value !== undefined ) {\n\t\t\tchainable = true;\n\n\t\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\t\traw = true;\n\t\t\t}\n\n\t\t\tif ( bulk ) {\n\n\t\t\t\t// Bulk operations run against the entire set\n\t\t\t\tif ( raw ) {\n\t\t\t\t\tfn.call( elems, value );\n\t\t\t\t\tfn = null;\n\n\t\t\t\t// ...except when executing function values\n\t\t\t\t} else {\n\t\t\t\t\tbulk = fn;\n\t\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tfn(\n\t\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn chainable ?\n\t\t\telems :\n\n\t\t\t// Gets\n\t\t\tbulk ?\n\t\t\t\tfn.call( elems ) :\n\t\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\n\t};\n\tvar acceptData = function( owner ) {\n\n\t\t// Accepts only:\n\t\t//  - Node\n\t\t//    - Node.ELEMENT_NODE\n\t\t//    - Node.DOCUMENT_NODE\n\t\t//  - Object\n\t\t//    - Any\n\t\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n\t};\n\n\n\n\n\tfunction Data() {\n\t\tthis.expando = jQuery.expando + Data.uid++;\n\t}\n\n\tData.uid = 1;\n\n\tData.prototype = {\n\n\t\tcache: function( owner ) {\n\n\t\t\t// Check if the owner object already has a cache\n\t\t\tvar value = owner[ this.expando ];\n\n\t\t\t// If not, create one\n\t\t\tif ( !value ) {\n\t\t\t\tvalue = {};\n\n\t\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t\t// but we should not, see #8335.\n\t\t\t\t// Always return an empty object.\n\t\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t\t// use plain assignment\n\t\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t\t// deleted when data is removed\n\t\t\t\t\t} else {\n\t\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tset: function( owner, data, value ) {\n\t\t\tvar prop,\n\t\t\t\tcache = this.cache( owner );\n\n\t\t\t// Handle: [ owner, key, value ] args\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\tif ( typeof data === \"string\" ) {\n\t\t\t\tcache[ jQuery.camelCase( data ) ] = value;\n\n\t\t\t// Handle: [ owner, { properties } ] args\n\t\t\t} else {\n\n\t\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ jQuery.camelCase( prop ) ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cache;\n\t\t},\n\t\tget: function( owner, key ) {\n\t\t\treturn key === undefined ?\n\t\t\t\tthis.cache( owner ) :\n\n\t\t\t\t// Always use camelCase key (gh-2257)\n\t\t\t\towner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];\n\t\t},\n\t\taccess: function( owner, key, value ) {\n\n\t\t\t// In cases where either:\n\t\t\t//\n\t\t\t//   1. No key was specified\n\t\t\t//   2. A string key was specified, but no value provided\n\t\t\t//\n\t\t\t// Take the \"read\" path and allow the get method to determine\n\t\t\t// which value to return, respectively either:\n\t\t\t//\n\t\t\t//   1. The entire cache object\n\t\t\t//   2. The data stored at the key\n\t\t\t//\n\t\t\tif ( key === undefined ||\n\t\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\t\treturn this.get( owner, key );\n\t\t\t}\n\n\t\t\t// When the key is not a string, or both a key and value\n\t\t\t// are specified, set or extend (existing objects) with either:\n\t\t\t//\n\t\t\t//   1. An object of properties\n\t\t\t//   2. A key and value\n\t\t\t//\n\t\t\tthis.set( owner, key, value );\n\n\t\t\t// Since the \"set\" path can have two possible entry points\n\t\t\t// return the expected data based on which path was taken[*]\n\t\t\treturn value !== undefined ? value : key;\n\t\t},\n\t\tremove: function( owner, key ) {\n\t\t\tvar i,\n\t\t\t\tcache = owner[ this.expando ];\n\n\t\t\tif ( cache === undefined ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( key !== undefined ) {\n\n\t\t\t\t// Support array or space separated string of keys\n\t\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t\t// If key is an array of keys...\n\t\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\t\tkey = key.map( jQuery.camelCase );\n\t\t\t\t} else {\n\t\t\t\t\tkey = jQuery.camelCase( key );\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tkey = key in cache ?\n\t\t\t\t\t\t[ key ] :\n\t\t\t\t\t\t( key.match( rnotwhite ) || [] );\n\t\t\t\t}\n\n\t\t\t\ti = key.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove the expando if there's no more data\n\t\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t\t// Support: Chrome <=35 - 45\n\t\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\tdelete owner[ this.expando ];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thasData: function( owner ) {\n\t\t\tvar cache = owner[ this.expando ];\n\t\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t\t}\n\t};\n\tvar dataPriv = new Data();\n\n\tvar dataUser = new Data();\n\n\n\n\t//\tImplementation Summary\n\t//\n\t//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n\t//\t2. Improve the module's maintainability by reducing the storage\n\t//\t\tpaths to a single mechanism.\n\t//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n\t//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n\t//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n\t//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n\tvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\t\trmultiDash = /[A-Z]/g;\n\n\tfunction dataAttr( elem, key, data ) {\n\t\tvar name;\n\n\t\t// If nothing was found internally, try to fetch any\n\t\t// data from the HTML5 data-* attribute\n\t\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\t\tdata = elem.getAttribute( name );\n\n\t\t\tif ( typeof data === \"string\" ) {\n\t\t\t\ttry {\n\t\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\t\trbrace.test( data ) ? JSON.parse( data ) :\n\t\t\t\t\t\tdata;\n\t\t\t\t} catch ( e ) {}\n\n\t\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\t\tdataUser.set( elem, key, data );\n\t\t\t} else {\n\t\t\t\tdata = undefined;\n\t\t\t}\n\t\t}\n\t\treturn data;\n\t}\n\n\tjQuery.extend( {\n\t\thasData: function( elem ) {\n\t\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t\t},\n\n\t\tdata: function( elem, name, data ) {\n\t\t\treturn dataUser.access( elem, name, data );\n\t\t},\n\n\t\tremoveData: function( elem, name ) {\n\t\t\tdataUser.remove( elem, name );\n\t\t},\n\n\t\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t\t// with direct calls to dataPriv methods, these can be deprecated.\n\t\t_data: function( elem, name, data ) {\n\t\t\treturn dataPriv.access( elem, name, data );\n\t\t},\n\n\t\t_removeData: function( elem, name ) {\n\t\t\tdataPriv.remove( elem, name );\n\t\t}\n\t} );\n\n\tjQuery.fn.extend( {\n\t\tdata: function( key, value ) {\n\t\t\tvar i, name, data,\n\t\t\t\telem = this[ 0 ],\n\t\t\t\tattrs = elem && elem.attributes;\n\n\t\t\t// Gets all values\n\t\t\tif ( key === undefined ) {\n\t\t\t\tif ( this.length ) {\n\t\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\t\ti = attrs.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\t// Sets multiple values\n\t\t\tif ( typeof key === \"object\" ) {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tdataUser.set( this, key );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn access( this, function( value ) {\n\t\t\t\tvar data;\n\n\t\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t}\n\n\t\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the data...\n\t\t\t\tthis.each( function() {\n\n\t\t\t\t\t// We always store the camelCased key\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t} );\n\t\t\t}, null, value, arguments.length > 1, null, true );\n\t\t},\n\n\t\tremoveData: function( key ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.remove( this, key );\n\t\t\t} );\n\t\t}\n\t} );\n\n\n\tjQuery.extend( {\n\t\tqueue: function( elem, type, data ) {\n\t\t\tvar queue;\n\n\t\t\tif ( elem ) {\n\t\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tqueue.push( data );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn queue || [];\n\t\t\t}\n\t\t},\n\n\t\tdequeue: function( elem, type ) {\n\t\t\ttype = type || \"fx\";\n\n\t\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\t\tstartLength = queue.length,\n\t\t\t\tfn = queue.shift(),\n\t\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\t\tnext = function() {\n\t\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t\t};\n\n\t\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\t\tif ( fn === \"inprogress\" ) {\n\t\t\t\tfn = queue.shift();\n\t\t\t\tstartLength--;\n\t\t\t}\n\n\t\t\tif ( fn ) {\n\n\t\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t\t// automatically dequeued\n\t\t\t\tif ( type === \"fx\" ) {\n\t\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t\t}\n\n\t\t\t\t// Clear up the last queue stop function\n\t\t\t\tdelete hooks.stop;\n\t\t\t\tfn.call( elem, next, hooks );\n\t\t\t}\n\n\t\t\tif ( !startLength && hooks ) {\n\t\t\t\thooks.empty.fire();\n\t\t\t}\n\t\t},\n\n\t\t// Not public - generate a queueHooks object, or return the current one\n\t\t_queueHooks: function( elem, type ) {\n\t\t\tvar key = type + \"queueHooks\";\n\t\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t\t} )\n\t\t\t} );\n\t\t}\n\t} );\n\n\tjQuery.fn.extend( {\n\t\tqueue: function( type, data ) {\n\t\t\tvar setter = 2;\n\n\t\t\tif ( typeof type !== \"string\" ) {\n\t\t\t\tdata = type;\n\t\t\t\ttype = \"fx\";\n\t\t\t\tsetter--;\n\t\t\t}\n\n\t\t\tif ( arguments.length < setter ) {\n\t\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t\t}\n\n\t\t\treturn data === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t},\n\t\tdequeue: function( type ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t} );\n\t\t},\n\t\tclearQueue: function( type ) {\n\t\t\treturn this.queue( type || \"fx\", [] );\n\t\t},\n\n\t\t// Get a promise resolved when queues of a certain type\n\t\t// are emptied (fx is the type by default)\n\t\tpromise: function( type, obj ) {\n\t\t\tvar tmp,\n\t\t\t\tcount = 1,\n\t\t\t\tdefer = jQuery.Deferred(),\n\t\t\t\telements = this,\n\t\t\t\ti = this.length,\n\t\t\t\tresolve = function() {\n\t\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tif ( typeof type !== \"string\" ) {\n\t\t\t\tobj = type;\n\t\t\t\ttype = undefined;\n\t\t\t}\n\t\t\ttype = type || \"fx\";\n\n\t\t\twhile ( i-- ) {\n\t\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\t\tcount++;\n\t\t\t\t\ttmp.empty.add( resolve );\n\t\t\t\t}\n\t\t\t}\n\t\t\tresolve();\n\t\t\treturn defer.promise( obj );\n\t\t}\n\t} );\n\tvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\n\tvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\n\tvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\n\tvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t\t// in that case, element will be second argument\n\t\t\telem = el || elem;\n\n\t\t\t// Inline style trumps all\n\t\t\treturn elem.style.display === \"none\" ||\n\t\t\t\telem.style.display === \"\" &&\n\n\t\t\t\t// Otherwise, check computed style\n\t\t\t\t// Support: Firefox <=43 - 45\n\t\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t\t// in the document.\n\t\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\n\n\t\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t\t};\n\n\tvar swap = function( elem, options, callback, args ) {\n\t\tvar ret, name,\n\t\t\told = {};\n\n\t\t// Remember the old values, and insert the new ones\n\t\tfor ( name in options ) {\n\t\t\told[ name ] = elem.style[ name ];\n\t\t\telem.style[ name ] = options[ name ];\n\t\t}\n\n\t\tret = callback.apply( elem, args || [] );\n\n\t\t// Revert the old values\n\t\tfor ( name in options ) {\n\t\t\telem.style[ name ] = old[ name ];\n\t\t}\n\n\t\treturn ret;\n\t};\n\n\n\n\n\tfunction adjustCSS( elem, prop, valueParts, tween ) {\n\t\tvar adjusted,\n\t\t\tscale = 1,\n\t\t\tmaxIterations = 20,\n\t\t\tcurrentValue = tween ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn tween.cur();\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t\t},\n\t\t\tinitial = currentValue(),\n\t\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\t\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t\t// Trust units reported by jQuery.css\n\t\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t\t// Make sure we update the tween properties later on\n\t\t\tvalueParts = valueParts || [];\n\n\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\tinitialInUnit = +initial || 1;\n\n\t\t\tdo {\n\n\t\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\t\tscale = scale || \".5\";\n\n\t\t\t\t// Adjust and apply\n\t\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t\t} while (\n\t\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t\t);\n\t\t}\n\n\t\tif ( valueParts ) {\n\t\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t\t// Apply relative offset (+=/-=) if specified\n\t\t\tadjusted = valueParts[ 1 ] ?\n\t\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t\t+valueParts[ 2 ];\n\t\t\tif ( tween ) {\n\t\t\t\ttween.unit = unit;\n\t\t\t\ttween.start = initialInUnit;\n\t\t\t\ttween.end = adjusted;\n\t\t\t}\n\t\t}\n\t\treturn adjusted;\n\t}\n\n\n\tvar defaultDisplayMap = {};\n\n\tfunction getDefaultDisplay( elem ) {\n\t\tvar temp,\n\t\t\tdoc = elem.ownerDocument,\n\t\t\tnodeName = elem.nodeName,\n\t\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\t\tif ( display ) {\n\t\t\treturn display;\n\t\t}\n\n\t\ttemp = doc.body.appendChild( doc.createElement( nodeName ) ),\n\t\tdisplay = jQuery.css( temp, \"display\" );\n\n\t\ttemp.parentNode.removeChild( temp );\n\n\t\tif ( display === \"none\" ) {\n\t\t\tdisplay = \"block\";\n\t\t}\n\t\tdefaultDisplayMap[ nodeName ] = display;\n\n\t\treturn display;\n\t}\n\n\tfunction showHide( elements, show ) {\n\t\tvar display, elem,\n\t\t\tvalues = [],\n\t\t\tindex = 0,\n\t\t\tlength = elements.length;\n\n\t\t// Determine new display value for elements that need to change\n\t\tfor ( ; index < length; index++ ) {\n\t\t\telem = elements[ index ];\n\t\t\tif ( !elem.style ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdisplay = elem.style.display;\n\t\t\tif ( show ) {\n\n\t\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t\t// inline or about-to-be-restored)\n\t\t\t\tif ( display === \"none\" ) {\n\t\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( display !== \"none\" ) {\n\t\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t\t// Remember what we're overwriting\n\t\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Set the display of the elements in a second loop to avoid constant reflow\n\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\tif ( values[ index ] != null ) {\n\t\t\t\telements[ index ].style.display = values[ index ];\n\t\t\t}\n\t\t}\n\n\t\treturn elements;\n\t}\n\n\tjQuery.fn.extend( {\n\t\tshow: function() {\n\t\t\treturn showHide( this, true );\n\t\t},\n\t\thide: function() {\n\t\t\treturn showHide( this );\n\t\t},\n\t\ttoggle: function( state ) {\n\t\t\tif ( typeof state === \"boolean\" ) {\n\t\t\t\treturn state ? this.show() : this.hide();\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\t\tjQuery( this ).show();\n\t\t\t\t} else {\n\t\t\t\t\tjQuery( this ).hide();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\tvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\n\tvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\n\n\tvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n\t// We have to close these tags to support XHTML (#13200)\n\tvar wrapMap = {\n\n\t\t// Support: IE <=9 only\n\t\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t\t// XHTML parsers do not magically insert elements in the\n\t\t// same way that tag soup parsers do. So we cannot shorten\n\t\t// this by omitting <tbody> or other required elements.\n\t\tthead: [ 1, \"<table>\", \"</table>\" ],\n\t\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\t\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\t\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n\t// Support: IE <=9 only\n\twrapMap.optgroup = wrapMap.option;\n\n\twrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n\twrapMap.th = wrapMap.td;\n\n\n\tfunction getAll( context, tag ) {\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\t\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t\t[];\n\n\t\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\t\tjQuery.merge( [ context ], ret ) :\n\t\t\tret;\n\t}\n\n\n\t// Mark scripts as having already been evaluated\n\tfunction setGlobalEval( elems, refElements ) {\n\t\tvar i = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tdataPriv.set(\n\t\t\t\telems[ i ],\n\t\t\t\t\"globalEval\",\n\t\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t\t);\n\t\t}\n\t}\n\n\n\tvar rhtml = /<|&#?\\w+;/;\n\n\tfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t\t// Skip elements already in the context collection (trac-4087)\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\t\tif ( ignored ) {\n\t\t\t\t\tignored.push( elem );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t}\n\n\n\t( function() {\n\t\tvar fragment = document.createDocumentFragment(),\n\t\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\t\tinput = document.createElement( \"input\" );\n\n\t\t// Support: Android 4.0 - 4.3 only\n\t\t// Check state lost if the name is set (#11217)\n\t\t// Support: Windows Web Apps (WWA)\n\t\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\t\tinput.setAttribute( \"type\", \"radio\" );\n\t\tinput.setAttribute( \"checked\", \"checked\" );\n\t\tinput.setAttribute( \"name\", \"t\" );\n\n\t\tdiv.appendChild( input );\n\n\t\t// Support: Android <=4.1 only\n\t\t// Older WebKit doesn't clone checked state correctly in fragments\n\t\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t\t// Support: IE <=11 only\n\t\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\t\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\t} )();\n\tvar documentElement = document.documentElement;\n\n\n\n\tvar\n\t\trkeyEvent = /^key/,\n\t\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\t\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n\tfunction returnTrue() {\n\t\treturn true;\n\t}\n\n\tfunction returnFalse() {\n\t\treturn false;\n\t}\n\n\t// Support: IE <=9 only\n\t// See #13393 for more info\n\tfunction safeActiveElement() {\n\t\ttry {\n\t\t\treturn document.activeElement;\n\t\t} catch ( err ) { }\n\t}\n\n\tfunction on( elem, types, selector, data, fn, one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn elem;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn elem;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn elem.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t} );\n\t}\n\n\t/*\n\t * Helper functions for managing events -- not part of the public interface.\n\t * Props to Dean Edwards' addEvent library for many of the ideas.\n\t */\n\tjQuery.event = {\n\n\t\tglobal: {},\n\n\t\tadd: function( elem, types, handler, data, selector ) {\n\n\t\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\t\tevents, t, handleObj,\n\t\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\t\telemData = dataPriv.get( elem );\n\n\t\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\t\tif ( !elemData ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\t\tif ( handler.handler ) {\n\t\t\t\thandleObjIn = handler;\n\t\t\t\thandler = handleObjIn.handler;\n\t\t\t\tselector = handleObjIn.selector;\n\t\t\t}\n\n\t\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\t\tif ( selector ) {\n\t\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t\t}\n\n\t\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\t\tif ( !handler.guid ) {\n\t\t\t\thandler.guid = jQuery.guid++;\n\t\t\t}\n\n\t\t\t// Init the element's event structure and main handler, if this is the first\n\t\t\tif ( !( events = elemData.events ) ) {\n\t\t\t\tevents = elemData.events = {};\n\t\t\t}\n\t\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Handle multiple events separated by a space\n\t\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\t\tt = types.length;\n\t\t\twhile ( t-- ) {\n\t\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\t\ttype = origType = tmp[ 1 ];\n\t\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\t\tif ( !type ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t\t// Update special based on newly reset type\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t\t// handleObj is passed to all event handlers\n\t\t\t\thandleObj = jQuery.extend( {\n\t\t\t\t\ttype: type,\n\t\t\t\t\torigType: origType,\n\t\t\t\t\tdata: data,\n\t\t\t\t\thandler: handler,\n\t\t\t\t\tguid: handler.guid,\n\t\t\t\t\tselector: selector,\n\t\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t\t}, handleObjIn );\n\n\t\t\t\t// Init the event handler queue if we're the first\n\t\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\t\tif ( !special.setup ||\n\t\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( special.add ) {\n\t\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Add to the element's handler list, delegates in front\n\t\t\t\tif ( selector ) {\n\t\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t\t} else {\n\t\t\t\t\thandlers.push( handleObj );\n\t\t\t\t}\n\n\t\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\t\tjQuery.event.global[ type ] = true;\n\t\t\t}\n\n\t\t},\n\n\t\t// Detach an event or set of events from an element\n\t\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\t\tvar j, origCount, tmp,\n\t\t\t\tevents, t, handleObj,\n\t\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Once for each type.namespace in types; type may be omitted\n\t\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\t\tt = types.length;\n\t\t\twhile ( t-- ) {\n\t\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\t\ttype = origType = tmp[ 1 ];\n\t\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\t\tif ( !type ) {\n\t\t\t\t\tfor ( type in events ) {\n\t\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\t\thandlers = events[ type ] || [];\n\t\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t\t// Remove matching events\n\t\t\t\torigCount = j = handlers.length;\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete events[ type ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove data and the expando if it's no longer used\n\t\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t\t}\n\t\t},\n\n\t\tdispatch: function( nativeEvent ) {\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\t\targs = new Array( arguments.length ),\n\t\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\t\targs[ 0 ] = event;\n\n\t\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\t\targs[ i ] = arguments[ i ];\n\t\t\t}\n\n\t\t\tevent.delegateTarget = this;\n\n\t\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Determine handlers\n\t\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\t\ti = 0;\n\t\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Call the postDispatch hook for the mapped type\n\t\t\tif ( special.postDispatch ) {\n\t\t\t\tspecial.postDispatch.call( this, event );\n\t\t\t}\n\n\t\t\treturn event.result;\n\t\t},\n\n\t\thandlers: function( event, handlers ) {\n\t\t\tvar i, matches, sel, handleObj,\n\t\t\t\thandlerQueue = [],\n\t\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\t\tcur = event.target;\n\n\t\t\t// Support: IE <=9\n\t\t\t// Find delegate handlers\n\t\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t\t//\n\t\t\t// Support: Firefox <=42\n\t\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\n\n\t\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\t\tmatches = [];\n\t\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the remaining (directly-bound) handlers\n\t\t\tif ( delegateCount < handlers.length ) {\n\t\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t\t}\n\n\t\t\treturn handlerQueue;\n\t\t},\n\n\t\taddProp: function( name, hook ) {\n\t\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\n\t\t\t\tget: jQuery.isFunction( hook ) ?\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t\t}\n\t\t\t\t\t} :\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\tset: function( value ) {\n\t\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tfix: function( originalEvent ) {\n\t\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\t\toriginalEvent :\n\t\t\t\tnew jQuery.Event( originalEvent );\n\t\t},\n\n\t\tspecial: {\n\t\t\tload: {\n\n\t\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\t\tnoBubble: true\n\t\t\t},\n\t\t\tfocus: {\n\n\t\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\t\ttrigger: function() {\n\t\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdelegateType: \"focusin\"\n\t\t\t},\n\t\t\tblur: {\n\t\t\t\ttrigger: function() {\n\t\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\t\tthis.blur();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdelegateType: \"focusout\"\n\t\t\t},\n\t\t\tclick: {\n\n\t\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\t\ttrigger: function() {\n\t\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\t\tthis.click();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t\t_default: function( event ) {\n\t\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tbeforeunload: {\n\t\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t\t// Support: Firefox 20+\n\t\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tjQuery.removeEvent = function( elem, type, handle ) {\n\n\t\t// This \"if\" is needed for plain objects\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle );\n\t\t}\n\t};\n\n\tjQuery.Event = function( src, props ) {\n\n\t\t// Allow instantiation without the 'new' keyword\n\t\tif ( !( this instanceof jQuery.Event ) ) {\n\t\t\treturn new jQuery.Event( src, props );\n\t\t}\n\n\t\t// Event object\n\t\tif ( src && src.type ) {\n\t\t\tthis.originalEvent = src;\n\t\t\tthis.type = src.type;\n\n\t\t\t// Events bubbling up the document may have been marked as prevented\n\t\t\t// by a handler lower down the tree; reflect the correct value.\n\t\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\t\tsrc.returnValue === false ?\n\t\t\t\treturnTrue :\n\t\t\t\treturnFalse;\n\n\t\t\t// Create target properties\n\t\t\t// Support: Safari <=6 - 7 only\n\t\t\t// Target should not be a text node (#504, #13143)\n\t\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\t\tsrc.target.parentNode :\n\t\t\t\tsrc.target;\n\n\t\t\tthis.currentTarget = src.currentTarget;\n\t\t\tthis.relatedTarget = src.relatedTarget;\n\n\t\t// Event type\n\t\t} else {\n\t\t\tthis.type = src;\n\t\t}\n\n\t\t// Put explicitly provided properties onto the event object\n\t\tif ( props ) {\n\t\t\tjQuery.extend( this, props );\n\t\t}\n\n\t\t// Create a timestamp if incoming event doesn't have one\n\t\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t\t// Mark it as fixed\n\t\tthis[ jQuery.expando ] = true;\n\t};\n\n\t// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n\t// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\tjQuery.Event.prototype = {\n\t\tconstructor: jQuery.Event,\n\t\tisDefaultPrevented: returnFalse,\n\t\tisPropagationStopped: returnFalse,\n\t\tisImmediatePropagationStopped: returnFalse,\n\t\tisSimulated: false,\n\n\t\tpreventDefault: function() {\n\t\t\tvar e = this.originalEvent;\n\n\t\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\t\tif ( e && !this.isSimulated ) {\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t},\n\t\tstopPropagation: function() {\n\t\t\tvar e = this.originalEvent;\n\n\t\t\tthis.isPropagationStopped = returnTrue;\n\n\t\t\tif ( e && !this.isSimulated ) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t},\n\t\tstopImmediatePropagation: function() {\n\t\t\tvar e = this.originalEvent;\n\n\t\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\t\tif ( e && !this.isSimulated ) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\n\t\t\tthis.stopPropagation();\n\t\t}\n\t};\n\n\t// Includes all common event props including KeyEvent and MouseEvent specific props\n\tjQuery.each( {\n\t\taltKey: true,\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t\tchangedTouches: true,\n\t\tctrlKey: true,\n\t\tdetail: true,\n\t\teventPhase: true,\n\t\tmetaKey: true,\n\t\tpageX: true,\n\t\tpageY: true,\n\t\tshiftKey: true,\n\t\tview: true,\n\t\t\"char\": true,\n\t\tcharCode: true,\n\t\tkey: true,\n\t\tkeyCode: true,\n\t\tbutton: true,\n\t\tbuttons: true,\n\t\tclientX: true,\n\t\tclientY: true,\n\t\toffsetX: true,\n\t\toffsetY: true,\n\t\tpointerId: true,\n\t\tpointerType: true,\n\t\tscreenX: true,\n\t\tscreenY: true,\n\t\ttargetTouches: true,\n\t\ttoElement: true,\n\t\ttouches: true,\n\n\t\twhich: function( event ) {\n\t\t\tvar button = event.button;\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\t\treturn ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event.which;\n\t\t}\n\t}, jQuery.event.addProp );\n\n\t// Create mouseenter/leave events using mouseover/out and event-time checks\n\t// so that event delegation works in jQuery.\n\t// Do the same for pointerenter/pointerleave and pointerover/pointerout\n\t//\n\t// Support: Safari 7 only\n\t// Safari sends mouseenter too often; see:\n\t// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n\t// for the description of the bug (it existed in older Chrome versions as well).\n\tjQuery.each( {\n\t\tmouseenter: \"mouseover\",\n\t\tmouseleave: \"mouseout\",\n\t\tpointerenter: \"pointerover\",\n\t\tpointerleave: \"pointerout\"\n\t}, function( orig, fix ) {\n\t\tjQuery.event.special[ orig ] = {\n\t\t\tdelegateType: fix,\n\t\t\tbindType: fix,\n\n\t\t\thandle: function( event ) {\n\t\t\t\tvar ret,\n\t\t\t\t\ttarget = this,\n\t\t\t\t\trelated = event.relatedTarget,\n\t\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\t\tevent.type = fix;\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t};\n\t} );\n\n\tjQuery.fn.extend( {\n\n\t\ton: function( types, selector, data, fn ) {\n\t\t\treturn on( this, types, selector, data, fn );\n\t\t},\n\t\tone: function( types, selector, data, fn ) {\n\t\t\treturn on( this, types, selector, data, fn, 1 );\n\t\t},\n\t\toff: function( types, selector, fn ) {\n\t\t\tvar handleObj, type;\n\t\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\t\thandleObj = types.handleObj;\n\t\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\t\thandleObj.namespace ?\n\t\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\t\thandleObj.origType,\n\t\t\t\t\thandleObj.selector,\n\t\t\t\t\thandleObj.handler\n\t\t\t\t);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t\t// ( types-object [, selector] )\n\t\t\t\tfor ( type in types ) {\n\t\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t\t// ( types [, fn] )\n\t\t\t\tfn = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tif ( fn === false ) {\n\t\t\t\tfn = returnFalse;\n\t\t\t}\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t\t} );\n\t\t}\n\t} );\n\n\n\tvar\n\n\t\t/* eslint-disable max-len */\n\n\t\t// See https://github.com/eslint/eslint/issues/3229\n\t\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t\t/* eslint-enable */\n\n\t\t// Support: IE <=10 - 11, Edge 12 - 13\n\t\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\t\trnoInnerhtml = /<script|<style|<link/i,\n\n\t\t// checked=\"checked\" or checked\n\t\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\t\trscriptTypeMasked = /^true\\/(.*)/,\n\t\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n\tfunction manipulationTarget( elem, content ) {\n\t\tif ( jQuery.nodeName( elem, \"table\" ) &&\n\t\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\t\treturn elem.getElementsByTagName( \"tbody\" )[ 0 ] || elem;\n\t\t}\n\n\t\treturn elem;\n\t}\n\n\t// Replace/restore the type attribute of script elements for safe DOM manipulation\n\tfunction disableScript( elem ) {\n\t\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\t\treturn elem;\n\t}\n\tfunction restoreScript( elem ) {\n\t\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\t\tif ( match ) {\n\t\t\telem.type = match[ 1 ];\n\t\t} else {\n\t\t\telem.removeAttribute( \"type\" );\n\t\t}\n\n\t\treturn elem;\n\t}\n\n\tfunction cloneCopyEvent( src, dest ) {\n\t\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\t\tif ( dest.nodeType !== 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// 1. Copy private data: events, handlers, etc.\n\t\tif ( dataPriv.hasData( src ) ) {\n\t\t\tpdataOld = dataPriv.access( src );\n\t\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\t\tevents = pdataOld.events;\n\n\t\t\tif ( events ) {\n\t\t\t\tdelete pdataCur.handle;\n\t\t\t\tpdataCur.events = {};\n\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 2. Copy user data\n\t\tif ( dataUser.hasData( src ) ) {\n\t\t\tudataOld = dataUser.access( src );\n\t\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\t\tdataUser.set( dest, udataCur );\n\t\t}\n\t}\n\n\t// Fix IE bugs, see support tests\n\tfunction fixInput( src, dest ) {\n\t\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\t\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t\tdest.checked = src.checked;\n\n\t\t// Fails to return the selected option to the default selected state when cloning options\n\t\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\t\tdest.defaultValue = src.defaultValue;\n\t\t}\n\t}\n\n\tfunction domManip( collection, args, callback, ignored ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = collection.length,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn collection.each( function( index ) {\n\t\t\t\tvar self = collection.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tdomManip( self, args, callback, ignored );\n\t\t\t} );\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\t\tif ( first || ignored ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item\n\t\t\t\t// instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn collection;\n\t}\n\n\tfunction remove( elem, selector, keepData ) {\n\t\tvar node,\n\t\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t\t}\n\n\t\t\tif ( node.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t\t}\n\t\t\t\tnode.parentNode.removeChild( node );\n\t\t\t}\n\t\t}\n\n\t\treturn elem;\n\t}\n\n\tjQuery.extend( {\n\t\thtmlPrefilter: function( html ) {\n\t\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t\t},\n\n\t\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\t\tvar i, l, srcElements, destElements,\n\t\t\t\tclone = elem.cloneNode( true ),\n\t\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Fix IE cloning issues\n\t\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\t\tdestElements = getAll( clone );\n\t\t\t\tsrcElements = getAll( elem );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Copy the events from the original to the clone\n\t\t\tif ( dataAndEvents ) {\n\t\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Preserve script evaluation history\n\t\t\tdestElements = getAll( clone, \"script\" );\n\t\t\tif ( destElements.length > 0 ) {\n\t\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t\t}\n\n\t\t\t// Return the cloned set\n\t\t\treturn clone;\n\t\t},\n\n\t\tcleanData: function( elems ) {\n\t\t\tvar data, elem, type,\n\t\t\t\tspecial = jQuery.event.special,\n\t\t\t\ti = 0;\n\n\t\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\n\tjQuery.fn.extend( {\n\t\tdetach: function( selector ) {\n\t\t\treturn remove( this, selector, true );\n\t\t},\n\n\t\tremove: function( selector ) {\n\t\t\treturn remove( this, selector );\n\t\t},\n\n\t\ttext: function( value ) {\n\t\t\treturn access( this, function( value ) {\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\tjQuery.text( this ) :\n\t\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t}, null, value, arguments.length );\n\t\t},\n\n\t\tappend: function() {\n\t\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\t\ttarget.appendChild( elem );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tprepend: function() {\n\t\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tbefore: function() {\n\t\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\t\tif ( this.parentNode ) {\n\t\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tafter: function() {\n\t\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\t\tif ( this.parentNode ) {\n\t\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\tempty: function() {\n\t\t\tvar elem,\n\t\t\t\ti = 0;\n\n\t\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t\t// Prevent memory leaks\n\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t\t// Remove any remaining nodes\n\t\t\t\t\telem.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\t\treturn this.map( function() {\n\t\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t\t} );\n\t\t},\n\n\t\thtml: function( value ) {\n\t\t\treturn access( this, function( value ) {\n\t\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\t\ti = 0,\n\t\t\t\t\tl = this.length;\n\n\t\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\t\treturn elem.innerHTML;\n\t\t\t\t}\n\n\t\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\telem = 0;\n\n\t\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t\t} catch ( e ) {}\n\t\t\t\t}\n\n\t\t\t\tif ( elem ) {\n\t\t\t\t\tthis.empty().append( value );\n\t\t\t\t}\n\t\t\t}, null, value, arguments.length );\n\t\t},\n\n\t\treplaceWith: function() {\n\t\t\tvar ignored = [];\n\n\t\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\t\tvar parent = this.parentNode;\n\n\t\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\t\tif ( parent ) {\n\t\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Force callback invocation\n\t\t\t}, ignored );\n\t\t}\n\t} );\n\n\tjQuery.each( {\n\t\tappendTo: \"append\",\n\t\tprependTo: \"prepend\",\n\t\tinsertBefore: \"before\",\n\t\tinsertAfter: \"after\",\n\t\treplaceAll: \"replaceWith\"\n\t}, function( name, original ) {\n\t\tjQuery.fn[ name ] = function( selector ) {\n\t\t\tvar elems,\n\t\t\t\tret = [],\n\t\t\t\tinsert = jQuery( selector ),\n\t\t\t\tlast = insert.length - 1,\n\t\t\t\ti = 0;\n\n\t\t\tfor ( ; i <= last; i++ ) {\n\t\t\t\telems = i === last ? this : this.clone( true );\n\t\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tpush.apply( ret, elems.get() );\n\t\t\t}\n\n\t\t\treturn this.pushStack( ret );\n\t\t};\n\t} );\n\tvar rmargin = ( /^margin/ );\n\n\tvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\n\tvar getStyles = function( elem ) {\n\n\t\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t\t// IE throws on elements created in popups\n\t\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\t\tif ( !view || !view.opener ) {\n\t\t\t\tview = window;\n\t\t\t}\n\n\t\t\treturn view.getComputedStyle( elem );\n\t\t};\n\n\n\n\t( function() {\n\n\t\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t\t// so they're executed at the same time to save the second computation.\n\t\tfunction computeStyleTests() {\n\n\t\t\t// This is a singleton, we need to execute it only once\n\t\t\tif ( !div ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdiv.style.cssText =\n\t\t\t\t\"box-sizing:border-box;\" +\n\t\t\t\t\"position:relative;display:block;\" +\n\t\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\t\"top:1%;width:50%\";\n\t\t\tdiv.innerHTML = \"\";\n\t\t\tdocumentElement.appendChild( container );\n\n\t\t\tvar divStyle = window.getComputedStyle( div );\n\t\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\t\treliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n\t\t\tboxSizingReliableVal = divStyle.width === \"4px\";\n\n\t\t\t// Support: Android 4.0 - 4.3 only\n\t\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\t\tdiv.style.marginRight = \"50%\";\n\t\t\tpixelMarginRightVal = divStyle.marginRight === \"4px\";\n\n\t\t\tdocumentElement.removeChild( container );\n\n\t\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t\t// it will also be a sign that checks already performed\n\t\t\tdiv = null;\n\t\t}\n\n\t\tvar pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,\n\t\t\tcontainer = document.createElement( \"div\" ),\n\t\t\tdiv = document.createElement( \"div\" );\n\n\t\t// Finish early in limited (non-browser) environments\n\t\tif ( !div.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// Style of cloned element affects source element cloned (#8908)\n\t\tdiv.style.backgroundClip = \"content-box\";\n\t\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\t\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\t\tcontainer.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" +\n\t\t\t\"padding:0;margin-top:1px;position:absolute\";\n\t\tcontainer.appendChild( div );\n\n\t\tjQuery.extend( support, {\n\t\t\tpixelPosition: function() {\n\t\t\t\tcomputeStyleTests();\n\t\t\t\treturn pixelPositionVal;\n\t\t\t},\n\t\t\tboxSizingReliable: function() {\n\t\t\t\tcomputeStyleTests();\n\t\t\t\treturn boxSizingReliableVal;\n\t\t\t},\n\t\t\tpixelMarginRight: function() {\n\t\t\t\tcomputeStyleTests();\n\t\t\t\treturn pixelMarginRightVal;\n\t\t\t},\n\t\t\treliableMarginLeft: function() {\n\t\t\t\tcomputeStyleTests();\n\t\t\t\treturn reliableMarginLeftVal;\n\t\t\t}\n\t\t} );\n\t} )();\n\n\n\tfunction curCSS( elem, name, computed ) {\n\t\tvar width, minWidth, maxWidth, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\n\t\t// Support: IE <=9 only\n\t\t// getPropertyValue is only needed for .css('filter') (#12537)\n\t\tif ( computed ) {\n\t\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t\t// Android Browser returns percentage for some values,\n\t\t\t// but width seems to be reliably pixels.\n\t\t\t// This is against the CSSOM draft spec:\n\t\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\t\tif ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn ret !== undefined ?\n\n\t\t\t// Support: IE <=9 - 11 only\n\t\t\t// IE returns zIndex value as an integer.\n\t\t\tret + \"\" :\n\t\t\tret;\n\t}\n\n\n\tfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t\t// Define the hook, we'll check on the first run if it's really needed.\n\t\treturn {\n\t\t\tget: function() {\n\t\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t\t// to missing dependency), remove it.\n\t\t\t\t\tdelete this.get;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t\t}\n\t\t};\n\t}\n\n\n\tvar\n\n\t\t// Swappable if display is none or starts with table\n\t\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\t\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\t\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\t\tcssNormalTransform = {\n\t\t\tletterSpacing: \"0\",\n\t\t\tfontWeight: \"400\"\n\t\t},\n\n\t\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\t\temptyStyle = document.createElement( \"div\" ).style;\n\n\t// Return a css property mapped to a potentially vendor prefixed property\n\tfunction vendorPropName( name ) {\n\n\t\t// Shortcut for names that are not vendor prefixed\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\n\t\t// Check for vendor prefixed names\n\t\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\t\ti = cssPrefixes.length;\n\n\t\twhile ( i-- ) {\n\t\t\tname = cssPrefixes[ i ] + capName;\n\t\t\tif ( name in emptyStyle ) {\n\t\t\t\treturn name;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setPositiveNumber( elem, value, subtract ) {\n\n\t\t// Any relative (+/-) values have already been\n\t\t// normalized at this point\n\t\tvar matches = rcssNum.exec( value );\n\t\treturn matches ?\n\n\t\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\t\tvalue;\n\t}\n\n\tfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\t\tvar i = extra === ( isBorderBox ? \"border\" : \"content\" ) ?\n\n\t\t\t// If we already have the right measurement, avoid augmentation\n\t\t\t4 :\n\n\t\t\t// Otherwise initialize for horizontal or vertical properties\n\t\t\tname === \"width\" ? 1 : 0,\n\n\t\t\tval = 0;\n\n\t\tfor ( ; i < 4; i += 2 ) {\n\n\t\t\t// Both box models exclude margin, so add it if we want it\n\t\t\tif ( extra === \"margin\" ) {\n\t\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\tif ( isBorderBox ) {\n\n\t\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\t\tif ( extra === \"content\" ) {\n\t\t\t\t\tval -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t\t}\n\n\t\t\t\t// At this point, extra isn't border nor margin, so remove border\n\t\t\t\tif ( extra !== \"margin\" ) {\n\t\t\t\t\tval -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// At this point, extra isn't content, so add padding\n\t\t\t\tval += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t\t// At this point, extra isn't content nor padding, so add border\n\t\t\t\tif ( extra !== \"padding\" ) {\n\t\t\t\t\tval += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn val;\n\t}\n\n\tfunction getWidthOrHeight( elem, name, extra ) {\n\n\t\t// Start with offset property, which is equivalent to the border-box value\n\t\tvar val,\n\t\t\tvalueIsBorderBox = true,\n\t\t\tstyles = getStyles( elem ),\n\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a disconnected node\n\t\t// in IE throws an error.\n\t\tif ( elem.getClientRects().length ) {\n\t\t\tval = elem.getBoundingClientRect()[ name ];\n\t\t}\n\n\t\t// Some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\t\tif ( val <= 0 || val == null ) {\n\n\t\t\t// Fall back to computed then uncomputed css if necessary\n\t\t\tval = curCSS( elem, name, styles );\n\t\t\tif ( val < 0 || val == null ) {\n\t\t\t\tval = elem.style[ name ];\n\t\t\t}\n\n\t\t\t// Computed unit is not pixels. Stop here and return.\n\t\t\tif ( rnumnonpx.test( val ) ) {\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\t// Check for style in case a browser which returns unreliable values\n\t\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\t\tvalueIsBorderBox = isBorderBox &&\n\t\t\t\t( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t\t// Normalize \"\", auto, and prepare for extra\n\t\t\tval = parseFloat( val ) || 0;\n\t\t}\n\n\t\t// Use the active box-sizing model to add/subtract irrelevant styles\n\t\treturn ( val +\n\t\t\taugmentWidthOrHeight(\n\t\t\t\telem,\n\t\t\t\tname,\n\t\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\t\tvalueIsBorderBox,\n\t\t\t\tstyles\n\t\t\t)\n\t\t) + \"px\";\n\t}\n\n\tjQuery.extend( {\n\n\t\t// Add in style property hooks for overriding the default\n\t\t// behavior of getting and setting a style property\n\t\tcssHooks: {\n\t\t\topacity: {\n\t\t\t\tget: function( elem, computed ) {\n\t\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Don't automatically add \"px\" to these possibly-unitless properties\n\t\tcssNumber: {\n\t\t\t\"animationIterationCount\": true,\n\t\t\t\"columnCount\": true,\n\t\t\t\"fillOpacity\": true,\n\t\t\t\"flexGrow\": true,\n\t\t\t\"flexShrink\": true,\n\t\t\t\"fontWeight\": true,\n\t\t\t\"lineHeight\": true,\n\t\t\t\"opacity\": true,\n\t\t\t\"order\": true,\n\t\t\t\"orphans\": true,\n\t\t\t\"widows\": true,\n\t\t\t\"zIndex\": true,\n\t\t\t\"zoom\": true\n\t\t},\n\n\t\t// Add in properties whose names you wish to fix before\n\t\t// setting or getting the value\n\t\tcssProps: {\n\t\t\t\"float\": \"cssFloat\"\n\t\t},\n\n\t\t// Get and set the style property on a DOM Node\n\t\tstyle: function( elem, name, value, extra ) {\n\n\t\t\t// Don't set styles on text and comment nodes\n\t\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make sure that we're working with the right name\n\t\t\tvar ret, type, hooks,\n\t\t\t\torigName = jQuery.camelCase( name ),\n\t\t\t\tstyle = elem.style;\n\n\t\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t\t// Check if we're setting a value\n\t\t\tif ( value !== undefined ) {\n\t\t\t\ttype = typeof value;\n\n\t\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t\t// Fixes bug #9237\n\t\t\t\t\ttype = \"number\";\n\t\t\t\t}\n\n\t\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\t\tif ( value == null || value !== value ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t\tif ( type === \"number\" ) {\n\t\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t\t}\n\n\t\t\t\t// background-* props affect original clone's values\n\t\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t\t}\n\n\t\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\t// Otherwise just get the value from the style object\n\t\t\t\treturn style[ name ];\n\t\t\t}\n\t\t},\n\n\t\tcss: function( elem, name, extra, styles ) {\n\t\t\tvar val, num, hooks,\n\t\t\t\torigName = jQuery.camelCase( name );\n\n\t\t\t// Make sure that we're working with the right name\n\t\t\tname = jQuery.cssProps[ origName ] ||\n\t\t\t\t( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );\n\n\t\t\t// Try prefixed name followed by the unprefixed name\n\t\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t\t// If a hook was provided get the computed value from there\n\t\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\t\tval = hooks.get( elem, true, extra );\n\t\t\t}\n\n\t\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\t\tif ( val === undefined ) {\n\t\t\t\tval = curCSS( elem, name, styles );\n\t\t\t}\n\n\t\t\t// Convert \"normal\" to computed value\n\t\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\t\tval = cssNormalTransform[ name ];\n\t\t\t}\n\n\t\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\t\tif ( extra === \"\" || extra ) {\n\t\t\t\tnum = parseFloat( val );\n\t\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t\t}\n\t\t\treturn val;\n\t\t}\n\t} );\n\n\tjQuery.each( [ \"height\", \"width\" ], function( i, name ) {\n\t\tjQuery.cssHooks[ name ] = {\n\t\t\tget: function( elem, computed, extra ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t\t\t} ) :\n\t\t\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tset: function( elem, value, extra ) {\n\t\t\t\tvar matches,\n\t\t\t\t\tstyles = extra && getStyles( elem ),\n\t\t\t\t\tsubtract = extra && augmentWidthOrHeight(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\t\t\tstyles\n\t\t\t\t\t);\n\n\t\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\t\telem.style[ name ] = value;\n\t\t\t\t\tvalue = jQuery.css( elem, name );\n\t\t\t\t}\n\n\t\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t\t}\n\t\t};\n\t} );\n\n\tjQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t\t} )\n\t\t\t\t\t) + \"px\";\n\t\t\t}\n\t\t}\n\t);\n\n\t// These hooks are used by animate to expand properties\n\tjQuery.each( {\n\t\tmargin: \"\",\n\t\tpadding: \"\",\n\t\tborder: \"Width\"\n\t}, function( prefix, suffix ) {\n\t\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\t\texpand: function( value ) {\n\t\t\t\tvar i = 0,\n\t\t\t\t\texpanded = {},\n\n\t\t\t\t\t// Assumes a single number if not a string\n\t\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t\t}\n\n\t\t\t\treturn expanded;\n\t\t\t}\n\t\t};\n\n\t\tif ( !rmargin.test( prefix ) ) {\n\t\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t\t}\n\t} );\n\n\tjQuery.fn.extend( {\n\t\tcss: function( name, value ) {\n\t\t\treturn access( this, function( elem, name, value ) {\n\t\t\t\tvar styles, len,\n\t\t\t\t\tmap = {},\n\t\t\t\t\ti = 0;\n\n\t\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\t\tstyles = getStyles( elem );\n\t\t\t\t\tlen = name.length;\n\n\t\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn map;\n\t\t\t\t}\n\n\t\t\t\treturn value !== undefined ?\n\t\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\t\tjQuery.css( elem, name );\n\t\t\t}, name, value, arguments.length > 1 );\n\t\t}\n\t} );\n\n\n\tfunction Tween( elem, options, prop, end, easing ) {\n\t\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n\t}\n\tjQuery.Tween = Tween;\n\n\tTween.prototype = {\n\t\tconstructor: Tween,\n\t\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\t\tthis.elem = elem;\n\t\t\tthis.prop = prop;\n\t\t\tthis.easing = easing || jQuery.easing._default;\n\t\t\tthis.options = options;\n\t\t\tthis.start = this.now = this.cur();\n\t\t\tthis.end = end;\n\t\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t\t},\n\t\tcur: function() {\n\t\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\t\treturn hooks && hooks.get ?\n\t\t\t\thooks.get( this ) :\n\t\t\t\tTween.propHooks._default.get( this );\n\t\t},\n\t\trun: function( percent ) {\n\t\t\tvar eased,\n\t\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\t\tif ( this.options.duration ) {\n\t\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.pos = eased = percent;\n\t\t\t}\n\t\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\t\tif ( this.options.step ) {\n\t\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t\t}\n\n\t\t\tif ( hooks && hooks.set ) {\n\t\t\t\thooks.set( this );\n\t\t\t} else {\n\t\t\t\tTween.propHooks._default.set( this );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t};\n\n\tTween.prototype.init.prototype = Tween.prototype;\n\n\tTween.propHooks = {\n\t\t_default: {\n\t\t\tget: function( tween ) {\n\t\t\t\tvar result;\n\n\t\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t\t// or when there is no matching style property that exists.\n\t\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t\t}\n\n\t\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t\t},\n\t\t\tset: function( tween ) {\n\n\t\t\t\t// Use step hook for back compat.\n\t\t\t\t// Use cssHook if its there.\n\t\t\t\t// Use .style if available and use plain properties where available.\n\t\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t\t} else if ( tween.elem.nodeType === 1 &&\n\t\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\n\t\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t\t} else {\n\t\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Support: IE <=9 only\n\t// Panic based approach to setting things on disconnected nodes\n\tTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\t\tset: function( tween ) {\n\t\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t};\n\n\tjQuery.easing = {\n\t\tlinear: function( p ) {\n\t\t\treturn p;\n\t\t},\n\t\tswing: function( p ) {\n\t\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t\t},\n\t\t_default: \"swing\"\n\t};\n\n\tjQuery.fx = Tween.prototype.init;\n\n\t// Back compat <1.8 extension point\n\tjQuery.fx.step = {};\n\n\n\n\n\tvar\n\t\tfxNow, timerId,\n\t\trfxtypes = /^(?:toggle|show|hide)$/,\n\t\trrun = /queueHooks$/;\n\n\tfunction raf() {\n\t\tif ( timerId ) {\n\t\t\twindow.requestAnimationFrame( raf );\n\t\t\tjQuery.fx.tick();\n\t\t}\n\t}\n\n\t// Animations created synchronously will run synchronously\n\tfunction createFxNow() {\n\t\twindow.setTimeout( function() {\n\t\t\tfxNow = undefined;\n\t\t} );\n\t\treturn ( fxNow = jQuery.now() );\n\t}\n\n\t// Generate parameters to create a standard animation\n\tfunction genFx( type, includeWidth ) {\n\t\tvar which,\n\t\t\ti = 0,\n\t\t\tattrs = { height: type };\n\n\t\t// If we include width, step value is 1 to do all cssExpand values,\n\t\t// otherwise step value is 2 to skip over Left and Right\n\t\tincludeWidth = includeWidth ? 1 : 0;\n\t\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\t\twhich = cssExpand[ i ];\n\t\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t\t}\n\n\t\tif ( includeWidth ) {\n\t\t\tattrs.opacity = attrs.width = type;\n\t\t}\n\n\t\treturn attrs;\n\t}\n\n\tfunction createTween( value, prop, animation ) {\n\t\tvar tween,\n\t\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\t\tindex = 0,\n\t\t\tlength = collection.length;\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t\t// We're done with this property\n\t\t\t\treturn tween;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction defaultPrefilter( elem, props, opts ) {\n\t\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\t\tisBox = \"width\" in props || \"height\" in props,\n\t\t\tanim = this,\n\t\t\torig = {},\n\t\t\tstyle = elem.style,\n\t\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t\t// Queue-skipping animations hijack the fx hooks\n\t\tif ( !opts.queue ) {\n\t\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\t\tif ( hooks.unqueued == null ) {\n\t\t\t\thooks.unqueued = 0;\n\t\t\t\toldfire = hooks.empty.fire;\n\t\t\t\thooks.empty.fire = function() {\n\t\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\t\toldfire();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\thooks.unqueued++;\n\n\t\t\tanim.always( function() {\n\n\t\t\t\t// Ensure the complete handler is called before this completes\n\t\t\t\tanim.always( function() {\n\t\t\t\t\thooks.unqueued--;\n\t\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\t\thooks.empty.fire();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\t// Detect show/hide animations\n\t\tfor ( prop in props ) {\n\t\t\tvalue = props[ prop ];\n\t\t\tif ( rfxtypes.test( value ) ) {\n\t\t\t\tdelete props[ prop ];\n\t\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\t\thidden = true;\n\n\t\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t\t}\n\t\t}\n\n\t\t// Bail out if this is a no-op like .hide().hide()\n\t\tpropTween = !jQuery.isEmptyObject( props );\n\t\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Restrict \"overflow\" and \"display\" styles during box animations\n\t\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t\t// Support: IE <=9 - 11, Edge 12 - 13\n\t\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t\t// from identically-valued overflowX and overflowY\n\t\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\t\trestoreDisplay = dataShow && dataShow.display;\n\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t\t}\n\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tif ( restoreDisplay ) {\n\t\t\t\t\tdisplay = restoreDisplay;\n\t\t\t\t} else {\n\n\t\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Animate inline elements as inline-block\n\t\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\t\tif ( !propTween ) {\n\t\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( opts.overflow ) {\n\t\t\tstyle.overflow = \"hidden\";\n\t\t\tanim.always( function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t} );\n\t\t}\n\n\t\t// Implement show/hide animations\n\t\tpropTween = false;\n\t\tfor ( prop in orig ) {\n\n\t\t\t// General show/hide setup for this element animation\n\t\t\tif ( !propTween ) {\n\t\t\t\tif ( dataShow ) {\n\t\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t\t}\n\n\t\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\t\tif ( toggle ) {\n\t\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t\t}\n\n\t\t\t\t// Show elements before animating them\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\t}\n\n\t\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\t\tif ( !hidden ) {\n\t\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Per-property setup\n\t\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\t\tpropTween.start = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction propFilter( props, specialEasing ) {\n\t\tvar index, name, easing, value, hooks;\n\n\t\t// camelCase, specialEasing and expand cssHook pass\n\t\tfor ( index in props ) {\n\t\t\tname = jQuery.camelCase( index );\n\t\t\teasing = specialEasing[ name ];\n\t\t\tvalue = props[ index ];\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\teasing = value[ 1 ];\n\t\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t\t}\n\n\t\t\tif ( index !== name ) {\n\t\t\t\tprops[ name ] = value;\n\t\t\t\tdelete props[ index ];\n\t\t\t}\n\n\t\t\thooks = jQuery.cssHooks[ name ];\n\t\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\t\tvalue = hooks.expand( value );\n\t\t\t\tdelete props[ name ];\n\n\t\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\t\tfor ( index in value ) {\n\t\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tspecialEasing[ name ] = easing;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction Animation( elem, properties, options ) {\n\t\tvar result,\n\t\t\tstopped,\n\t\t\tindex = 0,\n\t\t\tlength = Animation.prefilters.length,\n\t\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t\t// Don't match elem in the :animated selector\n\t\t\t\tdelete tick.elem;\n\t\t\t} ),\n\t\t\ttick = function() {\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\t\tpercent = 1 - temp,\n\t\t\t\t\tindex = 0,\n\t\t\t\t\tlength = animation.tweens.length;\n\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t\t}\n\n\t\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t\tif ( percent < 1 && length ) {\n\t\t\t\t\treturn remaining;\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tanimation = deferred.promise( {\n\t\t\t\telem: elem,\n\t\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\t\topts: jQuery.extend( true, {\n\t\t\t\t\tspecialEasing: {},\n\t\t\t\t\teasing: jQuery.easing._default\n\t\t\t\t}, options ),\n\t\t\t\toriginalProperties: properties,\n\t\t\t\toriginalOptions: options,\n\t\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\t\tduration: options.duration,\n\t\t\t\ttweens: [],\n\t\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\t\treturn tween;\n\t\t\t\t},\n\t\t\t\tstop: function( gotoEnd ) {\n\t\t\t\t\tvar index = 0,\n\n\t\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\t\tif ( stopped ) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t}\n\t\t\t\t\tstopped = true;\n\t\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t} ),\n\t\t\tprops = animation.props;\n\n\t\tpropFilter( props, animation.opts.specialEasing );\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\t\tif ( result ) {\n\t\t\t\tif ( jQuery.isFunction( result.stop ) ) {\n\t\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\t\tjQuery.proxy( result.stop, result );\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\tjQuery.map( props, createTween, animation );\n\n\t\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\t\tanimation.opts.start.call( elem, animation );\n\t\t}\n\n\t\tjQuery.fx.timer(\n\t\t\tjQuery.extend( tick, {\n\t\t\t\telem: elem,\n\t\t\t\tanim: animation,\n\t\t\t\tqueue: animation.opts.queue\n\t\t\t} )\n\t\t);\n\n\t\t// attach callbacks from options\n\t\treturn animation.progress( animation.opts.progress )\n\t\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t\t.fail( animation.opts.fail )\n\t\t\t.always( animation.opts.always );\n\t}\n\n\tjQuery.Animation = jQuery.extend( Animation, {\n\n\t\ttweeners: {\n\t\t\t\"*\": [ function( prop, value ) {\n\t\t\t\tvar tween = this.createTween( prop, value );\n\t\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\t\treturn tween;\n\t\t\t} ]\n\t\t},\n\n\t\ttweener: function( props, callback ) {\n\t\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\t\tcallback = props;\n\t\t\t\tprops = [ \"*\" ];\n\t\t\t} else {\n\t\t\t\tprops = props.match( rnotwhite );\n\t\t\t}\n\n\t\t\tvar prop,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = props.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tprop = props[ index ];\n\t\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t\t}\n\t\t},\n\n\t\tprefilters: [ defaultPrefilter ],\n\n\t\tprefilter: function( callback, prepend ) {\n\t\t\tif ( prepend ) {\n\t\t\t\tAnimation.prefilters.unshift( callback );\n\t\t\t} else {\n\t\t\t\tAnimation.prefilters.push( callback );\n\t\t\t}\n\t\t}\n\t} );\n\n\tjQuery.speed = function( speed, easing, fn ) {\n\t\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\t\tcomplete: fn || !fn && easing ||\n\t\t\t\tjQuery.isFunction( speed ) && speed,\n\t\t\tduration: speed,\n\t\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t\t};\n\n\t\t// Go to the end state if fx are off or if document is hidden\n\t\tif ( jQuery.fx.off || document.hidden ) {\n\t\t\topt.duration = 0;\n\n\t\t} else {\n\t\t\topt.duration = typeof opt.duration === \"number\" ?\n\t\t\t\topt.duration : opt.duration in jQuery.fx.speeds ?\n\t\t\t\t\tjQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\t\t}\n\n\t\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\t\tif ( opt.queue == null || opt.queue === true ) {\n\t\t\topt.queue = \"fx\";\n\t\t}\n\n\t\t// Queueing\n\t\topt.old = opt.complete;\n\n\t\topt.complete = function() {\n\t\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\t\topt.old.call( this );\n\t\t\t}\n\n\t\t\tif ( opt.queue ) {\n\t\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t\t}\n\t\t};\n\n\t\treturn opt;\n\t};\n\n\tjQuery.fn.extend( {\n\t\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t\t// Show any hidden elements after setting opacity to 0\n\t\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t\t// Animate to the value specified\n\t\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t\t},\n\t\tanimate: function( prop, speed, easing, callback ) {\n\t\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\t\tdoAnimation = function() {\n\n\t\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\t\tanim.stop( true );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tdoAnimation.finish = doAnimation;\n\n\t\t\treturn empty || optall.queue === false ?\n\t\t\t\tthis.each( doAnimation ) :\n\t\t\t\tthis.queue( optall.queue, doAnimation );\n\t\t},\n\t\tstop: function( type, clearQueue, gotoEnd ) {\n\t\t\tvar stopQueue = function( hooks ) {\n\t\t\t\tvar stop = hooks.stop;\n\t\t\t\tdelete hooks.stop;\n\t\t\t\tstop( gotoEnd );\n\t\t\t};\n\n\t\t\tif ( typeof type !== \"string\" ) {\n\t\t\t\tgotoEnd = clearQueue;\n\t\t\t\tclearQueue = type;\n\t\t\t\ttype = undefined;\n\t\t\t}\n\t\t\tif ( clearQueue && type !== false ) {\n\t\t\t\tthis.queue( type || \"fx\", [] );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\tvar dequeue = true,\n\t\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\t\ttimers = jQuery.timers,\n\t\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\t\tif ( index ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor ( index in data ) {\n\t\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\t\tdequeue = false;\n\t\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\tfinish: function( type ) {\n\t\t\tif ( type !== false ) {\n\t\t\t\ttype = type || \"fx\";\n\t\t\t}\n\t\t\treturn this.each( function() {\n\t\t\t\tvar index,\n\t\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\t\ttimers = jQuery.timers,\n\t\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t\t// Enable finishing flag on private data\n\t\t\t\tdata.finish = true;\n\n\t\t\t\t// Empty the queue first\n\t\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\t\thooks.stop.call( this, true );\n\t\t\t\t}\n\n\t\t\t\t// Look for any active animations, and finish them\n\t\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Look for any animations in the old queue and finish them\n\t\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Turn off finishing flag\n\t\t\t\tdelete data.finish;\n\t\t\t} );\n\t\t}\n\t} );\n\n\tjQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\t\tvar cssFn = jQuery.fn[ name ];\n\t\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\t\tcssFn.apply( this, arguments ) :\n\t\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t\t};\n\t} );\n\n\t// Generate shortcuts for custom animations\n\tjQuery.each( {\n\t\tslideDown: genFx( \"show\" ),\n\t\tslideUp: genFx( \"hide\" ),\n\t\tslideToggle: genFx( \"toggle\" ),\n\t\tfadeIn: { opacity: \"show\" },\n\t\tfadeOut: { opacity: \"hide\" },\n\t\tfadeToggle: { opacity: \"toggle\" }\n\t}, function( name, props ) {\n\t\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\t\treturn this.animate( props, speed, easing, callback );\n\t\t};\n\t} );\n\n\tjQuery.timers = [];\n\tjQuery.fx.tick = function() {\n\t\tvar timer,\n\t\t\ti = 0,\n\t\t\ttimers = jQuery.timers;\n\n\t\tfxNow = jQuery.now();\n\n\t\tfor ( ; i < timers.length; i++ ) {\n\t\t\ttimer = timers[ i ];\n\n\t\t\t// Checks the timer has not already been removed\n\t\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\t\ttimers.splice( i--, 1 );\n\t\t\t}\n\t\t}\n\n\t\tif ( !timers.length ) {\n\t\t\tjQuery.fx.stop();\n\t\t}\n\t\tfxNow = undefined;\n\t};\n\n\tjQuery.fx.timer = function( timer ) {\n\t\tjQuery.timers.push( timer );\n\t\tif ( timer() ) {\n\t\t\tjQuery.fx.start();\n\t\t} else {\n\t\t\tjQuery.timers.pop();\n\t\t}\n\t};\n\n\tjQuery.fx.interval = 13;\n\tjQuery.fx.start = function() {\n\t\tif ( !timerId ) {\n\t\t\ttimerId = window.requestAnimationFrame ?\n\t\t\t\twindow.requestAnimationFrame( raf ) :\n\t\t\t\twindow.setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t\t}\n\t};\n\n\tjQuery.fx.stop = function() {\n\t\tif ( window.cancelAnimationFrame ) {\n\t\t\twindow.cancelAnimationFrame( timerId );\n\t\t} else {\n\t\t\twindow.clearInterval( timerId );\n\t\t}\n\n\t\ttimerId = null;\n\t};\n\n\tjQuery.fx.speeds = {\n\t\tslow: 600,\n\t\tfast: 200,\n\n\t\t// Default speed\n\t\t_default: 400\n\t};\n\n\n\t// Based off of the plugin by Clint Helfers, with permission.\n\t// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\n\tjQuery.fn.delay = function( time, type ) {\n\t\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\t\ttype = type || \"fx\";\n\n\t\treturn this.queue( type, function( next, hooks ) {\n\t\t\tvar timeout = window.setTimeout( next, time );\n\t\t\thooks.stop = function() {\n\t\t\t\twindow.clearTimeout( timeout );\n\t\t\t};\n\t\t} );\n\t};\n\n\n\t( function() {\n\t\tvar input = document.createElement( \"input\" ),\n\t\t\tselect = document.createElement( \"select\" ),\n\t\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\t\tinput.type = \"checkbox\";\n\n\t\t// Support: Android <=4.3 only\n\t\t// Default value for a checkbox should be \"on\"\n\t\tsupport.checkOn = input.value !== \"\";\n\n\t\t// Support: IE <=11 only\n\t\t// Must access selectedIndex to make default options select\n\t\tsupport.optSelected = opt.selected;\n\n\t\t// Support: IE <=11 only\n\t\t// An input loses its value after becoming a radio\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.value = \"t\";\n\t\tinput.type = \"radio\";\n\t\tsupport.radioValue = input.value === \"t\";\n\t} )();\n\n\n\tvar boolHook,\n\t\tattrHandle = jQuery.expr.attrHandle;\n\n\tjQuery.fn.extend( {\n\t\tattr: function( name, value ) {\n\t\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t\t},\n\n\t\tremoveAttr: function( name ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.removeAttr( this, name );\n\t\t\t} );\n\t\t}\n\t} );\n\n\tjQuery.extend( {\n\t\tattr: function( elem, name, value ) {\n\t\t\tvar ret, hooks,\n\t\t\t\tnType = elem.nodeType;\n\n\t\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Fallback to prop when attributes are not supported\n\t\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\t\treturn jQuery.prop( elem, name, value );\n\t\t\t}\n\n\t\t\t// Attribute hooks are determined by the lowercase version\n\t\t\t// Grab necessary hook if one is defined\n\t\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t\t}\n\n\t\t\tif ( value !== undefined ) {\n\t\t\t\tif ( value === null ) {\n\t\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ? undefined : ret;\n\t\t},\n\n\t\tattrHooks: {\n\t\t\ttype: {\n\t\t\t\tset: function( elem, value ) {\n\t\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\t\tjQuery.nodeName( elem, \"input\" ) ) {\n\t\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tremoveAttr: function( elem, value ) {\n\t\t\tvar name,\n\t\t\t\ti = 0,\n\t\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\t\telem.removeAttribute( name );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\n\t// Hooks for boolean attributes\n\tboolHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( value === false ) {\n\n\t\t\t\t// Remove boolean attributes when set to false\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, name );\n\t\t\t}\n\t\t\treturn name;\n\t\t}\n\t};\n\n\tjQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\t\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\t\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\t\tvar ret, handle,\n\t\t\t\tlowercaseName = name.toLowerCase();\n\n\t\t\tif ( !isXML ) {\n\n\t\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\t\tlowercaseName :\n\t\t\t\t\tnull;\n\t\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t\t}\n\t\t\treturn ret;\n\t\t};\n\t} );\n\n\n\n\n\tvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\t\trclickable = /^(?:a|area)$/i;\n\n\tjQuery.fn.extend( {\n\t\tprop: function( name, value ) {\n\t\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t\t},\n\n\t\tremoveProp: function( name ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t\t} );\n\t\t}\n\t} );\n\n\tjQuery.extend( {\n\t\tprop: function( elem, name, value ) {\n\t\t\tvar ret, hooks,\n\t\t\t\tnType = elem.nodeType;\n\n\t\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t\t// Fix name and attach hooks\n\t\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\t\thooks = jQuery.propHooks[ name ];\n\t\t\t}\n\n\t\t\tif ( value !== undefined ) {\n\t\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\treturn ( elem[ name ] = value );\n\t\t\t}\n\n\t\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn elem[ name ];\n\t\t},\n\n\t\tpropHooks: {\n\t\t\ttabIndex: {\n\t\t\t\tget: function( elem ) {\n\n\t\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\t\treturn tabindex ?\n\t\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t\t\t0 :\n\t\t\t\t\t\t\t\t-1;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tpropFix: {\n\t\t\t\"for\": \"htmlFor\",\n\t\t\t\"class\": \"className\"\n\t\t}\n\t} );\n\n\t// Support: IE <=11 only\n\t// Accessing the selectedIndex property\n\t// forces the browser to respect setting selected\n\t// on the option\n\t// The getter ensures a default option is selected\n\t// when in an optgroup\n\tif ( !support.optSelected ) {\n\t\tjQuery.propHooks.selected = {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\tset: function( elem ) {\n\t\t\t\tvar parent = elem.parentNode;\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tjQuery.each( [\n\t\t\"tabIndex\",\n\t\t\"readOnly\",\n\t\t\"maxLength\",\n\t\t\"cellSpacing\",\n\t\t\"cellPadding\",\n\t\t\"rowSpan\",\n\t\t\"colSpan\",\n\t\t\"useMap\",\n\t\t\"frameBorder\",\n\t\t\"contentEditable\"\n\t], function() {\n\t\tjQuery.propFix[ this.toLowerCase() ] = this;\n\t} );\n\n\n\n\n\tvar rclass = /[\\t\\r\\n\\f]/g;\n\n\tfunction getClass( elem ) {\n\t\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n\t}\n\n\tjQuery.fn.extend( {\n\t\taddClass: function( value ) {\n\t\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each( function( j ) {\n\t\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( typeof value === \"string\" && value ) {\n\t\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\t\tcurValue = getClass( elem );\n\t\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\t\tif ( cur ) {\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\tremoveClass: function( value ) {\n\t\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each( function( j ) {\n\t\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( !arguments.length ) {\n\t\t\t\treturn this.attr( \"class\", \"\" );\n\t\t\t}\n\n\t\t\tif ( typeof value === \"string\" && value ) {\n\t\t\t\tclasses = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\t\tcur = elem.nodeType === 1 &&\n\t\t\t\t\t\t( \" \" + curValue + \" \" ).replace( rclass, \" \" );\n\n\t\t\t\t\tif ( cur ) {\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\ttoggleClass: function( value, stateVal ) {\n\t\t\tvar type = typeof value;\n\n\t\t\tif ( typeof stateVal === \"boolean\" && type === \"string\" ) {\n\t\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t\t}\n\n\t\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\t\treturn this.each( function( i ) {\n\t\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\t\tstateVal\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\tvar className, i, self, classNames;\n\n\t\t\t\tif ( type === \"string\" ) {\n\n\t\t\t\t\t// Toggle individual class names\n\t\t\t\t\ti = 0;\n\t\t\t\t\tself = jQuery( this );\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Toggle whole class name\n\t\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\t\tclassName = getClass( this );\n\t\t\t\t\tif ( className ) {\n\n\t\t\t\t\t\t// Store className if set\n\t\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\thasClass: function( selector ) {\n\t\t\tvar className, elem,\n\t\t\t\ti = 0;\n\n\t\t\tclassName = \" \" + selector + \" \";\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t\t( \" \" + getClass( elem ) + \" \" ).replace( rclass, \" \" )\n\t\t\t\t\t\t.indexOf( className ) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\n\n\n\tvar rreturn = /\\r/g,\n\t\trspaces = /[\\x20\\t\\r\\n\\f]+/g;\n\n\tjQuery.fn.extend( {\n\t\tval: function( value ) {\n\t\t\tvar hooks, ret, isFunction,\n\t\t\t\telem = this[ 0 ];\n\n\t\t\tif ( !arguments.length ) {\n\t\t\t\tif ( elem ) {\n\t\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\t\tif ( hooks &&\n\t\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t}\n\n\t\t\t\t\tret = elem.value;\n\n\t\t\t\t\treturn typeof ret === \"string\" ?\n\n\t\t\t\t\t\t// Handle most common string cases\n\t\t\t\t\t\tret.replace( rreturn, \"\" ) :\n\n\t\t\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\t\t\tret == null ? \"\" : ret;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tvar val;\n\n\t\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t\t} else {\n\t\t\t\t\tval = value;\n\t\t\t\t}\n\n\t\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\t\tif ( val == null ) {\n\t\t\t\t\tval = \"\";\n\n\t\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\t\tval += \"\";\n\n\t\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\t\tthis.value = val;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n\n\tjQuery.extend( {\n\t\tvalHooks: {\n\t\t\toption: {\n\t\t\t\tget: function( elem ) {\n\n\t\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\t\treturn val != null ?\n\t\t\t\t\t\tval :\n\n\t\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\t\tjQuery.trim( jQuery.text( elem ) ).replace( rspaces, \" \" );\n\t\t\t\t}\n\t\t\t},\n\t\t\tselect: {\n\t\t\t\tget: function( elem ) {\n\t\t\t\t\tvar value, option,\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\t\tmax :\n\t\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t\t// Loop through all the selected options\n\t\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t\t!jQuery.nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn values;\n\t\t\t\t},\n\n\t\t\t\tset: function( elem, value ) {\n\t\t\t\t\tvar optionSet, option,\n\t\t\t\t\t\toptions = elem.options,\n\t\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\t\ti = options.length;\n\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t\t}\n\n\t\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t\t}\n\t\t\t\t\treturn values;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\n\t// Radios and checkboxes getter/setter\n\tjQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\t\tjQuery.valHooks[ this ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tif ( !support.checkOn ) {\n\t\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t\t};\n\t\t}\n\t} );\n\n\n\n\n\t// Return jQuery for attributes-only inclusion\n\n\n\tvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n\n\tjQuery.extend( jQuery.event, {\n\n\t\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\t\teventPath = [ elem || document ],\n\t\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\t\tcur = tmp = elem = elem || document;\n\n\t\t\t// Don't do events on text and comment nodes\n\t\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\t\tnamespaces = type.split( \".\" );\n\t\t\t\ttype = namespaces.shift();\n\t\t\t\tnamespaces.sort();\n\t\t\t}\n\t\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\t\tevent = event[ jQuery.expando ] ?\n\t\t\t\tevent :\n\t\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\t\tevent.namespace = namespaces.join( \".\" );\n\t\t\tevent.rnamespace = event.namespace ?\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\t\tnull;\n\n\t\t\t// Clean up the event in case it is being reused\n\t\t\tevent.result = undefined;\n\t\t\tif ( !event.target ) {\n\t\t\t\tevent.target = elem;\n\t\t\t}\n\n\t\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\t\tdata = data == null ?\n\t\t\t\t[ event ] :\n\t\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t\t// Allow special events to draw outside the lines\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\tbubbleType = special.delegateType || type;\n\t\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\t\tcur = cur.parentNode;\n\t\t\t\t}\n\t\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\t\teventPath.push( cur );\n\t\t\t\t\ttmp = cur;\n\t\t\t\t}\n\n\t\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fire handlers on the event path\n\t\t\ti = 0;\n\t\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\n\t\t\t\tevent.type = i > 1 ?\n\t\t\t\t\tbubbleType :\n\t\t\t\t\tspecial.bindType || type;\n\n\t\t\t\t// jQuery handler\n\t\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\t\tif ( handle ) {\n\t\t\t\t\thandle.apply( cur, data );\n\t\t\t\t}\n\n\t\t\t\t// Native handler\n\t\t\t\thandle = ontype && cur[ ontype ];\n\t\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tevent.type = type;\n\n\t\t\t// If nobody prevented the default action, do it now\n\t\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\t\tif ( ( !special._default ||\n\t\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn event.result;\n\t\t},\n\n\t\t// Piggyback on a donor event to simulate a different one\n\t\t// Used only for `focus(in | out)` events\n\t\tsimulate: function( type, elem, event ) {\n\t\t\tvar e = jQuery.extend(\n\t\t\t\tnew jQuery.Event(),\n\t\t\t\tevent,\n\t\t\t\t{\n\t\t\t\t\ttype: type,\n\t\t\t\t\tisSimulated: true\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t}\n\n\t} );\n\n\tjQuery.fn.extend( {\n\n\t\ttrigger: function( type, data ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tjQuery.event.trigger( type, data, this );\n\t\t\t} );\n\t\t},\n\t\ttriggerHandler: function( type, data ) {\n\t\t\tvar elem = this[ 0 ];\n\t\t\tif ( elem ) {\n\t\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t\t}\n\t\t}\n\t} );\n\n\n\tjQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\t\tfunction( i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t} );\n\n\tjQuery.fn.extend( {\n\t\thover: function( fnOver, fnOut ) {\n\t\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t\t}\n\t} );\n\n\n\n\n\tsupport.focusin = \"onfocusin\" in window;\n\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\tif ( !support.focusin ) {\n\t\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t\t};\n\n\t\t\tjQuery.event.special[ fix ] = {\n\t\t\t\tsetup: function() {\n\t\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\t\tif ( !attaches ) {\n\t\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t\t},\n\t\t\t\tteardown: function() {\n\t\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\t\tif ( !attaches ) {\n\t\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t} );\n\t}\n\tvar location = window.location;\n\n\tvar nonce = jQuery.now();\n\n\tvar rquery = ( /\\?/ );\n\n\n\n\t// Cross-browser xml parsing\n\tjQuery.parseXML = function( data ) {\n\t\tvar xml;\n\t\tif ( !data || typeof data !== \"string\" ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only\n\t\t// IE throws on parseFromString with invalid input.\n\t\ttry {\n\t\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t\t} catch ( e ) {\n\t\t\txml = undefined;\n\t\t}\n\n\t\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\t\tjQuery.error( \"Invalid XML: \" + data );\n\t\t}\n\t\treturn xml;\n\t};\n\n\n\tvar\n\t\trbracket = /\\[\\]$/,\n\t\trCRLF = /\\r?\\n/g,\n\t\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\t\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n\tfunction buildParams( prefix, obj, traditional, add ) {\n\t\tvar name;\n\n\t\tif ( jQuery.isArray( obj ) ) {\n\n\t\t\t// Serialize array item.\n\t\t\tjQuery.each( obj, function( i, v ) {\n\t\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\t\tadd( prefix, v );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\t\tbuildParams(\n\t\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\t\tv,\n\t\t\t\t\t\ttraditional,\n\t\t\t\t\t\tadd\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} );\n\n\t\t} else if ( !traditional && jQuery.type( obj ) === \"object\" ) {\n\n\t\t\t// Serialize object item.\n\t\t\tfor ( name in obj ) {\n\t\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Serialize scalar item.\n\t\t\tadd( prefix, obj );\n\t\t}\n\t}\n\n\t// Serialize an array of form elements or a set of\n\t// key/values into a query string\n\tjQuery.param = function( a, traditional ) {\n\t\tvar prefix,\n\t\t\ts = [],\n\t\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t\t// If value is a function, invoke it and use its return value\n\t\t\t\tvar value = jQuery.isFunction( valueOrFunction ) ?\n\t\t\t\t\tvalueOrFunction() :\n\t\t\t\t\tvalueOrFunction;\n\n\t\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t\t};\n\n\t\t// If an array was passed in, assume that it is an array of form elements.\n\t\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t\t// Serialize the form elements\n\t\t\tjQuery.each( a, function() {\n\t\t\t\tadd( this.name, this.value );\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t\t// did it), otherwise encode params recursively.\n\t\t\tfor ( prefix in a ) {\n\t\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t\t}\n\t\t}\n\n\t\t// Return the resulting serialization\n\t\treturn s.join( \"&\" );\n\t};\n\n\tjQuery.fn.extend( {\n\t\tserialize: function() {\n\t\t\treturn jQuery.param( this.serializeArray() );\n\t\t},\n\t\tserializeArray: function() {\n\t\t\treturn this.map( function() {\n\n\t\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t\t} )\n\t\t\t.filter( function() {\n\t\t\t\tvar type = this.type;\n\n\t\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t\t} )\n\t\t\t.map( function( i, elem ) {\n\t\t\t\tvar val = jQuery( this ).val();\n\n\t\t\t\treturn val == null ?\n\t\t\t\t\tnull :\n\t\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t} ).get();\n\t\t}\n\t} );\n\n\n\tvar\n\t\tr20 = /%20/g,\n\t\trhash = /#.*$/,\n\t\trts = /([?&])_=[^&]*/,\n\t\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t\t// #7653, #8125, #8152: local protocol detection\n\t\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\t\trnoContent = /^(?:GET|HEAD)$/,\n\t\trprotocol = /^\\/\\//,\n\n\t\t/* Prefilters\n\t\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t\t * 2) These are called:\n\t\t *    - BEFORE asking for a transport\n\t\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t\t * 3) key is the dataType\n\t\t * 4) the catchall symbol \"*\" can be used\n\t\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t\t */\n\t\tprefilters = {},\n\n\t\t/* Transports bindings\n\t\t * 1) key is the dataType\n\t\t * 2) the catchall symbol \"*\" can be used\n\t\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t\t */\n\t\ttransports = {},\n\n\t\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\t\tallTypes = \"*/\".concat( \"*\" ),\n\n\t\t// Anchor tag for parsing the document origin\n\t\toriginAnchor = document.createElement( \"a\" );\n\t\toriginAnchor.href = location.href;\n\n\t// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\tfunction addToPrefiltersOrTransports( structure ) {\n\n\t\t// dataTypeExpression is optional and defaults to \"*\"\n\t\treturn function( dataTypeExpression, func ) {\n\n\t\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\t\tfunc = dataTypeExpression;\n\t\t\t\tdataTypeExpression = \"*\";\n\t\t\t}\n\n\t\t\tvar dataType,\n\t\t\t\ti = 0,\n\t\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\t\tif ( jQuery.isFunction( func ) ) {\n\n\t\t\t\t// For each dataType in the dataTypeExpression\n\t\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t\t// Prepend if requested\n\t\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t\t// Otherwise append\n\t\t\t\t\t} else {\n\t\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\t// Base inspection function for prefilters and transports\n\tfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\t\tvar inspected = {},\n\t\t\tseekingTransport = ( structure === transports );\n\n\t\tfunction inspect( dataType ) {\n\t\t\tvar selected;\n\t\t\tinspected[ dataType ] = true;\n\t\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\t\treturn false;\n\t\t\t\t} else if ( seekingTransport ) {\n\t\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn selected;\n\t\t}\n\n\t\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n\t}\n\n\t// A special extend for ajax options\n\t// that takes \"flat\" options (not to be deep extended)\n\t// Fixes #9887\n\tfunction ajaxExtend( target, src ) {\n\t\tvar key, deep,\n\t\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\t\tfor ( key in src ) {\n\t\t\tif ( src[ key ] !== undefined ) {\n\t\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t\t}\n\t\t}\n\t\tif ( deep ) {\n\t\t\tjQuery.extend( true, target, deep );\n\t\t}\n\n\t\treturn target;\n\t}\n\n\t/* Handles responses to an ajax request:\n\t * - finds the right dataType (mediates between content-type and expected dataType)\n\t * - returns the corresponding response\n\t */\n\tfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\t\tvar ct, type, finalDataType, firstDataType,\n\t\t\tcontents = s.contents,\n\t\t\tdataTypes = s.dataTypes;\n\n\t\t// Remove auto dataType and get content-type in the process\n\t\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\t\tdataTypes.shift();\n\t\t\tif ( ct === undefined ) {\n\t\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t\t}\n\t\t}\n\n\t\t// Check if we're dealing with a known content-type\n\t\tif ( ct ) {\n\t\t\tfor ( type in contents ) {\n\t\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\t\tdataTypes.unshift( type );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check to see if we have a response for the expected dataType\n\t\tif ( dataTypes[ 0 ] in responses ) {\n\t\t\tfinalDataType = dataTypes[ 0 ];\n\t\t} else {\n\n\t\t\t// Try convertible dataTypes\n\t\t\tfor ( type in responses ) {\n\t\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\t\tfinalDataType = type;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( !firstDataType ) {\n\t\t\t\t\tfirstDataType = type;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Or just use first one\n\t\t\tfinalDataType = finalDataType || firstDataType;\n\t\t}\n\n\t\t// If we found a dataType\n\t\t// We add the dataType to the list if needed\n\t\t// and return the corresponding response\n\t\tif ( finalDataType ) {\n\t\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\t\tdataTypes.unshift( finalDataType );\n\t\t\t}\n\t\t\treturn responses[ finalDataType ];\n\t\t}\n\t}\n\n\t/* Chain conversions given the request and the original response\n\t * Also sets the responseXXX fields on the jqXHR instance\n\t */\n\tfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\t\tvar conv2, current, conv, tmp, prev,\n\t\t\tconverters = {},\n\n\t\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\t\tdataTypes = s.dataTypes.slice();\n\n\t\t// Create converters map with lowercased keys\n\t\tif ( dataTypes[ 1 ] ) {\n\t\t\tfor ( conv in s.converters ) {\n\t\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t\t}\n\t\t}\n\n\t\tcurrent = dataTypes.shift();\n\n\t\t// Convert to each sequential dataType\n\t\twhile ( current ) {\n\n\t\t\tif ( s.responseFields[ current ] ) {\n\t\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t\t}\n\n\t\t\t// Apply the dataFilter if provided\n\t\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t\t}\n\n\t\t\tprev = current;\n\t\t\tcurrent = dataTypes.shift();\n\n\t\t\tif ( current ) {\n\n\t\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\t\tcurrent = prev;\n\n\t\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t\t// Seek a direct converter\n\t\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t\t// If none found, seek a pair\n\t\t\t\t\tif ( !conv ) {\n\t\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { state: \"success\", data: response };\n\t}\n\n\tjQuery.extend( {\n\n\t\t// Counter for holding the number of active queries\n\t\tactive: 0,\n\n\t\t// Last-Modified header cache for next request\n\t\tlastModified: {},\n\t\tetag: {},\n\n\t\tajaxSettings: {\n\t\t\turl: location.href,\n\t\t\ttype: \"GET\",\n\t\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\t\tglobal: true,\n\t\t\tprocessData: true,\n\t\t\tasync: true,\n\t\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t\t/*\n\t\t\ttimeout: 0,\n\t\t\tdata: null,\n\t\t\tdataType: null,\n\t\t\tusername: null,\n\t\t\tpassword: null,\n\t\t\tcache: null,\n\t\t\tthrows: false,\n\t\t\ttraditional: false,\n\t\t\theaders: {},\n\t\t\t*/\n\n\t\t\taccepts: {\n\t\t\t\t\"*\": allTypes,\n\t\t\t\ttext: \"text/plain\",\n\t\t\t\thtml: \"text/html\",\n\t\t\t\txml: \"application/xml, text/xml\",\n\t\t\t\tjson: \"application/json, text/javascript\"\n\t\t\t},\n\n\t\t\tcontents: {\n\t\t\t\txml: /\\bxml\\b/,\n\t\t\t\thtml: /\\bhtml/,\n\t\t\t\tjson: /\\bjson\\b/\n\t\t\t},\n\n\t\t\tresponseFields: {\n\t\t\t\txml: \"responseXML\",\n\t\t\t\ttext: \"responseText\",\n\t\t\t\tjson: \"responseJSON\"\n\t\t\t},\n\n\t\t\t// Data converters\n\t\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\t\tconverters: {\n\n\t\t\t\t// Convert anything to text\n\t\t\t\t\"* text\": String,\n\n\t\t\t\t// Text to html (true = no transformation)\n\t\t\t\t\"text html\": true,\n\n\t\t\t\t// Evaluate text as a json expression\n\t\t\t\t\"text json\": JSON.parse,\n\n\t\t\t\t// Parse text as xml\n\t\t\t\t\"text xml\": jQuery.parseXML\n\t\t\t},\n\n\t\t\t// For options that shouldn't be deep extended:\n\t\t\t// you can add your own custom options here if\n\t\t\t// and when you create one that shouldn't be\n\t\t\t// deep extended (see ajaxExtend)\n\t\t\tflatOptions: {\n\t\t\t\turl: true,\n\t\t\t\tcontext: true\n\t\t\t}\n\t\t},\n\n\t\t// Creates a full fledged settings object into target\n\t\t// with both ajaxSettings and settings fields.\n\t\t// If target is omitted, writes into ajaxSettings.\n\t\tajaxSetup: function( target, settings ) {\n\t\t\treturn settings ?\n\n\t\t\t\t// Building a settings object\n\t\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t\t// Extending ajaxSettings\n\t\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t\t},\n\n\t\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\t\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t\t// Main method\n\t\tajax: function( url, options ) {\n\n\t\t\t// If url is an object, simulate pre-1.5 signature\n\t\t\tif ( typeof url === \"object\" ) {\n\t\t\t\toptions = url;\n\t\t\t\turl = undefined;\n\t\t\t}\n\n\t\t\t// Force options to be an object\n\t\t\toptions = options || {};\n\n\t\t\tvar transport,\n\n\t\t\t\t// URL without anti-cache param\n\t\t\t\tcacheURL,\n\n\t\t\t\t// Response headers\n\t\t\t\tresponseHeadersString,\n\t\t\t\tresponseHeaders,\n\n\t\t\t\t// timeout handle\n\t\t\t\ttimeoutTimer,\n\n\t\t\t\t// Url cleanup var\n\t\t\t\turlAnchor,\n\n\t\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\t\tcompleted,\n\n\t\t\t\t// To know if global events are to be dispatched\n\t\t\t\tfireGlobals,\n\n\t\t\t\t// Loop variable\n\t\t\t\ti,\n\n\t\t\t\t// uncached part of the url\n\t\t\t\tuncached,\n\n\t\t\t\t// Create the final options object\n\t\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t\t// Callbacks context\n\t\t\t\tcallbackContext = s.context || s,\n\n\t\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\t\tglobalEventContext = s.context &&\n\t\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\t\tjQuery.event,\n\n\t\t\t\t// Deferreds\n\t\t\t\tdeferred = jQuery.Deferred(),\n\t\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t\t// Headers (they are sent all at once)\n\t\t\t\trequestHeaders = {},\n\t\t\t\trequestHeadersNames = {},\n\n\t\t\t\t// Default abort message\n\t\t\t\tstrAbort = \"canceled\",\n\n\t\t\t\t// Fake xhr\n\t\t\t\tjqXHR = {\n\t\t\t\t\treadyState: 0,\n\n\t\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\t\tvar match;\n\t\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t\t},\n\n\t\t\t\t\t// Raw string\n\t\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t\t},\n\n\t\t\t\t\t// Caches the header\n\t\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t},\n\n\t\t\t\t\t// Overrides response content-type header\n\t\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t},\n\n\t\t\t\t\t// Status-dependent callbacks\n\t\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\t\tvar code;\n\t\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t},\n\n\t\t\t\t\t// Cancel the request\n\t\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t// Attach deferreds\n\t\t\tdeferred.promise( jqXHR );\n\n\t\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t\t// We also use the url parameter if available\n\t\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t\t// Alias method option to type as per ticket #12004\n\t\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t\t// Extract dataTypes list\n\t\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnotwhite ) || [ \"\" ];\n\n\t\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\t\tif ( s.crossDomain == null ) {\n\t\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t\t// Support: IE <=8 - 11, Edge 12 - 13\n\t\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t\t// e.g. http://example.com:80x/\n\t\t\t\ttry {\n\t\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\t\ts.crossDomain = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Convert data if not already a string\n\t\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t\t}\n\n\t\t\t// Apply prefilters\n\t\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t\t// If request was aborted inside a prefilter, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// We can fire global events as of now if asked to\n\t\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t\t// Watch for a new set of requests\n\t\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t\t}\n\n\t\t\t// Uppercase the type\n\t\t\ts.type = s.type.toUpperCase();\n\n\t\t\t// Determine if request has content\n\t\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t\t// and/or If-None-Match header later on\n\t\t\t// Remove hash to simplify url manipulation\n\t\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t\t// More options handling for requests with no content\n\t\t\tif ( !s.hasContent ) {\n\n\t\t\t\t// Remember the hash so we can put it back\n\t\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t\t// If data is available, append data to url\n\t\t\t\tif ( s.data ) {\n\t\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\t\tdelete s.data;\n\t\t\t\t}\n\n\t\t\t\t// Add anti-cache in uncached url if needed\n\t\t\t\tif ( s.cache === false ) {\n\t\t\t\t\tcacheURL = cacheURL.replace( rts, \"\" );\n\t\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t\t}\n\n\t\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\t\ts.url = cacheURL + uncached;\n\n\t\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t\t} else if ( s.data && s.processData &&\n\t\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t\t}\n\n\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\tif ( s.ifModified ) {\n\t\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t\t}\n\t\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set the correct header, if data is being sent\n\t\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t\t}\n\n\t\t\t// Set the Accepts header for the server, depending on the dataType\n\t\t\tjqXHR.setRequestHeader(\n\t\t\t\t\"Accept\",\n\t\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\t\ts.accepts[ \"*\" ]\n\t\t\t);\n\n\t\t\t// Check for headers option\n\t\t\tfor ( i in s.headers ) {\n\t\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t\t}\n\n\t\t\t// Allow custom headers/mimetypes and early abort\n\t\t\tif ( s.beforeSend &&\n\t\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t\t// Abort if not done already and return\n\t\t\t\treturn jqXHR.abort();\n\t\t\t}\n\n\t\t\t// Aborting is no longer a cancellation\n\t\t\tstrAbort = \"abort\";\n\n\t\t\t// Install callbacks on deferreds\n\t\t\tcompleteDeferred.add( s.complete );\n\t\t\tjqXHR.done( s.success );\n\t\t\tjqXHR.fail( s.error );\n\n\t\t\t// Get transport\n\t\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t\t// If no transport, we auto-abort\n\t\t\tif ( !transport ) {\n\t\t\t\tdone( -1, \"No Transport\" );\n\t\t\t} else {\n\t\t\t\tjqXHR.readyState = 1;\n\n\t\t\t\t// Send global event\n\t\t\t\tif ( fireGlobals ) {\n\t\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t\t}\n\n\t\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\t\tif ( completed ) {\n\t\t\t\t\treturn jqXHR;\n\t\t\t\t}\n\n\t\t\t\t// Timeout\n\t\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t\t}, s.timeout );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tcompleted = false;\n\t\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Propagate others as results\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Callback for when everything is done\n\t\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t\t// Ignore repeat invocations\n\t\t\t\tif ( completed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tcompleted = true;\n\n\t\t\t\t// Clear timeout if it exists\n\t\t\t\tif ( timeoutTimer ) {\n\t\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t\t}\n\n\t\t\t\t// Dereference transport for early garbage collection\n\t\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\t\ttransport = undefined;\n\n\t\t\t\t// Cache response headers\n\t\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t\t// Set readyState\n\t\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t\t// Determine if successful\n\t\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t\t// Get response data\n\t\t\t\tif ( responses ) {\n\t\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t\t}\n\n\t\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t\t// If successful, handle type chaining\n\t\t\t\tif ( isSuccess ) {\n\n\t\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// if no content\n\t\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t\t// if not modified\n\t\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t\t// If we have data, let's convert it\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\t\terror = response.error;\n\t\t\t\t\t\tisSuccess = !error;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\t\terror = statusText;\n\t\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Set data for the fake xhr object\n\t\t\t\tjqXHR.status = status;\n\t\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t\t// Success/Error\n\t\t\t\tif ( isSuccess ) {\n\t\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t\t}\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tjqXHR.statusCode( statusCode );\n\t\t\t\tstatusCode = undefined;\n\n\t\t\t\tif ( fireGlobals ) {\n\t\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t\t}\n\n\t\t\t\t// Complete\n\t\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\t\tif ( fireGlobals ) {\n\t\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t\t// Handle the global AJAX counter\n\t\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn jqXHR;\n\t\t},\n\n\t\tgetJSON: function( url, data, callback ) {\n\t\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t\t},\n\n\t\tgetScript: function( url, callback ) {\n\t\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t\t}\n\t} );\n\n\tjQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\t\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t\t// Shift arguments if data argument was omitted\n\t\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\t\ttype = type || callback;\n\t\t\t\tcallback = data;\n\t\t\t\tdata = undefined;\n\t\t\t}\n\n\t\t\t// The url can be an options object (which then must have .url)\n\t\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\t\turl: url,\n\t\t\t\ttype: method,\n\t\t\t\tdataType: type,\n\t\t\t\tdata: data,\n\t\t\t\tsuccess: callback\n\t\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t\t};\n\t} );\n\n\n\tjQuery._evalUrl = function( url ) {\n\t\treturn jQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\t\ttype: \"GET\",\n\t\t\tdataType: \"script\",\n\t\t\tcache: true,\n\t\t\tasync: false,\n\t\t\tglobal: false,\n\t\t\t\"throws\": true\n\t\t} );\n\t};\n\n\n\tjQuery.fn.extend( {\n\t\twrapAll: function( html ) {\n\t\t\tvar wrap;\n\n\t\t\tif ( this[ 0 ] ) {\n\t\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// The elements to wrap the target around\n\t\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\twrap.map( function() {\n\t\t\t\t\tvar elem = this;\n\n\t\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn elem;\n\t\t\t\t} ).append( this );\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\twrapInner: function( html ) {\n\t\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\t\treturn this.each( function( i ) {\n\t\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn this.each( function() {\n\t\t\t\tvar self = jQuery( this ),\n\t\t\t\t\tcontents = self.contents();\n\n\t\t\t\tif ( contents.length ) {\n\t\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t\t} else {\n\t\t\t\t\tself.append( html );\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\n\t\twrap: function( html ) {\n\t\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );\n\t\t\t} );\n\t\t},\n\n\t\tunwrap: function( selector ) {\n\t\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\t} );\n\n\n\tjQuery.expr.pseudos.hidden = function( elem ) {\n\t\treturn !jQuery.expr.pseudos.visible( elem );\n\t};\n\tjQuery.expr.pseudos.visible = function( elem ) {\n\t\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n\t};\n\n\n\n\n\tjQuery.ajaxSettings.xhr = function() {\n\t\ttry {\n\t\t\treturn new window.XMLHttpRequest();\n\t\t} catch ( e ) {}\n\t};\n\n\tvar xhrSuccessStatus = {\n\n\t\t\t// File protocol always yields status code 0, assume 200\n\t\t\t0: 200,\n\n\t\t\t// Support: IE <=9 only\n\t\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t\t1223: 204\n\t\t},\n\t\txhrSupported = jQuery.ajaxSettings.xhr();\n\n\tsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\n\tsupport.ajax = xhrSupported = !!xhrSupported;\n\n\tjQuery.ajaxTransport( function( options ) {\n\t\tvar callback, errorCallback;\n\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\t\txhr.open(\n\t\t\t\t\t\toptions.type,\n\t\t\t\t\t\toptions.url,\n\t\t\t\t\t\toptions.async,\n\t\t\t\t\t\toptions.username,\n\t\t\t\t\t\toptions.password\n\t\t\t\t\t);\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set headers\n\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Callback\n\t\t\t\t\tcallback = function( type ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\n\t\t\t\t\t// Listen to events\n\t\t\t\t\txhr.onload = callback();\n\t\t\t\t\terrorCallback = xhr.onerror = callback( \"error\" );\n\n\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t\t// to handle uncaught aborts\n\t\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t\t} else {\n\t\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create the abort callback\n\t\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} );\n\n\n\n\n\t// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\tjQuery.ajaxPrefilter( function( s ) {\n\t\tif ( s.crossDomain ) {\n\t\t\ts.contents.script = false;\n\t\t}\n\t} );\n\n\t// Install script dataType\n\tjQuery.ajaxSetup( {\n\t\taccepts: {\n\t\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t\t},\n\t\tcontents: {\n\t\t\tscript: /\\b(?:java|ecma)script\\b/\n\t\t},\n\t\tconverters: {\n\t\t\t\"text script\": function( text ) {\n\t\t\t\tjQuery.globalEval( text );\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t} );\n\n\t// Handle cache's special case and crossDomain\n\tjQuery.ajaxPrefilter( \"script\", function( s ) {\n\t\tif ( s.cache === undefined ) {\n\t\t\ts.cache = false;\n\t\t}\n\t\tif ( s.crossDomain ) {\n\t\t\ts.type = \"GET\";\n\t\t}\n\t} );\n\n\t// Bind script tag hack transport\n\tjQuery.ajaxTransport( \"script\", function( s ) {\n\n\t\t// This transport only deals with cross domain requests\n\t\tif ( s.crossDomain ) {\n\t\t\tvar script, callback;\n\t\t\treturn {\n\t\t\t\tsend: function( _, complete ) {\n\t\t\t\t\tscript = jQuery( \"<script>\" ).prop( {\n\t\t\t\t\t\tcharset: s.scriptCharset,\n\t\t\t\t\t\tsrc: s.url\n\t\t\t\t\t} ).on(\n\t\t\t\t\t\t\"load error\",\n\t\t\t\t\t\tcallback = function( evt ) {\n\t\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t\t},\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} );\n\n\n\n\n\tvar oldCallbacks = [],\n\t\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n\t// Default jsonp settings\n\tjQuery.ajaxSetup( {\n\t\tjsonp: \"callback\",\n\t\tjsonpCallback: function() {\n\t\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\t\tthis[ callback ] = true;\n\t\t\treturn callback;\n\t\t}\n\t} );\n\n\t// Detect, normalize options and install callbacks for jsonp requests\n\tjQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\t\tvar callbackName, overwritten, responseContainer,\n\t\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\t\"url\" :\n\t\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t\t);\n\n\t\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\t\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t\t// Get callback name, remembering preexisting value associated with it\n\t\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\t\ts.jsonpCallback() :\n\t\t\t\ts.jsonpCallback;\n\n\t\t\t// Insert callback into url or form data\n\t\t\tif ( jsonProp ) {\n\t\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t\t} else if ( s.jsonp !== false ) {\n\t\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t\t}\n\n\t\t\t// Use data converter to retrieve json after script execution\n\t\t\ts.converters[ \"script json\" ] = function() {\n\t\t\t\tif ( !responseContainer ) {\n\t\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t\t}\n\t\t\t\treturn responseContainer[ 0 ];\n\t\t\t};\n\n\t\t\t// Force json dataType\n\t\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t\t// Install callback\n\t\t\toverwritten = window[ callbackName ];\n\t\t\twindow[ callbackName ] = function() {\n\t\t\t\tresponseContainer = arguments;\n\t\t\t};\n\n\t\t\t// Clean-up function (fires after converters)\n\t\t\tjqXHR.always( function() {\n\n\t\t\t\t// If previous value didn't exist - remove it\n\t\t\t\tif ( overwritten === undefined ) {\n\t\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t\t// Otherwise restore preexisting value\n\t\t\t\t} else {\n\t\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t\t}\n\n\t\t\t\t// Save back as free\n\t\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t\t// Save the callback name for future use\n\t\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t\t}\n\n\t\t\t\t// Call if it was a function and we have a response\n\t\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tresponseContainer = overwritten = undefined;\n\t\t\t} );\n\n\t\t\t// Delegate to script\n\t\t\treturn \"script\";\n\t\t}\n\t} );\n\n\n\n\n\t// Support: Safari 8 only\n\t// In Safari 8 documents created via document.implementation.createHTMLDocument\n\t// collapse sibling forms: the second one becomes a child of the first one.\n\t// Because of that, this security measure has to be disabled in Safari 8.\n\t// https://bugs.webkit.org/show_bug.cgi?id=137337\n\tsupport.createHTMLDocument = ( function() {\n\t\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\t\tbody.innerHTML = \"<form></form><form></form>\";\n\t\treturn body.childNodes.length === 2;\n\t} )();\n\n\n\t// Argument \"data\" should be string of html\n\t// context (optional): If specified, the fragment will be created in this context,\n\t// defaults to document\n\t// keepScripts (optional): If true, will include scripts passed in the html string\n\tjQuery.parseHTML = function( data, context, keepScripts ) {\n\t\tif ( typeof data !== \"string\" ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( typeof context === \"boolean\" ) {\n\t\t\tkeepScripts = context;\n\t\t\tcontext = false;\n\t\t}\n\n\t\tvar base, parsed, scripts;\n\n\t\tif ( !context ) {\n\n\t\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t\t// by using document.implementation\n\t\t\tif ( support.createHTMLDocument ) {\n\t\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t\t// Set the base href for the created document\n\t\t\t\t// so any parsed elements with URLs\n\t\t\t\t// are based on the document's URL (gh-2965)\n\t\t\t\tbase = context.createElement( \"base\" );\n\t\t\t\tbase.href = document.location.href;\n\t\t\t\tcontext.head.appendChild( base );\n\t\t\t} else {\n\t\t\t\tcontext = document;\n\t\t\t}\n\t\t}\n\n\t\tparsed = rsingleTag.exec( data );\n\t\tscripts = !keepScripts && [];\n\n\t\t// Single tag\n\t\tif ( parsed ) {\n\t\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t\t}\n\n\t\tparsed = buildFragment( [ data ], context, scripts );\n\n\t\tif ( scripts && scripts.length ) {\n\t\t\tjQuery( scripts ).remove();\n\t\t}\n\n\t\treturn jQuery.merge( [], parsed.childNodes );\n\t};\n\n\n\t/**\n\t * Load a url into a page\n\t */\n\tjQuery.fn.load = function( url, params, callback ) {\n\t\tvar selector, type, response,\n\t\t\tself = this,\n\t\t\toff = url.indexOf( \" \" );\n\n\t\tif ( off > -1 ) {\n\t\t\tselector = jQuery.trim( url.slice( off ) );\n\t\t\turl = url.slice( 0, off );\n\t\t}\n\n\t\t// If it's a function\n\t\tif ( jQuery.isFunction( params ) ) {\n\n\t\t\t// We assume that it's the callback\n\t\t\tcallback = params;\n\t\t\tparams = undefined;\n\n\t\t// Otherwise, build a param string\n\t\t} else if ( params && typeof params === \"object\" ) {\n\t\t\ttype = \"POST\";\n\t\t}\n\n\t\t// If we have elements to modify, make the request\n\t\tif ( self.length > 0 ) {\n\t\t\tjQuery.ajax( {\n\t\t\t\turl: url,\n\n\t\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t\t// Make value of this field explicit since\n\t\t\t\t// user can override it through ajaxSetup method\n\t\t\t\ttype: type || \"GET\",\n\t\t\t\tdataType: \"html\",\n\t\t\t\tdata: params\n\t\t\t} ).done( function( responseText ) {\n\n\t\t\t\t// Save response for use in complete callback\n\t\t\t\tresponse = arguments;\n\n\t\t\t\tself.html( selector ?\n\n\t\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t\t// Otherwise use the full result\n\t\t\t\t\tresponseText );\n\n\t\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t\t// but they are ignored because response was set above.\n\t\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\t\tself.each( function() {\n\t\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t\t} );\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t};\n\n\n\n\n\t// Attach a bunch of functions for handling common AJAX events\n\tjQuery.each( [\n\t\t\"ajaxStart\",\n\t\t\"ajaxStop\",\n\t\t\"ajaxComplete\",\n\t\t\"ajaxError\",\n\t\t\"ajaxSuccess\",\n\t\t\"ajaxSend\"\n\t], function( i, type ) {\n\t\tjQuery.fn[ type ] = function( fn ) {\n\t\t\treturn this.on( type, fn );\n\t\t};\n\t} );\n\n\n\n\n\tjQuery.expr.pseudos.animated = function( elem ) {\n\t\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\t\treturn elem === fn.elem;\n\t\t} ).length;\n\t};\n\n\n\n\n\t/**\n\t * Gets a window from an element\n\t */\n\tfunction getWindow( elem ) {\n\t\treturn jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;\n\t}\n\n\tjQuery.offset = {\n\t\tsetOffset: function( elem, options, i ) {\n\t\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\t\tcurElem = jQuery( elem ),\n\t\t\t\tprops = {};\n\n\t\t\t// Set position first, in-case top/left are set even on static elem\n\t\t\tif ( position === \"static\" ) {\n\t\t\t\telem.style.position = \"relative\";\n\t\t\t}\n\n\t\t\tcurOffset = curElem.offset();\n\t\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t\t// Need to be able to calculate position if either\n\t\t\t// top or left is auto and position is either absolute or fixed\n\t\t\tif ( calculatePosition ) {\n\t\t\t\tcurPosition = curElem.position();\n\t\t\t\tcurTop = curPosition.top;\n\t\t\t\tcurLeft = curPosition.left;\n\n\t\t\t} else {\n\t\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t\t}\n\n\t\t\tif ( jQuery.isFunction( options ) ) {\n\n\t\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t\t}\n\n\t\t\tif ( options.top != null ) {\n\t\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t\t}\n\t\t\tif ( options.left != null ) {\n\t\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t\t}\n\n\t\t\tif ( \"using\" in options ) {\n\t\t\t\toptions.using.call( elem, props );\n\n\t\t\t} else {\n\t\t\t\tcurElem.css( props );\n\t\t\t}\n\t\t}\n\t};\n\n\tjQuery.fn.extend( {\n\t\toffset: function( options ) {\n\n\t\t\t// Preserve chaining for setter\n\t\t\tif ( arguments.length ) {\n\t\t\t\treturn options === undefined ?\n\t\t\t\t\tthis :\n\t\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t\t} );\n\t\t\t}\n\n\t\t\tvar docElem, win, rect, doc,\n\t\t\t\telem = this[ 0 ];\n\n\t\t\tif ( !elem ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Support: IE <=11 only\n\t\t\t// Running getBoundingClientRect on a\n\t\t\t// disconnected node in IE throws an error\n\t\t\tif ( !elem.getClientRects().length ) {\n\t\t\t\treturn { top: 0, left: 0 };\n\t\t\t}\n\n\t\t\trect = elem.getBoundingClientRect();\n\n\t\t\t// Make sure element is not hidden (display: none)\n\t\t\tif ( rect.width || rect.height ) {\n\t\t\t\tdoc = elem.ownerDocument;\n\t\t\t\twin = getWindow( doc );\n\t\t\t\tdocElem = doc.documentElement;\n\n\t\t\t\treturn {\n\t\t\t\t\ttop: rect.top + win.pageYOffset - docElem.clientTop,\n\t\t\t\t\tleft: rect.left + win.pageXOffset - docElem.clientLeft\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Return zeros for disconnected and hidden elements (gh-2310)\n\t\t\treturn rect;\n\t\t},\n\n\t\tposition: function() {\n\t\t\tif ( !this[ 0 ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar offsetParent, offset,\n\t\t\t\telem = this[ 0 ],\n\t\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t\t// Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n\t\t\t// because it is its only offset parent\n\t\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t\t// Assume getBoundingClientRect is there when computed position is fixed\n\t\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t\t} else {\n\n\t\t\t\t// Get *real* offsetParent\n\t\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t\t// Get correct offsets\n\t\t\t\toffset = this.offset();\n\t\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], \"html\" ) ) {\n\t\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t\t}\n\n\t\t\t\t// Add offsetParent borders\n\t\t\t\tparentOffset = {\n\t\t\t\t\ttop: parentOffset.top + jQuery.css( offsetParent[ 0 ], \"borderTopWidth\", true ),\n\t\t\t\t\tleft: parentOffset.left + jQuery.css( offsetParent[ 0 ], \"borderLeftWidth\", true )\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Subtract parent offsets and element margins\n\t\t\treturn {\n\t\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t\t};\n\t\t},\n\n\t\t// This method will return documentElement in the following cases:\n\t\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t\t//    documentElement of the parent window\n\t\t// 2) For the hidden or detached element\n\t\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t\t//\n\t\t// but those exceptions were never presented as a real life use-cases\n\t\t// and might be considered as more preferable results.\n\t\t//\n\t\t// This logic, however, is not guaranteed and can change at any point in the future\n\t\toffsetParent: function() {\n\t\t\treturn this.map( function() {\n\t\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t\t}\n\n\t\t\t\treturn offsetParent || documentElement;\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Create scrollLeft and scrollTop methods\n\tjQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\t\tvar top = \"pageYOffset\" === prop;\n\n\t\tjQuery.fn[ method ] = function( val ) {\n\t\t\treturn access( this, function( elem, method, val ) {\n\t\t\t\tvar win = getWindow( elem );\n\n\t\t\t\tif ( val === undefined ) {\n\t\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t\t}\n\n\t\t\t\tif ( win ) {\n\t\t\t\t\twin.scrollTo(\n\t\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\t\t\t\t\telem[ method ] = val;\n\t\t\t\t}\n\t\t\t}, method, val, arguments.length );\n\t\t};\n\t} );\n\n\t// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n\t// Add the top/left cssHooks using jQuery.fn.position\n\t// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n\t// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n\t// getComputedStyle returns percent when specified for top/left/bottom/right;\n\t// rather than make the css module depend on the offset module, just check for it here\n\tjQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\t\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\t\tfunction( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\t\tcomputed;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t} );\n\n\n\t// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n\tjQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\t\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\t\tfunction( defaultExtra, funcName ) {\n\n\t\t\t// Margin is only for outerHeight, outerWidth\n\t\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\t\tvar doc;\n\n\t\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get document width or height\n\t\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t\t// whichever is greatest\n\t\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t\t};\n\t\t} );\n\t} );\n\n\n\tjQuery.fn.extend( {\n\n\t\tbind: function( types, data, fn ) {\n\t\t\treturn this.on( types, null, data, fn );\n\t\t},\n\t\tunbind: function( types, fn ) {\n\t\t\treturn this.off( types, null, fn );\n\t\t},\n\n\t\tdelegate: function( selector, types, data, fn ) {\n\t\t\treturn this.on( types, selector, data, fn );\n\t\t},\n\t\tundelegate: function( selector, types, fn ) {\n\n\t\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\t\treturn arguments.length === 1 ?\n\t\t\t\tthis.off( selector, \"**\" ) :\n\t\t\t\tthis.off( types, selector || \"**\", fn );\n\t\t}\n\t} );\n\n\tjQuery.parseJSON = JSON.parse;\n\n\n\n\n\t// Register as a named AMD module, since jQuery can be concatenated with other\n\t// files that may use define, but not via a proper concatenation script that\n\t// understands anonymous AMD modules. A named AMD is safest and most robust\n\t// way to register. Lowercase jquery is used because AMD module names are\n\t// derived from file names, and jQuery is normally delivered in a lowercase\n\t// file name. Do this after creating the global so that if an AMD module wants\n\t// to call noConflict to hide this version of jQuery, it will work.\n\n\t// Note that for maximum portability, libraries that are not jQuery should\n\t// declare themselves as anonymous modules, and avoid setting a global if an\n\t// AMD loader is present. jQuery is a special case. For more information, see\n\t// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n\tif ( true ) {\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\treturn jQuery;\n\t\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\n\n\n\n\n\n\tvar\n\n\t\t// Map over jQuery in case of overwrite\n\t\t_jQuery = window.jQuery,\n\n\t\t// Map over the $ in case of overwrite\n\t\t_$ = window.$;\n\n\tjQuery.noConflict = function( deep ) {\n\t\tif ( window.$ === jQuery ) {\n\t\t\twindow.$ = _$;\n\t\t}\n\n\t\tif ( deep && window.jQuery === jQuery ) {\n\t\t\twindow.jQuery = _jQuery;\n\t\t}\n\n\t\treturn jQuery;\n\t};\n\n\t// Expose jQuery and $ identifiers, even in AMD\n\t// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n\t// and CommonJS for browser emulators (#13566)\n\tif ( !noGlobal ) {\n\t\twindow.jQuery = window.$ = jQuery;\n\t}\n\n\n\treturn jQuery;\n\t} );\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {/**\n\t * @author mrdoob / http://mrdoob.com/\n\t */\n\n\tTHREE.ObjectLoader = function ( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\t\tthis.texturePath = '';\n\n\t};\n\n\tObject.assign( THREE.ObjectLoader.prototype, {\n\n\t\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\t\tif ( this.texturePath === '' ) {\n\n\t\t\t\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\n\n\t\t\t}\n\n\t\t\tvar scope = this;\n\n\t\t\tvar loader = new THREE.XHRLoader( scope.manager );\n\t\t\tloader.load( url, function ( text ) {\n\n\t\t\t\tscope.parse( JSON.parse( text ), onLoad );\n\n\t\t\t}, onProgress, onError );\n\n\t\t},\n\n\t\tsetTexturePath: function ( value ) {\n\n\t\t\tthis.texturePath = value;\n\n\t\t},\n\n\t\tsetCrossOrigin: function ( value ) {\n\n\t\t\tthis.crossOrigin = value;\n\n\t\t},\n\n\t\tparse: function ( json, onLoad ) {\n\n\t\t\tvar geometries = this.parseGeometries( json.geometries );\n\n\t\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t\t} );\n\n\t\t\tvar textures  = this.parseTextures( json.textures, images );\n\t\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\t\tif ( json.animations ) {\n\n\t\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t\t}\n\n\t\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t\t}\n\n\t\t\treturn object;\n\n\t\t},\n\n\t\tparseGeometries: function ( json ) {\n\n\t\t\tvar geometries = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tvar geometryLoader = new THREE.JSONLoader();\n\t\t\t\tvar bufferGeometryLoader = new THREE.BufferGeometryLoader();\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar geometry;\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE [ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\t\tcase 'TetrahedronGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = new THREE[ data.type ](\n\t\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'BufferGeometry':\n\n\t\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data.data, this.texturePath ).geometry;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\n\t\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn geometries;\n\n\t\t},\n\n\t\tparseMaterials: function ( json, textures ) {\n\n\t\t\tvar materials = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tvar loader = new THREE.MaterialLoader();\n\t\t\t\tloader.setTextures( textures );\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar material = loader.parse( json[ i ] );\n\t\t\t\t\tmaterials[ material.uuid ] = material;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn materials;\n\n\t\t},\n\n\t\tparseAnimations: function ( json ) {\n\n\t\t\tvar animations = [];\n\n\t\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tvar clip = THREE.AnimationClip.parse( json[ i ] );\n\n\t\t\t\tanimations.push( clip );\n\n\t\t\t}\n\n\t\t\treturn animations;\n\n\t\t},\n\n\t\tparseImages: function ( json, onLoad ) {\n\n\t\t\tvar scope = this;\n\t\t\tvar images = {};\n\n\t\t\tfunction loadImage( url ) {\n\n\t\t\t\tscope.manager.itemStart( url );\n\n\t\t\t\treturn loader.load( url, function () {\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\t\tvar manager = new THREE.LoadingManager( onLoad );\n\n\t\t\t\tvar loader = new THREE.ImageLoader( manager );\n\t\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar image = json[ i ];\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn images;\n\n\t\t},\n\n\t\tparseTextures: function ( json, images ) {\n\n\t\t\tfunction parseConstant( value ) {\n\n\t\t\t\tif ( typeof( value ) === 'number' ) return value;\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\t\treturn THREE[ value ];\n\n\t\t\t}\n\n\t\t\tvar textures = {};\n\n\t\t\tif ( json !== undefined ) {\n\n\t\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar data = json[ i ];\n\n\t\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar texture = new THREE.Texture( images[ data.image ] );\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\t\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping );\n\t\t\t\t\tif ( data.offset !== undefined ) texture.offset = new THREE.Vector2( data.offset[ 0 ], data.offset[ 1 ] );\n\t\t\t\t\tif ( data.repeat !== undefined ) texture.repeat = new THREE.Vector2( data.repeat[ 0 ], data.repeat[ 1 ] );\n\t\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter );\n\t\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter );\n\t\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\t\t\t\t\tif ( Array.isArray( data.wrap ) ) {\n\n\t\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ] );\n\t\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn textures;\n\n\t\t},\n\n\t\tparseObject: function () {\n\n\t\t\tvar matrix = new THREE.Matrix4();\n\n\t\t\treturn function parseObject( data, geometries, materials ) {\n\n\t\t\t\tvar object;\n\n\t\t\t\tfunction getGeometry( name ) {\n\n\t\t\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn geometries[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tfunction getMaterial( name ) {\n\n\t\t\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t\t\t}\n\n\t\t\t\t\treturn materials[ name ];\n\n\t\t\t\t}\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'Scene':\n\n\t\t\t\t\t\tobject = new THREE.Scene();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\t\t\tobject = new THREE.PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\t\t\tobject = new THREE.OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'AmbientLight':\n\n\t\t\t\t\t\tobject = new THREE.AmbientLight( data.color, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DirectionalLight':\n\n\t\t\t\t\t\tobject = new THREE.DirectionalLight( data.color, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointLight':\n\n\t\t\t\t\t\tobject = new THREE.PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SpotLight':\n\n\t\t\t\t\t\tobject = new THREE.SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'HemisphereLight':\n\n\t\t\t\t\t\tobject = new THREE.HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Mesh':\n\n\t\t\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\t\t\tobject = new THREE.SkinnedMesh( geometry, material );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tobject = new THREE.Mesh( geometry, material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LOD':\n\n\t\t\t\t\t\tobject = new THREE.LOD();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Line':\n\n\t\t\t\t\t\tobject = new THREE.Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PointCloud':\n\t\t\t\t\tcase 'Points':\n\n\t\t\t\t\t\tobject = new THREE.Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Sprite':\n\n\t\t\t\t\t\tobject = new THREE.Sprite( getMaterial( data.material ) );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Group':\n\n\t\t\t\t\t\tobject = new THREE.Group();\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tobject = new THREE.Object3D();\n\n\t\t\t\t}\n\n\t\t\t\tobject.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) object.name = data.name;\n\t\t\t\tif ( data.matrix !== undefined ) {\n\n\t\t\t\t\tmatrix.fromArray( data.matrix );\n\t\t\t\t\tmatrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\t\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\t\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\t\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\n\t\t\t\tif ( data.children !== undefined ) {\n\n\t\t\t\t\tfor ( var child in data.children ) {\n\n\t\t\t\t\t\tobject.add( this.parseObject( data.children[ child ], geometries, materials ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.type === 'LOD' ) {\n\n\t\t\t\t\tvar levels = data.levels;\n\n\t\t\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\t\t\tvar level = levels[ l ];\n\t\t\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn object;\n\n\t\t\t};\n\n\t\t}()\n\n\t} );\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {/**\n\t * @author qiao / https://github.com/qiao\n\t * @author mrdoob / http://mrdoob.com\n\t * @author alteredq / http://alteredqualia.com/\n\t * @author WestLangley / http://github.com/WestLangley\n\t * @author erich666 / http://erichaines.com\n\t */\n\n\t// This set of controls performs orbiting, dollying (zooming), and panning.\n\t// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n\t//\n\t//    Orbit - left mouse / touch: one finger move\n\t//    Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n\t//    Pan - right mouse, or arrow keys / touch: three finter swipe\n\n\tTHREE.OrbitControls = function ( object, domElement ) {\n\n\t\tthis.object = object;\n\n\t\tthis.domElement = ( domElement !== undefined ) ? domElement : document;\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new THREE.Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.25;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t\t// Set to false to disable use of the keys\n\t\tthis.enableKeys = true;\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function() {\n\n\t\t\tvar offset = new THREE.Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tvar quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );\n\t\t\tvar quatInverse = quat.clone().inverse();\n\n\t\t\tvar lastPosition = new THREE.Vector3();\n\t\t\tvar lastQuaternion = new THREE.Quaternion();\n\n\t\t\treturn function () {\n\n\t\t\t\tvar position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t\t}\n\n\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t// restrict theta to be between desired limits\n\t\t\t\tspherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) );\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\tspherical.radius *= scale;\n\n\t\t\t\t// restrict radius to be between desired limits\n\t\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t\t// move target to panned location\n\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tzoomChanged = false;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function() {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu, false );\n\t\t\tscope.domElement.removeEventListener( 'mousedown', onMouseDown, false );\n\t\t\tscope.domElement.removeEventListener( 'mousewheel', onMouseWheel, false );\n\t\t\tscope.domElement.removeEventListener( 'MozMousePixelScroll', onMouseWheel, false ); // firefox\n\n\t\t\tscope.domElement.removeEventListener( 'touchstart', onTouchStart, false );\n\t\t\tscope.domElement.removeEventListener( 'touchend', onTouchEnd, false );\n\t\t\tscope.domElement.removeEventListener( 'touchmove', onTouchMove, false );\n\n\t\t\tdocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\t\tdocument.removeEventListener( 'mouseup', onMouseUp, false );\n\t\t\tdocument.removeEventListener( 'mouseout', onMouseUp, false );\n\n\t\t\twindow.removeEventListener( 'keydown', onKeyDown, false );\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tvar scope = this;\n\n\t\tvar changeEvent = { type: 'change' };\n\t\tvar startEvent = { type: 'start' };\n\t\tvar endEvent = { type: 'end' };\n\n\t\tvar STATE = { NONE : - 1, ROTATE : 0, DOLLY : 1, PAN : 2, TOUCH_ROTATE : 3, TOUCH_DOLLY : 4, TOUCH_PAN : 5 };\n\n\t\tvar state = STATE.NONE;\n\n\t\tvar EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tvar spherical = new THREE.Spherical();\n\t\tvar sphericalDelta = new THREE.Spherical();\n\n\t\tvar scale = 1;\n\t\tvar panOffset = new THREE.Vector3();\n\t\tvar zoomChanged = false;\n\n\t\tvar rotateStart = new THREE.Vector2();\n\t\tvar rotateEnd = new THREE.Vector2();\n\t\tvar rotateDelta = new THREE.Vector2();\n\n\t\tvar panStart = new THREE.Vector2();\n\t\tvar panEnd = new THREE.Vector2();\n\t\tvar panDelta = new THREE.Vector2();\n\n\t\tvar dollyStart = new THREE.Vector2();\n\t\tvar dollyEnd = new THREE.Vector2();\n\t\tvar dollyDelta = new THREE.Vector2();\n\n\t\tfunction getAutoRotationAngle() {\n\n\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t}\n\n\t\tfunction getZoomScale() {\n\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tvar panLeft = function() {\n\n\t\t\tvar v = new THREE.Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tvar panUp = function() {\n\n\t\t\tvar v = new THREE.Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tvar pan = function() {\n\n\t\t\tvar offset = new THREE.Vector3();\n\n\t\t\treturn function( deltaX, deltaY ) {\n\n\t\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\t\tif ( scope.object instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tvar position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we actually don't use screenWidth, since perspective camera is fixed to screen height\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else if ( scope.object instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object instanceof THREE.PerspectiveCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else if ( scope.object instanceof THREE.OrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\t//console.log( 'handleMouseDownRotate' );\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\t//console.log( 'handleMouseDownDolly' );\n\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\t//console.log( 'handleMouseDownPan' );\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\t//console.log( 'handleMouseMoveRotate' );\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart );\n\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\t// rotating across whole screen goes 360 degrees around\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n\t\t\t// rotating up and down along whole screen attempts to go 360, but limited to 180\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\t//console.log( 'handleMouseMoveDolly' );\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\t//console.log( 'handleMouseMovePan' );\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseUp( event ) {\n\n\t\t\t//console.log( 'handleMouseUp' );\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\t//console.log( 'handleMouseWheel' );\n\n\t\t\tvar delta = 0;\n\n\t\t\tif ( event.wheelDelta !== undefined ) {\n\n\t\t\t\t// WebKit / Opera / Explorer 9\n\n\t\t\t\tdelta = event.wheelDelta;\n\n\t\t\t} else if ( event.detail !== undefined ) {\n\n\t\t\t\t// Firefox\n\n\t\t\t\tdelta = - event.detail;\n\n\t\t\t}\n\n\t\t\tif ( delta > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( delta < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\t//console.log( 'handleKeyDown' );\n\n\t\t\tswitch ( event.keyCode ) {\n\n\t\t\t\tcase scope.keys.UP:\n\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\t\tscope.update();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate( event ) {\n\n\t\t\t//console.log( 'handleTouchStartRotate' );\n\n\t\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly( event ) {\n\n\t\t\t//console.log( 'handleTouchStartDolly' );\n\n\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartPan( event ) {\n\n\t\t\t//console.log( 'handleTouchStartPan' );\n\n\t\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\t//console.log( 'handleTouchMoveRotate' );\n\n\t\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart );\n\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\t// rotating across whole screen goes 360 degrees around\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n\t\t\t// rotating up and down along whole screen attempts to go 360, but limited to 180\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\t//console.log( 'handleTouchMoveDolly' );\n\n\t\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\t//console.log( 'handleTouchMovePan' );\n\n\t\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleTouchEnd( event ) {\n\n\t\t\t//console.log( 'handleTouchEnd' );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( event.button === scope.mouseButtons.ORBIT ) {\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t} else if ( event.button === scope.mouseButtons.ZOOM ) {\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t} else if ( event.button === scope.mouseButtons.PAN ) {\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\tstate = STATE.PAN;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tdocument.addEventListener( 'mousemove', onMouseMove, false );\n\t\t\t\tdocument.addEventListener( 'mouseup', onMouseUp, false );\n\t\t\t\tdocument.addEventListener( 'mouseout', onMouseUp, false );\n\n\t\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( state === STATE.ROTATE ) {\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t} else if ( state === STATE.DOLLY ) {\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t} else if ( state === STATE.PAN ) {\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseUp( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\thandleMouseUp( event );\n\n\t\t\tdocument.removeEventListener( 'mousemove', onMouseMove, false );\n\t\t\tdocument.removeEventListener( 'mouseup', onMouseUp, false );\n\t\t\tdocument.removeEventListener( 'mouseout', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\thandleMouseWheel( event );\n\n\t\t\tscope.dispatchEvent( startEvent ); // not sure why these are here...\n\t\t\tscope.dispatchEvent( endEvent );\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tswitch ( event.touches.length ) {\n\n\t\t\t\tcase 1:\t// one-fingered touch: rotate\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\t// two-fingered touch: dolly\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleTouchStartDolly( event );\n\n\t\t\t\t\tstate = STATE.TOUCH_DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3: // three-fingered touch: pan\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tswitch ( event.touches.length ) {\n\n\t\t\t\tcase 1: // one-fingered touch: rotate\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\t\t\t\t\tif ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?...\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2: // two-fingered touch: dolly\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\t\t\t\t\tif ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?...\n\n\t\t\t\t\thandleTouchMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 3: // three-fingered touch: pan\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\t\t\t\t\tif ( state !== STATE.TOUCH_PAN ) return; // is this needed?...\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchEnd( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\thandleTouchEnd( event );\n\n\t\t\tscope.dispatchEvent( endEvent );\n\n\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu, false );\n\n\t\tscope.domElement.addEventListener( 'mousedown', onMouseDown, false );\n\t\tscope.domElement.addEventListener( 'mousewheel', onMouseWheel, false );\n\t\tscope.domElement.addEventListener( 'MozMousePixelScroll', onMouseWheel, false ); // firefox\n\n\t\tscope.domElement.addEventListener( 'touchstart', onTouchStart, false );\n\t\tscope.domElement.addEventListener( 'touchend', onTouchEnd, false );\n\t\tscope.domElement.addEventListener( 'touchmove', onTouchMove, false );\n\n\t\twindow.addEventListener( 'keydown', onKeyDown, false );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t};\n\n\tTHREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype );\n\tTHREE.OrbitControls.prototype.constructor = THREE.OrbitControls;\n\n\tObject.defineProperties( THREE.OrbitControls.prototype, {\n\n\t\tcenter: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .center has been renamed to .target' );\n\t\t\t\treturn this.target;\n\n\t\t\t}\n\n\t\t},\n\n\t\t// backward compatibility\n\n\t\tnoZoom: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' );\n\t\t\t\treturn ! this.enableZoom;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' );\n\t\t\t\tthis.enableZoom = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tnoRotate: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' );\n\t\t\t\treturn ! this.enableRotate;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' );\n\t\t\t\tthis.enableRotate = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tnoPan: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' );\n\t\t\t\treturn ! this.enablePan;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' );\n\t\t\t\tthis.enablePan = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tnoKeys: {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' );\n\t\t\t\treturn ! this.enableKeys;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' );\n\t\t\t\tthis.enableKeys = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tstaticMoving : {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' );\n\t\t\t\treturn ! this.enableDamping;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' );\n\t\t\t\tthis.enableDamping = ! value;\n\n\t\t\t}\n\n\t\t},\n\n\t\tdynamicDampingFactor : {\n\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' );\n\t\t\t\treturn this.dampingFactor;\n\n\t\t\t},\n\n\t\t\tset: function ( value ) {\n\n\t\t\t\tconsole.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' );\n\t\t\t\tthis.dampingFactor = value;\n\n\t\t\t}\n\n\t\t}\n\n\t} );\n\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(THREE) {'use strict';\n\n\t(function () {\n\n\t  THREE.MeshLine = function () {\n\n\t    this.positions = [];\n\n\t    this.previous = [];\n\t    this.next = [];\n\t    this.side = [];\n\t    this.width = [];\n\t    this.indices_array = [];\n\t    this.uvs = [];\n\t    this.counters = [];\n\t    this.geometry = new THREE.BufferGeometry();\n\n\t    this.widthCallback = null;\n\t  };\n\n\t  THREE.MeshLine.prototype.setGeometry = function (g, c) {\n\n\t    this.widthCallback = c;\n\n\t    this.positions = [];\n\t    this.counters = [];\n\n\t    if (g instanceof THREE.Geometry) {\n\t      for (var j = 0; j < g.vertices.length; j++) {\n\t        var v = g.vertices[j];\n\t        var c = j / g.vertices.length;\n\t        this.positions.push(v.x, v.y, v.z);\n\t        this.positions.push(v.x, v.y, v.z);\n\t        this.counters.push(c);\n\t        this.counters.push(c);\n\t      }\n\t    }\n\n\t    if (g instanceof THREE.BufferGeometry) {\n\t      // read attribute positions ?\n\t    }\n\n\t    if (g instanceof Float32Array || g instanceof Array) {\n\t      for (var j = 0; j < g.length; j += 3) {\n\t        var c = j / g.length;\n\t        this.positions.push(g[j], g[j + 1], g[j + 2]);\n\t        this.positions.push(g[j], g[j + 1], g[j + 2]);\n\t        this.counters.push(c);\n\t        this.counters.push(c);\n\t      }\n\t    }\n\n\t    this.process();\n\t  };\n\n\t  THREE.MeshLine.prototype.compareV3 = function (a, b) {\n\n\t    var aa = a * 6;\n\t    var ab = b * 6;\n\t    return this.positions[aa] === this.positions[ab] && this.positions[aa + 1] === this.positions[ab + 1] && this.positions[aa + 2] === this.positions[ab + 2];\n\t  };\n\n\t  THREE.MeshLine.prototype.copyV3 = function (a) {\n\n\t    var aa = a * 6;\n\t    return [this.positions[aa], this.positions[aa + 1], this.positions[aa + 2]];\n\t  };\n\n\t  THREE.MeshLine.prototype.process = function () {\n\n\t    var l = this.positions.length / 6;\n\n\t    this.previous = [];\n\t    this.next = [];\n\t    this.side = [];\n\t    this.width = [];\n\t    this.indices_array = [];\n\t    this.uvs = [];\n\n\t    for (var j = 0; j < l; j++) {\n\t      this.side.push(1);\n\t      this.side.push(-1);\n\t    }\n\n\t    var w;\n\t    for (var j = 0; j < l; j++) {\n\t      if (this.widthCallback) w = this.widthCallback(j / (l - 1));else w = 1;\n\t      this.width.push(w);\n\t      this.width.push(w);\n\t    }\n\n\t    for (var j = 0; j < l; j++) {\n\t      this.uvs.push(j / (l - 1), 0);\n\t      this.uvs.push(j / (l - 1), 1);\n\t    }\n\n\t    var v;\n\n\t    if (this.compareV3(0, l - 1)) {\n\t      v = this.copyV3(l - 2);\n\t    } else {\n\t      v = this.copyV3(0);\n\t    }\n\t    this.previous.push(v[0], v[1], v[2]);\n\t    this.previous.push(v[0], v[1], v[2]);\n\t    for (var j = 0; j < l - 1; j++) {\n\t      v = this.copyV3(j);\n\t      this.previous.push(v[0], v[1], v[2]);\n\t      this.previous.push(v[0], v[1], v[2]);\n\t    }\n\n\t    for (var j = 1; j < l; j++) {\n\t      v = this.copyV3(j);\n\t      this.next.push(v[0], v[1], v[2]);\n\t      this.next.push(v[0], v[1], v[2]);\n\t    }\n\n\t    if (this.compareV3(l - 1, 0)) {\n\t      v = this.copyV3(1);\n\t    } else {\n\t      v = this.copyV3(l - 1);\n\t    }\n\t    this.next.push(v[0], v[1], v[2]);\n\t    this.next.push(v[0], v[1], v[2]);\n\n\t    for (var j = 0; j < l - 1; j++) {\n\t      var n = j * 2;\n\t      this.indices_array.push(n, n + 1, n + 2);\n\t      this.indices_array.push(n + 2, n + 1, n + 3);\n\t    }\n\n\t    if (!this.attributes) {\n\t      this.attributes = {\n\t        position: new THREE.BufferAttribute(new Float32Array(this.positions), 3),\n\t        previous: new THREE.BufferAttribute(new Float32Array(this.previous), 3),\n\t        next: new THREE.BufferAttribute(new Float32Array(this.next), 3),\n\t        side: new THREE.BufferAttribute(new Float32Array(this.side), 1),\n\t        width: new THREE.BufferAttribute(new Float32Array(this.width), 1),\n\t        uv: new THREE.BufferAttribute(new Float32Array(this.uvs), 2),\n\t        index: new THREE.BufferAttribute(new Uint16Array(this.indices_array), 1),\n\t        counters: new THREE.BufferAttribute(new Float32Array(this.counters), 1)\n\t      };\n\t    } else {\n\t      this.attributes.position.copyArray(new Float32Array(this.positions));\n\t      this.attributes.position.needsUpdate = true;\n\t      this.attributes.previous.copyArray(new Float32Array(this.previous));\n\t      this.attributes.previous.needsUpdate = true;\n\t      this.attributes.next.copyArray(new Float32Array(this.next));\n\t      this.attributes.next.needsUpdate = true;\n\t      this.attributes.side.copyArray(new Float32Array(this.side));\n\t      this.attributes.side.needsUpdate = true;\n\t      this.attributes.width.copyArray(new Float32Array(this.width));\n\t      this.attributes.width.needsUpdate = true;\n\t      this.attributes.uv.copyArray(new Float32Array(this.uvs));\n\t      this.attributes.uv.needsUpdate = true;\n\t      this.attributes.index.copyArray(new Uint16Array(this.indices_array));\n\t      this.attributes.index.needsUpdate = true;\n\t    }\n\n\t    this.geometry.addAttribute('position', this.attributes.position);\n\t    this.geometry.addAttribute('previous', this.attributes.previous);\n\t    this.geometry.addAttribute('next', this.attributes.next);\n\t    this.geometry.addAttribute('side', this.attributes.side);\n\t    this.geometry.addAttribute('width', this.attributes.width);\n\t    this.geometry.addAttribute('uv', this.attributes.uv);\n\t    this.geometry.addAttribute('counters', this.attributes.counters);\n\n\t    this.geometry.setIndex(this.attributes.index);\n\t  };\n\n\t  function memcpy(src, srcOffset, dst, dstOffset, length) {\n\t    var i;\n\n\t    src = src.subarray || src.slice ? src : src.buffer;\n\t    dst = dst.subarray || dst.slice ? dst : dst.buffer;\n\n\t    src = srcOffset ? src.subarray ? src.subarray(srcOffset, length && srcOffset + length) : src.slice(srcOffset, length && srcOffset + length) : src;\n\n\t    if (dst.set) {\n\t      dst.set(src, dstOffset);\n\t    } else {\n\t      for (i = 0; i < src.length; i++) {\n\t        dst[i + dstOffset] = src[i];\n\t      }\n\t    }\n\n\t    return dst;\n\t  }\n\n\t  /**\n\t   * Fast method to advance the line by one position.  The oldest position is removed.\n\t   * @param position\n\t   */\n\t  THREE.MeshLine.prototype.advance = function (position) {\n\n\t    var positions = this.attributes.position.array;\n\t    var previous = this.attributes.previous.array;\n\t    var next = this.attributes.next.array;\n\t    var l = positions.length;\n\n\t    // PREVIOUS\n\t    memcpy(positions, 0, previous, 0, l);\n\n\t    // POSITIONS\n\t    memcpy(positions, 6, positions, 0, l - 6);\n\n\t    positions[l - 6] = position.x;\n\t    positions[l - 5] = position.y;\n\t    positions[l - 4] = position.z;\n\t    positions[l - 3] = position.x;\n\t    positions[l - 2] = position.y;\n\t    positions[l - 1] = position.z;\n\n\t    // NEXT\n\t    memcpy(positions, 6, next, 0, l - 6);\n\n\t    next[l - 6] = position.x;\n\t    next[l - 5] = position.y;\n\t    next[l - 4] = position.z;\n\t    next[l - 3] = position.x;\n\t    next[l - 2] = position.y;\n\t    next[l - 1] = position.z;\n\n\t    this.attributes.position.needsUpdate = true;\n\t    this.attributes.previous.needsUpdate = true;\n\t    this.attributes.next.needsUpdate = true;\n\t  };\n\n\t  THREE.MeshLineMaterial = function (parameters) {\n\n\t    var vertexShaderSource = ['precision highp float;', '', 'attribute vec3 position;', 'attribute vec3 previous;', 'attribute vec3 next;', 'attribute float side;', 'attribute float width;', 'attribute vec2 uv;', 'attribute float counters;', '', 'uniform mat4 projectionMatrix;', 'uniform mat4 modelViewMatrix;', 'uniform vec2 resolution;', 'uniform float lineWidth;', 'uniform vec3 color;', 'uniform float opacity;', 'uniform float near;', 'uniform float far;', 'uniform float sizeAttenuation;', '', 'varying vec2 vUV;', 'varying vec4 vColor;', 'varying vec3 vPosition;', 'varying float vCounters;', '', 'vec2 fix( vec4 i, float aspect ) {', '', '    vec2 res = i.xy / i.w;', '    res.x *= aspect;', '\t vCounters = counters;', '    return res;', '', '}', '', 'void main() {', '', '    float aspect = resolution.x / resolution.y;', '\t float pixelWidthRatio = 1. / (resolution.x * projectionMatrix[0][0]);', '', '    vColor = vec4( color, opacity );', '    vUV = uv;', '', '    mat4 m = projectionMatrix * modelViewMatrix;', '    vec4 finalPosition = m * vec4( position, 1.0 );', '    vec4 prevPos = m * vec4( previous, 1.0 );', '    vec4 nextPos = m * vec4( next, 1.0 );', '', '    vec2 currentP = fix( finalPosition, aspect );', '    vec2 prevP = fix( prevPos, aspect );', '    vec2 nextP = fix( nextPos, aspect );', '', '\t float pixelWidth = finalPosition.w * pixelWidthRatio;', '    float w = 1.8 * pixelWidth * lineWidth * width;', '', '    if( sizeAttenuation == 1. ) {', '        w = 1.8 * lineWidth * width;', '    }', '', '    vec2 dir;', '    if( nextP == currentP ) dir = normalize( currentP - prevP );', '    else if( prevP == currentP ) dir = normalize( nextP - currentP );', '    else {', '        vec2 dir1 = normalize( currentP - prevP );', '        vec2 dir2 = normalize( nextP - currentP );', '        dir = normalize( dir1 + dir2 );', '', '        vec2 perp = vec2( -dir1.y, dir1.x );', '        vec2 miter = vec2( -dir.y, dir.x );', '        //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );', '', '    }', '', '    //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;', '    vec2 normal = vec2( -dir.y, dir.x );', '    normal.x /= aspect;', '    normal *= .5 * w;', '', '    vec4 offset = vec4( normal * side, 0.0, 1.0 );', '    finalPosition.xy += offset.xy;', '', '\t vPosition = ( modelViewMatrix * vec4( position, 1. ) ).xyz;', '    gl_Position = finalPosition;', '', '}'];\n\n\t    var fragmentShaderSource = ['#extension GL_OES_standard_derivatives : enable', 'precision mediump float;', '', 'uniform sampler2D map;', 'uniform float useMap;', 'uniform float useDash;', 'uniform vec2 dashArray;', 'uniform float visibility;', 'uniform float alphaTest;', '', 'varying vec2 vUV;', 'varying vec4 vColor;', 'varying vec3 vPosition;', 'varying float vCounters;', '', 'void main() {', '', '    vec4 c = vColor;', '\t if( c.a < alphaTest ) discard;', '    if( useMap == 1. ) c *= texture2D( map, vUV );', '\t if( useDash == 1. ){', '\t \t ', '\t }', '    gl_FragColor = c;', '\t gl_FragColor.a *= step(vCounters,visibility);', '}'];\n\n\t    function check(v, d) {\n\t      if (v === undefined) return d;\n\t      return v;\n\t    }\n\n\t    THREE.Material.call(this);\n\n\t    parameters = parameters || {};\n\n\t    this.lineWidth = check(parameters.lineWidth, 1);\n\t    this.map = check(parameters.map, null);\n\t    this.useMap = check(parameters.useMap, 0);\n\t    this.color = check(parameters.color, new THREE.Color(0xffffff));\n\t    this.opacity = check(parameters.opacity, 1);\n\t    this.resolution = check(parameters.resolution, new THREE.Vector2(1, 1));\n\t    this.sizeAttenuation = check(parameters.sizeAttenuation, 1);\n\t    this.near = check(parameters.near, 1);\n\t    this.far = check(parameters.far, 1);\n\t    this.dashArray = check(parameters.dashArray, []);\n\t    this.useDash = this.dashArray !== [] ? 1 : 0;\n\t    this.visibility = check(parameters.visibility, 1);\n\t    this.alphaTest = check(parameters.alphaTest, 0);\n\n\t    var material = new THREE.RawShaderMaterial({\n\t      uniforms: {\n\t        lineWidth: { type: 'f', value: this.lineWidth },\n\t        map: { type: 't', value: this.map },\n\t        useMap: { type: 'f', value: this.useMap },\n\t        color: { type: 'c', value: this.color },\n\t        opacity: { type: 'f', value: this.opacity },\n\t        resolution: { type: 'v2', value: this.resolution },\n\t        sizeAttenuation: { type: 'f', value: this.sizeAttenuation },\n\t        near: { type: 'f', value: this.near },\n\t        far: { type: 'f', value: this.far },\n\t        dashArray: { type: 'v2', value: new THREE.Vector2(this.dashArray[0], this.dashArray[1]) },\n\t        useDash: { type: 'f', value: this.useDash },\n\t        visibility: { type: 'f', value: this.visibility },\n\t        alphaTest: { type: 'f', value: this.alphaTest }\n\t      },\n\t      vertexShader: vertexShaderSource.join('\\r\\n'),\n\t      fragmentShader: fragmentShaderSource.join('\\r\\n')\n\t    });\n\n\t    delete parameters.lineWidth;\n\t    delete parameters.map;\n\t    delete parameters.useMap;\n\t    delete parameters.color;\n\t    delete parameters.opacity;\n\t    delete parameters.resolution;\n\t    delete parameters.sizeAttenuation;\n\t    delete parameters.near;\n\t    delete parameters.far;\n\t    delete parameters.dashArray;\n\t    delete parameters.visibility;\n\t    delete parameters.alphaTest;\n\n\t    material.type = 'MeshLineMaterial';\n\n\t    material.setValues(parameters);\n\n\t    return material;\n\t  };\n\n\t  THREE.MeshLineMaterial.prototype = Object.create(THREE.Material.prototype);\n\t  THREE.MeshLineMaterial.prototype.constructor = THREE.MeshLineMaterial;\n\n\t  THREE.MeshLineMaterial.prototype.copy = function (source) {\n\n\t    THREE.Material.prototype.copy.call(this, source);\n\n\t    this.lineWidth = source.lineWidth;\n\t    this.map = source.map;\n\t    this.useMap = source.useMap;\n\t    this.color.copy(source.color);\n\t    this.opacity = source.opacity;\n\t    this.resolution.copy(source.resolution);\n\t    this.sizeAttenuation = source.sizeAttenuation;\n\t    this.near = source.near;\n\t    this.far = source.far;\n\n\t    return this;\n\t  };\n\t})();\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ },\n/* 15 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"#define PHONG\\n\\nvarying vec3 vViewPosition;\\nvarying vec3 vWorldPos;\\n\\n#ifndef FLAT_SHADED\\n\\n\\tvarying vec3 vNormal;\\n\\n#endif\\n\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\n\\nvoid main() {\\n\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\\n\\n\\tvNormal = normalize( transformedNormal );\\n\\n#endif\\n\\n\\t#include <begin_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\n\\tvViewPosition = - mvPosition.xyz;\\n\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\n\\tvWorldPos = worldPosition.xyz;\\n\\n}\\n\"\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"#define PHONG\\n\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\nuniform vec3 xFogColor;\\n\\nvarying vec3 vWorldPos;\\n\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n\\nvoid main() {\\n\\n\\t#include <clipping_planes_fragment>\\n\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_flip>\\n\\t#include <normal_fragment>\\n\\t#include <emissivemap_fragment>\\n\\n\\t// accumulation\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_template>\\n\\n\\t// modulation\\n\\t#include <aomap_fragment>\\n\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\n\\t#include <envmap_fragment>\\n\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\n\\tvec3 c = gl_FragColor.rgb;\\n\\tgl_FragColor = mix(vec4(c, 1), vec4(xFogColor, 1), clamp((abs(vWorldPos.x) - 128.0) / 32.0, 0.0, 1.0));\\n}\\n\"\n\n/***/ },\n/* 17 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"#define PHONG\\n\\nvarying vec3 vViewPosition;\\nvarying vec3 vWorldNormal;\\nvarying vec3 vWorldPos;\\n\\n#ifndef FLAT_SHADED\\n\\n\\tvarying vec3 vNormal;\\n\\n#endif\\n\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <color_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\n\\nvoid main() {\\n\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\n\\t#include <beginnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\\n\\n\\tvNormal = normalize( transformedNormal );\\n\\n#endif\\n\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\n\\tvViewPosition = - mvPosition.xyz;\\n\\tvWorldNormal = normal;\\n\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\n\\tvWorldPos = worldPosition.xyz;\\n\\n}\\n\"\n\n/***/ },\n/* 18 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"#define PHONG\\n\\nuniform vec3 cliffColor;\\nuniform vec3 grassColor;\\nuniform vec3 sandColor;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform vec3 xFogColor;\\nuniform float shininess;\\nuniform float opacity;\\nuniform float steps;\\nuniform float threshold;\\nuniform sampler2D map;\\nuniform float waterHeight;\\n\\nvarying vec3 vWorldNormal;\\nvarying vec3 vWorldPos;\\n\\n#include <common>\\n#include <packing>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\n\\nvoid main() {\\n\\n\\t#include <clipping_planes_fragment>\\n\\n\\tfloat y = floor((vWorldNormal.y) * steps + threshold) / steps;\\n\\tvec3 c = mix(sandColor, grassColor, clamp(floor(vWorldPos.y - waterHeight), 0.0, 1.0));\\n\\tc = mix(cliffColor, c, y);\\n\\tvec4 diffuseColor = vec4( c, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_flip>\\n\\t#include <normal_fragment>\\n\\t#include <emissivemap_fragment>\\n\\n\\t// accumulation\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_template>\\n\\n\\t// modulation\\n\\t#include <aomap_fragment>\\n\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tfloat dot = pow(saturate(1.0 - dot(normalize(vViewPosition), normal)), 5.0);\\n\\toutgoingLight += vec3(0.8 * dot, dot, 0.7 * dot);\\n\\n\\t#include <envmap_fragment>\\n\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\n\\tc = gl_FragColor.rgb;\\n\\tgl_FragColor = mix(vec4(c, 1), vec4(xFogColor, 1), clamp((abs(vWorldPos.x) - 128.0) / 32.0, 0.0, 1.0));\\n}\\n\"\n\n/***/ }\n/******/ ]);"
  },
  {
    "path": "lib/Detector.js",
    "content": "/**\n * @author alteredq / http://alteredqualia.com/\n * @author mr.doob / http://mrdoob.com/\n */\n\nvar Detector = {\n\n\tcanvas: !! window.CanvasRenderingContext2D,\n\twebgl: ( function () {\n\n\t\ttry {\n\n\t\t\tvar canvas = document.createElement( 'canvas' ); return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );\n\n\t\t} catch ( e ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t} )(),\n\tworkers: !! window.Worker,\n\tfileapi: window.File && window.FileReader && window.FileList && window.Blob,\n\n\tgetWebGLErrorMessage: function () {\n\n\t\tvar element = document.createElement( 'div' );\n\t\telement.id = 'webgl-error-message';\n\t\telement.style.fontFamily = 'monospace';\n\t\telement.style.fontSize = '13px';\n\t\telement.style.fontWeight = 'normal';\n\t\telement.style.textAlign = 'center';\n\t\telement.style.background = '#fff';\n\t\telement.style.color = '#000';\n\t\telement.style.padding = '1.5em';\n\t\telement.style.width = '400px';\n\t\telement.style.margin = '5em auto 0';\n\n\t\tif ( ! this.webgl ) {\n\n\t\t\telement.innerHTML = window.WebGLRenderingContext ? [\n\t\t\t\t'Your graphics card does not seem to support <a href=\"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation\" style=\"color:#000\">WebGL</a>.<br />',\n\t\t\t\t'Find out how to get it <a href=\"http://get.webgl.org/\" style=\"color:#000\">here</a>.'\n\t\t\t].join( '\\n' ) : [\n\t\t\t\t'Your browser does not seem to support <a href=\"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation\" style=\"color:#000\">WebGL</a>.<br/>',\n\t\t\t\t'Find out how to get it <a href=\"http://get.webgl.org/\" style=\"color:#000\">here</a>.'\n\t\t\t].join( '\\n' );\n\n\t\t}\n\n\t\treturn element;\n\n\t},\n\n\taddGetWebGLMessage: function ( parameters ) {\n\n\t\tvar parent, id, element;\n\n\t\tparameters = parameters || {};\n\n\t\tparent = parameters.parent !== undefined ? parameters.parent : document.body;\n\t\tid = parameters.id !== undefined ? parameters.id : 'oldie';\n\n\t\telement = Detector.getWebGLErrorMessage();\n\t\telement.id = id;\n\n\t\tparent.appendChild( element );\n\n\t}\n\n};\n\n// browserify support\nif ( typeof module === 'object' ) {\n\n\tmodule.exports = Detector;\n\n}\n"
  },
  {
    "path": "lib/THREE.MeshLine.js",
    "content": "( function () {\n\n  THREE.MeshLine = function () {\n\n    this.positions = [];\n\n    this.previous = [];\n    this.next = [];\n    this.side = [];\n    this.width = [];\n    this.indices_array = [];\n    this.uvs = [];\n    this.counters = [];\n    this.geometry = new THREE.BufferGeometry();\n\n    this.widthCallback = null;\n\n  }\n\n  THREE.MeshLine.prototype.setGeometry = function ( g, c ) {\n\n    this.widthCallback = c;\n\n    this.positions = [];\n    this.counters = [];\n\n    if ( g instanceof THREE.Geometry ) {\n      for ( var j = 0; j < g.vertices.length; j++ ) {\n        var v = g.vertices[ j ];\n        var c = j / g.vertices.length;\n        this.positions.push( v.x, v.y, v.z );\n        this.positions.push( v.x, v.y, v.z );\n        this.counters.push( c );\n        this.counters.push( c );\n      }\n    }\n\n    if ( g instanceof THREE.BufferGeometry ) {\n      // read attribute positions ?\n    }\n\n    if ( g instanceof Float32Array ||  g instanceof Array ) {\n      for ( var j = 0; j < g.length; j += 3 ) {\n        var c = j / g.length;\n        this.positions.push( g[ j ], g[ j + 1 ], g[ j + 2 ] );\n        this.positions.push( g[ j ], g[ j + 1 ], g[ j + 2 ] );\n        this.counters.push( c );\n        this.counters.push( c );\n      }\n    }\n\n    this.process();\n\n  }\n\n  THREE.MeshLine.prototype.compareV3 = function ( a, b ) {\n\n    var aa = a * 6;\n    var ab = b * 6;\n    return ( this.positions[ aa ] === this.positions[ ab ] ) && ( this.positions[ aa + 1 ] === this.positions[ ab + 1 ] ) && ( this.positions[ aa + 2 ] === this.positions[ ab + 2 ] );\n\n  }\n\n  THREE.MeshLine.prototype.copyV3 = function ( a ) {\n\n    var aa = a * 6;\n    return [ this.positions[ aa ], this.positions[ aa + 1 ], this.positions[ aa + 2 ] ];\n\n  }\n\n  THREE.MeshLine.prototype.process = function () {\n\n    var l = this.positions.length / 6;\n\n    this.previous = [];\n    this.next = [];\n    this.side = [];\n    this.width = [];\n    this.indices_array = [];\n    this.uvs = [];\n\n    for ( var j = 0; j < l; j++ ) {\n      this.side.push( 1 );\n      this.side.push( -1 );\n    }\n\n    var w;\n    for ( var j = 0; j < l; j++ ) {\n      if ( this.widthCallback ) w = this.widthCallback( j / ( l - 1 ) );\n      else w = 1;\n      this.width.push( w );\n      this.width.push( w );\n    }\n\n    for ( var j = 0; j < l; j++ ) {\n      this.uvs.push( j / ( l - 1 ), 0 );\n      this.uvs.push( j / ( l - 1 ), 1 );\n    }\n\n    var v;\n\n    if ( this.compareV3( 0, l - 1 ) ) {\n      v = this.copyV3( l - 2 );\n    } else {\n      v = this.copyV3( 0 );\n    }\n    this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n    this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n    for ( var j = 0; j < l - 1; j++ ) {\n      v = this.copyV3( j );\n      this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n      this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n    }\n\n    for ( var j = 1; j < l; j++ ) {\n      v = this.copyV3( j );\n      this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n      this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n    }\n\n    if ( this.compareV3( l - 1, 0 ) ) {\n      v = this.copyV3( 1 );\n    } else {\n      v = this.copyV3( l - 1 );\n    }\n    this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n    this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] );\n\n    for ( var j = 0; j < l - 1; j++ ) {\n      var n = j * 2;\n      this.indices_array.push( n, n + 1, n + 2 );\n      this.indices_array.push( n + 2, n + 1, n + 3 );\n    }\n\n    if ( !this.attributes ) {\n      this.attributes = {\n        position: new THREE.BufferAttribute( new Float32Array( this.positions ), 3 ),\n        previous: new THREE.BufferAttribute( new Float32Array( this.previous ), 3 ),\n        next: new THREE.BufferAttribute( new Float32Array( this.next ), 3 ),\n        side: new THREE.BufferAttribute( new Float32Array( this.side ), 1 ),\n        width: new THREE.BufferAttribute( new Float32Array( this.width ), 1 ),\n        uv: new THREE.BufferAttribute( new Float32Array( this.uvs ), 2 ),\n        index: new THREE.BufferAttribute( new Uint16Array( this.indices_array ), 1 ),\n        counters: new THREE.BufferAttribute( new Float32Array( this.counters ), 1 )\n      }\n    } else {\n      this.attributes.position.copyArray( new Float32Array( this.positions ) );\n      this.attributes.position.needsUpdate = true;\n      this.attributes.previous.copyArray( new Float32Array( this.previous ) );\n      this.attributes.previous.needsUpdate = true;\n      this.attributes.next.copyArray( new Float32Array( this.next ) );\n      this.attributes.next.needsUpdate = true;\n      this.attributes.side.copyArray( new Float32Array( this.side ) );\n      this.attributes.side.needsUpdate = true;\n      this.attributes.width.copyArray( new Float32Array( this.width ) );\n      this.attributes.width.needsUpdate = true;\n      this.attributes.uv.copyArray( new Float32Array( this.uvs ) );\n      this.attributes.uv.needsUpdate = true;\n      this.attributes.index.copyArray( new Uint16Array( this.indices_array ) );\n      this.attributes.index.needsUpdate = true;\n    }\n\n    this.geometry.addAttribute( 'position', this.attributes.position );\n    this.geometry.addAttribute( 'previous', this.attributes.previous );\n    this.geometry.addAttribute( 'next', this.attributes.next );\n    this.geometry.addAttribute( 'side', this.attributes.side );\n    this.geometry.addAttribute( 'width', this.attributes.width );\n    this.geometry.addAttribute( 'uv', this.attributes.uv );\n    this.geometry.addAttribute( 'counters', this.attributes.counters );\n\n    this.geometry.setIndex( this.attributes.index );\n\n  }\n\n  function memcpy( src, srcOffset, dst, dstOffset, length ) {\n    var i\n\n    src = src.subarray || src.slice ? src : src.buffer\n    dst = dst.subarray || dst.slice ? dst : dst.buffer\n\n    src = srcOffset ? src.subarray ?\n      src.subarray( srcOffset, length && srcOffset + length ) :\n      src.slice( srcOffset, length && srcOffset + length ) : src\n\n    if ( dst.set ) {\n      dst.set( src, dstOffset )\n    } else {\n      for ( i = 0; i < src.length; i++ ) {\n        dst[ i + dstOffset ] = src[ i ]\n      }\n    }\n\n    return dst\n  }\n\n  /**\n   * Fast method to advance the line by one position.  The oldest position is removed.\n   * @param position\n   */\n  THREE.MeshLine.prototype.advance = function ( position ) {\n\n    var positions = this.attributes.position.array;\n    var previous = this.attributes.previous.array;\n    var next = this.attributes.next.array;\n    var l = positions.length;\n\n    // PREVIOUS\n    memcpy( positions, 0, previous, 0, l );\n\n    // POSITIONS\n    memcpy( positions, 6, positions, 0, l - 6 );\n\n    positions[ l - 6 ] = position.x;\n    positions[ l - 5 ] = position.y;\n    positions[ l - 4 ] = position.z;\n    positions[ l - 3 ] = position.x;\n    positions[ l - 2 ] = position.y;\n    positions[ l - 1 ] = position.z;\n\n    // NEXT\n    memcpy( positions, 6, next, 0, l - 6 );\n\n    next[ l - 6 ] = position.x;\n    next[ l - 5 ] = position.y;\n    next[ l - 4 ] = position.z;\n    next[ l - 3 ] = position.x;\n    next[ l - 2 ] = position.y;\n    next[ l - 1 ] = position.z;\n\n    this.attributes.position.needsUpdate = true;\n    this.attributes.previous.needsUpdate = true;\n    this.attributes.next.needsUpdate = true;\n\n  };\n\n  THREE.MeshLineMaterial = function ( parameters ) {\n\n    var vertexShaderSource = [\n'precision highp float;',\n'',\n'attribute vec3 position;',\n'attribute vec3 previous;',\n'attribute vec3 next;',\n'attribute float side;',\n'attribute float width;',\n'attribute vec2 uv;',\n'attribute float counters;',\n'',\n'uniform mat4 projectionMatrix;',\n'uniform mat4 modelViewMatrix;',\n'uniform vec2 resolution;',\n'uniform float lineWidth;',\n'uniform vec3 color;',\n'uniform float opacity;',\n'uniform float near;',\n'uniform float far;',\n'uniform float sizeAttenuation;',\n'',\n'varying vec2 vUV;',\n'varying vec4 vColor;',\n'varying vec3 vPosition;',\n'varying float vCounters;',\n'',\n'vec2 fix( vec4 i, float aspect ) {',\n'',\n'    vec2 res = i.xy / i.w;',\n'    res.x *= aspect;',\n'\t vCounters = counters;',\n'    return res;',\n'',\n'}',\n'',\n'void main() {',\n'',\n'    float aspect = resolution.x / resolution.y;',\n'\t float pixelWidthRatio = 1. / (resolution.x * projectionMatrix[0][0]);',\n'',\n'    vColor = vec4( color, opacity );',\n'    vUV = uv;',\n'',\n'    mat4 m = projectionMatrix * modelViewMatrix;',\n'    vec4 finalPosition = m * vec4( position, 1.0 );',\n'    vec4 prevPos = m * vec4( previous, 1.0 );',\n'    vec4 nextPos = m * vec4( next, 1.0 );',\n'',\n'    vec2 currentP = fix( finalPosition, aspect );',\n'    vec2 prevP = fix( prevPos, aspect );',\n'    vec2 nextP = fix( nextPos, aspect );',\n'',\n'\t float pixelWidth = finalPosition.w * pixelWidthRatio;',\n'    float w = 1.8 * pixelWidth * lineWidth * width;',\n'',\n'    if( sizeAttenuation == 1. ) {',\n'        w = 1.8 * lineWidth * width;',\n'    }',\n'',\n'    vec2 dir;',\n'    if( nextP == currentP ) dir = normalize( currentP - prevP );',\n'    else if( prevP == currentP ) dir = normalize( nextP - currentP );',\n'    else {',\n'        vec2 dir1 = normalize( currentP - prevP );',\n'        vec2 dir2 = normalize( nextP - currentP );',\n'        dir = normalize( dir1 + dir2 );',\n'',\n'        vec2 perp = vec2( -dir1.y, dir1.x );',\n'        vec2 miter = vec2( -dir.y, dir.x );',\n'        //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );',\n'',\n'    }',\n'',\n'    //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;',\n'    vec2 normal = vec2( -dir.y, dir.x );',\n'    normal.x /= aspect;',\n'    normal *= .5 * w;',\n'',\n'    vec4 offset = vec4( normal * side, 0.0, 1.0 );',\n'    finalPosition.xy += offset.xy;',\n'',\n'\t vPosition = ( modelViewMatrix * vec4( position, 1. ) ).xyz;',\n'    gl_Position = finalPosition;',\n'',\n'}' ];\n\n    var fragmentShaderSource = [\n\t\t'#extension GL_OES_standard_derivatives : enable',\n'precision mediump float;',\n'',\n'uniform sampler2D map;',\n'uniform float useMap;',\n'uniform float useDash;',\n'uniform vec2 dashArray;',\n'uniform float visibility;',\n'uniform float alphaTest;',\n'',\n'varying vec2 vUV;',\n'varying vec4 vColor;',\n'varying vec3 vPosition;',\n'varying float vCounters;',\n'',\n'void main() {',\n'',\n'    vec4 c = vColor;',\n'\t if( c.a < alphaTest ) discard;',\n'    if( useMap == 1. ) c *= texture2D( map, vUV );',\n'\t if( useDash == 1. ){',\n'\t \t ',\n'\t }',\n'    gl_FragColor = c;',\n'\t gl_FragColor.a *= step(vCounters,visibility);',\n'}' ];\n\n    function check( v, d ) {\n      if ( v === undefined ) return d;\n      return v;\n    }\n\n    THREE.Material.call( this );\n\n    parameters = parameters ||  {};\n\n    this.lineWidth = check( parameters.lineWidth, 1 );\n    this.map = check( parameters.map, null );\n    this.useMap = check( parameters.useMap, 0 );\n    this.color = check( parameters.color, new THREE.Color( 0xffffff ) );\n    this.opacity = check( parameters.opacity, 1 );\n    this.resolution = check( parameters.resolution, new THREE.Vector2( 1, 1 ) );\n    this.sizeAttenuation = check( parameters.sizeAttenuation, 1 );\n    this.near = check( parameters.near, 1 );\n    this.far = check( parameters.far, 1 );\n    this.dashArray = check( parameters.dashArray, [] );\n    this.useDash = ( this.dashArray !== [] ) ? 1 : 0;\n    this.visibility = check( parameters.visibility, 1 );\n    this.alphaTest = check( parameters.alphaTest, 0 );\n\n    var material = new THREE.RawShaderMaterial( {\n      uniforms: {\n        lineWidth: { type: 'f', value: this.lineWidth },\n        map: { type: 't', value: this.map },\n        useMap: { type: 'f', value: this.useMap },\n        color: { type: 'c', value: this.color },\n        opacity: { type: 'f', value: this.opacity },\n        resolution: { type: 'v2', value: this.resolution },\n        sizeAttenuation: { type: 'f', value: this.sizeAttenuation },\n        near: { type: 'f', value: this.near },\n        far: { type: 'f', value: this.far },\n        dashArray: { type: 'v2', value: new THREE.Vector2( this.dashArray[ 0 ], this.dashArray[ 1 ] ) },\n        useDash: { type: 'f', value: this.useDash },\n        visibility: { type: 'f', value: this.visibility },\n        alphaTest: { type: 'f', value: this.alphaTest }\n      },\n      vertexShader: vertexShaderSource.join( '\\r\\n' ),\n      fragmentShader: fragmentShaderSource.join( '\\r\\n' )\n    } );\n\n    delete parameters.lineWidth;\n    delete parameters.map;\n    delete parameters.useMap;\n    delete parameters.color;\n    delete parameters.opacity;\n    delete parameters.resolution;\n    delete parameters.sizeAttenuation;\n    delete parameters.near;\n    delete parameters.far;\n    delete parameters.dashArray;\n    delete parameters.visibility;\n    delete parameters.alphaTest;\n\n    material.type = 'MeshLineMaterial';\n\n    material.setValues( parameters );\n\n    return material;\n\n  };\n\n  THREE.MeshLineMaterial.prototype = Object.create( THREE.Material.prototype );\n  THREE.MeshLineMaterial.prototype.constructor = THREE.MeshLineMaterial;\n\n  THREE.MeshLineMaterial.prototype.copy = function ( source ) {\n\n    THREE.Material.prototype.copy.call( this, source );\n\n    this.lineWidth = source.lineWidth;\n    this.map = source.map;\n    this.useMap = source.useMap;\n    this.color.copy( source.color );\n    this.opacity = source.opacity;\n    this.resolution.copy( source.resolution );\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.near = source.near;\n    this.far = source.far;\n\n    return this;\n\n  };\n\n} )();\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"threejs-ballooning\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Experiment using Three.js\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"webpack-dev-server --open --config webpack.dev.js --host 0.0.0.0\",\n    \"build\": \"webpack --config webpack.prod.js\"\n  },\n  \"author\": \"Alexander Perrin\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"babel-core\": \"^6.26.3\",\n    \"babel-loader\": \"^6.4.1\",\n    \"babel-minify-webpack-plugin\": \"^0.3.1\",\n    \"babel-plugin-transform-class-properties\": \"^6.24.1\",\n    \"babel-preset-es2015\": \"^6.24.1\",\n    \"babel-preset-react\": \"^6.24.1\",\n    \"clean-webpack-plugin\": \"^1.0.1\",\n    \"copy-webpack-plugin\": \"^4.6.0\",\n    \"css-loader\": \"^0.23.1\",\n    \"exports-loader\": \"^0.6.4\",\n    \"file-loader\": \"^0.9.0\",\n    \"html-webpack-plugin\": \"^3.2.0\",\n    \"imports-loader\": \"^0.6.5\",\n    \"jquery\": \"^3.3.1\",\n    \"jshint\": \"^2.10.1\",\n    \"json-loader\": \"^0.5.7\",\n    \"seedrandom\": \"^2.4.2\",\n    \"strip-loader\": \"^0.1.2\",\n    \"style-loader\": \"^0.13.2\",\n    \"three\": \"^0.78.0\",\n    \"uglifyjs-webpack-plugin\": \"^2.1.1\",\n    \"underscore\": \"^1.9.1\",\n    \"webpack\": \"^4.29.3\",\n    \"webpack-dev-server\": \"^3.1.14\",\n    \"webpack-glsl-loader\": \"^1.0.1\",\n    \"webpack-merge\": \"^4.2.1\"\n  },\n  \"dependencies\": {}\n}\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Three.js Ballooning - Alexander Perrin</title>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0\"\n    />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"static/app.css\" />\n  </head>\n  <body>\n    <div id=\"canvas-container\"></div>\n    <div id=\"loader\">\n      <div class=\"label\">\n        <span>loading ~ <span id=\"loading-message\">code</span> ~</span>\n        <img class=\"spinner\" src=\"static/images/spinner.svg\" />\n      </div>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "public/static/app.css",
    "content": "@-moz-keyframes spin {\n    100% {\n        -moz-transform: rotate(360deg);\n    }\n}\n\n@-webkit-keyframes spin {\n    100% {\n        -webkit-transform: rotate(360deg);\n    }\n}\n\n@keyframes spin {\n    100% {\n        -webkit-transform: rotate(360deg);\n        transform: rotate(360deg);\n    }\n}\n\nbody {\n    color: black;\n    background-color: white;\n    font-family: sans-serif;\n    overflow: hidden;\n}\n\ncanvas {\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  outline: none;\n  -webkit-tap-highlight-color: rgba(255, 255, 255, 0); /* mobile webkit */\n}\n\n#heading {\n    position: absolute;\n    top: 16px;\n    left: 16px;\n    margin-top: 0px;\n}\n\n#canvas-container {\n    position: absolute;\n    top: 0px;\n    left: 0px;\n    width: 100%;\n    height: 100%;\n}\n\n#loader {\n    background-color: white;\n    position: absolute;\n    top: 0px;\n    left: 0px;\n    width: 100%;\n    height: 100%;\n}\n\n#loader> .label {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    text-align: center;\n    width: 256px;\n    height: 48px;\n    margin-top: -24px;\n    margin-left: -128px;\n    color: #ddd;\n}\n\n#loader> .label> .spinner {\n    display: block;\n    margin: auto;\n    width: 48px;\n    height: 48px;\n    -webkit-animation: spin 0.25s linear infinite;\n    -moz-animation: spin 0.25s linear infinite;\n    animation: spin 0.25s linear infinite;\n}\n"
  },
  {
    "path": "public/static/meshes/balloon.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"3BE36DB9-F30E-4785-99E0-7072F36C5141\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"balloon\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [-0.0006448599742725492,22.203399658203125,0.0008273739949800074,-0.0006448529893532395,22.054100036621094,-0.08701329678297043,-2.350980043411255,21.893999099731445,0.0008273739949800074,-0.0006448529893532395,22.054100036621094,-0.08701329678297043,-2.312350034713745,21.749799728393555,-0.08701329678297043,-2.350980043411255,21.893999099731445,0.0008273739949800074,-0.0006448529893532395,22.054100036621094,-0.08701329678297043,-0.000644851999823004,22.05270004272461,0.08618590235710144,-2.312350034713745,21.749799728393555,-0.08701329678297043,-0.000644851999823004,22.05270004272461,0.08618590235710144,-2.3119699954986572,21.74839973449707,0.08618590235710144,-2.312350034713745,21.749799728393555,-0.08701329678297043,-0.000644851999823004,22.05270004272461,0.08618590235710144,-0.0006448599742725492,22.203399658203125,0.0008273739949800074,-2.3119699954986572,21.74839973449707,0.08618590235710144,-0.0006448599742725492,22.203399658203125,0.0008273739949800074,-2.350980043411255,21.893999099731445,0.0008273739949800074,-2.3119699954986572,21.74839973449707,0.08618590235710144,-2.350980043411255,21.893999099731445,0.0008273739949800074,-2.312350034713745,21.749799728393555,-0.08701329678297043,-4.541749954223633,20.986499786376953,0.0008273739949800074,-2.312350034713745,21.749799728393555,-0.08701329678297043,-4.4671101570129395,20.8572998046875,-0.08701329678297043,-4.541749954223633,20.986499786376953,0.0008273739949800074,-2.312350034713745,21.749799728393555,-0.08701329678297043,-2.3119699954986572,21.74839973449707,0.08618590235710144,-4.4671101570129395,20.8572998046875,-0.08701329678297043,-2.3119699954986572,21.74839973449707,0.08618590235710144,-4.466390132904053,20.856000900268555,0.08618590235710144,-4.4671101570129395,20.8572998046875,-0.08701329678297043,-2.3119699954986572,21.74839973449707,0.08618590235710144,-2.350980043411255,21.893999099731445,0.0008273739949800074,-4.466390132904053,20.856000900268555,0.08618590235710144,-2.350980043411255,21.893999099731445,0.0008273739949800074,-4.541749954223633,20.986499786376953,0.0008273739949800074,-4.466390132904053,20.856000900268555,0.08618590235710144,-4.541749954223633,20.986499786376953,0.0008273739949800074,-4.4671101570129395,20.8572998046875,-0.08701329678297043,-6.422999858856201,19.542999267578125,0.0008273739949800074,-4.4671101570129395,20.8572998046875,-0.08701329678297043,-6.317450046539307,19.437400817871094,-0.08701329678297043,-6.422999858856201,19.542999267578125,0.0008273739949800074,-4.4671101570129395,20.8572998046875,-0.08701329678297043,-4.466390132904053,20.856000900268555,0.08618590235710144,-6.317450046539307,19.437400817871094,-0.08701329678297043,-4.466390132904053,20.856000900268555,0.08618590235710144,-6.31643009185791,19.436399459838867,0.08618590235710144,-6.317450046539307,19.437400817871094,-0.08701329678297043,-4.466390132904053,20.856000900268555,0.08618590235710144,-4.541749954223633,20.986499786376953,0.0008273739949800074,-6.31643009185791,19.436399459838867,0.08618590235710144,-4.541749954223633,20.986499786376953,0.0008273739949800074,-6.422999858856201,19.542999267578125,0.0008273739949800074,-6.31643009185791,19.436399459838867,0.08618590235710144,-6.422999858856201,19.542999267578125,0.0008273739949800074,-6.317450046539307,19.437400817871094,-0.08701329678297043,-7.86653995513916,17.661699295043945,0.0008273739949800074,-6.317450046539307,19.437400817871094,-0.08701329678297043,-7.737259864807129,17.587099075317383,-0.08701329678297043,-7.86653995513916,17.661699295043945,0.0008273739949800074,-6.317450046539307,19.437400817871094,-0.08701329678297043,-6.31643009185791,19.436399459838867,0.08618590235710144,-7.737259864807129,17.587099075317383,-0.08701329678297043,-6.31643009185791,19.436399459838867,0.08618590235710144,-7.736020088195801,17.58639907836914,0.08618590235710144,-7.737259864807129,17.587099075317383,-0.08701329678297043,-6.31643009185791,19.436399459838867,0.08618590235710144,-6.422999858856201,19.542999267578125,0.0008273739949800074,-7.736020088195801,17.58639907836914,0.08618590235710144,-6.422999858856201,19.542999267578125,0.0008273739949800074,-7.86653995513916,17.661699295043945,0.0008273739949800074,-7.736020088195801,17.58639907836914,0.08618590235710144,-7.86653995513916,17.661699295043945,0.0008273739949800074,-7.737259864807129,17.587099075317383,-0.08701329678297043,-8.773980140686035,15.470999717712402,0.0008273739949800074,-7.737259864807129,17.587099075317383,-0.08701329678297043,-8.629790306091309,15.432299613952637,-0.08701329678297043,-8.773980140686035,15.470999717712402,0.0008273739949800074,-7.737259864807129,17.587099075317383,-0.08701329678297043,-7.736020088195801,17.58639907836914,0.08618590235710144,-8.629790306091309,15.432299613952637,-0.08701329678297043,-7.736020088195801,17.58639907836914,0.08618590235710144,-8.628410339355469,15.432000160217285,0.08618590235710144,-8.629790306091309,15.432299613952637,-0.08701329678297043,-7.736020088195801,17.58639907836914,0.08618590235710144,-7.86653995513916,17.661699295043945,0.0008273739949800074,-8.628410339355469,15.432000160217285,0.08618590235710144,-7.86653995513916,17.661699295043945,0.0008273739949800074,-8.773980140686035,15.470999717712402,0.0008273739949800074,-8.628410339355469,15.432000160217285,0.08618590235710144,-8.773980140686035,15.470999717712402,0.0008273739949800074,-8.629790306091309,15.432299613952637,-0.08701329678297043,-9.083499908447266,13.119999885559082,0.0008273739949800074,-8.629790306091309,15.432299613952637,-0.08701329678297043,-8.934220314025879,13.119999885559082,-0.08701329678297043,-9.083499908447266,13.119999885559082,0.0008273739949800074,-8.629790306091309,15.432299613952637,-0.08701329678297043,-8.628410339355469,15.432000160217285,0.08618590235710144,-8.934220314025879,13.119999885559082,-0.08701329678297043,-8.628410339355469,15.432000160217285,0.08618590235710144,-8.93278980255127,13.119999885559082,0.08618590235710144,-8.934220314025879,13.119999885559082,-0.08701329678297043,-8.628410339355469,15.432000160217285,0.08618590235710144,-8.773980140686035,15.470999717712402,0.0008273739949800074,-8.93278980255127,13.119999885559082,0.08618590235710144,-8.773980140686035,15.470999717712402,0.0008273739949800074,-9.083499908447266,13.119999885559082,0.0008273739949800074,-8.93278980255127,13.119999885559082,0.08618590235710144,-9.083499908447266,13.119999885559082,0.0008273739949800074,-8.934220314025879,13.119999885559082,-0.08701329678297043,-8.773980140686035,10.769000053405762,0.0008273739949800074,-8.934220314025879,13.119999885559082,-0.08701329678297043,-8.629790306091309,10.807700157165527,-0.08701329678297043,-8.773980140686035,10.769000053405762,0.0008273739949800074,-8.934220314025879,13.119999885559082,-0.08701329678297043,-8.93278980255127,13.119999885559082,0.08618590235710144,-8.629790306091309,10.807700157165527,-0.08701329678297043,-8.93278980255127,13.119999885559082,0.08618590235710144,-8.628410339355469,10.807999610900879,0.08618590235710144,-8.629790306091309,10.807700157165527,-0.08701329678297043,-8.93278980255127,13.119999885559082,0.08618590235710144,-9.083499908447266,13.119999885559082,0.0008273739949800074,-8.628410339355469,10.807999610900879,0.08618590235710144,-9.083499908447266,13.119999885559082,0.0008273739949800074,-8.773980140686035,10.769000053405762,0.0008273739949800074,-8.628410339355469,10.807999610900879,0.08618590235710144,-8.773980140686035,10.769000053405762,0.0008273739949800074,-8.629790306091309,10.807700157165527,-0.08701329678297043,-7.86653995513916,8.57824993133545,0.0008273739949800074,-8.629790306091309,10.807700157165527,-0.08701329678297043,-7.737259864807129,8.6528902053833,-0.08701329678297043,-7.86653995513916,8.57824993133545,0.0008273739949800074,-8.629790306091309,10.807700157165527,-0.08701329678297043,-8.628410339355469,10.807999610900879,0.08618590235710144,-7.737259864807129,8.6528902053833,-0.08701329678297043,-8.628410339355469,10.807999610900879,0.08618590235710144,-7.736020088195801,8.653610229492188,0.08618590235710144,-7.737259864807129,8.6528902053833,-0.08701329678297043,-8.628410339355469,10.807999610900879,0.08618590235710144,-8.773980140686035,10.769000053405762,0.0008273739949800074,-7.736020088195801,8.653610229492188,0.08618590235710144,-8.773980140686035,10.769000053405762,0.0008273739949800074,-7.86653995513916,8.57824993133545,0.0008273739949800074,-7.736020088195801,8.653610229492188,0.08618590235710144,-7.86653995513916,8.57824993133545,0.0008273739949800074,-7.737259864807129,8.6528902053833,-0.08701329678297043,-6.429190158843994,6.703780174255371,0.0008273739949800074,-7.737259864807129,8.6528902053833,-0.08701329678297043,-6.3144001960754395,6.799220085144043,-0.08701329678297043,-6.429190158843994,6.703780174255371,0.0008273739949800074,-7.737259864807129,8.6528902053833,-0.08701329678297043,-7.736020088195801,8.653610229492188,0.08618590235710144,-6.3144001960754395,6.799220085144043,-0.08701329678297043,-7.736020088195801,8.653610229492188,0.08618590235710144,-6.313300132751465,6.8001298904418945,0.08618590235710144,-6.3144001960754395,6.799220085144043,-0.08701329678297043,-7.736020088195801,8.653610229492188,0.08618590235710144,-7.86653995513916,8.57824993133545,0.0008273739949800074,-6.313300132751465,6.8001298904418945,0.08618590235710144,-7.86653995513916,8.57824993133545,0.0008273739949800074,-6.429190158843994,6.703780174255371,0.0008273739949800074,-6.313300132751465,6.8001298904418945,0.08618590235710144,-6.429190158843994,6.703780174255371,0.0008273739949800074,-6.3144001960754395,6.799220085144043,-0.08701329678297043,-1.1819499731063843,0.8826429843902588,0.0008273739949800074,-6.3144001960754395,6.799220085144043,-0.08701329678297043,-1.042580008506775,0.936119019985199,-0.08701329678297043,-1.1819499731063843,0.8826429843902588,0.0008273739949800074,-6.3144001960754395,6.799220085144043,-0.08701329678297043,-6.313300132751465,6.8001298904418945,0.08618590235710144,-1.042580008506775,0.936119019985199,-0.08701329678297043,-6.313300132751465,6.8001298904418945,0.08618590235710144,-1.0412399768829346,0.9366329908370972,0.08618590235710144,-1.042580008506775,0.936119019985199,-0.08701329678297043,-6.313300132751465,6.8001298904418945,0.08618590235710144,-6.429190158843994,6.703780174255371,0.0008273739949800074,-1.0412399768829346,0.9366329908370972,0.08618590235710144,-6.429190158843994,6.703780174255371,0.0008273739949800074,-1.1819499731063843,0.8826429843902588,0.0008273739949800074,-1.0412399768829346,0.9366329908370972,0.08618590235710144,-1.1819499731063843,0.8826429843902588,0.0008273739949800074,-1.042580008506775,0.936119019985199,-0.08701329678297043,-1.1880799531936646,0.5915169715881348,0.0008273739949800074,-1.042580008506775,0.936119019985199,-0.08701329678297043,-1.0395499467849731,0.5766159892082214,-0.08701329678297043,-1.1880799531936646,0.5915169715881348,0.0008273739949800074,-1.042580008506775,0.936119019985199,-0.08701329678297043,-1.0412399768829346,0.9366329908370972,0.08618590235710144,-1.0395499467849731,0.5766159892082214,-0.08701329678297043,-1.0412399768829346,0.9366329908370972,0.08618590235710144,-1.0381300449371338,0.5764729976654053,0.08618590235710144,-1.0395499467849731,0.5766159892082214,-0.08701329678297043,-1.0412399768829346,0.9366329908370972,0.08618590235710144,-1.1819499731063843,0.8826429843902588,0.0008273739949800074,-1.0381300449371338,0.5764729976654053,0.08618590235710144,-1.1819499731063843,0.8826429843902588,0.0008273739949800074,-1.1880799531936646,0.5915169715881348,0.0008273739949800074,-1.0381300449371338,0.5764729976654053,0.08618590235710144,-1.1880799531936646,0.5915169715881348,0.0008273739949800074,-1.0395499467849731,0.5766159892082214,-0.08701329678297043,-1.444000005722046,-0.6686909794807434,0.0008273739949800074,-1.0395499467849731,0.5766159892082214,-0.08701329678297043,-1.2981499433517456,-0.7005019783973694,-0.08701329678297043,-1.444000005722046,-0.6686909794807434,0.0008273739949800074,-1.0395499467849731,0.5766159892082214,-0.08701329678297043,-1.0381300449371338,0.5764729976654053,0.08618590235710144,-1.2981499433517456,-0.7005019783973694,-0.08701329678297043,-1.0381300449371338,0.5764729976654053,0.08618590235710144,-1.2967499494552612,-0.7008069753646851,0.08618590235710144,-1.2981499433517456,-0.7005019783973694,-0.08701329678297043,-1.0381300449371338,0.5764729976654053,0.08618590235710144,-1.1880799531936646,0.5915169715881348,0.0008273739949800074,-1.2967499494552612,-0.7008069753646851,0.08618590235710144,-1.1880799531936646,0.5915169715881348,0.0008273739949800074,-1.444000005722046,-0.6686909794807434,0.0008273739949800074,-1.2967499494552612,-0.7008069753646851,0.08618590235710144,-1.444000005722046,-0.6686909794807434,0.0008273739949800074,-1.2981499433517456,-0.7005019783973694,-0.08701329678297043,-1.2967499494552612,-0.7008069753646851,0.08618590235710144,0.00012905700714327395,22.203399658203125,0.0010410300455987453,-0.06198360025882721,22.054100036621094,-0.06107170134782791,-1.661810040473938,21.893999099731445,1.6629799604415894,-0.06198360025882721,22.054100036621094,-0.06107170134782791,-1.6965999603271484,21.749799728393555,1.5735499858856201,-1.661810040473938,21.893999099731445,1.6629799604415894,-0.06198360025882721,22.054100036621094,-0.06107170134782791,0.060486700385808945,22.05270004272461,0.06139859929680824,-1.6965999603271484,21.749799728393555,1.5735499858856201,0.060486700385808945,22.05270004272461,0.06139859929680824,-1.5738699436187744,21.74839973449707,1.6957600116729736,-1.6965999603271484,21.749799728393555,1.5735499858856201,0.060486700385808945,22.05270004272461,0.06139859929680824,0.00012905700714327395,22.203399658203125,0.0010410300455987453,-1.5738699436187744,21.74839973449707,1.6957600116729736,0.00012905700714327395,22.203399658203125,0.0010410300455987453,-1.661810040473938,21.893999099731445,1.6629799604415894,-1.5738699436187744,21.74839973449707,1.6957600116729736,-1.661810040473938,21.893999099731445,1.6629799604415894,-1.6965999603271484,21.749799728393555,1.5735499858856201,-3.2109200954437256,20.986499786376953,3.212090015411377,-1.6965999603271484,21.749799728393555,1.5735499858856201,-3.220249891281128,20.8572998046875,3.0971999168395996,-3.2109200954437256,20.986499786376953,3.212090015411377,-1.6965999603271484,21.749799728393555,1.5735499858856201,-1.5738699436187744,21.74839973449707,1.6957600116729736,-3.220249891281128,20.8572998046875,3.0971999168395996,-1.5738699436187744,21.74839973449707,1.6957600116729736,-3.0972700119018555,20.856000900268555,3.2191600799560547,-3.220249891281128,20.8572998046875,3.0971999168395996,-1.5738699436187744,21.74839973449707,1.6957600116729736,-1.661810040473938,21.893999099731445,1.6629799604415894,-3.0972700119018555,20.856000900268555,3.2191600799560547,-1.661810040473938,21.893999099731445,1.6629799604415894,-3.2109200954437256,20.986499786376953,3.212090015411377,-3.0972700119018555,20.856000900268555,3.2191600799560547,-3.2109200954437256,20.986499786376953,3.212090015411377,-3.220249891281128,20.8572998046875,3.0971999168395996,-4.5411601066589355,19.542999267578125,4.542329788208008,-3.220249891281128,20.8572998046875,3.0971999168395996,-4.528639793395996,19.437400817871094,4.405580043792725,-4.5411601066589355,19.542999267578125,4.542329788208008,-3.220249891281128,20.8572998046875,3.0971999168395996,-3.0972700119018555,20.856000900268555,3.2191600799560547,-4.528639793395996,19.437400817871094,4.405580043792725,-3.0972700119018555,20.856000900268555,3.2191600799560547,-4.405449867248535,19.436399459838867,4.527339935302734,-4.528639793395996,19.437400817871094,4.405580043792725,-3.0972700119018555,20.856000900268555,3.2191600799560547,-3.2109200954437256,20.986499786376953,3.212090015411377,-4.405449867248535,19.436399459838867,4.527339935302734,-3.2109200954437256,20.986499786376953,3.212090015411377,-4.5411601066589355,19.542999267578125,4.542329788208008,-4.405449867248535,19.436399459838867,4.527339935302734,-4.5411601066589355,19.542999267578125,4.542329788208008,-4.528639793395996,19.437400817871094,4.405580043792725,-5.5619001388549805,17.661699295043945,5.563069820404053,-4.528639793395996,19.437400817871094,4.405580043792725,-5.532599925994873,17.587099075317383,5.409540176391602,-5.5619001388549805,17.661699295043945,5.563069820404053,-4.528639793395996,19.437400817871094,4.405580043792725,-4.405449867248535,19.436399459838867,4.527339935302734,-5.532599925994873,17.587099075317383,5.409540176391602,-4.405449867248535,19.436399459838867,4.527339935302734,-5.409249782562256,17.58639907836914,5.531129837036133,-5.532599925994873,17.587099075317383,5.409540176391602,-4.405449867248535,19.436399459838867,4.527339935302734,-4.5411601066589355,19.542999267578125,4.542329788208008,-5.409249782562256,17.58639907836914,5.531129837036133,-4.5411601066589355,19.542999267578125,4.542329788208008,-5.5619001388549805,17.661699295043945,5.563069820404053,-5.409249782562256,17.58639907836914,5.531129837036133,-5.5619001388549805,17.661699295043945,5.563069820404053,-5.532599925994873,17.587099075317383,5.409540176391602,-6.203559875488281,15.470999717712402,6.204730033874512,-5.532599925994873,17.587099075317383,5.409540176391602,-6.163710117340088,15.432299613952637,6.0406599044799805,-6.203559875488281,15.470999717712402,6.204730033874512,-5.532599925994873,17.587099075317383,5.409540176391602,-5.409249782562256,17.58639907836914,5.531129837036133,-6.163710117340088,15.432299613952637,6.0406599044799805,-5.409249782562256,17.58639907836914,5.531129837036133,-6.040259838104248,15.432000160217285,6.162149906158447,-6.163710117340088,15.432299613952637,6.0406599044799805,-5.409249782562256,17.58639907836914,5.531129837036133,-5.5619001388549805,17.661699295043945,5.563069820404053,-6.040259838104248,15.432000160217285,6.162149906158447,-5.5619001388549805,17.661699295043945,5.563069820404053,-6.203559875488281,15.470999717712402,6.204730033874512,-6.040259838104248,15.432000160217285,6.162149906158447,-6.203559875488281,15.470999717712402,6.204730033874512,-6.163710117340088,15.432299613952637,6.0406599044799805,-6.422420024871826,13.119999885559082,6.423590183258057,-6.163710117340088,15.432299613952637,6.0406599044799805,-6.378970146179199,13.119999885559082,6.255919933319092,-6.422420024871826,13.119999885559082,6.423590183258057,-6.163710117340088,15.432299613952637,6.0406599044799805,-6.040259838104248,15.432000160217285,6.162149906158447,-6.378970146179199,13.119999885559082,6.255919933319092,-6.040259838104248,15.432000160217285,6.162149906158447,-6.255489826202393,13.119999885559082,6.377379894256592,-6.378970146179199,13.119999885559082,6.255919933319092,-6.040259838104248,15.432000160217285,6.162149906158447,-6.203559875488281,15.470999717712402,6.204730033874512,-6.255489826202393,13.119999885559082,6.377379894256592,-6.203559875488281,15.470999717712402,6.204730033874512,-6.422420024871826,13.119999885559082,6.423590183258057,-6.255489826202393,13.119999885559082,6.377379894256592,-6.422420024871826,13.119999885559082,6.423590183258057,-6.378970146179199,13.119999885559082,6.255919933319092,-6.203559875488281,10.769000053405762,6.204730033874512,-6.378970146179199,13.119999885559082,6.255919933319092,-6.163710117340088,10.807700157165527,6.0406599044799805,-6.203559875488281,10.769000053405762,6.204730033874512,-6.378970146179199,13.119999885559082,6.255919933319092,-6.255489826202393,13.119999885559082,6.377379894256592,-6.163710117340088,10.807700157165527,6.0406599044799805,-6.255489826202393,13.119999885559082,6.377379894256592,-6.040259838104248,10.807999610900879,6.162149906158447,-6.163710117340088,10.807700157165527,6.0406599044799805,-6.255489826202393,13.119999885559082,6.377379894256592,-6.422420024871826,13.119999885559082,6.423590183258057,-6.040259838104248,10.807999610900879,6.162149906158447,-6.422420024871826,13.119999885559082,6.423590183258057,-6.203559875488281,10.769000053405762,6.204730033874512,-6.040259838104248,10.807999610900879,6.162149906158447,-6.203559875488281,10.769000053405762,6.204730033874512,-6.163710117340088,10.807700157165527,6.0406599044799805,-5.5619001388549805,8.57824993133545,5.563069820404053,-6.163710117340088,10.807700157165527,6.0406599044799805,-5.532599925994873,8.6528902053833,5.409540176391602,-5.5619001388549805,8.57824993133545,5.563069820404053,-6.163710117340088,10.807700157165527,6.0406599044799805,-6.040259838104248,10.807999610900879,6.162149906158447,-5.532599925994873,8.6528902053833,5.409540176391602,-6.040259838104248,10.807999610900879,6.162149906158447,-5.409249782562256,8.653610229492188,5.531129837036133,-5.532599925994873,8.6528902053833,5.409540176391602,-6.040259838104248,10.807999610900879,6.162149906158447,-6.203559875488281,10.769000053405762,6.204730033874512,-5.409249782562256,8.653610229492188,5.531129837036133,-6.203559875488281,10.769000053405762,6.204730033874512,-5.5619001388549805,8.57824993133545,5.563069820404053,-5.409249782562256,8.653610229492188,5.531129837036133,-5.5619001388549805,8.57824993133545,5.563069820404053,-5.532599925994873,8.6528902053833,5.409540176391602,-4.545539855957031,6.703780174255371,4.546710014343262,-5.532599925994873,8.6528902053833,5.409540176391602,-4.526480197906494,6.799220085144043,4.403429985046387,-4.545539855957031,6.703780174255371,4.546710014343262,-5.532599925994873,8.6528902053833,5.409540176391602,-5.409249782562256,8.653610229492188,5.531129837036133,-4.526480197906494,6.799220085144043,4.403429985046387,-5.409249782562256,8.653610229492188,5.531129837036133,-4.4032301902771,6.8001298904418945,4.525119781494141,-4.526480197906494,6.799220085144043,4.403429985046387,-5.409249782562256,8.653610229492188,5.531129837036133,-5.5619001388549805,8.57824993133545,5.563069820404053,-4.4032301902771,6.8001298904418945,4.525119781494141,-5.5619001388549805,8.57824993133545,5.563069820404053,-4.545539855957031,6.703780174255371,4.546710014343262,-4.4032301902771,6.8001298904418945,4.525119781494141,-4.545539855957031,6.703780174255371,4.546710014343262,-4.526480197906494,6.799220085144043,4.403429985046387,-0.835178017616272,0.8826429843902588,0.8363479971885681,-4.526480197906494,6.799220085144043,4.403429985046387,-0.7987409830093384,0.936119019985199,0.6756849884986877,-0.835178017616272,0.8826429843902588,0.8363479971885681,-4.526480197906494,6.799220085144043,4.403429985046387,-4.4032301902771,6.8001298904418945,4.525119781494141,-0.7987409830093384,0.936119019985199,0.6756849884986877,-4.4032301902771,6.8001298904418945,4.525119781494141,-0.675324022769928,0.9366329908370972,0.7972099781036377,-0.7987409830093384,0.936119019985199,0.6756849884986877,-4.4032301902771,6.8001298904418945,4.525119781494141,-4.545539855957031,6.703780174255371,4.546710014343262,-0.675324022769928,0.9366329908370972,0.7972099781036377,-4.545539855957031,6.703780174255371,4.546710014343262,-0.835178017616272,0.8826429843902588,0.8363479971885681,-0.675324022769928,0.9366329908370972,0.7972099781036377,-0.835178017616272,0.8826429843902588,0.8363479971885681,-0.7987409830093384,0.936119019985199,0.6756849884986877,-0.8395180106163025,0.5915169715881348,0.8406879901885986,-0.7987409830093384,0.936119019985199,0.6756849884986877,-0.7966020107269287,0.5766159892082214,0.6735470294952393,-0.8395180106163025,0.5915169715881348,0.8406879901885986,-0.7987409830093384,0.936119019985199,0.6756849884986877,-0.675324022769928,0.9366329908370972,0.7972099781036377,-0.7966020107269287,0.5766159892082214,0.6735470294952393,-0.675324022769928,0.9366329908370972,0.7972099781036377,-0.6731230020523071,0.5764729976654053,0.7950090169906616,-0.7966020107269287,0.5766159892082214,0.6735470294952393,-0.675324022769928,0.9366329908370972,0.7972099781036377,-0.835178017616272,0.8826429843902588,0.8363479971885681,-0.6731230020523071,0.5764729976654053,0.7950090169906616,-0.835178017616272,0.8826429843902588,0.8363479971885681,-0.8395180106163025,0.5915169715881348,0.8406879901885986,-0.6731230020523071,0.5764729976654053,0.7950090169906616,-0.8395180106163025,0.5915169715881348,0.8406879901885986,-0.7966020107269287,0.5766159892082214,0.6735470294952393,-1.0204800367355347,-0.6686909794807434,1.021649956703186,-0.7966020107269287,0.5766159892082214,0.6735470294952393,-0.9794589877128601,-0.7005019783973694,0.8564029932022095,-1.0204800367355347,-0.6686909794807434,1.021649956703186,-0.7966020107269287,0.5766159892082214,0.6735470294952393,-0.6731230020523071,0.5764729976654053,0.7950090169906616,-0.9794589877128601,-0.7005019783973694,0.8564029932022095,-0.6731230020523071,0.5764729976654053,0.7950090169906616,-0.8559979796409607,-0.7008069753646851,0.9778839945793152,-0.9794589877128601,-0.7005019783973694,0.8564029932022095,-0.6731230020523071,0.5764729976654053,0.7950090169906616,-0.8395180106163025,0.5915169715881348,0.8406879901885986,-0.8559979796409607,-0.7008069753646851,0.9778839945793152,-0.8395180106163025,0.5915169715881348,0.8406879901885986,-1.0204800367355347,-0.6686909794807434,1.021649956703186,-0.8559979796409607,-0.7008069753646851,0.9778839945793152,-1.0204800367355347,-0.6686909794807434,1.021649956703186,-0.9794589877128601,-0.7005019783973694,0.8564029932022095,-0.8559979796409607,-0.7008069753646851,0.9778839945793152,0.0008273739949800074,22.203399658203125,0.0006448599742725492,-0.08701329678297043,22.054100036621094,0.0006448529893532395,0.0008273739949800074,21.893999099731445,2.350980043411255,-0.08701329678297043,22.054100036621094,0.0006448529893532395,-0.08701329678297043,21.749799728393555,2.312350034713745,0.0008273739949800074,21.893999099731445,2.350980043411255,-0.08701329678297043,22.054100036621094,0.0006448529893532395,0.08618590235710144,22.05270004272461,0.000644851999823004,-0.08701329678297043,21.749799728393555,2.312350034713745,0.08618590235710144,22.05270004272461,0.000644851999823004,0.08618590235710144,21.74839973449707,2.3119699954986572,-0.08701329678297043,21.749799728393555,2.312350034713745,0.08618590235710144,22.05270004272461,0.000644851999823004,0.0008273739949800074,22.203399658203125,0.0006448599742725492,0.08618590235710144,21.74839973449707,2.3119699954986572,0.0008273739949800074,22.203399658203125,0.0006448599742725492,0.0008273739949800074,21.893999099731445,2.350980043411255,0.08618590235710144,21.74839973449707,2.3119699954986572,0.0008273739949800074,21.893999099731445,2.350980043411255,-0.08701329678297043,21.749799728393555,2.312350034713745,0.0008273739949800074,20.986499786376953,4.541749954223633,-0.08701329678297043,21.749799728393555,2.312350034713745,-0.08701329678297043,20.8572998046875,4.4671101570129395,0.0008273739949800074,20.986499786376953,4.541749954223633,-0.08701329678297043,21.749799728393555,2.312350034713745,0.08618590235710144,21.74839973449707,2.3119699954986572,-0.08701329678297043,20.8572998046875,4.4671101570129395,0.08618590235710144,21.74839973449707,2.3119699954986572,0.08618590235710144,20.856000900268555,4.466390132904053,-0.08701329678297043,20.8572998046875,4.4671101570129395,0.08618590235710144,21.74839973449707,2.3119699954986572,0.0008273739949800074,21.893999099731445,2.350980043411255,0.08618590235710144,20.856000900268555,4.466390132904053,0.0008273739949800074,21.893999099731445,2.350980043411255,0.0008273739949800074,20.986499786376953,4.541749954223633,0.08618590235710144,20.856000900268555,4.466390132904053,0.0008273739949800074,20.986499786376953,4.541749954223633,-0.08701329678297043,20.8572998046875,4.4671101570129395,0.0008273739949800074,19.542999267578125,6.422999858856201,-0.08701329678297043,20.8572998046875,4.4671101570129395,-0.08701329678297043,19.437400817871094,6.317450046539307,0.0008273739949800074,19.542999267578125,6.422999858856201,-0.08701329678297043,20.8572998046875,4.4671101570129395,0.08618590235710144,20.856000900268555,4.466390132904053,-0.08701329678297043,19.437400817871094,6.317450046539307,0.08618590235710144,20.856000900268555,4.466390132904053,0.08618590235710144,19.436399459838867,6.31643009185791,-0.08701329678297043,19.437400817871094,6.317450046539307,0.08618590235710144,20.856000900268555,4.466390132904053,0.0008273739949800074,20.986499786376953,4.541749954223633,0.08618590235710144,19.436399459838867,6.31643009185791,0.0008273739949800074,20.986499786376953,4.541749954223633,0.0008273739949800074,19.542999267578125,6.422999858856201,0.08618590235710144,19.436399459838867,6.31643009185791,0.0008273739949800074,19.542999267578125,6.422999858856201,-0.08701329678297043,19.437400817871094,6.317450046539307,0.0008273739949800074,17.661699295043945,7.86653995513916,-0.08701329678297043,19.437400817871094,6.317450046539307,-0.08701329678297043,17.587099075317383,7.737259864807129,0.0008273739949800074,17.661699295043945,7.86653995513916,-0.08701329678297043,19.437400817871094,6.317450046539307,0.08618590235710144,19.436399459838867,6.31643009185791,-0.08701329678297043,17.587099075317383,7.737259864807129,0.08618590235710144,19.436399459838867,6.31643009185791,0.08618590235710144,17.58639907836914,7.736020088195801,-0.08701329678297043,17.587099075317383,7.737259864807129,0.08618590235710144,19.436399459838867,6.31643009185791,0.0008273739949800074,19.542999267578125,6.422999858856201,0.08618590235710144,17.58639907836914,7.736020088195801,0.0008273739949800074,19.542999267578125,6.422999858856201,0.0008273739949800074,17.661699295043945,7.86653995513916,0.08618590235710144,17.58639907836914,7.736020088195801,0.0008273739949800074,17.661699295043945,7.86653995513916,-0.08701329678297043,17.587099075317383,7.737259864807129,0.0008273739949800074,15.470999717712402,8.773980140686035,-0.08701329678297043,17.587099075317383,7.737259864807129,-0.08701329678297043,15.432299613952637,8.629790306091309,0.0008273739949800074,15.470999717712402,8.773980140686035,-0.08701329678297043,17.587099075317383,7.737259864807129,0.08618590235710144,17.58639907836914,7.736020088195801,-0.08701329678297043,15.432299613952637,8.629790306091309,0.08618590235710144,17.58639907836914,7.736020088195801,0.08618590235710144,15.432000160217285,8.628410339355469,-0.08701329678297043,15.432299613952637,8.629790306091309,0.08618590235710144,17.58639907836914,7.736020088195801,0.0008273739949800074,17.661699295043945,7.86653995513916,0.08618590235710144,15.432000160217285,8.628410339355469,0.0008273739949800074,17.661699295043945,7.86653995513916,0.0008273739949800074,15.470999717712402,8.773980140686035,0.08618590235710144,15.432000160217285,8.628410339355469,0.0008273739949800074,15.470999717712402,8.773980140686035,-0.08701329678297043,15.432299613952637,8.629790306091309,0.0008273739949800074,13.119999885559082,9.083499908447266,-0.08701329678297043,15.432299613952637,8.629790306091309,-0.08701329678297043,13.119999885559082,8.934220314025879,0.0008273739949800074,13.119999885559082,9.083499908447266,-0.08701329678297043,15.432299613952637,8.629790306091309,0.08618590235710144,15.432000160217285,8.628410339355469,-0.08701329678297043,13.119999885559082,8.934220314025879,0.08618590235710144,15.432000160217285,8.628410339355469,0.08618590235710144,13.119999885559082,8.93278980255127,-0.08701329678297043,13.119999885559082,8.934220314025879,0.08618590235710144,15.432000160217285,8.628410339355469,0.0008273739949800074,15.470999717712402,8.773980140686035,0.08618590235710144,13.119999885559082,8.93278980255127,0.0008273739949800074,15.470999717712402,8.773980140686035,0.0008273739949800074,13.119999885559082,9.083499908447266,0.08618590235710144,13.119999885559082,8.93278980255127,0.0008273739949800074,13.119999885559082,9.083499908447266,-0.08701329678297043,13.119999885559082,8.934220314025879,0.0008273739949800074,10.769000053405762,8.773980140686035,-0.08701329678297043,13.119999885559082,8.934220314025879,-0.08701329678297043,10.807700157165527,8.629790306091309,0.0008273739949800074,10.769000053405762,8.773980140686035,-0.08701329678297043,13.119999885559082,8.934220314025879,0.08618590235710144,13.119999885559082,8.93278980255127,-0.08701329678297043,10.807700157165527,8.629790306091309,0.08618590235710144,13.119999885559082,8.93278980255127,0.08618590235710144,10.807999610900879,8.628410339355469,-0.08701329678297043,10.807700157165527,8.629790306091309,0.08618590235710144,13.119999885559082,8.93278980255127,0.0008273739949800074,13.119999885559082,9.083499908447266,0.08618590235710144,10.807999610900879,8.628410339355469,0.0008273739949800074,13.119999885559082,9.083499908447266,0.0008273739949800074,10.769000053405762,8.773980140686035,0.08618590235710144,10.807999610900879,8.628410339355469,0.0008273739949800074,10.769000053405762,8.773980140686035,-0.08701329678297043,10.807700157165527,8.629790306091309,0.0008273739949800074,8.57824993133545,7.86653995513916,-0.08701329678297043,10.807700157165527,8.629790306091309,-0.08701329678297043,8.6528902053833,7.737259864807129,0.0008273739949800074,8.57824993133545,7.86653995513916,-0.08701329678297043,10.807700157165527,8.629790306091309,0.08618590235710144,10.807999610900879,8.628410339355469,-0.08701329678297043,8.6528902053833,7.737259864807129,0.08618590235710144,10.807999610900879,8.628410339355469,0.08618590235710144,8.653610229492188,7.736020088195801,-0.08701329678297043,8.6528902053833,7.737259864807129,0.08618590235710144,10.807999610900879,8.628410339355469,0.0008273739949800074,10.769000053405762,8.773980140686035,0.08618590235710144,8.653610229492188,7.736020088195801,0.0008273739949800074,10.769000053405762,8.773980140686035,0.0008273739949800074,8.57824993133545,7.86653995513916,0.08618590235710144,8.653610229492188,7.736020088195801,0.0008273739949800074,8.57824993133545,7.86653995513916,-0.08701329678297043,8.6528902053833,7.737259864807129,0.0008273739949800074,6.703780174255371,6.429190158843994,-0.08701329678297043,8.6528902053833,7.737259864807129,-0.08701329678297043,6.799220085144043,6.3144001960754395,0.0008273739949800074,6.703780174255371,6.429190158843994,-0.08701329678297043,8.6528902053833,7.737259864807129,0.08618590235710144,8.653610229492188,7.736020088195801,-0.08701329678297043,6.799220085144043,6.3144001960754395,0.08618590235710144,8.653610229492188,7.736020088195801,0.08618590235710144,6.8001298904418945,6.313300132751465,-0.08701329678297043,6.799220085144043,6.3144001960754395,0.08618590235710144,8.653610229492188,7.736020088195801,0.0008273739949800074,8.57824993133545,7.86653995513916,0.08618590235710144,6.8001298904418945,6.313300132751465,0.0008273739949800074,8.57824993133545,7.86653995513916,0.0008273739949800074,6.703780174255371,6.429190158843994,0.08618590235710144,6.8001298904418945,6.313300132751465,0.0008273739949800074,6.703780174255371,6.429190158843994,-0.08701329678297043,6.799220085144043,6.3144001960754395,0.0008273739949800074,0.8826429843902588,1.1819499731063843,-0.08701329678297043,6.799220085144043,6.3144001960754395,-0.08701329678297043,0.936119019985199,1.042580008506775,0.0008273739949800074,0.8826429843902588,1.1819499731063843,-0.08701329678297043,6.799220085144043,6.3144001960754395,0.08618590235710144,6.8001298904418945,6.313300132751465,-0.08701329678297043,0.936119019985199,1.042580008506775,0.08618590235710144,6.8001298904418945,6.313300132751465,0.08618590235710144,0.9366329908370972,1.0412399768829346,-0.08701329678297043,0.936119019985199,1.042580008506775,0.08618590235710144,6.8001298904418945,6.313300132751465,0.0008273739949800074,6.703780174255371,6.429190158843994,0.08618590235710144,0.9366329908370972,1.0412399768829346,0.0008273739949800074,6.703780174255371,6.429190158843994,0.0008273739949800074,0.8826429843902588,1.1819499731063843,0.08618590235710144,0.9366329908370972,1.0412399768829346,0.0008273739949800074,0.8826429843902588,1.1819499731063843,-0.08701329678297043,0.936119019985199,1.042580008506775,0.0008273739949800074,0.5915169715881348,1.1880799531936646,-0.08701329678297043,0.936119019985199,1.042580008506775,-0.08701329678297043,0.5766159892082214,1.0395499467849731,0.0008273739949800074,0.5915169715881348,1.1880799531936646,-0.08701329678297043,0.936119019985199,1.042580008506775,0.08618590235710144,0.9366329908370972,1.0412399768829346,-0.08701329678297043,0.5766159892082214,1.0395499467849731,0.08618590235710144,0.9366329908370972,1.0412399768829346,0.08618590235710144,0.5764729976654053,1.0381300449371338,-0.08701329678297043,0.5766159892082214,1.0395499467849731,0.08618590235710144,0.9366329908370972,1.0412399768829346,0.0008273739949800074,0.8826429843902588,1.1819499731063843,0.08618590235710144,0.5764729976654053,1.0381300449371338,0.0008273739949800074,0.8826429843902588,1.1819499731063843,0.0008273739949800074,0.5915169715881348,1.1880799531936646,0.08618590235710144,0.5764729976654053,1.0381300449371338,0.0008273739949800074,0.5915169715881348,1.1880799531936646,-0.08701329678297043,0.5766159892082214,1.0395499467849731,0.0008273739949800074,-0.6686909794807434,1.444000005722046,-0.08701329678297043,0.5766159892082214,1.0395499467849731,-0.08701329678297043,-0.7005019783973694,1.2981499433517456,0.0008273739949800074,-0.6686909794807434,1.444000005722046,-0.08701329678297043,0.5766159892082214,1.0395499467849731,0.08618590235710144,0.5764729976654053,1.0381300449371338,-0.08701329678297043,-0.7005019783973694,1.2981499433517456,0.08618590235710144,0.5764729976654053,1.0381300449371338,0.08618590235710144,-0.7008069753646851,1.2967499494552612,-0.08701329678297043,-0.7005019783973694,1.2981499433517456,0.08618590235710144,0.5764729976654053,1.0381300449371338,0.0008273739949800074,0.5915169715881348,1.1880799531936646,0.08618590235710144,-0.7008069753646851,1.2967499494552612,0.0008273739949800074,0.5915169715881348,1.1880799531936646,0.0008273739949800074,-0.6686909794807434,1.444000005722046,0.08618590235710144,-0.7008069753646851,1.2967499494552612,0.0008273739949800074,-0.6686909794807434,1.444000005722046,-0.08701329678297043,-0.7005019783973694,1.2981499433517456,0.08618590235710144,-0.7008069753646851,1.2967499494552612,0.0010410300455987453,22.203399658203125,-0.00012905700714327395,-0.06107170134782791,22.054100036621094,0.06198360025882721,1.6629799604415894,21.893999099731445,1.661810040473938,-0.06107170134782791,22.054100036621094,0.06198360025882721,1.5735499858856201,21.749799728393555,1.6965999603271484,1.6629799604415894,21.893999099731445,1.661810040473938,-0.06107170134782791,22.054100036621094,0.06198360025882721,0.06139859929680824,22.05270004272461,-0.060486700385808945,1.5735499858856201,21.749799728393555,1.6965999603271484,0.06139859929680824,22.05270004272461,-0.060486700385808945,1.6957600116729736,21.74839973449707,1.5738699436187744,1.5735499858856201,21.749799728393555,1.6965999603271484,0.06139859929680824,22.05270004272461,-0.060486700385808945,0.0010410300455987453,22.203399658203125,-0.00012905700714327395,1.6957600116729736,21.74839973449707,1.5738699436187744,0.0010410300455987453,22.203399658203125,-0.00012905700714327395,1.6629799604415894,21.893999099731445,1.661810040473938,1.6957600116729736,21.74839973449707,1.5738699436187744,1.6629799604415894,21.893999099731445,1.661810040473938,1.5735499858856201,21.749799728393555,1.6965999603271484,3.212090015411377,20.986499786376953,3.2109200954437256,1.5735499858856201,21.749799728393555,1.6965999603271484,3.0971999168395996,20.8572998046875,3.220249891281128,3.212090015411377,20.986499786376953,3.2109200954437256,1.5735499858856201,21.749799728393555,1.6965999603271484,1.6957600116729736,21.74839973449707,1.5738699436187744,3.0971999168395996,20.8572998046875,3.220249891281128,1.6957600116729736,21.74839973449707,1.5738699436187744,3.2191600799560547,20.856000900268555,3.0972700119018555,3.0971999168395996,20.8572998046875,3.220249891281128,1.6957600116729736,21.74839973449707,1.5738699436187744,1.6629799604415894,21.893999099731445,1.661810040473938,3.2191600799560547,20.856000900268555,3.0972700119018555,1.6629799604415894,21.893999099731445,1.661810040473938,3.212090015411377,20.986499786376953,3.2109200954437256,3.2191600799560547,20.856000900268555,3.0972700119018555,3.212090015411377,20.986499786376953,3.2109200954437256,3.0971999168395996,20.8572998046875,3.220249891281128,4.542329788208008,19.542999267578125,4.5411601066589355,3.0971999168395996,20.8572998046875,3.220249891281128,4.405580043792725,19.437400817871094,4.528639793395996,4.542329788208008,19.542999267578125,4.5411601066589355,3.0971999168395996,20.8572998046875,3.220249891281128,3.2191600799560547,20.856000900268555,3.0972700119018555,4.405580043792725,19.437400817871094,4.528639793395996,3.2191600799560547,20.856000900268555,3.0972700119018555,4.527339935302734,19.436399459838867,4.405449867248535,4.405580043792725,19.437400817871094,4.528639793395996,3.2191600799560547,20.856000900268555,3.0972700119018555,3.212090015411377,20.986499786376953,3.2109200954437256,4.527339935302734,19.436399459838867,4.405449867248535,3.212090015411377,20.986499786376953,3.2109200954437256,4.542329788208008,19.542999267578125,4.5411601066589355,4.527339935302734,19.436399459838867,4.405449867248535,4.542329788208008,19.542999267578125,4.5411601066589355,4.405580043792725,19.437400817871094,4.528639793395996,5.563069820404053,17.661699295043945,5.5619001388549805,4.405580043792725,19.437400817871094,4.528639793395996,5.409540176391602,17.587099075317383,5.532599925994873,5.563069820404053,17.661699295043945,5.5619001388549805,4.405580043792725,19.437400817871094,4.528639793395996,4.527339935302734,19.436399459838867,4.405449867248535,5.409540176391602,17.587099075317383,5.532599925994873,4.527339935302734,19.436399459838867,4.405449867248535,5.531129837036133,17.58639907836914,5.409249782562256,5.409540176391602,17.587099075317383,5.532599925994873,4.527339935302734,19.436399459838867,4.405449867248535,4.542329788208008,19.542999267578125,4.5411601066589355,5.531129837036133,17.58639907836914,5.409249782562256,4.542329788208008,19.542999267578125,4.5411601066589355,5.563069820404053,17.661699295043945,5.5619001388549805,5.531129837036133,17.58639907836914,5.409249782562256,5.563069820404053,17.661699295043945,5.5619001388549805,5.409540176391602,17.587099075317383,5.532599925994873,6.204730033874512,15.470999717712402,6.203559875488281,5.409540176391602,17.587099075317383,5.532599925994873,6.0406599044799805,15.432299613952637,6.163710117340088,6.204730033874512,15.470999717712402,6.203559875488281,5.409540176391602,17.587099075317383,5.532599925994873,5.531129837036133,17.58639907836914,5.409249782562256,6.0406599044799805,15.432299613952637,6.163710117340088,5.531129837036133,17.58639907836914,5.409249782562256,6.162149906158447,15.432000160217285,6.040259838104248,6.0406599044799805,15.432299613952637,6.163710117340088,5.531129837036133,17.58639907836914,5.409249782562256,5.563069820404053,17.661699295043945,5.5619001388549805,6.162149906158447,15.432000160217285,6.040259838104248,5.563069820404053,17.661699295043945,5.5619001388549805,6.204730033874512,15.470999717712402,6.203559875488281,6.162149906158447,15.432000160217285,6.040259838104248,6.204730033874512,15.470999717712402,6.203559875488281,6.0406599044799805,15.432299613952637,6.163710117340088,6.423590183258057,13.119999885559082,6.422420024871826,6.0406599044799805,15.432299613952637,6.163710117340088,6.255919933319092,13.119999885559082,6.378970146179199,6.423590183258057,13.119999885559082,6.422420024871826,6.0406599044799805,15.432299613952637,6.163710117340088,6.162149906158447,15.432000160217285,6.040259838104248,6.255919933319092,13.119999885559082,6.378970146179199,6.162149906158447,15.432000160217285,6.040259838104248,6.377379894256592,13.119999885559082,6.255489826202393,6.255919933319092,13.119999885559082,6.378970146179199,6.162149906158447,15.432000160217285,6.040259838104248,6.204730033874512,15.470999717712402,6.203559875488281,6.377379894256592,13.119999885559082,6.255489826202393,6.204730033874512,15.470999717712402,6.203559875488281,6.423590183258057,13.119999885559082,6.422420024871826,6.377379894256592,13.119999885559082,6.255489826202393,6.423590183258057,13.119999885559082,6.422420024871826,6.255919933319092,13.119999885559082,6.378970146179199,6.204730033874512,10.769000053405762,6.203559875488281,6.255919933319092,13.119999885559082,6.378970146179199,6.0406599044799805,10.807700157165527,6.163710117340088,6.204730033874512,10.769000053405762,6.203559875488281,6.255919933319092,13.119999885559082,6.378970146179199,6.377379894256592,13.119999885559082,6.255489826202393,6.0406599044799805,10.807700157165527,6.163710117340088,6.377379894256592,13.119999885559082,6.255489826202393,6.162149906158447,10.807999610900879,6.040259838104248,6.0406599044799805,10.807700157165527,6.163710117340088,6.377379894256592,13.119999885559082,6.255489826202393,6.423590183258057,13.119999885559082,6.422420024871826,6.162149906158447,10.807999610900879,6.040259838104248,6.423590183258057,13.119999885559082,6.422420024871826,6.204730033874512,10.769000053405762,6.203559875488281,6.162149906158447,10.807999610900879,6.040259838104248,6.204730033874512,10.769000053405762,6.203559875488281,6.0406599044799805,10.807700157165527,6.163710117340088,5.563069820404053,8.57824993133545,5.5619001388549805,6.0406599044799805,10.807700157165527,6.163710117340088,5.409540176391602,8.6528902053833,5.532599925994873,5.563069820404053,8.57824993133545,5.5619001388549805,6.0406599044799805,10.807700157165527,6.163710117340088,6.162149906158447,10.807999610900879,6.040259838104248,5.409540176391602,8.6528902053833,5.532599925994873,6.162149906158447,10.807999610900879,6.040259838104248,5.531129837036133,8.653610229492188,5.409249782562256,5.409540176391602,8.6528902053833,5.532599925994873,6.162149906158447,10.807999610900879,6.040259838104248,6.204730033874512,10.769000053405762,6.203559875488281,5.531129837036133,8.653610229492188,5.409249782562256,6.204730033874512,10.769000053405762,6.203559875488281,5.563069820404053,8.57824993133545,5.5619001388549805,5.531129837036133,8.653610229492188,5.409249782562256,5.563069820404053,8.57824993133545,5.5619001388549805,5.409540176391602,8.6528902053833,5.532599925994873,4.546710014343262,6.703780174255371,4.545539855957031,5.409540176391602,8.6528902053833,5.532599925994873,4.403429985046387,6.799220085144043,4.526480197906494,4.546710014343262,6.703780174255371,4.545539855957031,5.409540176391602,8.6528902053833,5.532599925994873,5.531129837036133,8.653610229492188,5.409249782562256,4.403429985046387,6.799220085144043,4.526480197906494,5.531129837036133,8.653610229492188,5.409249782562256,4.525119781494141,6.8001298904418945,4.4032301902771,4.403429985046387,6.799220085144043,4.526480197906494,5.531129837036133,8.653610229492188,5.409249782562256,5.563069820404053,8.57824993133545,5.5619001388549805,4.525119781494141,6.8001298904418945,4.4032301902771,5.563069820404053,8.57824993133545,5.5619001388549805,4.546710014343262,6.703780174255371,4.545539855957031,4.525119781494141,6.8001298904418945,4.4032301902771,4.546710014343262,6.703780174255371,4.545539855957031,4.403429985046387,6.799220085144043,4.526480197906494,0.8363479971885681,0.8826429843902588,0.835178017616272,4.403429985046387,6.799220085144043,4.526480197906494,0.6756849884986877,0.936119019985199,0.7987409830093384,0.8363479971885681,0.8826429843902588,0.835178017616272,4.403429985046387,6.799220085144043,4.526480197906494,4.525119781494141,6.8001298904418945,4.4032301902771,0.6756849884986877,0.936119019985199,0.7987409830093384,4.525119781494141,6.8001298904418945,4.4032301902771,0.7972099781036377,0.9366329908370972,0.675324022769928,0.6756849884986877,0.936119019985199,0.7987409830093384,4.525119781494141,6.8001298904418945,4.4032301902771,4.546710014343262,6.703780174255371,4.545539855957031,0.7972099781036377,0.9366329908370972,0.675324022769928,4.546710014343262,6.703780174255371,4.545539855957031,0.8363479971885681,0.8826429843902588,0.835178017616272,0.7972099781036377,0.9366329908370972,0.675324022769928,0.8363479971885681,0.8826429843902588,0.835178017616272,0.6756849884986877,0.936119019985199,0.7987409830093384,0.8406879901885986,0.5915169715881348,0.8395180106163025,0.6756849884986877,0.936119019985199,0.7987409830093384,0.6735470294952393,0.5766159892082214,0.7966020107269287,0.8406879901885986,0.5915169715881348,0.8395180106163025,0.6756849884986877,0.936119019985199,0.7987409830093384,0.7972099781036377,0.9366329908370972,0.675324022769928,0.6735470294952393,0.5766159892082214,0.7966020107269287,0.7972099781036377,0.9366329908370972,0.675324022769928,0.7950090169906616,0.5764729976654053,0.6731230020523071,0.6735470294952393,0.5766159892082214,0.7966020107269287,0.7972099781036377,0.9366329908370972,0.675324022769928,0.8363479971885681,0.8826429843902588,0.835178017616272,0.7950090169906616,0.5764729976654053,0.6731230020523071,0.8363479971885681,0.8826429843902588,0.835178017616272,0.8406879901885986,0.5915169715881348,0.8395180106163025,0.7950090169906616,0.5764729976654053,0.6731230020523071,0.8406879901885986,0.5915169715881348,0.8395180106163025,0.6735470294952393,0.5766159892082214,0.7966020107269287,1.021649956703186,-0.6686909794807434,1.0204800367355347,0.6735470294952393,0.5766159892082214,0.7966020107269287,0.8564029932022095,-0.7005019783973694,0.9794589877128601,1.021649956703186,-0.6686909794807434,1.0204800367355347,0.6735470294952393,0.5766159892082214,0.7966020107269287,0.7950090169906616,0.5764729976654053,0.6731230020523071,0.8564029932022095,-0.7005019783973694,0.9794589877128601,0.7950090169906616,0.5764729976654053,0.6731230020523071,0.9778839945793152,-0.7008069753646851,0.8559979796409607,0.8564029932022095,-0.7005019783973694,0.9794589877128601,0.7950090169906616,0.5764729976654053,0.6731230020523071,0.8406879901885986,0.5915169715881348,0.8395180106163025,0.9778839945793152,-0.7008069753646851,0.8559979796409607,0.8406879901885986,0.5915169715881348,0.8395180106163025,1.021649956703186,-0.6686909794807434,1.0204800367355347,0.9778839945793152,-0.7008069753646851,0.8559979796409607,1.021649956703186,-0.6686909794807434,1.0204800367355347,0.8564029932022095,-0.7005019783973694,0.9794589877128601,0.9778839945793152,-0.7008069753646851,0.8559979796409607,0.0006448599742725492,22.203399658203125,-0.0008273739949800074,0.0006448529893532395,22.054100036621094,0.08701329678297043,2.350980043411255,21.893999099731445,-0.0008273739949800074,0.0006448529893532395,22.054100036621094,0.08701329678297043,2.312350034713745,21.749799728393555,0.08701329678297043,2.350980043411255,21.893999099731445,-0.0008273739949800074,0.0006448529893532395,22.054100036621094,0.08701329678297043,0.000644851999823004,22.05270004272461,-0.08618590235710144,2.312350034713745,21.749799728393555,0.08701329678297043,0.000644851999823004,22.05270004272461,-0.08618590235710144,2.3119699954986572,21.74839973449707,-0.08618590235710144,2.312350034713745,21.749799728393555,0.08701329678297043,0.000644851999823004,22.05270004272461,-0.08618590235710144,0.0006448599742725492,22.203399658203125,-0.0008273739949800074,2.3119699954986572,21.74839973449707,-0.08618590235710144,0.0006448599742725492,22.203399658203125,-0.0008273739949800074,2.350980043411255,21.893999099731445,-0.0008273739949800074,2.3119699954986572,21.74839973449707,-0.08618590235710144,2.350980043411255,21.893999099731445,-0.0008273739949800074,2.312350034713745,21.749799728393555,0.08701329678297043,4.541749954223633,20.986499786376953,-0.0008273739949800074,2.312350034713745,21.749799728393555,0.08701329678297043,4.4671101570129395,20.8572998046875,0.08701329678297043,4.541749954223633,20.986499786376953,-0.0008273739949800074,2.312350034713745,21.749799728393555,0.08701329678297043,2.3119699954986572,21.74839973449707,-0.08618590235710144,4.4671101570129395,20.8572998046875,0.08701329678297043,2.3119699954986572,21.74839973449707,-0.08618590235710144,4.466390132904053,20.856000900268555,-0.08618590235710144,4.4671101570129395,20.8572998046875,0.08701329678297043,2.3119699954986572,21.74839973449707,-0.08618590235710144,2.350980043411255,21.893999099731445,-0.0008273739949800074,4.466390132904053,20.856000900268555,-0.08618590235710144,2.350980043411255,21.893999099731445,-0.0008273739949800074,4.541749954223633,20.986499786376953,-0.0008273739949800074,4.466390132904053,20.856000900268555,-0.08618590235710144,4.541749954223633,20.986499786376953,-0.0008273739949800074,4.4671101570129395,20.8572998046875,0.08701329678297043,6.422999858856201,19.542999267578125,-0.0008273739949800074,4.4671101570129395,20.8572998046875,0.08701329678297043,6.317450046539307,19.437400817871094,0.08701329678297043,6.422999858856201,19.542999267578125,-0.0008273739949800074,4.4671101570129395,20.8572998046875,0.08701329678297043,4.466390132904053,20.856000900268555,-0.08618590235710144,6.317450046539307,19.437400817871094,0.08701329678297043,4.466390132904053,20.856000900268555,-0.08618590235710144,6.31643009185791,19.436399459838867,-0.08618590235710144,6.317450046539307,19.437400817871094,0.08701329678297043,4.466390132904053,20.856000900268555,-0.08618590235710144,4.541749954223633,20.986499786376953,-0.0008273739949800074,6.31643009185791,19.436399459838867,-0.08618590235710144,4.541749954223633,20.986499786376953,-0.0008273739949800074,6.422999858856201,19.542999267578125,-0.0008273739949800074,6.31643009185791,19.436399459838867,-0.08618590235710144,6.422999858856201,19.542999267578125,-0.0008273739949800074,6.317450046539307,19.437400817871094,0.08701329678297043,7.86653995513916,17.661699295043945,-0.0008273739949800074,6.317450046539307,19.437400817871094,0.08701329678297043,7.737259864807129,17.587099075317383,0.08701329678297043,7.86653995513916,17.661699295043945,-0.0008273739949800074,6.317450046539307,19.437400817871094,0.08701329678297043,6.31643009185791,19.436399459838867,-0.08618590235710144,7.737259864807129,17.587099075317383,0.08701329678297043,6.31643009185791,19.436399459838867,-0.08618590235710144,7.736020088195801,17.58639907836914,-0.08618590235710144,7.737259864807129,17.587099075317383,0.08701329678297043,6.31643009185791,19.436399459838867,-0.08618590235710144,6.422999858856201,19.542999267578125,-0.0008273739949800074,7.736020088195801,17.58639907836914,-0.08618590235710144,6.422999858856201,19.542999267578125,-0.0008273739949800074,7.86653995513916,17.661699295043945,-0.0008273739949800074,7.736020088195801,17.58639907836914,-0.08618590235710144,7.86653995513916,17.661699295043945,-0.0008273739949800074,7.737259864807129,17.587099075317383,0.08701329678297043,8.773980140686035,15.470999717712402,-0.0008273739949800074,7.737259864807129,17.587099075317383,0.08701329678297043,8.629790306091309,15.432299613952637,0.08701329678297043,8.773980140686035,15.470999717712402,-0.0008273739949800074,7.737259864807129,17.587099075317383,0.08701329678297043,7.736020088195801,17.58639907836914,-0.08618590235710144,8.629790306091309,15.432299613952637,0.08701329678297043,7.736020088195801,17.58639907836914,-0.08618590235710144,8.628410339355469,15.432000160217285,-0.08618590235710144,8.629790306091309,15.432299613952637,0.08701329678297043,7.736020088195801,17.58639907836914,-0.08618590235710144,7.86653995513916,17.661699295043945,-0.0008273739949800074,8.628410339355469,15.432000160217285,-0.08618590235710144,7.86653995513916,17.661699295043945,-0.0008273739949800074,8.773980140686035,15.470999717712402,-0.0008273739949800074,8.628410339355469,15.432000160217285,-0.08618590235710144,8.773980140686035,15.470999717712402,-0.0008273739949800074,8.629790306091309,15.432299613952637,0.08701329678297043,9.083499908447266,13.119999885559082,-0.0008273739949800074,8.629790306091309,15.432299613952637,0.08701329678297043,8.934220314025879,13.119999885559082,0.08701329678297043,9.083499908447266,13.119999885559082,-0.0008273739949800074,8.629790306091309,15.432299613952637,0.08701329678297043,8.628410339355469,15.432000160217285,-0.08618590235710144,8.934220314025879,13.119999885559082,0.08701329678297043,8.628410339355469,15.432000160217285,-0.08618590235710144,8.93278980255127,13.119999885559082,-0.08618590235710144,8.934220314025879,13.119999885559082,0.08701329678297043,8.628410339355469,15.432000160217285,-0.08618590235710144,8.773980140686035,15.470999717712402,-0.0008273739949800074,8.93278980255127,13.119999885559082,-0.08618590235710144,8.773980140686035,15.470999717712402,-0.0008273739949800074,9.083499908447266,13.119999885559082,-0.0008273739949800074,8.93278980255127,13.119999885559082,-0.08618590235710144,9.083499908447266,13.119999885559082,-0.0008273739949800074,8.934220314025879,13.119999885559082,0.08701329678297043,8.773980140686035,10.769000053405762,-0.0008273739949800074,8.934220314025879,13.119999885559082,0.08701329678297043,8.629790306091309,10.807700157165527,0.08701329678297043,8.773980140686035,10.769000053405762,-0.0008273739949800074,8.934220314025879,13.119999885559082,0.08701329678297043,8.93278980255127,13.119999885559082,-0.08618590235710144,8.629790306091309,10.807700157165527,0.08701329678297043,8.93278980255127,13.119999885559082,-0.08618590235710144,8.628410339355469,10.807999610900879,-0.08618590235710144,8.629790306091309,10.807700157165527,0.08701329678297043,8.93278980255127,13.119999885559082,-0.08618590235710144,9.083499908447266,13.119999885559082,-0.0008273739949800074,8.628410339355469,10.807999610900879,-0.08618590235710144,9.083499908447266,13.119999885559082,-0.0008273739949800074,8.773980140686035,10.769000053405762,-0.0008273739949800074,8.628410339355469,10.807999610900879,-0.08618590235710144,8.773980140686035,10.769000053405762,-0.0008273739949800074,8.629790306091309,10.807700157165527,0.08701329678297043,7.86653995513916,8.57824993133545,-0.0008273739949800074,8.629790306091309,10.807700157165527,0.08701329678297043,7.737259864807129,8.6528902053833,0.08701329678297043,7.86653995513916,8.57824993133545,-0.0008273739949800074,8.629790306091309,10.807700157165527,0.08701329678297043,8.628410339355469,10.807999610900879,-0.08618590235710144,7.737259864807129,8.6528902053833,0.08701329678297043,8.628410339355469,10.807999610900879,-0.08618590235710144,7.736020088195801,8.653610229492188,-0.08618590235710144,7.737259864807129,8.6528902053833,0.08701329678297043,8.628410339355469,10.807999610900879,-0.08618590235710144,8.773980140686035,10.769000053405762,-0.0008273739949800074,7.736020088195801,8.653610229492188,-0.08618590235710144,8.773980140686035,10.769000053405762,-0.0008273739949800074,7.86653995513916,8.57824993133545,-0.0008273739949800074,7.736020088195801,8.653610229492188,-0.08618590235710144,7.86653995513916,8.57824993133545,-0.0008273739949800074,7.737259864807129,8.6528902053833,0.08701329678297043,6.429190158843994,6.703780174255371,-0.0008273739949800074,7.737259864807129,8.6528902053833,0.08701329678297043,6.3144001960754395,6.799220085144043,0.08701329678297043,6.429190158843994,6.703780174255371,-0.0008273739949800074,7.737259864807129,8.6528902053833,0.08701329678297043,7.736020088195801,8.653610229492188,-0.08618590235710144,6.3144001960754395,6.799220085144043,0.08701329678297043,7.736020088195801,8.653610229492188,-0.08618590235710144,6.313300132751465,6.8001298904418945,-0.08618590235710144,6.3144001960754395,6.799220085144043,0.08701329678297043,7.736020088195801,8.653610229492188,-0.08618590235710144,7.86653995513916,8.57824993133545,-0.0008273739949800074,6.313300132751465,6.8001298904418945,-0.08618590235710144,7.86653995513916,8.57824993133545,-0.0008273739949800074,6.429190158843994,6.703780174255371,-0.0008273739949800074,6.313300132751465,6.8001298904418945,-0.08618590235710144,6.429190158843994,6.703780174255371,-0.0008273739949800074,6.3144001960754395,6.799220085144043,0.08701329678297043,1.1819499731063843,0.8826429843902588,-0.0008273739949800074,6.3144001960754395,6.799220085144043,0.08701329678297043,1.042580008506775,0.936119019985199,0.08701329678297043,1.1819499731063843,0.8826429843902588,-0.0008273739949800074,6.3144001960754395,6.799220085144043,0.08701329678297043,6.313300132751465,6.8001298904418945,-0.08618590235710144,1.042580008506775,0.936119019985199,0.08701329678297043,6.313300132751465,6.8001298904418945,-0.08618590235710144,1.0412399768829346,0.9366329908370972,-0.08618590235710144,1.042580008506775,0.936119019985199,0.08701329678297043,6.313300132751465,6.8001298904418945,-0.08618590235710144,6.429190158843994,6.703780174255371,-0.0008273739949800074,1.0412399768829346,0.9366329908370972,-0.08618590235710144,6.429190158843994,6.703780174255371,-0.0008273739949800074,1.1819499731063843,0.8826429843902588,-0.0008273739949800074,1.0412399768829346,0.9366329908370972,-0.08618590235710144,1.1819499731063843,0.8826429843902588,-0.0008273739949800074,1.042580008506775,0.936119019985199,0.08701329678297043,1.1880799531936646,0.5915169715881348,-0.0008273739949800074,1.042580008506775,0.936119019985199,0.08701329678297043,1.0395499467849731,0.5766159892082214,0.08701329678297043,1.1880799531936646,0.5915169715881348,-0.0008273739949800074,1.042580008506775,0.936119019985199,0.08701329678297043,1.0412399768829346,0.9366329908370972,-0.08618590235710144,1.0395499467849731,0.5766159892082214,0.08701329678297043,1.0412399768829346,0.9366329908370972,-0.08618590235710144,1.0381300449371338,0.5764729976654053,-0.08618590235710144,1.0395499467849731,0.5766159892082214,0.08701329678297043,1.0412399768829346,0.9366329908370972,-0.08618590235710144,1.1819499731063843,0.8826429843902588,-0.0008273739949800074,1.0381300449371338,0.5764729976654053,-0.08618590235710144,1.1819499731063843,0.8826429843902588,-0.0008273739949800074,1.1880799531936646,0.5915169715881348,-0.0008273739949800074,1.0381300449371338,0.5764729976654053,-0.08618590235710144,1.1880799531936646,0.5915169715881348,-0.0008273739949800074,1.0395499467849731,0.5766159892082214,0.08701329678297043,1.444000005722046,-0.6686909794807434,-0.0008273739949800074,1.0395499467849731,0.5766159892082214,0.08701329678297043,1.2981499433517456,-0.7005019783973694,0.08701329678297043,1.444000005722046,-0.6686909794807434,-0.0008273739949800074,1.0395499467849731,0.5766159892082214,0.08701329678297043,1.0381300449371338,0.5764729976654053,-0.08618590235710144,1.2981499433517456,-0.7005019783973694,0.08701329678297043,1.0381300449371338,0.5764729976654053,-0.08618590235710144,1.2967499494552612,-0.7008069753646851,-0.08618590235710144,1.2981499433517456,-0.7005019783973694,0.08701329678297043,1.0381300449371338,0.5764729976654053,-0.08618590235710144,1.1880799531936646,0.5915169715881348,-0.0008273739949800074,1.2967499494552612,-0.7008069753646851,-0.08618590235710144,1.1880799531936646,0.5915169715881348,-0.0008273739949800074,1.444000005722046,-0.6686909794807434,-0.0008273739949800074,1.2967499494552612,-0.7008069753646851,-0.08618590235710144,1.444000005722046,-0.6686909794807434,-0.0008273739949800074,1.2981499433517456,-0.7005019783973694,0.08701329678297043,1.2967499494552612,-0.7008069753646851,-0.08618590235710144,-0.00012905700714327395,22.203399658203125,-0.0010410300455987453,0.06198360025882721,22.054100036621094,0.06107170134782791,1.661810040473938,21.893999099731445,-1.6629799604415894,0.06198360025882721,22.054100036621094,0.06107170134782791,1.6965999603271484,21.749799728393555,-1.5735499858856201,1.661810040473938,21.893999099731445,-1.6629799604415894,0.06198360025882721,22.054100036621094,0.06107170134782791,-0.060486700385808945,22.05270004272461,-0.06139859929680824,1.6965999603271484,21.749799728393555,-1.5735499858856201,-0.060486700385808945,22.05270004272461,-0.06139859929680824,1.5738699436187744,21.74839973449707,-1.6957600116729736,1.6965999603271484,21.749799728393555,-1.5735499858856201,-0.060486700385808945,22.05270004272461,-0.06139859929680824,-0.00012905700714327395,22.203399658203125,-0.0010410300455987453,1.5738699436187744,21.74839973449707,-1.6957600116729736,-0.00012905700714327395,22.203399658203125,-0.0010410300455987453,1.661810040473938,21.893999099731445,-1.6629799604415894,1.5738699436187744,21.74839973449707,-1.6957600116729736,1.661810040473938,21.893999099731445,-1.6629799604415894,1.6965999603271484,21.749799728393555,-1.5735499858856201,3.2109200954437256,20.986499786376953,-3.212090015411377,1.6965999603271484,21.749799728393555,-1.5735499858856201,3.220249891281128,20.8572998046875,-3.0971999168395996,3.2109200954437256,20.986499786376953,-3.212090015411377,1.6965999603271484,21.749799728393555,-1.5735499858856201,1.5738699436187744,21.74839973449707,-1.6957600116729736,3.220249891281128,20.8572998046875,-3.0971999168395996,1.5738699436187744,21.74839973449707,-1.6957600116729736,3.0972700119018555,20.856000900268555,-3.2191600799560547,3.220249891281128,20.8572998046875,-3.0971999168395996,1.5738699436187744,21.74839973449707,-1.6957600116729736,1.661810040473938,21.893999099731445,-1.6629799604415894,3.0972700119018555,20.856000900268555,-3.2191600799560547,1.661810040473938,21.893999099731445,-1.6629799604415894,3.2109200954437256,20.986499786376953,-3.212090015411377,3.0972700119018555,20.856000900268555,-3.2191600799560547,3.2109200954437256,20.986499786376953,-3.212090015411377,3.220249891281128,20.8572998046875,-3.0971999168395996,4.5411601066589355,19.542999267578125,-4.542329788208008,3.220249891281128,20.8572998046875,-3.0971999168395996,4.528639793395996,19.437400817871094,-4.405580043792725,4.5411601066589355,19.542999267578125,-4.542329788208008,3.220249891281128,20.8572998046875,-3.0971999168395996,3.0972700119018555,20.856000900268555,-3.2191600799560547,4.528639793395996,19.437400817871094,-4.405580043792725,3.0972700119018555,20.856000900268555,-3.2191600799560547,4.405449867248535,19.436399459838867,-4.527339935302734,4.528639793395996,19.437400817871094,-4.405580043792725,3.0972700119018555,20.856000900268555,-3.2191600799560547,3.2109200954437256,20.986499786376953,-3.212090015411377,4.405449867248535,19.436399459838867,-4.527339935302734,3.2109200954437256,20.986499786376953,-3.212090015411377,4.5411601066589355,19.542999267578125,-4.542329788208008,4.405449867248535,19.436399459838867,-4.527339935302734,4.5411601066589355,19.542999267578125,-4.542329788208008,4.528639793395996,19.437400817871094,-4.405580043792725,5.5619001388549805,17.661699295043945,-5.563069820404053,4.528639793395996,19.437400817871094,-4.405580043792725,5.532599925994873,17.587099075317383,-5.409540176391602,5.5619001388549805,17.661699295043945,-5.563069820404053,4.528639793395996,19.437400817871094,-4.405580043792725,4.405449867248535,19.436399459838867,-4.527339935302734,5.532599925994873,17.587099075317383,-5.409540176391602,4.405449867248535,19.436399459838867,-4.527339935302734,5.409249782562256,17.58639907836914,-5.531129837036133,5.532599925994873,17.587099075317383,-5.409540176391602,4.405449867248535,19.436399459838867,-4.527339935302734,4.5411601066589355,19.542999267578125,-4.542329788208008,5.409249782562256,17.58639907836914,-5.531129837036133,4.5411601066589355,19.542999267578125,-4.542329788208008,5.5619001388549805,17.661699295043945,-5.563069820404053,5.409249782562256,17.58639907836914,-5.531129837036133,5.5619001388549805,17.661699295043945,-5.563069820404053,5.532599925994873,17.587099075317383,-5.409540176391602,6.203559875488281,15.470999717712402,-6.204730033874512,5.532599925994873,17.587099075317383,-5.409540176391602,6.163710117340088,15.432299613952637,-6.0406599044799805,6.203559875488281,15.470999717712402,-6.204730033874512,5.532599925994873,17.587099075317383,-5.409540176391602,5.409249782562256,17.58639907836914,-5.531129837036133,6.163710117340088,15.432299613952637,-6.0406599044799805,5.409249782562256,17.58639907836914,-5.531129837036133,6.040259838104248,15.432000160217285,-6.162149906158447,6.163710117340088,15.432299613952637,-6.0406599044799805,5.409249782562256,17.58639907836914,-5.531129837036133,5.5619001388549805,17.661699295043945,-5.563069820404053,6.040259838104248,15.432000160217285,-6.162149906158447,5.5619001388549805,17.661699295043945,-5.563069820404053,6.203559875488281,15.470999717712402,-6.204730033874512,6.040259838104248,15.432000160217285,-6.162149906158447,6.203559875488281,15.470999717712402,-6.204730033874512,6.163710117340088,15.432299613952637,-6.0406599044799805,6.422420024871826,13.119999885559082,-6.423590183258057,6.163710117340088,15.432299613952637,-6.0406599044799805,6.378970146179199,13.119999885559082,-6.255919933319092,6.422420024871826,13.119999885559082,-6.423590183258057,6.163710117340088,15.432299613952637,-6.0406599044799805,6.040259838104248,15.432000160217285,-6.162149906158447,6.378970146179199,13.119999885559082,-6.255919933319092,6.040259838104248,15.432000160217285,-6.162149906158447,6.255489826202393,13.119999885559082,-6.377379894256592,6.378970146179199,13.119999885559082,-6.255919933319092,6.040259838104248,15.432000160217285,-6.162149906158447,6.203559875488281,15.470999717712402,-6.204730033874512,6.255489826202393,13.119999885559082,-6.377379894256592,6.203559875488281,15.470999717712402,-6.204730033874512,6.422420024871826,13.119999885559082,-6.423590183258057,6.255489826202393,13.119999885559082,-6.377379894256592,6.422420024871826,13.119999885559082,-6.423590183258057,6.378970146179199,13.119999885559082,-6.255919933319092,6.203559875488281,10.769000053405762,-6.204730033874512,6.378970146179199,13.119999885559082,-6.255919933319092,6.163710117340088,10.807700157165527,-6.0406599044799805,6.203559875488281,10.769000053405762,-6.204730033874512,6.378970146179199,13.119999885559082,-6.255919933319092,6.255489826202393,13.119999885559082,-6.377379894256592,6.163710117340088,10.807700157165527,-6.0406599044799805,6.255489826202393,13.119999885559082,-6.377379894256592,6.040259838104248,10.807999610900879,-6.162149906158447,6.163710117340088,10.807700157165527,-6.0406599044799805,6.255489826202393,13.119999885559082,-6.377379894256592,6.422420024871826,13.119999885559082,-6.423590183258057,6.040259838104248,10.807999610900879,-6.162149906158447,6.422420024871826,13.119999885559082,-6.423590183258057,6.203559875488281,10.769000053405762,-6.204730033874512,6.040259838104248,10.807999610900879,-6.162149906158447,6.203559875488281,10.769000053405762,-6.204730033874512,6.163710117340088,10.807700157165527,-6.0406599044799805,5.5619001388549805,8.57824993133545,-5.563069820404053,6.163710117340088,10.807700157165527,-6.0406599044799805,5.532599925994873,8.6528902053833,-5.409540176391602,5.5619001388549805,8.57824993133545,-5.563069820404053,6.163710117340088,10.807700157165527,-6.0406599044799805,6.040259838104248,10.807999610900879,-6.162149906158447,5.532599925994873,8.6528902053833,-5.409540176391602,6.040259838104248,10.807999610900879,-6.162149906158447,5.409249782562256,8.653610229492188,-5.531129837036133,5.532599925994873,8.6528902053833,-5.409540176391602,6.040259838104248,10.807999610900879,-6.162149906158447,6.203559875488281,10.769000053405762,-6.204730033874512,5.409249782562256,8.653610229492188,-5.531129837036133,6.203559875488281,10.769000053405762,-6.204730033874512,5.5619001388549805,8.57824993133545,-5.563069820404053,5.409249782562256,8.653610229492188,-5.531129837036133,5.5619001388549805,8.57824993133545,-5.563069820404053,5.532599925994873,8.6528902053833,-5.409540176391602,4.545539855957031,6.703780174255371,-4.546710014343262,5.532599925994873,8.6528902053833,-5.409540176391602,4.526480197906494,6.799220085144043,-4.403429985046387,4.545539855957031,6.703780174255371,-4.546710014343262,5.532599925994873,8.6528902053833,-5.409540176391602,5.409249782562256,8.653610229492188,-5.531129837036133,4.526480197906494,6.799220085144043,-4.403429985046387,5.409249782562256,8.653610229492188,-5.531129837036133,4.4032301902771,6.8001298904418945,-4.525119781494141,4.526480197906494,6.799220085144043,-4.403429985046387,5.409249782562256,8.653610229492188,-5.531129837036133,5.5619001388549805,8.57824993133545,-5.563069820404053,4.4032301902771,6.8001298904418945,-4.525119781494141,5.5619001388549805,8.57824993133545,-5.563069820404053,4.545539855957031,6.703780174255371,-4.546710014343262,4.4032301902771,6.8001298904418945,-4.525119781494141,4.545539855957031,6.703780174255371,-4.546710014343262,4.526480197906494,6.799220085144043,-4.403429985046387,0.835178017616272,0.8826429843902588,-0.8363479971885681,4.526480197906494,6.799220085144043,-4.403429985046387,0.7987409830093384,0.936119019985199,-0.6756849884986877,0.835178017616272,0.8826429843902588,-0.8363479971885681,4.526480197906494,6.799220085144043,-4.403429985046387,4.4032301902771,6.8001298904418945,-4.525119781494141,0.7987409830093384,0.936119019985199,-0.6756849884986877,4.4032301902771,6.8001298904418945,-4.525119781494141,0.675324022769928,0.9366329908370972,-0.7972099781036377,0.7987409830093384,0.936119019985199,-0.6756849884986877,4.4032301902771,6.8001298904418945,-4.525119781494141,4.545539855957031,6.703780174255371,-4.546710014343262,0.675324022769928,0.9366329908370972,-0.7972099781036377,4.545539855957031,6.703780174255371,-4.546710014343262,0.835178017616272,0.8826429843902588,-0.8363479971885681,0.675324022769928,0.9366329908370972,-0.7972099781036377,0.835178017616272,0.8826429843902588,-0.8363479971885681,0.7987409830093384,0.936119019985199,-0.6756849884986877,0.8395180106163025,0.5915169715881348,-0.8406879901885986,0.7987409830093384,0.936119019985199,-0.6756849884986877,0.7966020107269287,0.5766159892082214,-0.6735470294952393,0.8395180106163025,0.5915169715881348,-0.8406879901885986,0.7987409830093384,0.936119019985199,-0.6756849884986877,0.675324022769928,0.9366329908370972,-0.7972099781036377,0.7966020107269287,0.5766159892082214,-0.6735470294952393,0.675324022769928,0.9366329908370972,-0.7972099781036377,0.6731230020523071,0.5764729976654053,-0.7950090169906616,0.7966020107269287,0.5766159892082214,-0.6735470294952393,0.675324022769928,0.9366329908370972,-0.7972099781036377,0.835178017616272,0.8826429843902588,-0.8363479971885681,0.6731230020523071,0.5764729976654053,-0.7950090169906616,0.835178017616272,0.8826429843902588,-0.8363479971885681,0.8395180106163025,0.5915169715881348,-0.8406879901885986,0.6731230020523071,0.5764729976654053,-0.7950090169906616,0.8395180106163025,0.5915169715881348,-0.8406879901885986,0.7966020107269287,0.5766159892082214,-0.6735470294952393,1.0204800367355347,-0.6686909794807434,-1.021649956703186,0.7966020107269287,0.5766159892082214,-0.6735470294952393,0.9794589877128601,-0.7005019783973694,-0.8564029932022095,1.0204800367355347,-0.6686909794807434,-1.021649956703186,0.7966020107269287,0.5766159892082214,-0.6735470294952393,0.6731230020523071,0.5764729976654053,-0.7950090169906616,0.9794589877128601,-0.7005019783973694,-0.8564029932022095,0.6731230020523071,0.5764729976654053,-0.7950090169906616,0.8559979796409607,-0.7008069753646851,-0.9778839945793152,0.9794589877128601,-0.7005019783973694,-0.8564029932022095,0.6731230020523071,0.5764729976654053,-0.7950090169906616,0.8395180106163025,0.5915169715881348,-0.8406879901885986,0.8559979796409607,-0.7008069753646851,-0.9778839945793152,0.8395180106163025,0.5915169715881348,-0.8406879901885986,1.0204800367355347,-0.6686909794807434,-1.021649956703186,0.8559979796409607,-0.7008069753646851,-0.9778839945793152,1.0204800367355347,-0.6686909794807434,-1.021649956703186,0.9794589877128601,-0.7005019783973694,-0.8564029932022095,0.8559979796409607,-0.7008069753646851,-0.9778839945793152,-0.0008273739949800074,22.203399658203125,-0.0006448599742725492,0.08701329678297043,22.054100036621094,-0.0006448529893532395,-0.0008273739949800074,21.893999099731445,-2.350980043411255,0.08701329678297043,22.054100036621094,-0.0006448529893532395,0.08701329678297043,21.749799728393555,-2.312350034713745,-0.0008273739949800074,21.893999099731445,-2.350980043411255,0.08701329678297043,22.054100036621094,-0.0006448529893532395,-0.08618590235710144,22.05270004272461,-0.000644851999823004,0.08701329678297043,21.749799728393555,-2.312350034713745,-0.08618590235710144,22.05270004272461,-0.000644851999823004,-0.08618590235710144,21.74839973449707,-2.3119699954986572,0.08701329678297043,21.749799728393555,-2.312350034713745,-0.08618590235710144,22.05270004272461,-0.000644851999823004,-0.0008273739949800074,22.203399658203125,-0.0006448599742725492,-0.08618590235710144,21.74839973449707,-2.3119699954986572,-0.0008273739949800074,22.203399658203125,-0.0006448599742725492,-0.0008273739949800074,21.893999099731445,-2.350980043411255,-0.08618590235710144,21.74839973449707,-2.3119699954986572,-0.0008273739949800074,21.893999099731445,-2.350980043411255,0.08701329678297043,21.749799728393555,-2.312350034713745,-0.0008273739949800074,20.986499786376953,-4.541749954223633,0.08701329678297043,21.749799728393555,-2.312350034713745,0.08701329678297043,20.8572998046875,-4.4671101570129395,-0.0008273739949800074,20.986499786376953,-4.541749954223633,0.08701329678297043,21.749799728393555,-2.312350034713745,-0.08618590235710144,21.74839973449707,-2.3119699954986572,0.08701329678297043,20.8572998046875,-4.4671101570129395,-0.08618590235710144,21.74839973449707,-2.3119699954986572,-0.08618590235710144,20.856000900268555,-4.466390132904053,0.08701329678297043,20.8572998046875,-4.4671101570129395,-0.08618590235710144,21.74839973449707,-2.3119699954986572,-0.0008273739949800074,21.893999099731445,-2.350980043411255,-0.08618590235710144,20.856000900268555,-4.466390132904053,-0.0008273739949800074,21.893999099731445,-2.350980043411255,-0.0008273739949800074,20.986499786376953,-4.541749954223633,-0.08618590235710144,20.856000900268555,-4.466390132904053,-0.0008273739949800074,20.986499786376953,-4.541749954223633,0.08701329678297043,20.8572998046875,-4.4671101570129395,-0.0008273739949800074,19.542999267578125,-6.422999858856201,0.08701329678297043,20.8572998046875,-4.4671101570129395,0.08701329678297043,19.437400817871094,-6.317450046539307,-0.0008273739949800074,19.542999267578125,-6.422999858856201,0.08701329678297043,20.8572998046875,-4.4671101570129395,-0.08618590235710144,20.856000900268555,-4.466390132904053,0.08701329678297043,19.437400817871094,-6.317450046539307,-0.08618590235710144,20.856000900268555,-4.466390132904053,-0.08618590235710144,19.436399459838867,-6.31643009185791,0.08701329678297043,19.437400817871094,-6.317450046539307,-0.08618590235710144,20.856000900268555,-4.466390132904053,-0.0008273739949800074,20.986499786376953,-4.541749954223633,-0.08618590235710144,19.436399459838867,-6.31643009185791,-0.0008273739949800074,20.986499786376953,-4.541749954223633,-0.0008273739949800074,19.542999267578125,-6.422999858856201,-0.08618590235710144,19.436399459838867,-6.31643009185791,-0.0008273739949800074,19.542999267578125,-6.422999858856201,0.08701329678297043,19.437400817871094,-6.317450046539307,-0.0008273739949800074,17.661699295043945,-7.86653995513916,0.08701329678297043,19.437400817871094,-6.317450046539307,0.08701329678297043,17.587099075317383,-7.737259864807129,-0.0008273739949800074,17.661699295043945,-7.86653995513916,0.08701329678297043,19.437400817871094,-6.317450046539307,-0.08618590235710144,19.436399459838867,-6.31643009185791,0.08701329678297043,17.587099075317383,-7.737259864807129,-0.08618590235710144,19.436399459838867,-6.31643009185791,-0.08618590235710144,17.58639907836914,-7.736020088195801,0.08701329678297043,17.587099075317383,-7.737259864807129,-0.08618590235710144,19.436399459838867,-6.31643009185791,-0.0008273739949800074,19.542999267578125,-6.422999858856201,-0.08618590235710144,17.58639907836914,-7.736020088195801,-0.0008273739949800074,19.542999267578125,-6.422999858856201,-0.0008273739949800074,17.661699295043945,-7.86653995513916,-0.08618590235710144,17.58639907836914,-7.736020088195801,-0.0008273739949800074,17.661699295043945,-7.86653995513916,0.08701329678297043,17.587099075317383,-7.737259864807129,-0.0008273739949800074,15.470999717712402,-8.773980140686035,0.08701329678297043,17.587099075317383,-7.737259864807129,0.08701329678297043,15.432299613952637,-8.629790306091309,-0.0008273739949800074,15.470999717712402,-8.773980140686035,0.08701329678297043,17.587099075317383,-7.737259864807129,-0.08618590235710144,17.58639907836914,-7.736020088195801,0.08701329678297043,15.432299613952637,-8.629790306091309,-0.08618590235710144,17.58639907836914,-7.736020088195801,-0.08618590235710144,15.432000160217285,-8.628410339355469,0.08701329678297043,15.432299613952637,-8.629790306091309,-0.08618590235710144,17.58639907836914,-7.736020088195801,-0.0008273739949800074,17.661699295043945,-7.86653995513916,-0.08618590235710144,15.432000160217285,-8.628410339355469,-0.0008273739949800074,17.661699295043945,-7.86653995513916,-0.0008273739949800074,15.470999717712402,-8.773980140686035,-0.08618590235710144,15.432000160217285,-8.628410339355469,-0.0008273739949800074,15.470999717712402,-8.773980140686035,0.08701329678297043,15.432299613952637,-8.629790306091309,-0.0008273739949800074,13.119999885559082,-9.083499908447266,0.08701329678297043,15.432299613952637,-8.629790306091309,0.08701329678297043,13.119999885559082,-8.934220314025879,-0.0008273739949800074,13.119999885559082,-9.083499908447266,0.08701329678297043,15.432299613952637,-8.629790306091309,-0.08618590235710144,15.432000160217285,-8.628410339355469,0.08701329678297043,13.119999885559082,-8.934220314025879,-0.08618590235710144,15.432000160217285,-8.628410339355469,-0.08618590235710144,13.119999885559082,-8.93278980255127,0.08701329678297043,13.119999885559082,-8.934220314025879,-0.08618590235710144,15.432000160217285,-8.628410339355469,-0.0008273739949800074,15.470999717712402,-8.773980140686035,-0.08618590235710144,13.119999885559082,-8.93278980255127,-0.0008273739949800074,15.470999717712402,-8.773980140686035,-0.0008273739949800074,13.119999885559082,-9.083499908447266,-0.08618590235710144,13.119999885559082,-8.93278980255127,-0.0008273739949800074,13.119999885559082,-9.083499908447266,0.08701329678297043,13.119999885559082,-8.934220314025879,-0.0008273739949800074,10.769000053405762,-8.773980140686035,0.08701329678297043,13.119999885559082,-8.934220314025879,0.08701329678297043,10.807700157165527,-8.629790306091309,-0.0008273739949800074,10.769000053405762,-8.773980140686035,0.08701329678297043,13.119999885559082,-8.934220314025879,-0.08618590235710144,13.119999885559082,-8.93278980255127,0.08701329678297043,10.807700157165527,-8.629790306091309,-0.08618590235710144,13.119999885559082,-8.93278980255127,-0.08618590235710144,10.807999610900879,-8.628410339355469,0.08701329678297043,10.807700157165527,-8.629790306091309,-0.08618590235710144,13.119999885559082,-8.93278980255127,-0.0008273739949800074,13.119999885559082,-9.083499908447266,-0.08618590235710144,10.807999610900879,-8.628410339355469,-0.0008273739949800074,13.119999885559082,-9.083499908447266,-0.0008273739949800074,10.769000053405762,-8.773980140686035,-0.08618590235710144,10.807999610900879,-8.628410339355469,-0.0008273739949800074,10.769000053405762,-8.773980140686035,0.08701329678297043,10.807700157165527,-8.629790306091309,-0.0008273739949800074,8.57824993133545,-7.86653995513916,0.08701329678297043,10.807700157165527,-8.629790306091309,0.08701329678297043,8.6528902053833,-7.737259864807129,-0.0008273739949800074,8.57824993133545,-7.86653995513916,0.08701329678297043,10.807700157165527,-8.629790306091309,-0.08618590235710144,10.807999610900879,-8.628410339355469,0.08701329678297043,8.6528902053833,-7.737259864807129,-0.08618590235710144,10.807999610900879,-8.628410339355469,-0.08618590235710144,8.653610229492188,-7.736020088195801,0.08701329678297043,8.6528902053833,-7.737259864807129,-0.08618590235710144,10.807999610900879,-8.628410339355469,-0.0008273739949800074,10.769000053405762,-8.773980140686035,-0.08618590235710144,8.653610229492188,-7.736020088195801,-0.0008273739949800074,10.769000053405762,-8.773980140686035,-0.0008273739949800074,8.57824993133545,-7.86653995513916,-0.08618590235710144,8.653610229492188,-7.736020088195801,-0.0008273739949800074,8.57824993133545,-7.86653995513916,0.08701329678297043,8.6528902053833,-7.737259864807129,-0.0008273739949800074,6.703780174255371,-6.429190158843994,0.08701329678297043,8.6528902053833,-7.737259864807129,0.08701329678297043,6.799220085144043,-6.3144001960754395,-0.0008273739949800074,6.703780174255371,-6.429190158843994,0.08701329678297043,8.6528902053833,-7.737259864807129,-0.08618590235710144,8.653610229492188,-7.736020088195801,0.08701329678297043,6.799220085144043,-6.3144001960754395,-0.08618590235710144,8.653610229492188,-7.736020088195801,-0.08618590235710144,6.8001298904418945,-6.313300132751465,0.08701329678297043,6.799220085144043,-6.3144001960754395,-0.08618590235710144,8.653610229492188,-7.736020088195801,-0.0008273739949800074,8.57824993133545,-7.86653995513916,-0.08618590235710144,6.8001298904418945,-6.313300132751465,-0.0008273739949800074,8.57824993133545,-7.86653995513916,-0.0008273739949800074,6.703780174255371,-6.429190158843994,-0.08618590235710144,6.8001298904418945,-6.313300132751465,-0.0008273739949800074,6.703780174255371,-6.429190158843994,0.08701329678297043,6.799220085144043,-6.3144001960754395,-0.0008273739949800074,0.8826429843902588,-1.1819499731063843,0.08701329678297043,6.799220085144043,-6.3144001960754395,0.08701329678297043,0.936119019985199,-1.042580008506775,-0.0008273739949800074,0.8826429843902588,-1.1819499731063843,0.08701329678297043,6.799220085144043,-6.3144001960754395,-0.08618590235710144,6.8001298904418945,-6.313300132751465,0.08701329678297043,0.936119019985199,-1.042580008506775,-0.08618590235710144,6.8001298904418945,-6.313300132751465,-0.08618590235710144,0.9366329908370972,-1.0412399768829346,0.08701329678297043,0.936119019985199,-1.042580008506775,-0.08618590235710144,6.8001298904418945,-6.313300132751465,-0.0008273739949800074,6.703780174255371,-6.429190158843994,-0.08618590235710144,0.9366329908370972,-1.0412399768829346,-0.0008273739949800074,6.703780174255371,-6.429190158843994,-0.0008273739949800074,0.8826429843902588,-1.1819499731063843,-0.08618590235710144,0.9366329908370972,-1.0412399768829346,-0.0008273739949800074,0.8826429843902588,-1.1819499731063843,0.08701329678297043,0.936119019985199,-1.042580008506775,-0.0008273739949800074,0.5915169715881348,-1.1880799531936646,0.08701329678297043,0.936119019985199,-1.042580008506775,0.08701329678297043,0.5766159892082214,-1.0395499467849731,-0.0008273739949800074,0.5915169715881348,-1.1880799531936646,0.08701329678297043,0.936119019985199,-1.042580008506775,-0.08618590235710144,0.9366329908370972,-1.0412399768829346,0.08701329678297043,0.5766159892082214,-1.0395499467849731,-0.08618590235710144,0.9366329908370972,-1.0412399768829346,-0.08618590235710144,0.5764729976654053,-1.0381300449371338,0.08701329678297043,0.5766159892082214,-1.0395499467849731,-0.08618590235710144,0.9366329908370972,-1.0412399768829346,-0.0008273739949800074,0.8826429843902588,-1.1819499731063843,-0.08618590235710144,0.5764729976654053,-1.0381300449371338,-0.0008273739949800074,0.8826429843902588,-1.1819499731063843,-0.0008273739949800074,0.5915169715881348,-1.1880799531936646,-0.08618590235710144,0.5764729976654053,-1.0381300449371338,-0.0008273739949800074,0.5915169715881348,-1.1880799531936646,0.08701329678297043,0.5766159892082214,-1.0395499467849731,-0.0008273739949800074,-0.6686909794807434,-1.444000005722046,0.08701329678297043,0.5766159892082214,-1.0395499467849731,0.08701329678297043,-0.7005019783973694,-1.2981499433517456,-0.0008273739949800074,-0.6686909794807434,-1.444000005722046,0.08701329678297043,0.5766159892082214,-1.0395499467849731,-0.08618590235710144,0.5764729976654053,-1.0381300449371338,0.08701329678297043,-0.7005019783973694,-1.2981499433517456,-0.08618590235710144,0.5764729976654053,-1.0381300449371338,-0.08618590235710144,-0.7008069753646851,-1.2967499494552612,0.08701329678297043,-0.7005019783973694,-1.2981499433517456,-0.08618590235710144,0.5764729976654053,-1.0381300449371338,-0.0008273739949800074,0.5915169715881348,-1.1880799531936646,-0.08618590235710144,-0.7008069753646851,-1.2967499494552612,-0.0008273739949800074,0.5915169715881348,-1.1880799531936646,-0.0008273739949800074,-0.6686909794807434,-1.444000005722046,-0.08618590235710144,-0.7008069753646851,-1.2967499494552612,-0.0008273739949800074,-0.6686909794807434,-1.444000005722046,0.08701329678297043,-0.7005019783973694,-1.2981499433517456,-0.08618590235710144,-0.7008069753646851,-1.2967499494552612,-0.0010410300455987453,22.203399658203125,0.00012905700714327395,0.06107170134782791,22.054100036621094,-0.06198360025882721,-1.6629799604415894,21.893999099731445,-1.661810040473938,0.06107170134782791,22.054100036621094,-0.06198360025882721,-1.5735499858856201,21.749799728393555,-1.6965999603271484,-1.6629799604415894,21.893999099731445,-1.661810040473938,0.06107170134782791,22.054100036621094,-0.06198360025882721,-0.06139859929680824,22.05270004272461,0.060486700385808945,-1.5735499858856201,21.749799728393555,-1.6965999603271484,-0.06139859929680824,22.05270004272461,0.060486700385808945,-1.6957600116729736,21.74839973449707,-1.5738699436187744,-1.5735499858856201,21.749799728393555,-1.6965999603271484,-0.06139859929680824,22.05270004272461,0.060486700385808945,-0.0010410300455987453,22.203399658203125,0.00012905700714327395,-1.6957600116729736,21.74839973449707,-1.5738699436187744,-0.0010410300455987453,22.203399658203125,0.00012905700714327395,-1.6629799604415894,21.893999099731445,-1.661810040473938,-1.6957600116729736,21.74839973449707,-1.5738699436187744,-1.6629799604415894,21.893999099731445,-1.661810040473938,-1.5735499858856201,21.749799728393555,-1.6965999603271484,-3.212090015411377,20.986499786376953,-3.2109200954437256,-1.5735499858856201,21.749799728393555,-1.6965999603271484,-3.0971999168395996,20.8572998046875,-3.220249891281128,-3.212090015411377,20.986499786376953,-3.2109200954437256,-1.5735499858856201,21.749799728393555,-1.6965999603271484,-1.6957600116729736,21.74839973449707,-1.5738699436187744,-3.0971999168395996,20.8572998046875,-3.220249891281128,-1.6957600116729736,21.74839973449707,-1.5738699436187744,-3.2191600799560547,20.856000900268555,-3.0972700119018555,-3.0971999168395996,20.8572998046875,-3.220249891281128,-1.6957600116729736,21.74839973449707,-1.5738699436187744,-1.6629799604415894,21.893999099731445,-1.661810040473938,-3.2191600799560547,20.856000900268555,-3.0972700119018555,-1.6629799604415894,21.893999099731445,-1.661810040473938,-3.212090015411377,20.986499786376953,-3.2109200954437256,-3.2191600799560547,20.856000900268555,-3.0972700119018555,-3.212090015411377,20.986499786376953,-3.2109200954437256,-3.0971999168395996,20.8572998046875,-3.220249891281128,-4.542329788208008,19.542999267578125,-4.5411601066589355,-3.0971999168395996,20.8572998046875,-3.220249891281128,-4.405580043792725,19.437400817871094,-4.528639793395996,-4.542329788208008,19.542999267578125,-4.5411601066589355,-3.0971999168395996,20.8572998046875,-3.220249891281128,-3.2191600799560547,20.856000900268555,-3.0972700119018555,-4.405580043792725,19.437400817871094,-4.528639793395996,-3.2191600799560547,20.856000900268555,-3.0972700119018555,-4.527339935302734,19.436399459838867,-4.405449867248535,-4.405580043792725,19.437400817871094,-4.528639793395996,-3.2191600799560547,20.856000900268555,-3.0972700119018555,-3.212090015411377,20.986499786376953,-3.2109200954437256,-4.527339935302734,19.436399459838867,-4.405449867248535,-3.212090015411377,20.986499786376953,-3.2109200954437256,-4.542329788208008,19.542999267578125,-4.5411601066589355,-4.527339935302734,19.436399459838867,-4.405449867248535,-4.542329788208008,19.542999267578125,-4.5411601066589355,-4.405580043792725,19.437400817871094,-4.528639793395996,-5.563069820404053,17.661699295043945,-5.5619001388549805,-4.405580043792725,19.437400817871094,-4.528639793395996,-5.409540176391602,17.587099075317383,-5.532599925994873,-5.563069820404053,17.661699295043945,-5.5619001388549805,-4.405580043792725,19.437400817871094,-4.528639793395996,-4.527339935302734,19.436399459838867,-4.405449867248535,-5.409540176391602,17.587099075317383,-5.532599925994873,-4.527339935302734,19.436399459838867,-4.405449867248535,-5.531129837036133,17.58639907836914,-5.409249782562256,-5.409540176391602,17.587099075317383,-5.532599925994873,-4.527339935302734,19.436399459838867,-4.405449867248535,-4.542329788208008,19.542999267578125,-4.5411601066589355,-5.531129837036133,17.58639907836914,-5.409249782562256,-4.542329788208008,19.542999267578125,-4.5411601066589355,-5.563069820404053,17.661699295043945,-5.5619001388549805,-5.531129837036133,17.58639907836914,-5.409249782562256,-5.563069820404053,17.661699295043945,-5.5619001388549805,-5.409540176391602,17.587099075317383,-5.532599925994873,-6.204730033874512,15.470999717712402,-6.203559875488281,-5.409540176391602,17.587099075317383,-5.532599925994873,-6.0406599044799805,15.432299613952637,-6.163710117340088,-6.204730033874512,15.470999717712402,-6.203559875488281,-5.409540176391602,17.587099075317383,-5.532599925994873,-5.531129837036133,17.58639907836914,-5.409249782562256,-6.0406599044799805,15.432299613952637,-6.163710117340088,-5.531129837036133,17.58639907836914,-5.409249782562256,-6.162149906158447,15.432000160217285,-6.040259838104248,-6.0406599044799805,15.432299613952637,-6.163710117340088,-5.531129837036133,17.58639907836914,-5.409249782562256,-5.563069820404053,17.661699295043945,-5.5619001388549805,-6.162149906158447,15.432000160217285,-6.040259838104248,-5.563069820404053,17.661699295043945,-5.5619001388549805,-6.204730033874512,15.470999717712402,-6.203559875488281,-6.162149906158447,15.432000160217285,-6.040259838104248,-6.204730033874512,15.470999717712402,-6.203559875488281,-6.0406599044799805,15.432299613952637,-6.163710117340088,-6.423590183258057,13.119999885559082,-6.422420024871826,-6.0406599044799805,15.432299613952637,-6.163710117340088,-6.255919933319092,13.119999885559082,-6.378970146179199,-6.423590183258057,13.119999885559082,-6.422420024871826,-6.0406599044799805,15.432299613952637,-6.163710117340088,-6.162149906158447,15.432000160217285,-6.040259838104248,-6.255919933319092,13.119999885559082,-6.378970146179199,-6.162149906158447,15.432000160217285,-6.040259838104248,-6.377379894256592,13.119999885559082,-6.255489826202393,-6.255919933319092,13.119999885559082,-6.378970146179199,-6.162149906158447,15.432000160217285,-6.040259838104248,-6.204730033874512,15.470999717712402,-6.203559875488281,-6.377379894256592,13.119999885559082,-6.255489826202393,-6.204730033874512,15.470999717712402,-6.203559875488281,-6.423590183258057,13.119999885559082,-6.422420024871826,-6.377379894256592,13.119999885559082,-6.255489826202393,-6.423590183258057,13.119999885559082,-6.422420024871826,-6.255919933319092,13.119999885559082,-6.378970146179199,-6.204730033874512,10.769000053405762,-6.203559875488281,-6.255919933319092,13.119999885559082,-6.378970146179199,-6.0406599044799805,10.807700157165527,-6.163710117340088,-6.204730033874512,10.769000053405762,-6.203559875488281,-6.255919933319092,13.119999885559082,-6.378970146179199,-6.377379894256592,13.119999885559082,-6.255489826202393,-6.0406599044799805,10.807700157165527,-6.163710117340088,-6.377379894256592,13.119999885559082,-6.255489826202393,-6.162149906158447,10.807999610900879,-6.040259838104248,-6.0406599044799805,10.807700157165527,-6.163710117340088,-6.377379894256592,13.119999885559082,-6.255489826202393,-6.423590183258057,13.119999885559082,-6.422420024871826,-6.162149906158447,10.807999610900879,-6.040259838104248,-6.423590183258057,13.119999885559082,-6.422420024871826,-6.204730033874512,10.769000053405762,-6.203559875488281,-6.162149906158447,10.807999610900879,-6.040259838104248,-6.204730033874512,10.769000053405762,-6.203559875488281,-6.0406599044799805,10.807700157165527,-6.163710117340088,-5.563069820404053,8.57824993133545,-5.5619001388549805,-6.0406599044799805,10.807700157165527,-6.163710117340088,-5.409540176391602,8.6528902053833,-5.532599925994873,-5.563069820404053,8.57824993133545,-5.5619001388549805,-6.0406599044799805,10.807700157165527,-6.163710117340088,-6.162149906158447,10.807999610900879,-6.040259838104248,-5.409540176391602,8.6528902053833,-5.532599925994873,-6.162149906158447,10.807999610900879,-6.040259838104248,-5.531129837036133,8.653610229492188,-5.409249782562256,-5.409540176391602,8.6528902053833,-5.532599925994873,-6.162149906158447,10.807999610900879,-6.040259838104248,-6.204730033874512,10.769000053405762,-6.203559875488281,-5.531129837036133,8.653610229492188,-5.409249782562256,-6.204730033874512,10.769000053405762,-6.203559875488281,-5.563069820404053,8.57824993133545,-5.5619001388549805,-5.531129837036133,8.653610229492188,-5.409249782562256,-5.563069820404053,8.57824993133545,-5.5619001388549805,-5.409540176391602,8.6528902053833,-5.532599925994873,-4.546710014343262,6.703780174255371,-4.545539855957031,-5.409540176391602,8.6528902053833,-5.532599925994873,-4.403429985046387,6.799220085144043,-4.526480197906494,-4.546710014343262,6.703780174255371,-4.545539855957031,-5.409540176391602,8.6528902053833,-5.532599925994873,-5.531129837036133,8.653610229492188,-5.409249782562256,-4.403429985046387,6.799220085144043,-4.526480197906494,-5.531129837036133,8.653610229492188,-5.409249782562256,-4.525119781494141,6.8001298904418945,-4.4032301902771,-4.403429985046387,6.799220085144043,-4.526480197906494,-5.531129837036133,8.653610229492188,-5.409249782562256,-5.563069820404053,8.57824993133545,-5.5619001388549805,-4.525119781494141,6.8001298904418945,-4.4032301902771,-5.563069820404053,8.57824993133545,-5.5619001388549805,-4.546710014343262,6.703780174255371,-4.545539855957031,-4.525119781494141,6.8001298904418945,-4.4032301902771,-4.546710014343262,6.703780174255371,-4.545539855957031,-4.403429985046387,6.799220085144043,-4.526480197906494,-0.8363479971885681,0.8826429843902588,-0.835178017616272,-4.403429985046387,6.799220085144043,-4.526480197906494,-0.6756849884986877,0.936119019985199,-0.7987409830093384,-0.8363479971885681,0.8826429843902588,-0.835178017616272,-4.403429985046387,6.799220085144043,-4.526480197906494,-4.525119781494141,6.8001298904418945,-4.4032301902771,-0.6756849884986877,0.936119019985199,-0.7987409830093384,-4.525119781494141,6.8001298904418945,-4.4032301902771,-0.7972099781036377,0.9366329908370972,-0.675324022769928,-0.6756849884986877,0.936119019985199,-0.7987409830093384,-4.525119781494141,6.8001298904418945,-4.4032301902771,-4.546710014343262,6.703780174255371,-4.545539855957031,-0.7972099781036377,0.9366329908370972,-0.675324022769928,-4.546710014343262,6.703780174255371,-4.545539855957031,-0.8363479971885681,0.8826429843902588,-0.835178017616272,-0.7972099781036377,0.9366329908370972,-0.675324022769928,-0.8363479971885681,0.8826429843902588,-0.835178017616272,-0.6756849884986877,0.936119019985199,-0.7987409830093384,-0.8406879901885986,0.5915169715881348,-0.8395180106163025,-0.6756849884986877,0.936119019985199,-0.7987409830093384,-0.6735470294952393,0.5766159892082214,-0.7966020107269287,-0.8406879901885986,0.5915169715881348,-0.8395180106163025,-0.6756849884986877,0.936119019985199,-0.7987409830093384,-0.7972099781036377,0.9366329908370972,-0.675324022769928,-0.6735470294952393,0.5766159892082214,-0.7966020107269287,-0.7972099781036377,0.9366329908370972,-0.675324022769928,-0.7950090169906616,0.5764729976654053,-0.6731230020523071,-0.6735470294952393,0.5766159892082214,-0.7966020107269287,-0.7972099781036377,0.9366329908370972,-0.675324022769928,-0.8363479971885681,0.8826429843902588,-0.835178017616272,-0.7950090169906616,0.5764729976654053,-0.6731230020523071,-0.8363479971885681,0.8826429843902588,-0.835178017616272,-0.8406879901885986,0.5915169715881348,-0.8395180106163025,-0.7950090169906616,0.5764729976654053,-0.6731230020523071,-0.8406879901885986,0.5915169715881348,-0.8395180106163025,-0.6735470294952393,0.5766159892082214,-0.7966020107269287,-1.021649956703186,-0.6686909794807434,-1.0204800367355347,-0.6735470294952393,0.5766159892082214,-0.7966020107269287,-0.8564029932022095,-0.7005019783973694,-0.9794589877128601,-1.021649956703186,-0.6686909794807434,-1.0204800367355347,-0.6735470294952393,0.5766159892082214,-0.7966020107269287,-0.7950090169906616,0.5764729976654053,-0.6731230020523071,-0.8564029932022095,-0.7005019783973694,-0.9794589877128601,-0.7950090169906616,0.5764729976654053,-0.6731230020523071,-0.9778839945793152,-0.7008069753646851,-0.8559979796409607,-0.8564029932022095,-0.7005019783973694,-0.9794589877128601,-0.7950090169906616,0.5764729976654053,-0.6731230020523071,-0.8406879901885986,0.5915169715881348,-0.8395180106163025,-0.9778839945793152,-0.7008069753646851,-0.8559979796409607,-0.8406879901885986,0.5915169715881348,-0.8395180106163025,-1.021649956703186,-0.6686909794807434,-1.0204800367355347,-0.9778839945793152,-0.7008069753646851,-0.8559979796409607,-1.021649956703186,-0.6686909794807434,-1.0204800367355347,-0.8564029932022095,-0.7005019783973694,-0.9794589877128601,-0.9778839945793152,-0.7008069753646851,-0.8559979796409607,0,-0.699999988079071,-1.5,0,-3,-1.222499966621399,-1.0606600046157837,-0.699999988079071,-1.0606600046157837,0,-3,-1.222499966621399,-0.864437997341156,-3,-0.864437997341156,-1.0606600046157837,-0.699999988079071,-1.0606600046157837,-1.0606600046157837,-0.699999988079071,-1.0606600046157837,-0.864437997341156,-3,-0.864437997341156,-1.5,-0.699999988079071,0,-0.864437997341156,-3,-0.864437997341156,-1.222499966621399,-3,0,-1.5,-0.699999988079071,0,-1.5,-0.699999988079071,0,-1.222499966621399,-3,0,-1.0606600046157837,-0.699999988079071,1.0606600046157837,-1.222499966621399,-3,0,-0.864437997341156,-3,0.864437997341156,-1.0606600046157837,-0.699999988079071,1.0606600046157837,-1.0606600046157837,-0.699999988079071,1.0606600046157837,-0.864437997341156,-3,0.864437997341156,0,-0.699999988079071,1.5,-0.864437997341156,-3,0.864437997341156,0,-3,1.222499966621399,0,-0.699999988079071,1.5,0,-0.699999988079071,1.5,0,-3,1.222499966621399,1.0606600046157837,-0.699999988079071,1.0606600046157837,0,-3,1.222499966621399,0.864437997341156,-3,0.864437997341156,1.0606600046157837,-0.699999988079071,1.0606600046157837,1.0606600046157837,-0.699999988079071,1.0606600046157837,0.864437997341156,-3,0.864437997341156,1.5,-0.699999988079071,0,0.864437997341156,-3,0.864437997341156,1.222499966621399,-3,0,1.5,-0.699999988079071,0,1.5,-0.699999988079071,0,1.222499966621399,-3,0,1.0606600046157837,-0.699999988079071,-1.0606600046157837,1.222499966621399,-3,0,0.864437997341156,-3,-0.864437997341156,1.0606600046157837,-0.699999988079071,-1.0606600046157837,1.0606600046157837,-0.699999988079071,-1.0606600046157837,0.864437997341156,-3,-0.864437997341156,0,-0.699999988079071,-1.5,0.864437997341156,-3,-0.864437997341156,0,-3,-1.222499966621399,0,-0.699999988079071,-1.5,0,4.442609786987305,-2.3250999450683594,0,4.136499881744385,0,-0.6017799973487854,4.442609786987305,-2.2458701133728027,-0.6017799973487854,4.442609786987305,-2.2458701133728027,0,4.136499881744385,0,-1.1625499725341797,4.442609786987305,-2.0136001110076904,-1.1625499725341797,4.442609786987305,-2.0136001110076904,0,4.136499881744385,0,-1.6440900564193726,4.442609786987305,-1.6440900564193726,-1.6440900564193726,4.442609786987305,-1.6440900564193726,0,4.136499881744385,0,-2.0136001110076904,4.442609786987305,-1.1625499725341797,-2.0136001110076904,4.442609786987305,-1.1625499725341797,0,4.136499881744385,0,-2.2458701133728027,4.442609786987305,-0.6017799973487854,-2.2458701133728027,4.442609786987305,-0.6017799973487854,0,4.136499881744385,0,-2.3250999450683594,4.442609786987305,0,-2.3250999450683594,4.442609786987305,0,0,4.136499881744385,0,-2.2458701133728027,4.442609786987305,0.6017799973487854,-2.2458701133728027,4.442609786987305,0.6017799973487854,0,4.136499881744385,0,-2.0136001110076904,4.442609786987305,1.1625499725341797,-2.0136001110076904,4.442609786987305,1.1625499725341797,0,4.136499881744385,0,-1.6440900564193726,4.442609786987305,1.6440900564193726,-1.6440900564193726,4.442609786987305,1.6440900564193726,0,4.136499881744385,0,-1.1625499725341797,4.442609786987305,2.0136001110076904,-1.1625499725341797,4.442609786987305,2.0136001110076904,0,4.136499881744385,0,-0.6017799973487854,4.442609786987305,2.2458701133728027,-0.6017799973487854,4.442609786987305,2.2458701133728027,0,4.136499881744385,0,0,4.442609786987305,2.3250999450683594,0,4.442609786987305,2.3250999450683594,0,4.136499881744385,0,0.6017799973487854,4.442609786987305,2.2458701133728027,0.6017799973487854,4.442609786987305,2.2458701133728027,0,4.136499881744385,0,1.1625499725341797,4.442609786987305,2.0136001110076904,1.1625499725341797,4.442609786987305,2.0136001110076904,0,4.136499881744385,0,1.6440900564193726,4.442609786987305,1.6440900564193726,1.6440900564193726,4.442609786987305,1.6440900564193726,0,4.136499881744385,0,2.0136001110076904,4.442609786987305,1.1625499725341797,2.0136001110076904,4.442609786987305,1.1625499725341797,0,4.136499881744385,0,2.2458701133728027,4.442609786987305,0.6017799973487854,2.2458701133728027,4.442609786987305,0.6017799973487854,0,4.136499881744385,0,2.3250999450683594,4.442609786987305,0,2.3250999450683594,4.442609786987305,0,0,4.136499881744385,0,2.2458701133728027,4.442609786987305,-0.6017799973487854,2.2458701133728027,4.442609786987305,-0.6017799973487854,0,4.136499881744385,0,2.0136001110076904,4.442609786987305,-1.1625499725341797,2.0136001110076904,4.442609786987305,-1.1625499725341797,0,4.136499881744385,0,1.6440900564193726,4.442609786987305,-1.6440900564193726,1.6440900564193726,4.442609786987305,-1.6440900564193726,0,4.136499881744385,0,1.1625499725341797,4.442609786987305,-2.0136001110076904,1.1625499725341797,4.442609786987305,-2.0136001110076904,0,4.136499881744385,0,0.6017799973487854,4.442609786987305,-2.2458701133728027,0.6017799973487854,4.442609786987305,-2.2458701133728027,0,4.136499881744385,0,0,4.442609786987305,-2.3250999450683594,0,5.340060234069824,-4.4917497634887695,0,4.442609786987305,-2.3250999450683594,-1.1625499725341797,5.340060234069824,-4.338699817657471,0,4.442609786987305,-2.3250999450683594,-0.6017799973487854,4.442609786987305,-2.2458701133728027,-1.1625499725341797,5.340060234069824,-4.338699817657471,-1.1625499725341797,5.340060234069824,-4.338699817657471,-0.6017799973487854,4.442609786987305,-2.2458701133728027,-2.2458701133728027,5.340060234069824,-3.889970064163208,-0.6017799973487854,4.442609786987305,-2.2458701133728027,-1.1625499725341797,4.442609786987305,-2.0136001110076904,-2.2458701133728027,5.340060234069824,-3.889970064163208,-2.2458701133728027,5.340060234069824,-3.889970064163208,-1.1625499725341797,4.442609786987305,-2.0136001110076904,-3.17615008354187,5.340060234069824,-3.17615008354187,-1.1625499725341797,4.442609786987305,-2.0136001110076904,-1.6440900564193726,4.442609786987305,-1.6440900564193726,-3.17615008354187,5.340060234069824,-3.17615008354187,-3.17615008354187,5.340060234069824,-3.17615008354187,-1.6440900564193726,4.442609786987305,-1.6440900564193726,-3.889970064163208,5.340060234069824,-2.2458701133728027,-1.6440900564193726,4.442609786987305,-1.6440900564193726,-2.0136001110076904,4.442609786987305,-1.1625499725341797,-3.889970064163208,5.340060234069824,-2.2458701133728027,-3.889970064163208,5.340060234069824,-2.2458701133728027,-2.0136001110076904,4.442609786987305,-1.1625499725341797,-4.338699817657471,5.340060234069824,-1.1625499725341797,-2.0136001110076904,4.442609786987305,-1.1625499725341797,-2.2458701133728027,4.442609786987305,-0.6017799973487854,-4.338699817657471,5.340060234069824,-1.1625499725341797,-4.338699817657471,5.340060234069824,-1.1625499725341797,-2.2458701133728027,4.442609786987305,-0.6017799973487854,-4.4917497634887695,5.340060234069824,0,-2.2458701133728027,4.442609786987305,-0.6017799973487854,-2.3250999450683594,4.442609786987305,0,-4.4917497634887695,5.340060234069824,0,-4.4917497634887695,5.340060234069824,0,-2.3250999450683594,4.442609786987305,0,-4.338699817657471,5.340060234069824,1.1625499725341797,-2.3250999450683594,4.442609786987305,0,-2.2458701133728027,4.442609786987305,0.6017799973487854,-4.338699817657471,5.340060234069824,1.1625499725341797,-4.338699817657471,5.340060234069824,1.1625499725341797,-2.2458701133728027,4.442609786987305,0.6017799973487854,-3.889970064163208,5.340060234069824,2.2458701133728027,-2.2458701133728027,4.442609786987305,0.6017799973487854,-2.0136001110076904,4.442609786987305,1.1625499725341797,-3.889970064163208,5.340060234069824,2.2458701133728027,-3.889970064163208,5.340060234069824,2.2458701133728027,-2.0136001110076904,4.442609786987305,1.1625499725341797,-3.17615008354187,5.340060234069824,3.17615008354187,-2.0136001110076904,4.442609786987305,1.1625499725341797,-1.6440900564193726,4.442609786987305,1.6440900564193726,-3.17615008354187,5.340060234069824,3.17615008354187,-3.17615008354187,5.340060234069824,3.17615008354187,-1.6440900564193726,4.442609786987305,1.6440900564193726,-2.2458701133728027,5.340060234069824,3.889970064163208,-1.6440900564193726,4.442609786987305,1.6440900564193726,-1.1625499725341797,4.442609786987305,2.0136001110076904,-2.2458701133728027,5.340060234069824,3.889970064163208,-2.2458701133728027,5.340060234069824,3.889970064163208,-1.1625499725341797,4.442609786987305,2.0136001110076904,-1.1625499725341797,5.340060234069824,4.338699817657471,-1.1625499725341797,4.442609786987305,2.0136001110076904,-0.6017799973487854,4.442609786987305,2.2458701133728027,-1.1625499725341797,5.340060234069824,4.338699817657471,-1.1625499725341797,5.340060234069824,4.338699817657471,-0.6017799973487854,4.442609786987305,2.2458701133728027,0,5.340060234069824,4.4917497634887695,-0.6017799973487854,4.442609786987305,2.2458701133728027,0,4.442609786987305,2.3250999450683594,0,5.340060234069824,4.4917497634887695,0,5.340060234069824,4.4917497634887695,0,4.442609786987305,2.3250999450683594,1.1625499725341797,5.340060234069824,4.338699817657471,0,4.442609786987305,2.3250999450683594,0.6017799973487854,4.442609786987305,2.2458701133728027,1.1625499725341797,5.340060234069824,4.338699817657471,1.1625499725341797,5.340060234069824,4.338699817657471,0.6017799973487854,4.442609786987305,2.2458701133728027,2.2458701133728027,5.340060234069824,3.889970064163208,0.6017799973487854,4.442609786987305,2.2458701133728027,1.1625499725341797,4.442609786987305,2.0136001110076904,2.2458701133728027,5.340060234069824,3.889970064163208,2.2458701133728027,5.340060234069824,3.889970064163208,1.1625499725341797,4.442609786987305,2.0136001110076904,3.17615008354187,5.340060234069824,3.17615008354187,1.1625499725341797,4.442609786987305,2.0136001110076904,1.6440900564193726,4.442609786987305,1.6440900564193726,3.17615008354187,5.340060234069824,3.17615008354187,3.17615008354187,5.340060234069824,3.17615008354187,1.6440900564193726,4.442609786987305,1.6440900564193726,3.889970064163208,5.340060234069824,2.2458701133728027,1.6440900564193726,4.442609786987305,1.6440900564193726,2.0136001110076904,4.442609786987305,1.1625499725341797,3.889970064163208,5.340060234069824,2.2458701133728027,3.889970064163208,5.340060234069824,2.2458701133728027,2.0136001110076904,4.442609786987305,1.1625499725341797,4.338699817657471,5.340060234069824,1.1625499725341797,2.0136001110076904,4.442609786987305,1.1625499725341797,2.2458701133728027,4.442609786987305,0.6017799973487854,4.338699817657471,5.340060234069824,1.1625499725341797,4.338699817657471,5.340060234069824,1.1625499725341797,2.2458701133728027,4.442609786987305,0.6017799973487854,4.4917497634887695,5.340060234069824,0,2.2458701133728027,4.442609786987305,0.6017799973487854,2.3250999450683594,4.442609786987305,0,4.4917497634887695,5.340060234069824,0,4.4917497634887695,5.340060234069824,0,2.3250999450683594,4.442609786987305,0,4.338699817657471,5.340060234069824,-1.1625499725341797,2.3250999450683594,4.442609786987305,0,2.2458701133728027,4.442609786987305,-0.6017799973487854,4.338699817657471,5.340060234069824,-1.1625499725341797,4.338699817657471,5.340060234069824,-1.1625499725341797,2.2458701133728027,4.442609786987305,-0.6017799973487854,3.889970064163208,5.340060234069824,-2.2458701133728027,2.2458701133728027,4.442609786987305,-0.6017799973487854,2.0136001110076904,4.442609786987305,-1.1625499725341797,3.889970064163208,5.340060234069824,-2.2458701133728027,3.889970064163208,5.340060234069824,-2.2458701133728027,2.0136001110076904,4.442609786987305,-1.1625499725341797,3.17615008354187,5.340060234069824,-3.17615008354187,2.0136001110076904,4.442609786987305,-1.1625499725341797,1.6440900564193726,4.442609786987305,-1.6440900564193726,3.17615008354187,5.340060234069824,-3.17615008354187,3.17615008354187,5.340060234069824,-3.17615008354187,1.6440900564193726,4.442609786987305,-1.6440900564193726,2.2458701133728027,5.340060234069824,-3.889970064163208,1.6440900564193726,4.442609786987305,-1.6440900564193726,1.1625499725341797,4.442609786987305,-2.0136001110076904,2.2458701133728027,5.340060234069824,-3.889970064163208,2.2458701133728027,5.340060234069824,-3.889970064163208,1.1625499725341797,4.442609786987305,-2.0136001110076904,1.1625499725341797,5.340060234069824,-4.338699817657471,1.1625499725341797,4.442609786987305,-2.0136001110076904,0.6017799973487854,4.442609786987305,-2.2458701133728027,1.1625499725341797,5.340060234069824,-4.338699817657471,1.1625499725341797,5.340060234069824,-4.338699817657471,0.6017799973487854,4.442609786987305,-2.2458701133728027,0,5.340060234069824,-4.4917497634887695,0.6017799973487854,4.442609786987305,-2.2458701133728027,0,4.442609786987305,-2.3250999450683594,0,5.340060234069824,-4.4917497634887695,0,6.767710208892822,-6.352290153503418,0,5.340060234069824,-4.4917497634887695,-1.6440900564193726,6.767710208892822,-6.135839939117432,0,5.340060234069824,-4.4917497634887695,-1.1625499725341797,5.340060234069824,-4.338699817657471,-1.6440900564193726,6.767710208892822,-6.135839939117432,-1.6440900564193726,6.767710208892822,-6.135839939117432,-1.1625499725341797,5.340060234069824,-4.338699817657471,-3.17615008354187,6.767710208892822,-5.50124979019165,-1.1625499725341797,5.340060234069824,-4.338699817657471,-2.2458701133728027,5.340060234069824,-3.889970064163208,-3.17615008354187,6.767710208892822,-5.50124979019165,-3.17615008354187,6.767710208892822,-5.50124979019165,-2.2458701133728027,5.340060234069824,-3.889970064163208,-4.4917497634887695,6.767710208892822,-4.4917497634887695,-2.2458701133728027,5.340060234069824,-3.889970064163208,-3.17615008354187,5.340060234069824,-3.17615008354187,-4.4917497634887695,6.767710208892822,-4.4917497634887695,-4.4917497634887695,6.767710208892822,-4.4917497634887695,-3.17615008354187,5.340060234069824,-3.17615008354187,-5.50124979019165,6.767710208892822,-3.17615008354187,-3.17615008354187,5.340060234069824,-3.17615008354187,-3.889970064163208,5.340060234069824,-2.2458701133728027,-5.50124979019165,6.767710208892822,-3.17615008354187,-5.50124979019165,6.767710208892822,-3.17615008354187,-3.889970064163208,5.340060234069824,-2.2458701133728027,-6.135839939117432,6.767710208892822,-1.6440900564193726,-3.889970064163208,5.340060234069824,-2.2458701133728027,-4.338699817657471,5.340060234069824,-1.1625499725341797,-6.135839939117432,6.767710208892822,-1.6440900564193726,-6.135839939117432,6.767710208892822,-1.6440900564193726,-4.338699817657471,5.340060234069824,-1.1625499725341797,-6.352290153503418,6.767710208892822,0,-4.338699817657471,5.340060234069824,-1.1625499725341797,-4.4917497634887695,5.340060234069824,0,-6.352290153503418,6.767710208892822,0,-6.352290153503418,6.767710208892822,0,-4.4917497634887695,5.340060234069824,0,-6.135839939117432,6.767710208892822,1.6440900564193726,-4.4917497634887695,5.340060234069824,0,-4.338699817657471,5.340060234069824,1.1625499725341797,-6.135839939117432,6.767710208892822,1.6440900564193726,-6.135839939117432,6.767710208892822,1.6440900564193726,-4.338699817657471,5.340060234069824,1.1625499725341797,-5.50124979019165,6.767710208892822,3.17615008354187,-4.338699817657471,5.340060234069824,1.1625499725341797,-3.889970064163208,5.340060234069824,2.2458701133728027,-5.50124979019165,6.767710208892822,3.17615008354187,-5.50124979019165,6.767710208892822,3.17615008354187,-3.889970064163208,5.340060234069824,2.2458701133728027,-4.4917497634887695,6.767710208892822,4.4917497634887695,-3.889970064163208,5.340060234069824,2.2458701133728027,-3.17615008354187,5.340060234069824,3.17615008354187,-4.4917497634887695,6.767710208892822,4.4917497634887695,-4.4917497634887695,6.767710208892822,4.4917497634887695,-3.17615008354187,5.340060234069824,3.17615008354187,-3.17615008354187,6.767710208892822,5.50124979019165,-3.17615008354187,5.340060234069824,3.17615008354187,-2.2458701133728027,5.340060234069824,3.889970064163208,-3.17615008354187,6.767710208892822,5.50124979019165,-3.17615008354187,6.767710208892822,5.50124979019165,-2.2458701133728027,5.340060234069824,3.889970064163208,-1.6440900564193726,6.767710208892822,6.135839939117432,-2.2458701133728027,5.340060234069824,3.889970064163208,-1.1625499725341797,5.340060234069824,4.338699817657471,-1.6440900564193726,6.767710208892822,6.135839939117432,-1.6440900564193726,6.767710208892822,6.135839939117432,-1.1625499725341797,5.340060234069824,4.338699817657471,0,6.767710208892822,6.352290153503418,-1.1625499725341797,5.340060234069824,4.338699817657471,0,5.340060234069824,4.4917497634887695,0,6.767710208892822,6.352290153503418,0,6.767710208892822,6.352290153503418,0,5.340060234069824,4.4917497634887695,1.6440900564193726,6.767710208892822,6.135839939117432,0,5.340060234069824,4.4917497634887695,1.1625499725341797,5.340060234069824,4.338699817657471,1.6440900564193726,6.767710208892822,6.135839939117432,1.6440900564193726,6.767710208892822,6.135839939117432,1.1625499725341797,5.340060234069824,4.338699817657471,3.17615008354187,6.767710208892822,5.50124979019165,1.1625499725341797,5.340060234069824,4.338699817657471,2.2458701133728027,5.340060234069824,3.889970064163208,3.17615008354187,6.767710208892822,5.50124979019165,3.17615008354187,6.767710208892822,5.50124979019165,2.2458701133728027,5.340060234069824,3.889970064163208,4.4917497634887695,6.767710208892822,4.4917497634887695,2.2458701133728027,5.340060234069824,3.889970064163208,3.17615008354187,5.340060234069824,3.17615008354187,4.4917497634887695,6.767710208892822,4.4917497634887695,4.4917497634887695,6.767710208892822,4.4917497634887695,3.17615008354187,5.340060234069824,3.17615008354187,5.50124979019165,6.767710208892822,3.17615008354187,3.17615008354187,5.340060234069824,3.17615008354187,3.889970064163208,5.340060234069824,2.2458701133728027,5.50124979019165,6.767710208892822,3.17615008354187,5.50124979019165,6.767710208892822,3.17615008354187,3.889970064163208,5.340060234069824,2.2458701133728027,6.135839939117432,6.767710208892822,1.6440900564193726,3.889970064163208,5.340060234069824,2.2458701133728027,4.338699817657471,5.340060234069824,1.1625499725341797,6.135839939117432,6.767710208892822,1.6440900564193726,6.135839939117432,6.767710208892822,1.6440900564193726,4.338699817657471,5.340060234069824,1.1625499725341797,6.352290153503418,6.767710208892822,0,4.338699817657471,5.340060234069824,1.1625499725341797,4.4917497634887695,5.340060234069824,0,6.352290153503418,6.767710208892822,0,6.352290153503418,6.767710208892822,0,4.4917497634887695,5.340060234069824,0,6.135839939117432,6.767710208892822,-1.6440900564193726,4.4917497634887695,5.340060234069824,0,4.338699817657471,5.340060234069824,-1.1625499725341797,6.135839939117432,6.767710208892822,-1.6440900564193726,6.135839939117432,6.767710208892822,-1.6440900564193726,4.338699817657471,5.340060234069824,-1.1625499725341797,5.50124979019165,6.767710208892822,-3.17615008354187,4.338699817657471,5.340060234069824,-1.1625499725341797,3.889970064163208,5.340060234069824,-2.2458701133728027,5.50124979019165,6.767710208892822,-3.17615008354187,5.50124979019165,6.767710208892822,-3.17615008354187,3.889970064163208,5.340060234069824,-2.2458701133728027,4.4917497634887695,6.767710208892822,-4.4917497634887695,3.889970064163208,5.340060234069824,-2.2458701133728027,3.17615008354187,5.340060234069824,-3.17615008354187,4.4917497634887695,6.767710208892822,-4.4917497634887695,4.4917497634887695,6.767710208892822,-4.4917497634887695,3.17615008354187,5.340060234069824,-3.17615008354187,3.17615008354187,6.767710208892822,-5.50124979019165,3.17615008354187,5.340060234069824,-3.17615008354187,2.2458701133728027,5.340060234069824,-3.889970064163208,3.17615008354187,6.767710208892822,-5.50124979019165,3.17615008354187,6.767710208892822,-5.50124979019165,2.2458701133728027,5.340060234069824,-3.889970064163208,1.6440900564193726,6.767710208892822,-6.135839939117432,2.2458701133728027,5.340060234069824,-3.889970064163208,1.1625499725341797,5.340060234069824,-4.338699817657471,1.6440900564193726,6.767710208892822,-6.135839939117432,1.6440900564193726,6.767710208892822,-6.135839939117432,1.1625499725341797,5.340060234069824,-4.338699817657471,0,6.767710208892822,-6.352290153503418,1.1625499725341797,5.340060234069824,-4.338699817657471,0,5.340060234069824,-4.4917497634887695,0,6.767710208892822,-6.352290153503418,0,8.628250122070312,-7.779940128326416,0,6.767710208892822,-6.352290153503418,-2.0136001110076904,8.628250122070312,-7.514840126037598,0,6.767710208892822,-6.352290153503418,-1.6440900564193726,6.767710208892822,-6.135839939117432,-2.0136001110076904,8.628250122070312,-7.514840126037598,-2.0136001110076904,8.628250122070312,-7.514840126037598,-1.6440900564193726,6.767710208892822,-6.135839939117432,-3.889970064163208,8.628250122070312,-6.7376298904418945,-1.6440900564193726,6.767710208892822,-6.135839939117432,-3.17615008354187,6.767710208892822,-5.50124979019165,-3.889970064163208,8.628250122070312,-6.7376298904418945,-3.889970064163208,8.628250122070312,-6.7376298904418945,-3.17615008354187,6.767710208892822,-5.50124979019165,-5.50124979019165,8.628250122070312,-5.50124979019165,-3.17615008354187,6.767710208892822,-5.50124979019165,-4.4917497634887695,6.767710208892822,-4.4917497634887695,-5.50124979019165,8.628250122070312,-5.50124979019165,-5.50124979019165,8.628250122070312,-5.50124979019165,-4.4917497634887695,6.767710208892822,-4.4917497634887695,-6.7376298904418945,8.628250122070312,-3.889970064163208,-4.4917497634887695,6.767710208892822,-4.4917497634887695,-5.50124979019165,6.767710208892822,-3.17615008354187,-6.7376298904418945,8.628250122070312,-3.889970064163208,-6.7376298904418945,8.628250122070312,-3.889970064163208,-5.50124979019165,6.767710208892822,-3.17615008354187,-7.514840126037598,8.628250122070312,-2.0136001110076904,-5.50124979019165,6.767710208892822,-3.17615008354187,-6.135839939117432,6.767710208892822,-1.6440900564193726,-7.514840126037598,8.628250122070312,-2.0136001110076904,-7.514840126037598,8.628250122070312,-2.0136001110076904,-6.135839939117432,6.767710208892822,-1.6440900564193726,-7.779940128326416,8.628250122070312,0,-6.135839939117432,6.767710208892822,-1.6440900564193726,-6.352290153503418,6.767710208892822,0,-7.779940128326416,8.628250122070312,0,-7.779940128326416,8.628250122070312,0,-6.352290153503418,6.767710208892822,0,-7.514840126037598,8.628250122070312,2.0136001110076904,-6.352290153503418,6.767710208892822,0,-6.135839939117432,6.767710208892822,1.6440900564193726,-7.514840126037598,8.628250122070312,2.0136001110076904,-7.514840126037598,8.628250122070312,2.0136001110076904,-6.135839939117432,6.767710208892822,1.6440900564193726,-6.7376298904418945,8.628250122070312,3.889970064163208,-6.135839939117432,6.767710208892822,1.6440900564193726,-5.50124979019165,6.767710208892822,3.17615008354187,-6.7376298904418945,8.628250122070312,3.889970064163208,-6.7376298904418945,8.628250122070312,3.889970064163208,-5.50124979019165,6.767710208892822,3.17615008354187,-5.50124979019165,8.628250122070312,5.50124979019165,-5.50124979019165,6.767710208892822,3.17615008354187,-4.4917497634887695,6.767710208892822,4.4917497634887695,-5.50124979019165,8.628250122070312,5.50124979019165,-5.50124979019165,8.628250122070312,5.50124979019165,-4.4917497634887695,6.767710208892822,4.4917497634887695,-3.889970064163208,8.628250122070312,6.7376298904418945,-4.4917497634887695,6.767710208892822,4.4917497634887695,-3.17615008354187,6.767710208892822,5.50124979019165,-3.889970064163208,8.628250122070312,6.7376298904418945,-3.889970064163208,8.628250122070312,6.7376298904418945,-3.17615008354187,6.767710208892822,5.50124979019165,-2.0136001110076904,8.628250122070312,7.514840126037598,-3.17615008354187,6.767710208892822,5.50124979019165,-1.6440900564193726,6.767710208892822,6.135839939117432,-2.0136001110076904,8.628250122070312,7.514840126037598,-2.0136001110076904,8.628250122070312,7.514840126037598,-1.6440900564193726,6.767710208892822,6.135839939117432,0,8.628250122070312,7.779940128326416,-1.6440900564193726,6.767710208892822,6.135839939117432,0,6.767710208892822,6.352290153503418,0,8.628250122070312,7.779940128326416,0,8.628250122070312,7.779940128326416,0,6.767710208892822,6.352290153503418,2.0136001110076904,8.628250122070312,7.514840126037598,0,6.767710208892822,6.352290153503418,1.6440900564193726,6.767710208892822,6.135839939117432,2.0136001110076904,8.628250122070312,7.514840126037598,2.0136001110076904,8.628250122070312,7.514840126037598,1.6440900564193726,6.767710208892822,6.135839939117432,3.889970064163208,8.628250122070312,6.7376298904418945,1.6440900564193726,6.767710208892822,6.135839939117432,3.17615008354187,6.767710208892822,5.50124979019165,3.889970064163208,8.628250122070312,6.7376298904418945,3.889970064163208,8.628250122070312,6.7376298904418945,3.17615008354187,6.767710208892822,5.50124979019165,5.50124979019165,8.628250122070312,5.50124979019165,3.17615008354187,6.767710208892822,5.50124979019165,4.4917497634887695,6.767710208892822,4.4917497634887695,5.50124979019165,8.628250122070312,5.50124979019165,5.50124979019165,8.628250122070312,5.50124979019165,4.4917497634887695,6.767710208892822,4.4917497634887695,6.7376298904418945,8.628250122070312,3.889970064163208,4.4917497634887695,6.767710208892822,4.4917497634887695,5.50124979019165,6.767710208892822,3.17615008354187,6.7376298904418945,8.628250122070312,3.889970064163208,6.7376298904418945,8.628250122070312,3.889970064163208,5.50124979019165,6.767710208892822,3.17615008354187,7.514840126037598,8.628250122070312,2.0136001110076904,5.50124979019165,6.767710208892822,3.17615008354187,6.135839939117432,6.767710208892822,1.6440900564193726,7.514840126037598,8.628250122070312,2.0136001110076904,7.514840126037598,8.628250122070312,2.0136001110076904,6.135839939117432,6.767710208892822,1.6440900564193726,7.779940128326416,8.628250122070312,0,6.135839939117432,6.767710208892822,1.6440900564193726,6.352290153503418,6.767710208892822,0,7.779940128326416,8.628250122070312,0,7.779940128326416,8.628250122070312,0,6.352290153503418,6.767710208892822,0,7.514840126037598,8.628250122070312,-2.0136001110076904,6.352290153503418,6.767710208892822,0,6.135839939117432,6.767710208892822,-1.6440900564193726,7.514840126037598,8.628250122070312,-2.0136001110076904,7.514840126037598,8.628250122070312,-2.0136001110076904,6.135839939117432,6.767710208892822,-1.6440900564193726,6.7376298904418945,8.628250122070312,-3.889970064163208,6.135839939117432,6.767710208892822,-1.6440900564193726,5.50124979019165,6.767710208892822,-3.17615008354187,6.7376298904418945,8.628250122070312,-3.889970064163208,6.7376298904418945,8.628250122070312,-3.889970064163208,5.50124979019165,6.767710208892822,-3.17615008354187,5.50124979019165,8.628250122070312,-5.50124979019165,5.50124979019165,6.767710208892822,-3.17615008354187,4.4917497634887695,6.767710208892822,-4.4917497634887695,5.50124979019165,8.628250122070312,-5.50124979019165,5.50124979019165,8.628250122070312,-5.50124979019165,4.4917497634887695,6.767710208892822,-4.4917497634887695,3.889970064163208,8.628250122070312,-6.7376298904418945,4.4917497634887695,6.767710208892822,-4.4917497634887695,3.17615008354187,6.767710208892822,-5.50124979019165,3.889970064163208,8.628250122070312,-6.7376298904418945,3.889970064163208,8.628250122070312,-6.7376298904418945,3.17615008354187,6.767710208892822,-5.50124979019165,2.0136001110076904,8.628250122070312,-7.514840126037598,3.17615008354187,6.767710208892822,-5.50124979019165,1.6440900564193726,6.767710208892822,-6.135839939117432,2.0136001110076904,8.628250122070312,-7.514840126037598,2.0136001110076904,8.628250122070312,-7.514840126037598,1.6440900564193726,6.767710208892822,-6.135839939117432,0,8.628250122070312,-7.779940128326416,1.6440900564193726,6.767710208892822,-6.135839939117432,0,6.767710208892822,-6.352290153503418,0,8.628250122070312,-7.779940128326416,0,10.794899940490723,-8.677390098571777,0,8.628250122070312,-7.779940128326416,-2.2458701133728027,10.794899940490723,-8.381719589233398,0,8.628250122070312,-7.779940128326416,-2.0136001110076904,8.628250122070312,-7.514840126037598,-2.2458701133728027,10.794899940490723,-8.381719589233398,-2.2458701133728027,10.794899940490723,-8.381719589233398,-2.0136001110076904,8.628250122070312,-7.514840126037598,-4.338699817657471,10.794899940490723,-7.514840126037598,-2.0136001110076904,8.628250122070312,-7.514840126037598,-3.889970064163208,8.628250122070312,-6.7376298904418945,-4.338699817657471,10.794899940490723,-7.514840126037598,-4.338699817657471,10.794899940490723,-7.514840126037598,-3.889970064163208,8.628250122070312,-6.7376298904418945,-6.135839939117432,10.794899940490723,-6.135839939117432,-3.889970064163208,8.628250122070312,-6.7376298904418945,-5.50124979019165,8.628250122070312,-5.50124979019165,-6.135839939117432,10.794899940490723,-6.135839939117432,-6.135839939117432,10.794899940490723,-6.135839939117432,-5.50124979019165,8.628250122070312,-5.50124979019165,-7.514840126037598,10.794899940490723,-4.338699817657471,-5.50124979019165,8.628250122070312,-5.50124979019165,-6.7376298904418945,8.628250122070312,-3.889970064163208,-7.514840126037598,10.794899940490723,-4.338699817657471,-7.514840126037598,10.794899940490723,-4.338699817657471,-6.7376298904418945,8.628250122070312,-3.889970064163208,-8.381719589233398,10.794899940490723,-2.2458701133728027,-6.7376298904418945,8.628250122070312,-3.889970064163208,-7.514840126037598,8.628250122070312,-2.0136001110076904,-8.381719589233398,10.794899940490723,-2.2458701133728027,-8.381719589233398,10.794899940490723,-2.2458701133728027,-7.514840126037598,8.628250122070312,-2.0136001110076904,-8.677390098571777,10.794899940490723,0,-7.514840126037598,8.628250122070312,-2.0136001110076904,-7.779940128326416,8.628250122070312,0,-8.677390098571777,10.794899940490723,0,-8.677390098571777,10.794899940490723,0,-7.779940128326416,8.628250122070312,0,-8.381719589233398,10.794899940490723,2.2458701133728027,-7.779940128326416,8.628250122070312,0,-7.514840126037598,8.628250122070312,2.0136001110076904,-8.381719589233398,10.794899940490723,2.2458701133728027,-8.381719589233398,10.794899940490723,2.2458701133728027,-7.514840126037598,8.628250122070312,2.0136001110076904,-7.514840126037598,10.794899940490723,4.338699817657471,-7.514840126037598,8.628250122070312,2.0136001110076904,-6.7376298904418945,8.628250122070312,3.889970064163208,-7.514840126037598,10.794899940490723,4.338699817657471,-7.514840126037598,10.794899940490723,4.338699817657471,-6.7376298904418945,8.628250122070312,3.889970064163208,-6.135839939117432,10.794899940490723,6.135839939117432,-6.7376298904418945,8.628250122070312,3.889970064163208,-5.50124979019165,8.628250122070312,5.50124979019165,-6.135839939117432,10.794899940490723,6.135839939117432,-6.135839939117432,10.794899940490723,6.135839939117432,-5.50124979019165,8.628250122070312,5.50124979019165,-4.338699817657471,10.794899940490723,7.514840126037598,-5.50124979019165,8.628250122070312,5.50124979019165,-3.889970064163208,8.628250122070312,6.7376298904418945,-4.338699817657471,10.794899940490723,7.514840126037598,-4.338699817657471,10.794899940490723,7.514840126037598,-3.889970064163208,8.628250122070312,6.7376298904418945,-2.2458701133728027,10.794899940490723,8.381719589233398,-3.889970064163208,8.628250122070312,6.7376298904418945,-2.0136001110076904,8.628250122070312,7.514840126037598,-2.2458701133728027,10.794899940490723,8.381719589233398,-2.2458701133728027,10.794899940490723,8.381719589233398,-2.0136001110076904,8.628250122070312,7.514840126037598,0,10.794899940490723,8.677390098571777,-2.0136001110076904,8.628250122070312,7.514840126037598,0,8.628250122070312,7.779940128326416,0,10.794899940490723,8.677390098571777,0,10.794899940490723,8.677390098571777,0,8.628250122070312,7.779940128326416,2.2458701133728027,10.794899940490723,8.381719589233398,0,8.628250122070312,7.779940128326416,2.0136001110076904,8.628250122070312,7.514840126037598,2.2458701133728027,10.794899940490723,8.381719589233398,2.2458701133728027,10.794899940490723,8.381719589233398,2.0136001110076904,8.628250122070312,7.514840126037598,4.338699817657471,10.794899940490723,7.514840126037598,2.0136001110076904,8.628250122070312,7.514840126037598,3.889970064163208,8.628250122070312,6.7376298904418945,4.338699817657471,10.794899940490723,7.514840126037598,4.338699817657471,10.794899940490723,7.514840126037598,3.889970064163208,8.628250122070312,6.7376298904418945,6.135839939117432,10.794899940490723,6.135839939117432,3.889970064163208,8.628250122070312,6.7376298904418945,5.50124979019165,8.628250122070312,5.50124979019165,6.135839939117432,10.794899940490723,6.135839939117432,6.135839939117432,10.794899940490723,6.135839939117432,5.50124979019165,8.628250122070312,5.50124979019165,7.514840126037598,10.794899940490723,4.338699817657471,5.50124979019165,8.628250122070312,5.50124979019165,6.7376298904418945,8.628250122070312,3.889970064163208,7.514840126037598,10.794899940490723,4.338699817657471,7.514840126037598,10.794899940490723,4.338699817657471,6.7376298904418945,8.628250122070312,3.889970064163208,8.381719589233398,10.794899940490723,2.2458701133728027,6.7376298904418945,8.628250122070312,3.889970064163208,7.514840126037598,8.628250122070312,2.0136001110076904,8.381719589233398,10.794899940490723,2.2458701133728027,8.381719589233398,10.794899940490723,2.2458701133728027,7.514840126037598,8.628250122070312,2.0136001110076904,8.677390098571777,10.794899940490723,0,7.514840126037598,8.628250122070312,2.0136001110076904,7.779940128326416,8.628250122070312,0,8.677390098571777,10.794899940490723,0,8.677390098571777,10.794899940490723,0,7.779940128326416,8.628250122070312,0,8.381719589233398,10.794899940490723,-2.2458701133728027,7.779940128326416,8.628250122070312,0,7.514840126037598,8.628250122070312,-2.0136001110076904,8.381719589233398,10.794899940490723,-2.2458701133728027,8.381719589233398,10.794899940490723,-2.2458701133728027,7.514840126037598,8.628250122070312,-2.0136001110076904,7.514840126037598,10.794899940490723,-4.338699817657471,7.514840126037598,8.628250122070312,-2.0136001110076904,6.7376298904418945,8.628250122070312,-3.889970064163208,7.514840126037598,10.794899940490723,-4.338699817657471,7.514840126037598,10.794899940490723,-4.338699817657471,6.7376298904418945,8.628250122070312,-3.889970064163208,6.135839939117432,10.794899940490723,-6.135839939117432,6.7376298904418945,8.628250122070312,-3.889970064163208,5.50124979019165,8.628250122070312,-5.50124979019165,6.135839939117432,10.794899940490723,-6.135839939117432,6.135839939117432,10.794899940490723,-6.135839939117432,5.50124979019165,8.628250122070312,-5.50124979019165,4.338699817657471,10.794899940490723,-7.514840126037598,5.50124979019165,8.628250122070312,-5.50124979019165,3.889970064163208,8.628250122070312,-6.7376298904418945,4.338699817657471,10.794899940490723,-7.514840126037598,4.338699817657471,10.794899940490723,-7.514840126037598,3.889970064163208,8.628250122070312,-6.7376298904418945,2.2458701133728027,10.794899940490723,-8.381719589233398,3.889970064163208,8.628250122070312,-6.7376298904418945,2.0136001110076904,8.628250122070312,-7.514840126037598,2.2458701133728027,10.794899940490723,-8.381719589233398,2.2458701133728027,10.794899940490723,-8.381719589233398,2.0136001110076904,8.628250122070312,-7.514840126037598,0,10.794899940490723,-8.677390098571777,2.0136001110076904,8.628250122070312,-7.514840126037598,0,8.628250122070312,-7.779940128326416,0,10.794899940490723,-8.677390098571777,0,13.119999885559082,-8.983499526977539,0,10.794899940490723,-8.677390098571777,-2.3250999450683594,13.119999885559082,-8.677390098571777,0,10.794899940490723,-8.677390098571777,-2.2458701133728027,10.794899940490723,-8.381719589233398,-2.3250999450683594,13.119999885559082,-8.677390098571777,-2.3250999450683594,13.119999885559082,-8.677390098571777,-2.2458701133728027,10.794899940490723,-8.381719589233398,-4.4917497634887695,13.119999885559082,-7.779940128326416,-2.2458701133728027,10.794899940490723,-8.381719589233398,-4.338699817657471,10.794899940490723,-7.514840126037598,-4.4917497634887695,13.119999885559082,-7.779940128326416,-4.4917497634887695,13.119999885559082,-7.779940128326416,-4.338699817657471,10.794899940490723,-7.514840126037598,-6.352290153503418,13.119999885559082,-6.352290153503418,-4.338699817657471,10.794899940490723,-7.514840126037598,-6.135839939117432,10.794899940490723,-6.135839939117432,-6.352290153503418,13.119999885559082,-6.352290153503418,-6.352290153503418,13.119999885559082,-6.352290153503418,-6.135839939117432,10.794899940490723,-6.135839939117432,-7.779940128326416,13.119999885559082,-4.4917497634887695,-6.135839939117432,10.794899940490723,-6.135839939117432,-7.514840126037598,10.794899940490723,-4.338699817657471,-7.779940128326416,13.119999885559082,-4.4917497634887695,-7.779940128326416,13.119999885559082,-4.4917497634887695,-7.514840126037598,10.794899940490723,-4.338699817657471,-8.677390098571777,13.119999885559082,-2.3250999450683594,-7.514840126037598,10.794899940490723,-4.338699817657471,-8.381719589233398,10.794899940490723,-2.2458701133728027,-8.677390098571777,13.119999885559082,-2.3250999450683594,-8.677390098571777,13.119999885559082,-2.3250999450683594,-8.381719589233398,10.794899940490723,-2.2458701133728027,-8.983499526977539,13.119999885559082,0,-8.381719589233398,10.794899940490723,-2.2458701133728027,-8.677390098571777,10.794899940490723,0,-8.983499526977539,13.119999885559082,0,-8.983499526977539,13.119999885559082,0,-8.677390098571777,10.794899940490723,0,-8.677390098571777,13.119999885559082,2.3250999450683594,-8.677390098571777,10.794899940490723,0,-8.381719589233398,10.794899940490723,2.2458701133728027,-8.677390098571777,13.119999885559082,2.3250999450683594,-8.677390098571777,13.119999885559082,2.3250999450683594,-8.381719589233398,10.794899940490723,2.2458701133728027,-7.779940128326416,13.119999885559082,4.4917497634887695,-8.381719589233398,10.794899940490723,2.2458701133728027,-7.514840126037598,10.794899940490723,4.338699817657471,-7.779940128326416,13.119999885559082,4.4917497634887695,-7.779940128326416,13.119999885559082,4.4917497634887695,-7.514840126037598,10.794899940490723,4.338699817657471,-6.352290153503418,13.119999885559082,6.352290153503418,-7.514840126037598,10.794899940490723,4.338699817657471,-6.135839939117432,10.794899940490723,6.135839939117432,-6.352290153503418,13.119999885559082,6.352290153503418,-6.352290153503418,13.119999885559082,6.352290153503418,-6.135839939117432,10.794899940490723,6.135839939117432,-4.4917497634887695,13.119999885559082,7.779940128326416,-6.135839939117432,10.794899940490723,6.135839939117432,-4.338699817657471,10.794899940490723,7.514840126037598,-4.4917497634887695,13.119999885559082,7.779940128326416,-4.4917497634887695,13.119999885559082,7.779940128326416,-4.338699817657471,10.794899940490723,7.514840126037598,-2.3250999450683594,13.119999885559082,8.677390098571777,-4.338699817657471,10.794899940490723,7.514840126037598,-2.2458701133728027,10.794899940490723,8.381719589233398,-2.3250999450683594,13.119999885559082,8.677390098571777,-2.3250999450683594,13.119999885559082,8.677390098571777,-2.2458701133728027,10.794899940490723,8.381719589233398,0,13.119999885559082,8.983499526977539,-2.2458701133728027,10.794899940490723,8.381719589233398,0,10.794899940490723,8.677390098571777,0,13.119999885559082,8.983499526977539,0,13.119999885559082,8.983499526977539,0,10.794899940490723,8.677390098571777,2.3250999450683594,13.119999885559082,8.677390098571777,0,10.794899940490723,8.677390098571777,2.2458701133728027,10.794899940490723,8.381719589233398,2.3250999450683594,13.119999885559082,8.677390098571777,2.3250999450683594,13.119999885559082,8.677390098571777,2.2458701133728027,10.794899940490723,8.381719589233398,4.4917497634887695,13.119999885559082,7.779940128326416,2.2458701133728027,10.794899940490723,8.381719589233398,4.338699817657471,10.794899940490723,7.514840126037598,4.4917497634887695,13.119999885559082,7.779940128326416,4.4917497634887695,13.119999885559082,7.779940128326416,4.338699817657471,10.794899940490723,7.514840126037598,6.352290153503418,13.119999885559082,6.352290153503418,4.338699817657471,10.794899940490723,7.514840126037598,6.135839939117432,10.794899940490723,6.135839939117432,6.352290153503418,13.119999885559082,6.352290153503418,6.352290153503418,13.119999885559082,6.352290153503418,6.135839939117432,10.794899940490723,6.135839939117432,7.779940128326416,13.119999885559082,4.4917497634887695,6.135839939117432,10.794899940490723,6.135839939117432,7.514840126037598,10.794899940490723,4.338699817657471,7.779940128326416,13.119999885559082,4.4917497634887695,7.779940128326416,13.119999885559082,4.4917497634887695,7.514840126037598,10.794899940490723,4.338699817657471,8.677390098571777,13.119999885559082,2.3250999450683594,7.514840126037598,10.794899940490723,4.338699817657471,8.381719589233398,10.794899940490723,2.2458701133728027,8.677390098571777,13.119999885559082,2.3250999450683594,8.677390098571777,13.119999885559082,2.3250999450683594,8.381719589233398,10.794899940490723,2.2458701133728027,8.983499526977539,13.119999885559082,0,8.381719589233398,10.794899940490723,2.2458701133728027,8.677390098571777,10.794899940490723,0,8.983499526977539,13.119999885559082,0,8.983499526977539,13.119999885559082,0,8.677390098571777,10.794899940490723,0,8.677390098571777,13.119999885559082,-2.3250999450683594,8.677390098571777,10.794899940490723,0,8.381719589233398,10.794899940490723,-2.2458701133728027,8.677390098571777,13.119999885559082,-2.3250999450683594,8.677390098571777,13.119999885559082,-2.3250999450683594,8.381719589233398,10.794899940490723,-2.2458701133728027,7.779940128326416,13.119999885559082,-4.4917497634887695,8.381719589233398,10.794899940490723,-2.2458701133728027,7.514840126037598,10.794899940490723,-4.338699817657471,7.779940128326416,13.119999885559082,-4.4917497634887695,7.779940128326416,13.119999885559082,-4.4917497634887695,7.514840126037598,10.794899940490723,-4.338699817657471,6.352290153503418,13.119999885559082,-6.352290153503418,7.514840126037598,10.794899940490723,-4.338699817657471,6.135839939117432,10.794899940490723,-6.135839939117432,6.352290153503418,13.119999885559082,-6.352290153503418,6.352290153503418,13.119999885559082,-6.352290153503418,6.135839939117432,10.794899940490723,-6.135839939117432,4.4917497634887695,13.119999885559082,-7.779940128326416,6.135839939117432,10.794899940490723,-6.135839939117432,4.338699817657471,10.794899940490723,-7.514840126037598,4.4917497634887695,13.119999885559082,-7.779940128326416,4.4917497634887695,13.119999885559082,-7.779940128326416,4.338699817657471,10.794899940490723,-7.514840126037598,2.3250999450683594,13.119999885559082,-8.677390098571777,4.338699817657471,10.794899940490723,-7.514840126037598,2.2458701133728027,10.794899940490723,-8.381719589233398,2.3250999450683594,13.119999885559082,-8.677390098571777,2.3250999450683594,13.119999885559082,-8.677390098571777,2.2458701133728027,10.794899940490723,-8.381719589233398,0,13.119999885559082,-8.983499526977539,2.2458701133728027,10.794899940490723,-8.381719589233398,0,10.794899940490723,-8.677390098571777,0,13.119999885559082,-8.983499526977539,0,15.445099830627441,-8.677390098571777,0,13.119999885559082,-8.983499526977539,-2.2458701133728027,15.445099830627441,-8.381719589233398,0,13.119999885559082,-8.983499526977539,-2.3250999450683594,13.119999885559082,-8.677390098571777,-2.2458701133728027,15.445099830627441,-8.381719589233398,-2.2458701133728027,15.445099830627441,-8.381719589233398,-2.3250999450683594,13.119999885559082,-8.677390098571777,-4.338699817657471,15.445099830627441,-7.514840126037598,-2.3250999450683594,13.119999885559082,-8.677390098571777,-4.4917497634887695,13.119999885559082,-7.779940128326416,-4.338699817657471,15.445099830627441,-7.514840126037598,-4.338699817657471,15.445099830627441,-7.514840126037598,-4.4917497634887695,13.119999885559082,-7.779940128326416,-6.135839939117432,15.445099830627441,-6.135839939117432,-4.4917497634887695,13.119999885559082,-7.779940128326416,-6.352290153503418,13.119999885559082,-6.352290153503418,-6.135839939117432,15.445099830627441,-6.135839939117432,-6.135839939117432,15.445099830627441,-6.135839939117432,-6.352290153503418,13.119999885559082,-6.352290153503418,-7.514840126037598,15.445099830627441,-4.338699817657471,-6.352290153503418,13.119999885559082,-6.352290153503418,-7.779940128326416,13.119999885559082,-4.4917497634887695,-7.514840126037598,15.445099830627441,-4.338699817657471,-7.514840126037598,15.445099830627441,-4.338699817657471,-7.779940128326416,13.119999885559082,-4.4917497634887695,-8.381719589233398,15.445099830627441,-2.2458701133728027,-7.779940128326416,13.119999885559082,-4.4917497634887695,-8.677390098571777,13.119999885559082,-2.3250999450683594,-8.381719589233398,15.445099830627441,-2.2458701133728027,-8.381719589233398,15.445099830627441,-2.2458701133728027,-8.677390098571777,13.119999885559082,-2.3250999450683594,-8.677390098571777,15.445099830627441,0,-8.677390098571777,13.119999885559082,-2.3250999450683594,-8.983499526977539,13.119999885559082,0,-8.677390098571777,15.445099830627441,0,-8.677390098571777,15.445099830627441,0,-8.983499526977539,13.119999885559082,0,-8.381719589233398,15.445099830627441,2.2458701133728027,-8.983499526977539,13.119999885559082,0,-8.677390098571777,13.119999885559082,2.3250999450683594,-8.381719589233398,15.445099830627441,2.2458701133728027,-8.381719589233398,15.445099830627441,2.2458701133728027,-8.677390098571777,13.119999885559082,2.3250999450683594,-7.514840126037598,15.445099830627441,4.338699817657471,-8.677390098571777,13.119999885559082,2.3250999450683594,-7.779940128326416,13.119999885559082,4.4917497634887695,-7.514840126037598,15.445099830627441,4.338699817657471,-7.514840126037598,15.445099830627441,4.338699817657471,-7.779940128326416,13.119999885559082,4.4917497634887695,-6.135839939117432,15.445099830627441,6.135839939117432,-7.779940128326416,13.119999885559082,4.4917497634887695,-6.352290153503418,13.119999885559082,6.352290153503418,-6.135839939117432,15.445099830627441,6.135839939117432,-6.135839939117432,15.445099830627441,6.135839939117432,-6.352290153503418,13.119999885559082,6.352290153503418,-4.338699817657471,15.445099830627441,7.514840126037598,-6.352290153503418,13.119999885559082,6.352290153503418,-4.4917497634887695,13.119999885559082,7.779940128326416,-4.338699817657471,15.445099830627441,7.514840126037598,-4.338699817657471,15.445099830627441,7.514840126037598,-4.4917497634887695,13.119999885559082,7.779940128326416,-2.2458701133728027,15.445099830627441,8.381719589233398,-4.4917497634887695,13.119999885559082,7.779940128326416,-2.3250999450683594,13.119999885559082,8.677390098571777,-2.2458701133728027,15.445099830627441,8.381719589233398,-2.2458701133728027,15.445099830627441,8.381719589233398,-2.3250999450683594,13.119999885559082,8.677390098571777,0,15.445099830627441,8.677390098571777,-2.3250999450683594,13.119999885559082,8.677390098571777,0,13.119999885559082,8.983499526977539,0,15.445099830627441,8.677390098571777,0,15.445099830627441,8.677390098571777,0,13.119999885559082,8.983499526977539,2.2458701133728027,15.445099830627441,8.381719589233398,0,13.119999885559082,8.983499526977539,2.3250999450683594,13.119999885559082,8.677390098571777,2.2458701133728027,15.445099830627441,8.381719589233398,2.2458701133728027,15.445099830627441,8.381719589233398,2.3250999450683594,13.119999885559082,8.677390098571777,4.338699817657471,15.445099830627441,7.514840126037598,2.3250999450683594,13.119999885559082,8.677390098571777,4.4917497634887695,13.119999885559082,7.779940128326416,4.338699817657471,15.445099830627441,7.514840126037598,4.338699817657471,15.445099830627441,7.514840126037598,4.4917497634887695,13.119999885559082,7.779940128326416,6.135839939117432,15.445099830627441,6.135839939117432,4.4917497634887695,13.119999885559082,7.779940128326416,6.352290153503418,13.119999885559082,6.352290153503418,6.135839939117432,15.445099830627441,6.135839939117432,6.135839939117432,15.445099830627441,6.135839939117432,6.352290153503418,13.119999885559082,6.352290153503418,7.514840126037598,15.445099830627441,4.338699817657471,6.352290153503418,13.119999885559082,6.352290153503418,7.779940128326416,13.119999885559082,4.4917497634887695,7.514840126037598,15.445099830627441,4.338699817657471,7.514840126037598,15.445099830627441,4.338699817657471,7.779940128326416,13.119999885559082,4.4917497634887695,8.381719589233398,15.445099830627441,2.2458701133728027,7.779940128326416,13.119999885559082,4.4917497634887695,8.677390098571777,13.119999885559082,2.3250999450683594,8.381719589233398,15.445099830627441,2.2458701133728027,8.381719589233398,15.445099830627441,2.2458701133728027,8.677390098571777,13.119999885559082,2.3250999450683594,8.677390098571777,15.445099830627441,0,8.677390098571777,13.119999885559082,2.3250999450683594,8.983499526977539,13.119999885559082,0,8.677390098571777,15.445099830627441,0,8.677390098571777,15.445099830627441,0,8.983499526977539,13.119999885559082,0,8.381719589233398,15.445099830627441,-2.2458701133728027,8.983499526977539,13.119999885559082,0,8.677390098571777,13.119999885559082,-2.3250999450683594,8.381719589233398,15.445099830627441,-2.2458701133728027,8.381719589233398,15.445099830627441,-2.2458701133728027,8.677390098571777,13.119999885559082,-2.3250999450683594,7.514840126037598,15.445099830627441,-4.338699817657471,8.677390098571777,13.119999885559082,-2.3250999450683594,7.779940128326416,13.119999885559082,-4.4917497634887695,7.514840126037598,15.445099830627441,-4.338699817657471,7.514840126037598,15.445099830627441,-4.338699817657471,7.779940128326416,13.119999885559082,-4.4917497634887695,6.135839939117432,15.445099830627441,-6.135839939117432,7.779940128326416,13.119999885559082,-4.4917497634887695,6.352290153503418,13.119999885559082,-6.352290153503418,6.135839939117432,15.445099830627441,-6.135839939117432,6.135839939117432,15.445099830627441,-6.135839939117432,6.352290153503418,13.119999885559082,-6.352290153503418,4.338699817657471,15.445099830627441,-7.514840126037598,6.352290153503418,13.119999885559082,-6.352290153503418,4.4917497634887695,13.119999885559082,-7.779940128326416,4.338699817657471,15.445099830627441,-7.514840126037598,4.338699817657471,15.445099830627441,-7.514840126037598,4.4917497634887695,13.119999885559082,-7.779940128326416,2.2458701133728027,15.445099830627441,-8.381719589233398,4.4917497634887695,13.119999885559082,-7.779940128326416,2.3250999450683594,13.119999885559082,-8.677390098571777,2.2458701133728027,15.445099830627441,-8.381719589233398,2.2458701133728027,15.445099830627441,-8.381719589233398,2.3250999450683594,13.119999885559082,-8.677390098571777,0,15.445099830627441,-8.677390098571777,2.3250999450683594,13.119999885559082,-8.677390098571777,0,13.119999885559082,-8.983499526977539,0,15.445099830627441,-8.677390098571777,0,17.611799240112305,-7.779940128326416,0,15.445099830627441,-8.677390098571777,-2.0136001110076904,17.611799240112305,-7.514840126037598,0,15.445099830627441,-8.677390098571777,-2.2458701133728027,15.445099830627441,-8.381719589233398,-2.0136001110076904,17.611799240112305,-7.514840126037598,-2.0136001110076904,17.611799240112305,-7.514840126037598,-2.2458701133728027,15.445099830627441,-8.381719589233398,-3.889970064163208,17.611799240112305,-6.7376298904418945,-2.2458701133728027,15.445099830627441,-8.381719589233398,-4.338699817657471,15.445099830627441,-7.514840126037598,-3.889970064163208,17.611799240112305,-6.7376298904418945,-3.889970064163208,17.611799240112305,-6.7376298904418945,-4.338699817657471,15.445099830627441,-7.514840126037598,-5.50124979019165,17.611799240112305,-5.50124979019165,-4.338699817657471,15.445099830627441,-7.514840126037598,-6.135839939117432,15.445099830627441,-6.135839939117432,-5.50124979019165,17.611799240112305,-5.50124979019165,-5.50124979019165,17.611799240112305,-5.50124979019165,-6.135839939117432,15.445099830627441,-6.135839939117432,-6.7376298904418945,17.611799240112305,-3.889970064163208,-6.135839939117432,15.445099830627441,-6.135839939117432,-7.514840126037598,15.445099830627441,-4.338699817657471,-6.7376298904418945,17.611799240112305,-3.889970064163208,-6.7376298904418945,17.611799240112305,-3.889970064163208,-7.514840126037598,15.445099830627441,-4.338699817657471,-7.514840126037598,17.611799240112305,-2.0136001110076904,-7.514840126037598,15.445099830627441,-4.338699817657471,-8.381719589233398,15.445099830627441,-2.2458701133728027,-7.514840126037598,17.611799240112305,-2.0136001110076904,-7.514840126037598,17.611799240112305,-2.0136001110076904,-8.381719589233398,15.445099830627441,-2.2458701133728027,-7.779940128326416,17.611799240112305,0,-8.381719589233398,15.445099830627441,-2.2458701133728027,-8.677390098571777,15.445099830627441,0,-7.779940128326416,17.611799240112305,0,-7.779940128326416,17.611799240112305,0,-8.677390098571777,15.445099830627441,0,-7.514840126037598,17.611799240112305,2.0136001110076904,-8.677390098571777,15.445099830627441,0,-8.381719589233398,15.445099830627441,2.2458701133728027,-7.514840126037598,17.611799240112305,2.0136001110076904,-7.514840126037598,17.611799240112305,2.0136001110076904,-8.381719589233398,15.445099830627441,2.2458701133728027,-6.7376298904418945,17.611799240112305,3.889970064163208,-8.381719589233398,15.445099830627441,2.2458701133728027,-7.514840126037598,15.445099830627441,4.338699817657471,-6.7376298904418945,17.611799240112305,3.889970064163208,-6.7376298904418945,17.611799240112305,3.889970064163208,-7.514840126037598,15.445099830627441,4.338699817657471,-5.50124979019165,17.611799240112305,5.50124979019165,-7.514840126037598,15.445099830627441,4.338699817657471,-6.135839939117432,15.445099830627441,6.135839939117432,-5.50124979019165,17.611799240112305,5.50124979019165,-5.50124979019165,17.611799240112305,5.50124979019165,-6.135839939117432,15.445099830627441,6.135839939117432,-3.889970064163208,17.611799240112305,6.7376298904418945,-6.135839939117432,15.445099830627441,6.135839939117432,-4.338699817657471,15.445099830627441,7.514840126037598,-3.889970064163208,17.611799240112305,6.7376298904418945,-3.889970064163208,17.611799240112305,6.7376298904418945,-4.338699817657471,15.445099830627441,7.514840126037598,-2.0136001110076904,17.611799240112305,7.514840126037598,-4.338699817657471,15.445099830627441,7.514840126037598,-2.2458701133728027,15.445099830627441,8.381719589233398,-2.0136001110076904,17.611799240112305,7.514840126037598,-2.0136001110076904,17.611799240112305,7.514840126037598,-2.2458701133728027,15.445099830627441,8.381719589233398,0,17.611799240112305,7.779940128326416,-2.2458701133728027,15.445099830627441,8.381719589233398,0,15.445099830627441,8.677390098571777,0,17.611799240112305,7.779940128326416,0,17.611799240112305,7.779940128326416,0,15.445099830627441,8.677390098571777,2.0136001110076904,17.611799240112305,7.514840126037598,0,15.445099830627441,8.677390098571777,2.2458701133728027,15.445099830627441,8.381719589233398,2.0136001110076904,17.611799240112305,7.514840126037598,2.0136001110076904,17.611799240112305,7.514840126037598,2.2458701133728027,15.445099830627441,8.381719589233398,3.889970064163208,17.611799240112305,6.7376298904418945,2.2458701133728027,15.445099830627441,8.381719589233398,4.338699817657471,15.445099830627441,7.514840126037598,3.889970064163208,17.611799240112305,6.7376298904418945,3.889970064163208,17.611799240112305,6.7376298904418945,4.338699817657471,15.445099830627441,7.514840126037598,5.50124979019165,17.611799240112305,5.50124979019165,4.338699817657471,15.445099830627441,7.514840126037598,6.135839939117432,15.445099830627441,6.135839939117432,5.50124979019165,17.611799240112305,5.50124979019165,5.50124979019165,17.611799240112305,5.50124979019165,6.135839939117432,15.445099830627441,6.135839939117432,6.7376298904418945,17.611799240112305,3.889970064163208,6.135839939117432,15.445099830627441,6.135839939117432,7.514840126037598,15.445099830627441,4.338699817657471,6.7376298904418945,17.611799240112305,3.889970064163208,6.7376298904418945,17.611799240112305,3.889970064163208,7.514840126037598,15.445099830627441,4.338699817657471,7.514840126037598,17.611799240112305,2.0136001110076904,7.514840126037598,15.445099830627441,4.338699817657471,8.381719589233398,15.445099830627441,2.2458701133728027,7.514840126037598,17.611799240112305,2.0136001110076904,7.514840126037598,17.611799240112305,2.0136001110076904,8.381719589233398,15.445099830627441,2.2458701133728027,7.779940128326416,17.611799240112305,0,8.381719589233398,15.445099830627441,2.2458701133728027,8.677390098571777,15.445099830627441,0,7.779940128326416,17.611799240112305,0,7.779940128326416,17.611799240112305,0,8.677390098571777,15.445099830627441,0,7.514840126037598,17.611799240112305,-2.0136001110076904,8.677390098571777,15.445099830627441,0,8.381719589233398,15.445099830627441,-2.2458701133728027,7.514840126037598,17.611799240112305,-2.0136001110076904,7.514840126037598,17.611799240112305,-2.0136001110076904,8.381719589233398,15.445099830627441,-2.2458701133728027,6.7376298904418945,17.611799240112305,-3.889970064163208,8.381719589233398,15.445099830627441,-2.2458701133728027,7.514840126037598,15.445099830627441,-4.338699817657471,6.7376298904418945,17.611799240112305,-3.889970064163208,6.7376298904418945,17.611799240112305,-3.889970064163208,7.514840126037598,15.445099830627441,-4.338699817657471,5.50124979019165,17.611799240112305,-5.50124979019165,7.514840126037598,15.445099830627441,-4.338699817657471,6.135839939117432,15.445099830627441,-6.135839939117432,5.50124979019165,17.611799240112305,-5.50124979019165,5.50124979019165,17.611799240112305,-5.50124979019165,6.135839939117432,15.445099830627441,-6.135839939117432,3.889970064163208,17.611799240112305,-6.7376298904418945,6.135839939117432,15.445099830627441,-6.135839939117432,4.338699817657471,15.445099830627441,-7.514840126037598,3.889970064163208,17.611799240112305,-6.7376298904418945,3.889970064163208,17.611799240112305,-6.7376298904418945,4.338699817657471,15.445099830627441,-7.514840126037598,2.0136001110076904,17.611799240112305,-7.514840126037598,4.338699817657471,15.445099830627441,-7.514840126037598,2.2458701133728027,15.445099830627441,-8.381719589233398,2.0136001110076904,17.611799240112305,-7.514840126037598,2.0136001110076904,17.611799240112305,-7.514840126037598,2.2458701133728027,15.445099830627441,-8.381719589233398,0,17.611799240112305,-7.779940128326416,2.2458701133728027,15.445099830627441,-8.381719589233398,0,15.445099830627441,-8.677390098571777,0,17.611799240112305,-7.779940128326416,0,19.472299575805664,-6.352290153503418,0,17.611799240112305,-7.779940128326416,-1.6440900564193726,19.472299575805664,-6.135839939117432,0,17.611799240112305,-7.779940128326416,-2.0136001110076904,17.611799240112305,-7.514840126037598,-1.6440900564193726,19.472299575805664,-6.135839939117432,-1.6440900564193726,19.472299575805664,-6.135839939117432,-2.0136001110076904,17.611799240112305,-7.514840126037598,-3.17615008354187,19.472299575805664,-5.50124979019165,-2.0136001110076904,17.611799240112305,-7.514840126037598,-3.889970064163208,17.611799240112305,-6.7376298904418945,-3.17615008354187,19.472299575805664,-5.50124979019165,-3.17615008354187,19.472299575805664,-5.50124979019165,-3.889970064163208,17.611799240112305,-6.7376298904418945,-4.4917497634887695,19.472299575805664,-4.4917497634887695,-3.889970064163208,17.611799240112305,-6.7376298904418945,-5.50124979019165,17.611799240112305,-5.50124979019165,-4.4917497634887695,19.472299575805664,-4.4917497634887695,-4.4917497634887695,19.472299575805664,-4.4917497634887695,-5.50124979019165,17.611799240112305,-5.50124979019165,-5.50124979019165,19.472299575805664,-3.17615008354187,-5.50124979019165,17.611799240112305,-5.50124979019165,-6.7376298904418945,17.611799240112305,-3.889970064163208,-5.50124979019165,19.472299575805664,-3.17615008354187,-5.50124979019165,19.472299575805664,-3.17615008354187,-6.7376298904418945,17.611799240112305,-3.889970064163208,-6.135839939117432,19.472299575805664,-1.6440900564193726,-6.7376298904418945,17.611799240112305,-3.889970064163208,-7.514840126037598,17.611799240112305,-2.0136001110076904,-6.135839939117432,19.472299575805664,-1.6440900564193726,-6.135839939117432,19.472299575805664,-1.6440900564193726,-7.514840126037598,17.611799240112305,-2.0136001110076904,-6.352290153503418,19.472299575805664,0,-7.514840126037598,17.611799240112305,-2.0136001110076904,-7.779940128326416,17.611799240112305,0,-6.352290153503418,19.472299575805664,0,-6.352290153503418,19.472299575805664,0,-7.779940128326416,17.611799240112305,0,-6.135839939117432,19.472299575805664,1.6440900564193726,-7.779940128326416,17.611799240112305,0,-7.514840126037598,17.611799240112305,2.0136001110076904,-6.135839939117432,19.472299575805664,1.6440900564193726,-6.135839939117432,19.472299575805664,1.6440900564193726,-7.514840126037598,17.611799240112305,2.0136001110076904,-5.50124979019165,19.472299575805664,3.17615008354187,-7.514840126037598,17.611799240112305,2.0136001110076904,-6.7376298904418945,17.611799240112305,3.889970064163208,-5.50124979019165,19.472299575805664,3.17615008354187,-5.50124979019165,19.472299575805664,3.17615008354187,-6.7376298904418945,17.611799240112305,3.889970064163208,-4.4917497634887695,19.472299575805664,4.4917497634887695,-6.7376298904418945,17.611799240112305,3.889970064163208,-5.50124979019165,17.611799240112305,5.50124979019165,-4.4917497634887695,19.472299575805664,4.4917497634887695,-4.4917497634887695,19.472299575805664,4.4917497634887695,-5.50124979019165,17.611799240112305,5.50124979019165,-3.17615008354187,19.472299575805664,5.50124979019165,-5.50124979019165,17.611799240112305,5.50124979019165,-3.889970064163208,17.611799240112305,6.7376298904418945,-3.17615008354187,19.472299575805664,5.50124979019165,-3.17615008354187,19.472299575805664,5.50124979019165,-3.889970064163208,17.611799240112305,6.7376298904418945,-1.6440900564193726,19.472299575805664,6.135839939117432,-3.889970064163208,17.611799240112305,6.7376298904418945,-2.0136001110076904,17.611799240112305,7.514840126037598,-1.6440900564193726,19.472299575805664,6.135839939117432,-1.6440900564193726,19.472299575805664,6.135839939117432,-2.0136001110076904,17.611799240112305,7.514840126037598,0,19.472299575805664,6.352290153503418,-2.0136001110076904,17.611799240112305,7.514840126037598,0,17.611799240112305,7.779940128326416,0,19.472299575805664,6.352290153503418,0,19.472299575805664,6.352290153503418,0,17.611799240112305,7.779940128326416,1.6440900564193726,19.472299575805664,6.135839939117432,0,17.611799240112305,7.779940128326416,2.0136001110076904,17.611799240112305,7.514840126037598,1.6440900564193726,19.472299575805664,6.135839939117432,1.6440900564193726,19.472299575805664,6.135839939117432,2.0136001110076904,17.611799240112305,7.514840126037598,3.17615008354187,19.472299575805664,5.50124979019165,2.0136001110076904,17.611799240112305,7.514840126037598,3.889970064163208,17.611799240112305,6.7376298904418945,3.17615008354187,19.472299575805664,5.50124979019165,3.17615008354187,19.472299575805664,5.50124979019165,3.889970064163208,17.611799240112305,6.7376298904418945,4.4917497634887695,19.472299575805664,4.4917497634887695,3.889970064163208,17.611799240112305,6.7376298904418945,5.50124979019165,17.611799240112305,5.50124979019165,4.4917497634887695,19.472299575805664,4.4917497634887695,4.4917497634887695,19.472299575805664,4.4917497634887695,5.50124979019165,17.611799240112305,5.50124979019165,5.50124979019165,19.472299575805664,3.17615008354187,5.50124979019165,17.611799240112305,5.50124979019165,6.7376298904418945,17.611799240112305,3.889970064163208,5.50124979019165,19.472299575805664,3.17615008354187,5.50124979019165,19.472299575805664,3.17615008354187,6.7376298904418945,17.611799240112305,3.889970064163208,6.135839939117432,19.472299575805664,1.6440900564193726,6.7376298904418945,17.611799240112305,3.889970064163208,7.514840126037598,17.611799240112305,2.0136001110076904,6.135839939117432,19.472299575805664,1.6440900564193726,6.135839939117432,19.472299575805664,1.6440900564193726,7.514840126037598,17.611799240112305,2.0136001110076904,6.352290153503418,19.472299575805664,0,7.514840126037598,17.611799240112305,2.0136001110076904,7.779940128326416,17.611799240112305,0,6.352290153503418,19.472299575805664,0,6.352290153503418,19.472299575805664,0,7.779940128326416,17.611799240112305,0,6.135839939117432,19.472299575805664,-1.6440900564193726,7.779940128326416,17.611799240112305,0,7.514840126037598,17.611799240112305,-2.0136001110076904,6.135839939117432,19.472299575805664,-1.6440900564193726,6.135839939117432,19.472299575805664,-1.6440900564193726,7.514840126037598,17.611799240112305,-2.0136001110076904,5.50124979019165,19.472299575805664,-3.17615008354187,7.514840126037598,17.611799240112305,-2.0136001110076904,6.7376298904418945,17.611799240112305,-3.889970064163208,5.50124979019165,19.472299575805664,-3.17615008354187,5.50124979019165,19.472299575805664,-3.17615008354187,6.7376298904418945,17.611799240112305,-3.889970064163208,4.4917497634887695,19.472299575805664,-4.4917497634887695,6.7376298904418945,17.611799240112305,-3.889970064163208,5.50124979019165,17.611799240112305,-5.50124979019165,4.4917497634887695,19.472299575805664,-4.4917497634887695,4.4917497634887695,19.472299575805664,-4.4917497634887695,5.50124979019165,17.611799240112305,-5.50124979019165,3.17615008354187,19.472299575805664,-5.50124979019165,5.50124979019165,17.611799240112305,-5.50124979019165,3.889970064163208,17.611799240112305,-6.7376298904418945,3.17615008354187,19.472299575805664,-5.50124979019165,3.17615008354187,19.472299575805664,-5.50124979019165,3.889970064163208,17.611799240112305,-6.7376298904418945,1.6440900564193726,19.472299575805664,-6.135839939117432,3.889970064163208,17.611799240112305,-6.7376298904418945,2.0136001110076904,17.611799240112305,-7.514840126037598,1.6440900564193726,19.472299575805664,-6.135839939117432,1.6440900564193726,19.472299575805664,-6.135839939117432,2.0136001110076904,17.611799240112305,-7.514840126037598,0,19.472299575805664,-6.352290153503418,2.0136001110076904,17.611799240112305,-7.514840126037598,0,17.611799240112305,-7.779940128326416,0,19.472299575805664,-6.352290153503418,0,20.899900436401367,-4.4917497634887695,0,19.472299575805664,-6.352290153503418,-1.1625499725341797,20.899900436401367,-4.338699817657471,0,19.472299575805664,-6.352290153503418,-1.6440900564193726,19.472299575805664,-6.135839939117432,-1.1625499725341797,20.899900436401367,-4.338699817657471,-1.1625499725341797,20.899900436401367,-4.338699817657471,-1.6440900564193726,19.472299575805664,-6.135839939117432,-2.245879888534546,20.899900436401367,-3.889970064163208,-1.6440900564193726,19.472299575805664,-6.135839939117432,-3.17615008354187,19.472299575805664,-5.50124979019165,-2.245879888534546,20.899900436401367,-3.889970064163208,-2.245879888534546,20.899900436401367,-3.889970064163208,-3.17615008354187,19.472299575805664,-5.50124979019165,-3.17615008354187,20.899900436401367,-3.17615008354187,-3.17615008354187,19.472299575805664,-5.50124979019165,-4.4917497634887695,19.472299575805664,-4.4917497634887695,-3.17615008354187,20.899900436401367,-3.17615008354187,-3.17615008354187,20.899900436401367,-3.17615008354187,-4.4917497634887695,19.472299575805664,-4.4917497634887695,-3.889970064163208,20.899900436401367,-2.245879888534546,-4.4917497634887695,19.472299575805664,-4.4917497634887695,-5.50124979019165,19.472299575805664,-3.17615008354187,-3.889970064163208,20.899900436401367,-2.245879888534546,-3.889970064163208,20.899900436401367,-2.245879888534546,-5.50124979019165,19.472299575805664,-3.17615008354187,-4.338699817657471,20.899900436401367,-1.1625499725341797,-5.50124979019165,19.472299575805664,-3.17615008354187,-6.135839939117432,19.472299575805664,-1.6440900564193726,-4.338699817657471,20.899900436401367,-1.1625499725341797,-4.338699817657471,20.899900436401367,-1.1625499725341797,-6.135839939117432,19.472299575805664,-1.6440900564193726,-4.4917497634887695,20.899900436401367,0,-6.135839939117432,19.472299575805664,-1.6440900564193726,-6.352290153503418,19.472299575805664,0,-4.4917497634887695,20.899900436401367,0,-4.4917497634887695,20.899900436401367,0,-6.352290153503418,19.472299575805664,0,-4.338699817657471,20.899900436401367,1.1625499725341797,-6.352290153503418,19.472299575805664,0,-6.135839939117432,19.472299575805664,1.6440900564193726,-4.338699817657471,20.899900436401367,1.1625499725341797,-4.338699817657471,20.899900436401367,1.1625499725341797,-6.135839939117432,19.472299575805664,1.6440900564193726,-3.889970064163208,20.899900436401367,2.245879888534546,-6.135839939117432,19.472299575805664,1.6440900564193726,-5.50124979019165,19.472299575805664,3.17615008354187,-3.889970064163208,20.899900436401367,2.245879888534546,-3.889970064163208,20.899900436401367,2.245879888534546,-5.50124979019165,19.472299575805664,3.17615008354187,-3.17615008354187,20.899900436401367,3.17615008354187,-5.50124979019165,19.472299575805664,3.17615008354187,-4.4917497634887695,19.472299575805664,4.4917497634887695,-3.17615008354187,20.899900436401367,3.17615008354187,-3.17615008354187,20.899900436401367,3.17615008354187,-4.4917497634887695,19.472299575805664,4.4917497634887695,-2.245879888534546,20.899900436401367,3.889970064163208,-4.4917497634887695,19.472299575805664,4.4917497634887695,-3.17615008354187,19.472299575805664,5.50124979019165,-2.245879888534546,20.899900436401367,3.889970064163208,-2.245879888534546,20.899900436401367,3.889970064163208,-3.17615008354187,19.472299575805664,5.50124979019165,-1.1625499725341797,20.899900436401367,4.338699817657471,-3.17615008354187,19.472299575805664,5.50124979019165,-1.6440900564193726,19.472299575805664,6.135839939117432,-1.1625499725341797,20.899900436401367,4.338699817657471,-1.1625499725341797,20.899900436401367,4.338699817657471,-1.6440900564193726,19.472299575805664,6.135839939117432,0,20.899900436401367,4.4917497634887695,-1.6440900564193726,19.472299575805664,6.135839939117432,0,19.472299575805664,6.352290153503418,0,20.899900436401367,4.4917497634887695,0,20.899900436401367,4.4917497634887695,0,19.472299575805664,6.352290153503418,1.1625499725341797,20.899900436401367,4.338699817657471,0,19.472299575805664,6.352290153503418,1.6440900564193726,19.472299575805664,6.135839939117432,1.1625499725341797,20.899900436401367,4.338699817657471,1.1625499725341797,20.899900436401367,4.338699817657471,1.6440900564193726,19.472299575805664,6.135839939117432,2.245879888534546,20.899900436401367,3.889970064163208,1.6440900564193726,19.472299575805664,6.135839939117432,3.17615008354187,19.472299575805664,5.50124979019165,2.245879888534546,20.899900436401367,3.889970064163208,2.245879888534546,20.899900436401367,3.889970064163208,3.17615008354187,19.472299575805664,5.50124979019165,3.17615008354187,20.899900436401367,3.17615008354187,3.17615008354187,19.472299575805664,5.50124979019165,4.4917497634887695,19.472299575805664,4.4917497634887695,3.17615008354187,20.899900436401367,3.17615008354187,3.17615008354187,20.899900436401367,3.17615008354187,4.4917497634887695,19.472299575805664,4.4917497634887695,3.889970064163208,20.899900436401367,2.245879888534546,4.4917497634887695,19.472299575805664,4.4917497634887695,5.50124979019165,19.472299575805664,3.17615008354187,3.889970064163208,20.899900436401367,2.245879888534546,3.889970064163208,20.899900436401367,2.245879888534546,5.50124979019165,19.472299575805664,3.17615008354187,4.338699817657471,20.899900436401367,1.1625499725341797,5.50124979019165,19.472299575805664,3.17615008354187,6.135839939117432,19.472299575805664,1.6440900564193726,4.338699817657471,20.899900436401367,1.1625499725341797,4.338699817657471,20.899900436401367,1.1625499725341797,6.135839939117432,19.472299575805664,1.6440900564193726,4.4917497634887695,20.899900436401367,0,6.135839939117432,19.472299575805664,1.6440900564193726,6.352290153503418,19.472299575805664,0,4.4917497634887695,20.899900436401367,0,4.4917497634887695,20.899900436401367,0,6.352290153503418,19.472299575805664,0,4.338699817657471,20.899900436401367,-1.1625499725341797,6.352290153503418,19.472299575805664,0,6.135839939117432,19.472299575805664,-1.6440900564193726,4.338699817657471,20.899900436401367,-1.1625499725341797,4.338699817657471,20.899900436401367,-1.1625499725341797,6.135839939117432,19.472299575805664,-1.6440900564193726,3.889970064163208,20.899900436401367,-2.245879888534546,6.135839939117432,19.472299575805664,-1.6440900564193726,5.50124979019165,19.472299575805664,-3.17615008354187,3.889970064163208,20.899900436401367,-2.245879888534546,3.889970064163208,20.899900436401367,-2.245879888534546,5.50124979019165,19.472299575805664,-3.17615008354187,3.17615008354187,20.899900436401367,-3.17615008354187,5.50124979019165,19.472299575805664,-3.17615008354187,4.4917497634887695,19.472299575805664,-4.4917497634887695,3.17615008354187,20.899900436401367,-3.17615008354187,3.17615008354187,20.899900436401367,-3.17615008354187,4.4917497634887695,19.472299575805664,-4.4917497634887695,2.245879888534546,20.899900436401367,-3.889970064163208,4.4917497634887695,19.472299575805664,-4.4917497634887695,3.17615008354187,19.472299575805664,-5.50124979019165,2.245879888534546,20.899900436401367,-3.889970064163208,2.245879888534546,20.899900436401367,-3.889970064163208,3.17615008354187,19.472299575805664,-5.50124979019165,1.1625499725341797,20.899900436401367,-4.338699817657471,3.17615008354187,19.472299575805664,-5.50124979019165,1.6440900564193726,19.472299575805664,-6.135839939117432,1.1625499725341797,20.899900436401367,-4.338699817657471,1.1625499725341797,20.899900436401367,-4.338699817657471,1.6440900564193726,19.472299575805664,-6.135839939117432,0,20.899900436401367,-4.4917497634887695,1.6440900564193726,19.472299575805664,-6.135839939117432,0,19.472299575805664,-6.352290153503418,0,20.899900436401367,-4.4917497634887695,0,21.797399520874023,-2.3250999450683594,0,20.899900436401367,-4.4917497634887695,-0.6017799973487854,21.797399520874023,-2.2458701133728027,0,20.899900436401367,-4.4917497634887695,-1.1625499725341797,20.899900436401367,-4.338699817657471,-0.6017799973487854,21.797399520874023,-2.2458701133728027,-0.6017799973487854,21.797399520874023,-2.2458701133728027,-1.1625499725341797,20.899900436401367,-4.338699817657471,-1.1625499725341797,21.797399520874023,-2.0136001110076904,-1.1625499725341797,20.899900436401367,-4.338699817657471,-2.245879888534546,20.899900436401367,-3.889970064163208,-1.1625499725341797,21.797399520874023,-2.0136001110076904,-1.1625499725341797,21.797399520874023,-2.0136001110076904,-2.245879888534546,20.899900436401367,-3.889970064163208,-1.6440900564193726,21.797399520874023,-1.6440900564193726,-2.245879888534546,20.899900436401367,-3.889970064163208,-3.17615008354187,20.899900436401367,-3.17615008354187,-1.6440900564193726,21.797399520874023,-1.6440900564193726,-1.6440900564193726,21.797399520874023,-1.6440900564193726,-3.17615008354187,20.899900436401367,-3.17615008354187,-2.0136001110076904,21.797399520874023,-1.1625499725341797,-3.17615008354187,20.899900436401367,-3.17615008354187,-3.889970064163208,20.899900436401367,-2.245879888534546,-2.0136001110076904,21.797399520874023,-1.1625499725341797,-2.0136001110076904,21.797399520874023,-1.1625499725341797,-3.889970064163208,20.899900436401367,-2.245879888534546,-2.2458701133728027,21.797399520874023,-0.6017799973487854,-3.889970064163208,20.899900436401367,-2.245879888534546,-4.338699817657471,20.899900436401367,-1.1625499725341797,-2.2458701133728027,21.797399520874023,-0.6017799973487854,-2.2458701133728027,21.797399520874023,-0.6017799973487854,-4.338699817657471,20.899900436401367,-1.1625499725341797,-2.3250999450683594,21.797399520874023,0,-4.338699817657471,20.899900436401367,-1.1625499725341797,-4.4917497634887695,20.899900436401367,0,-2.3250999450683594,21.797399520874023,0,-2.3250999450683594,21.797399520874023,0,-4.4917497634887695,20.899900436401367,0,-2.2458701133728027,21.797399520874023,0.6017799973487854,-4.4917497634887695,20.899900436401367,0,-4.338699817657471,20.899900436401367,1.1625499725341797,-2.2458701133728027,21.797399520874023,0.6017799973487854,-2.2458701133728027,21.797399520874023,0.6017799973487854,-4.338699817657471,20.899900436401367,1.1625499725341797,-2.0136001110076904,21.797399520874023,1.1625499725341797,-4.338699817657471,20.899900436401367,1.1625499725341797,-3.889970064163208,20.899900436401367,2.245879888534546,-2.0136001110076904,21.797399520874023,1.1625499725341797,-2.0136001110076904,21.797399520874023,1.1625499725341797,-3.889970064163208,20.899900436401367,2.245879888534546,-1.6440900564193726,21.797399520874023,1.6440900564193726,-3.889970064163208,20.899900436401367,2.245879888534546,-3.17615008354187,20.899900436401367,3.17615008354187,-1.6440900564193726,21.797399520874023,1.6440900564193726,-1.6440900564193726,21.797399520874023,1.6440900564193726,-3.17615008354187,20.899900436401367,3.17615008354187,-1.1625499725341797,21.797399520874023,2.0136001110076904,-3.17615008354187,20.899900436401367,3.17615008354187,-2.245879888534546,20.899900436401367,3.889970064163208,-1.1625499725341797,21.797399520874023,2.0136001110076904,-1.1625499725341797,21.797399520874023,2.0136001110076904,-2.245879888534546,20.899900436401367,3.889970064163208,-0.6017799973487854,21.797399520874023,2.2458701133728027,-2.245879888534546,20.899900436401367,3.889970064163208,-1.1625499725341797,20.899900436401367,4.338699817657471,-0.6017799973487854,21.797399520874023,2.2458701133728027,-0.6017799973487854,21.797399520874023,2.2458701133728027,-1.1625499725341797,20.899900436401367,4.338699817657471,0,21.797399520874023,2.3250999450683594,-1.1625499725341797,20.899900436401367,4.338699817657471,0,20.899900436401367,4.4917497634887695,0,21.797399520874023,2.3250999450683594,0,21.797399520874023,2.3250999450683594,0,20.899900436401367,4.4917497634887695,0.6017799973487854,21.797399520874023,2.2458701133728027,0,20.899900436401367,4.4917497634887695,1.1625499725341797,20.899900436401367,4.338699817657471,0.6017799973487854,21.797399520874023,2.2458701133728027,0.6017799973487854,21.797399520874023,2.2458701133728027,1.1625499725341797,20.899900436401367,4.338699817657471,1.1625499725341797,21.797399520874023,2.0136001110076904,1.1625499725341797,20.899900436401367,4.338699817657471,2.245879888534546,20.899900436401367,3.889970064163208,1.1625499725341797,21.797399520874023,2.0136001110076904,1.1625499725341797,21.797399520874023,2.0136001110076904,2.245879888534546,20.899900436401367,3.889970064163208,1.6440900564193726,21.797399520874023,1.6440900564193726,2.245879888534546,20.899900436401367,3.889970064163208,3.17615008354187,20.899900436401367,3.17615008354187,1.6440900564193726,21.797399520874023,1.6440900564193726,1.6440900564193726,21.797399520874023,1.6440900564193726,3.17615008354187,20.899900436401367,3.17615008354187,2.0136001110076904,21.797399520874023,1.1625499725341797,3.17615008354187,20.899900436401367,3.17615008354187,3.889970064163208,20.899900436401367,2.245879888534546,2.0136001110076904,21.797399520874023,1.1625499725341797,2.0136001110076904,21.797399520874023,1.1625499725341797,3.889970064163208,20.899900436401367,2.245879888534546,2.2458701133728027,21.797399520874023,0.6017799973487854,3.889970064163208,20.899900436401367,2.245879888534546,4.338699817657471,20.899900436401367,1.1625499725341797,2.2458701133728027,21.797399520874023,0.6017799973487854,2.2458701133728027,21.797399520874023,0.6017799973487854,4.338699817657471,20.899900436401367,1.1625499725341797,2.3250999450683594,21.797399520874023,0,4.338699817657471,20.899900436401367,1.1625499725341797,4.4917497634887695,20.899900436401367,0,2.3250999450683594,21.797399520874023,0,2.3250999450683594,21.797399520874023,0,4.4917497634887695,20.899900436401367,0,2.2458701133728027,21.797399520874023,-0.6017799973487854,4.4917497634887695,20.899900436401367,0,4.338699817657471,20.899900436401367,-1.1625499725341797,2.2458701133728027,21.797399520874023,-0.6017799973487854,2.2458701133728027,21.797399520874023,-0.6017799973487854,4.338699817657471,20.899900436401367,-1.1625499725341797,2.0136001110076904,21.797399520874023,-1.1625499725341797,4.338699817657471,20.899900436401367,-1.1625499725341797,3.889970064163208,20.899900436401367,-2.245879888534546,2.0136001110076904,21.797399520874023,-1.1625499725341797,2.0136001110076904,21.797399520874023,-1.1625499725341797,3.889970064163208,20.899900436401367,-2.245879888534546,1.6440900564193726,21.797399520874023,-1.6440900564193726,3.889970064163208,20.899900436401367,-2.245879888534546,3.17615008354187,20.899900436401367,-3.17615008354187,1.6440900564193726,21.797399520874023,-1.6440900564193726,1.6440900564193726,21.797399520874023,-1.6440900564193726,3.17615008354187,20.899900436401367,-3.17615008354187,1.1625499725341797,21.797399520874023,-2.0136001110076904,3.17615008354187,20.899900436401367,-3.17615008354187,2.245879888534546,20.899900436401367,-3.889970064163208,1.1625499725341797,21.797399520874023,-2.0136001110076904,1.1625499725341797,21.797399520874023,-2.0136001110076904,2.245879888534546,20.899900436401367,-3.889970064163208,0.6017799973487854,21.797399520874023,-2.2458701133728027,2.245879888534546,20.899900436401367,-3.889970064163208,1.1625499725341797,20.899900436401367,-4.338699817657471,0.6017799973487854,21.797399520874023,-2.2458701133728027,0.6017799973487854,21.797399520874023,-2.2458701133728027,1.1625499725341797,20.899900436401367,-4.338699817657471,0,21.797399520874023,-2.3250999450683594,1.1625499725341797,20.899900436401367,-4.338699817657471,0,20.899900436401367,-4.4917497634887695,0,21.797399520874023,-2.3250999450683594,0,21.797399520874023,-2.3250999450683594,-0.6017799973487854,21.797399520874023,-2.2458701133728027,0,22.103500366210938,1.1001599555744202e-15,-0.6017799973487854,21.797399520874023,-2.2458701133728027,-1.1625499725341797,21.797399520874023,-2.0136001110076904,0,22.103500366210938,1.1001599555744202e-15,-1.1625499725341797,21.797399520874023,-2.0136001110076904,-1.6440900564193726,21.797399520874023,-1.6440900564193726,0,22.103500366210938,1.1001599555744202e-15,-1.6440900564193726,21.797399520874023,-1.6440900564193726,-2.0136001110076904,21.797399520874023,-1.1625499725341797,0,22.103500366210938,1.1001599555744202e-15,-2.0136001110076904,21.797399520874023,-1.1625499725341797,-2.2458701133728027,21.797399520874023,-0.6017799973487854,0,22.103500366210938,1.1001599555744202e-15,-2.2458701133728027,21.797399520874023,-0.6017799973487854,-2.3250999450683594,21.797399520874023,0,0,22.103500366210938,1.1001599555744202e-15,-2.3250999450683594,21.797399520874023,0,-2.2458701133728027,21.797399520874023,0.6017799973487854,0,22.103500366210938,1.1001599555744202e-15,-2.2458701133728027,21.797399520874023,0.6017799973487854,-2.0136001110076904,21.797399520874023,1.1625499725341797,0,22.103500366210938,1.1001599555744202e-15,-2.0136001110076904,21.797399520874023,1.1625499725341797,-1.6440900564193726,21.797399520874023,1.6440900564193726,0,22.103500366210938,1.1001599555744202e-15,-1.6440900564193726,21.797399520874023,1.6440900564193726,-1.1625499725341797,21.797399520874023,2.0136001110076904,0,22.103500366210938,1.1001599555744202e-15,-1.1625499725341797,21.797399520874023,2.0136001110076904,-0.6017799973487854,21.797399520874023,2.2458701133728027,0,22.103500366210938,1.1001599555744202e-15,-0.6017799973487854,21.797399520874023,2.2458701133728027,0,21.797399520874023,2.3250999450683594,0,22.103500366210938,1.1001599555744202e-15,0,21.797399520874023,2.3250999450683594,0.6017799973487854,21.797399520874023,2.2458701133728027,0,22.103500366210938,1.1001599555744202e-15,0.6017799973487854,21.797399520874023,2.2458701133728027,1.1625499725341797,21.797399520874023,2.0136001110076904,0,22.103500366210938,1.1001599555744202e-15,1.1625499725341797,21.797399520874023,2.0136001110076904,1.6440900564193726,21.797399520874023,1.6440900564193726,0,22.103500366210938,1.1001599555744202e-15,1.6440900564193726,21.797399520874023,1.6440900564193726,2.0136001110076904,21.797399520874023,1.1625499725341797,0,22.103500366210938,1.1001599555744202e-15,2.0136001110076904,21.797399520874023,1.1625499725341797,2.2458701133728027,21.797399520874023,0.6017799973487854,0,22.103500366210938,1.1001599555744202e-15,2.2458701133728027,21.797399520874023,0.6017799973487854,2.3250999450683594,21.797399520874023,0,0,22.103500366210938,1.1001599555744202e-15,2.3250999450683594,21.797399520874023,0,2.2458701133728027,21.797399520874023,-0.6017799973487854,0,22.103500366210938,1.1001599555744202e-15,2.2458701133728027,21.797399520874023,-0.6017799973487854,2.0136001110076904,21.797399520874023,-1.1625499725341797,0,22.103500366210938,1.1001599555744202e-15,2.0136001110076904,21.797399520874023,-1.1625499725341797,1.6440900564193726,21.797399520874023,-1.6440900564193726,0,22.103500366210938,1.1001599555744202e-15,1.6440900564193726,21.797399520874023,-1.6440900564193726,1.1625499725341797,21.797399520874023,-2.0136001110076904,0,22.103500366210938,1.1001599555744202e-15,1.1625499725341797,21.797399520874023,-2.0136001110076904,0.6017799973487854,21.797399520874023,-2.2458701133728027,0,22.103500366210938,1.1001599555744202e-15,0.6017799973487854,21.797399520874023,-2.2458701133728027,0,21.797399520874023,-2.3250999450683594,0,22.103500366210938,1.1001599555744202e-15,-1.0606600046157837,-0.699999988079071,1.0606600046157837,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,-1.5,-0.699999988079071,0,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,-1.3463000059127808,-0.6899999976158142,0,-1.5,-0.699999988079071,0,-1.0606600046157837,-0.699999988079071,1.0606600046157837,0,-0.699999988079071,1.5,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,0,-0.699999988079071,1.5,0,-0.6899999976158142,1.3463000059127808,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,1.0606600046157837,-0.699999988079071,1.0606600046157837,0.9519780278205872,-0.6899999976158142,0.9519780278205872,0,-0.699999988079071,1.5,0.9519780278205872,-0.6899999976158142,0.9519780278205872,0,-0.6899999976158142,1.3463000059127808,0,-0.699999988079071,1.5,1.0606600046157837,-0.699999988079071,1.0606600046157837,1.5,-0.699999988079071,0,0.9519780278205872,-0.6899999976158142,0.9519780278205872,1.5,-0.699999988079071,0,1.3463000059127808,-0.6899999976158142,0,0.9519780278205872,-0.6899999976158142,0.9519780278205872,1.0606600046157837,-0.699999988079071,-1.0606600046157837,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,1.5,-0.699999988079071,0,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,1.3463000059127808,-0.6899999976158142,0,1.5,-0.699999988079071,0,1.0606600046157837,-0.699999988079071,-1.0606600046157837,0,-0.699999988079071,-1.5,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0,-0.699999988079071,-1.5,0,-0.6899999976158142,-1.3463000059127808,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,-1.0606600046157837,-0.699999988079071,-1.0606600046157837,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0,-0.699999988079071,-1.5,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0,-0.6899999976158142,-1.3463000059127808,0,-0.699999988079071,-1.5,-1.0606600046157837,-0.699999988079071,-1.0606600046157837,-1.5,-0.699999988079071,0,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,-1.5,-0.699999988079071,0,-1.3463000059127808,-0.6899999976158142,0,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,1.3463000059127808,-0.6899999976158142,0,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0.873412013053894,-2.640000104904175,0,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0.6175959706306458,-2.640000104904175,-0.6175959706306458,0.873412013053894,-2.640000104904175,0,0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0,-0.6899999976158142,-1.3463000059127808,0.6175959706306458,-2.640000104904175,-0.6175959706306458,0,-0.6899999976158142,-1.3463000059127808,0,-2.640000104904175,-0.873412013053894,0.6175959706306458,-2.640000104904175,-0.6175959706306458,0,-0.6899999976158142,-1.3463000059127808,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,0,-2.640000104904175,-0.873412013053894,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,-0.6175959706306458,-2.640000104904175,-0.6175959706306458,0,-2.640000104904175,-0.873412013053894,-0.9519780278205872,-0.6899999976158142,-0.9519780278205872,-1.3463000059127808,-0.6899999976158142,0,-0.6175959706306458,-2.640000104904175,-0.6175959706306458,-1.3463000059127808,-0.6899999976158142,0,-0.873412013053894,-2.640000104904175,0,-0.6175959706306458,-2.640000104904175,-0.6175959706306458,-1.3463000059127808,-0.6899999976158142,0,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,-0.873412013053894,-2.640000104904175,0,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,-0.6175959706306458,-2.640000104904175,0.6175959706306458,-0.873412013053894,-2.640000104904175,0,-0.9519780278205872,-0.6899999976158142,0.9519780278205872,0,-0.6899999976158142,1.3463000059127808,-0.6175959706306458,-2.640000104904175,0.6175959706306458,0,-0.6899999976158142,1.3463000059127808,0,-2.640000104904175,0.873412013053894,-0.6175959706306458,-2.640000104904175,0.6175959706306458,0,-0.6899999976158142,1.3463000059127808,0.9519780278205872,-0.6899999976158142,0.9519780278205872,0,-2.640000104904175,0.873412013053894,0.9519780278205872,-0.6899999976158142,0.9519780278205872,0.6175959706306458,-2.640000104904175,0.6175959706306458,0,-2.640000104904175,0.873412013053894,0.9519780278205872,-0.6899999976158142,0.9519780278205872,1.3463000059127808,-0.6899999976158142,0,0.6175959706306458,-2.640000104904175,0.6175959706306458,1.3463000059127808,-0.6899999976158142,0,0.873412013053894,-2.640000104904175,0,0.6175959706306458,-2.640000104904175,0.6175959706306458,-0.25,2.700000047683716,-0.25,0.25,2.700000047683716,-0.25,-0.25,2.700000047683716,0.25,0.25,2.700000047683716,-0.25,0.25,2.700000047683716,0.25,-0.25,2.700000047683716,0.25,-0.25,4.300000190734863,-0.25,0.25,4.300000190734863,-0.25,-0.25,2.700000047683716,-0.25,0.25,4.300000190734863,-0.25,0.25,2.700000047683716,-0.25,-0.25,2.700000047683716,-0.25,0.25,4.300000190734863,-0.25,0.25,4.300000190734863,0.25,0.25,2.700000047683716,-0.25,0.25,4.300000190734863,0.25,0.25,2.700000047683716,0.25,0.25,2.700000047683716,-0.25,0.25,4.300000190734863,0.25,-0.25,4.300000190734863,0.25,0.25,2.700000047683716,0.25,-0.25,4.300000190734863,0.25,-0.25,2.700000047683716,0.25,0.25,2.700000047683716,0.25,-0.25,4.300000190734863,0.25,-0.25,4.300000190734863,-0.25,-0.25,2.700000047683716,0.25,-0.25,4.300000190734863,-0.25,-0.25,2.700000047683716,-0.25,-0.25,2.700000047683716,0.25,-0.25,4.300000190734863,-0.25,-0.25,4.300000190734863,0.25,0.25,4.300000190734863,-0.25,-0.25,4.300000190734863,0.25,0.25,4.300000190734863,0.25,0.25,4.300000190734863,-0.25,0,0.9184650182723999,-1.2293100357055664,0,0.5815349817276001,-1.2293100357055664,-0.8692529797554016,0.9184650182723999,-0.8692529797554016,0,0.5815349817276001,-1.2293100357055664,-0.8692529797554016,0.5815349817276001,-0.8692529797554016,-0.8692529797554016,0.9184650182723999,-0.8692529797554016,-0.8692529797554016,0.9184650182723999,-0.8692529797554016,-0.8692529797554016,0.5815349817276001,-0.8692529797554016,-1.2293100357055664,0.9184650182723999,0,-0.8692529797554016,0.5815349817276001,-0.8692529797554016,-1.2293100357055664,0.5815349817276001,0,-1.2293100357055664,0.9184650182723999,0,-1.2293100357055664,0.9184650182723999,0,-1.2293100357055664,0.5815349817276001,0,-0.8692529797554016,0.9184650182723999,0.8692529797554016,-1.2293100357055664,0.5815349817276001,0,-0.8692529797554016,0.5815349817276001,0.8692529797554016,-0.8692529797554016,0.9184650182723999,0.8692529797554016,-0.8692529797554016,0.9184650182723999,0.8692529797554016,-0.8692529797554016,0.5815349817276001,0.8692529797554016,0,0.9184650182723999,1.2293100357055664,-0.8692529797554016,0.5815349817276001,0.8692529797554016,0,0.5815349817276001,1.2293100357055664,0,0.9184650182723999,1.2293100357055664,0,0.9184650182723999,1.2293100357055664,0,0.5815349817276001,1.2293100357055664,0.8692529797554016,0.9184650182723999,0.8692529797554016,0,0.5815349817276001,1.2293100357055664,0.8692529797554016,0.5815349817276001,0.8692529797554016,0.8692529797554016,0.9184650182723999,0.8692529797554016,0.8692529797554016,0.9184650182723999,0.8692529797554016,0.8692529797554016,0.5815349817276001,0.8692529797554016,1.2293100357055664,0.9184650182723999,0,0.8692529797554016,0.5815349817276001,0.8692529797554016,1.2293100357055664,0.5815349817276001,0,1.2293100357055664,0.9184650182723999,0,1.2293100357055664,0.9184650182723999,0,1.2293100357055664,0.5815349817276001,0,0.8692529797554016,0.9184650182723999,-0.8692529797554016,1.2293100357055664,0.5815349817276001,0,0.8692529797554016,0.5815349817276001,-0.8692529797554016,0.8692529797554016,0.9184650182723999,-0.8692529797554016,0.8692529797554016,0.9184650182723999,-0.8692529797554016,0.8692529797554016,0.5815349817276001,-0.8692529797554016,0,0.9184650182723999,-1.2293100357055664,0.8692529797554016,0.5815349817276001,-0.8692529797554016,0,0.5815349817276001,-1.2293100357055664,0,0.9184650182723999,-1.2293100357055664,0,0.5815349817276001,-1.2293100357055664,0.8692529797554016,0.5815349817276001,-0.8692529797554016,0,0.5815349817276001,-1.0885900259017944,0.8692529797554016,0.5815349817276001,-0.8692529797554016,0.7697479724884033,0.5815349817276001,-0.7697479724884033,0,0.5815349817276001,-1.0885900259017944,0.8692529797554016,0.5815349817276001,-0.8692529797554016,1.2293100357055664,0.5815349817276001,0,0.7697479724884033,0.5815349817276001,-0.7697479724884033,1.2293100357055664,0.5815349817276001,0,1.0885900259017944,0.5815349817276001,0,0.7697479724884033,0.5815349817276001,-0.7697479724884033,1.2293100357055664,0.5815349817276001,0,0.8692529797554016,0.5815349817276001,0.8692529797554016,1.0885900259017944,0.5815349817276001,0,0.8692529797554016,0.5815349817276001,0.8692529797554016,0.7697479724884033,0.5815349817276001,0.7697479724884033,1.0885900259017944,0.5815349817276001,0,0.8692529797554016,0.5815349817276001,0.8692529797554016,0,0.5815349817276001,1.2293100357055664,0.7697479724884033,0.5815349817276001,0.7697479724884033,0,0.5815349817276001,1.2293100357055664,0,0.5815349817276001,1.0885900259017944,0.7697479724884033,0.5815349817276001,0.7697479724884033,0,0.5815349817276001,1.2293100357055664,-0.8692529797554016,0.5815349817276001,0.8692529797554016,0,0.5815349817276001,1.0885900259017944,-0.8692529797554016,0.5815349817276001,0.8692529797554016,-0.7697479724884033,0.5815349817276001,0.7697479724884033,0,0.5815349817276001,1.0885900259017944,-0.8692529797554016,0.5815349817276001,0.8692529797554016,-1.2293100357055664,0.5815349817276001,0,-0.7697479724884033,0.5815349817276001,0.7697479724884033,-1.2293100357055664,0.5815349817276001,0,-1.0885900259017944,0.5815349817276001,0,-0.7697479724884033,0.5815349817276001,0.7697479724884033,-1.2293100357055664,0.5815349817276001,0,-0.8692529797554016,0.5815349817276001,-0.8692529797554016,-1.0885900259017944,0.5815349817276001,0,-0.8692529797554016,0.5815349817276001,-0.8692529797554016,-0.7697479724884033,0.5815349817276001,-0.7697479724884033,-1.0885900259017944,0.5815349817276001,0,-0.8692529797554016,0.5815349817276001,-0.8692529797554016,0,0.5815349817276001,-1.2293100357055664,-0.7697479724884033,0.5815349817276001,-0.7697479724884033,0,0.5815349817276001,-1.2293100357055664,0,0.5815349817276001,-1.0885900259017944,-0.7697479724884033,0.5815349817276001,-0.7697479724884033,-0.8692529797554016,0.9184650182723999,0.8692529797554016,0,0.9184650182723999,1.2293100357055664,-0.7697479724884033,0.9184650182723999,0.7697479724884033,0,0.9184650182723999,1.2293100357055664,0,0.9184650182723999,1.0885900259017944,-0.7697479724884033,0.9184650182723999,0.7697479724884033,0,0.9184650182723999,1.2293100357055664,0.8692529797554016,0.9184650182723999,0.8692529797554016,0,0.9184650182723999,1.0885900259017944,0.8692529797554016,0.9184650182723999,0.8692529797554016,0.7697479724884033,0.9184650182723999,0.7697479724884033,0,0.9184650182723999,1.0885900259017944,0.8692529797554016,0.9184650182723999,0.8692529797554016,1.2293100357055664,0.9184650182723999,0,0.7697479724884033,0.9184650182723999,0.7697479724884033,1.2293100357055664,0.9184650182723999,0,1.0885900259017944,0.9184650182723999,0,0.7697479724884033,0.9184650182723999,0.7697479724884033,1.2293100357055664,0.9184650182723999,0,0.8692529797554016,0.9184650182723999,-0.8692529797554016,1.0885900259017944,0.9184650182723999,0,0.8692529797554016,0.9184650182723999,-0.8692529797554016,0.7697479724884033,0.9184650182723999,-0.7697479724884033,1.0885900259017944,0.9184650182723999,0,0.8692529797554016,0.9184650182723999,-0.8692529797554016,0,0.9184650182723999,-1.2293100357055664,0.7697479724884033,0.9184650182723999,-0.7697479724884033,0,0.9184650182723999,-1.2293100357055664,0,0.9184650182723999,-1.0885900259017944,0.7697479724884033,0.9184650182723999,-0.7697479724884033,0,0.9184650182723999,-1.2293100357055664,-0.8692529797554016,0.9184650182723999,-0.8692529797554016,0,0.9184650182723999,-1.0885900259017944,-0.8692529797554016,0.9184650182723999,-0.8692529797554016,-0.7697479724884033,0.9184650182723999,-0.7697479724884033,0,0.9184650182723999,-1.0885900259017944,-0.8692529797554016,0.9184650182723999,-0.8692529797554016,-1.2293100357055664,0.9184650182723999,0,-0.7697479724884033,0.9184650182723999,-0.7697479724884033,-1.2293100357055664,0.9184650182723999,0,-1.0885900259017944,0.9184650182723999,0,-0.7697479724884033,0.9184650182723999,-0.7697479724884033,-1.2293100357055664,0.9184650182723999,0,-0.8692529797554016,0.9184650182723999,0.8692529797554016,-1.0885900259017944,0.9184650182723999,0,-0.8692529797554016,0.9184650182723999,0.8692529797554016,-0.7697479724884033,0.9184650182723999,0.7697479724884033,-1.0885900259017944,0.9184650182723999,0,0,0.9184650182723999,-1.0885900259017944,-0.7697479724884033,0.9184650182723999,-0.7697479724884033,0,0.5815349817276001,-1.0885900259017944,-0.7697479724884033,0.9184650182723999,-0.7697479724884033,-0.7697479724884033,0.5815349817276001,-0.7697479724884033,0,0.5815349817276001,-1.0885900259017944,0.7697479724884033,0.9184650182723999,-0.7697479724884033,0,0.9184650182723999,-1.0885900259017944,0.7697479724884033,0.5815349817276001,-0.7697479724884033,0,0.9184650182723999,-1.0885900259017944,0,0.5815349817276001,-1.0885900259017944,0.7697479724884033,0.5815349817276001,-0.7697479724884033,1.0885900259017944,0.9184650182723999,0,0.7697479724884033,0.9184650182723999,-0.7697479724884033,1.0885900259017944,0.5815349817276001,0,0.7697479724884033,0.9184650182723999,-0.7697479724884033,0.7697479724884033,0.5815349817276001,-0.7697479724884033,1.0885900259017944,0.5815349817276001,0,0.7697479724884033,0.9184650182723999,0.7697479724884033,1.0885900259017944,0.9184650182723999,0,0.7697479724884033,0.5815349817276001,0.7697479724884033,1.0885900259017944,0.9184650182723999,0,1.0885900259017944,0.5815349817276001,0,0.7697479724884033,0.5815349817276001,0.7697479724884033,0,0.9184650182723999,1.0885900259017944,0.7697479724884033,0.9184650182723999,0.7697479724884033,0,0.5815349817276001,1.0885900259017944,0.7697479724884033,0.9184650182723999,0.7697479724884033,0.7697479724884033,0.5815349817276001,0.7697479724884033,0,0.5815349817276001,1.0885900259017944,-0.7697479724884033,0.9184650182723999,0.7697479724884033,0,0.9184650182723999,1.0885900259017944,-0.7697479724884033,0.5815349817276001,0.7697479724884033,0,0.9184650182723999,1.0885900259017944,0,0.5815349817276001,1.0885900259017944,-0.7697479724884033,0.5815349817276001,0.7697479724884033,-1.0885900259017944,0.9184650182723999,0,-0.7697479724884033,0.9184650182723999,0.7697479724884033,-1.0885900259017944,0.5815349817276001,0,-0.7697479724884033,0.9184650182723999,0.7697479724884033,-0.7697479724884033,0.5815349817276001,0.7697479724884033,-1.0885900259017944,0.5815349817276001,0,-0.7697479724884033,0.9184650182723999,-0.7697479724884033,-1.0885900259017944,0.9184650182723999,0,-0.7697479724884033,0.5815349817276001,-0.7697479724884033,-1.0885900259017944,0.9184650182723999,0,-1.0885900259017944,0.5815349817276001,0,-0.7697479724884033,0.5815349817276001,-0.7697479724884033],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [-0.06661880016326904,0.5060210227966309,-0.8599449992179871,-0.06661880016326904,0.5060210227966309,-0.8599449992179871,-0.1312599927186966,0.4898670017719269,-0.8618590235710144,-0.06661880016326904,0.5060210227966309,-0.8599449992179871,-0.1312599927186966,0.4898670017719269,-0.8618590235710144,-0.1312599927186966,0.4898670017719269,-0.8618590235710144,0.1305209994316101,-0.9914119839668274,-0.008199330419301987,0.1305209994316101,-0.9914119839668274,-0.008199330419301987,0.25881001353263855,-0.9658929705619812,-0.008273099549114704,0.1305209994316101,-0.9914119839668274,-0.008199330419301987,0.25881001353263855,-0.9658929705619812,-0.008273099549114704,0.25881001353263855,-0.9658929705619812,-0.008273099549114704,-0.06474470347166061,0.491784006357193,0.8683059811592102,-0.06474470347166061,0.491784006357193,0.8683059811592102,-0.12755100429058075,0.4760249853134155,0.8701329827308655,-0.06474470347166061,0.491784006357193,0.8683059811592102,-0.12755100429058075,0.4760249853134155,0.8701329827308655,-0.12755100429058075,0.4760249853134155,0.8701329827308655,-0.1312599927186966,0.4898670017719269,-0.8618590235710144,-0.1312599927186966,0.4898670017719269,-0.8618590235710144,-0.25357499718666077,0.43920400738716125,-0.8618580102920532,-0.1312599927186966,0.4898670017719269,-0.8618590235710144,-0.25357499718666077,0.43920400738716125,-0.8618580102920532,-0.25357499718666077,0.43920400738716125,-0.8618580102920532,0.25881001353263855,-0.9658929705619812,-0.008273099549114704,0.25881001353263855,-0.9658929705619812,-0.008273099549114704,0.499983012676239,-0.8659960031509399,-0.008276659995317459,0.25881001353263855,-0.9658929705619812,-0.008273099549114704,0.499983012676239,-0.8659960031509399,-0.008276659995317459,0.499983012676239,-0.8659960031509399,-0.008276659995317459,-0.12755100429058075,0.4760249853134155,0.8701329827308655,-0.12755100429058075,0.4760249853134155,0.8701329827308655,-0.24640899896621704,0.4267919957637787,0.8701329827308655,-0.12755100429058075,0.4760249853134155,0.8701329827308655,-0.24640899896621704,0.4267919957637787,0.8701329827308655,-0.24640899896621704,0.4267919957637787,0.8701329827308655,-0.25357499718666077,0.43920400738716125,-0.8618580102920532,-0.25357499718666077,0.43920400738716125,-0.8618580102920532,-0.35860899090766907,0.35860899090766907,-0.8618580102920532,-0.25357499718666077,0.43920400738716125,-0.8618580102920532,-0.35860899090766907,0.35860899090766907,-0.8618580102920532,-0.35860899090766907,0.35860899090766907,-0.8618580102920532,0.499983012676239,-0.8659960031509399,-0.008276659995317459,0.499983012676239,-0.8659960031509399,-0.008276659995317459,0.707082986831665,-0.707082986831665,-0.008274439722299576,0.499983012676239,-0.8659960031509399,-0.008276659995317459,0.707082986831665,-0.707082986831665,-0.008274439722299576,0.707082986831665,-0.707082986831665,-0.008274439722299576,-0.24640899896621704,0.4267919957637787,0.8701329827308655,-0.24640899896621704,0.4267919957637787,0.8701329827308655,-0.34847599267959595,0.34847599267959595,0.8701320290565491,-0.24640899896621704,0.4267919957637787,0.8701329827308655,-0.34847599267959595,0.34847599267959595,0.8701320290565491,-0.34847599267959595,0.34847599267959595,0.8701320290565491,-0.35860899090766907,0.35860899090766907,-0.8618580102920532,-0.35860899090766907,0.35860899090766907,-0.8618580102920532,-0.43920400738716125,0.25357499718666077,-0.8618580102920532,-0.35860899090766907,0.35860899090766907,-0.8618580102920532,-0.43920400738716125,0.25357499718666077,-0.8618580102920532,-0.43920400738716125,0.25357499718666077,-0.8618580102920532,0.707082986831665,-0.707082986831665,-0.008274439722299576,0.707082986831665,-0.707082986831665,-0.008274439722299576,0.8659960031509399,-0.499983012676239,-0.00827253982424736,0.707082986831665,-0.707082986831665,-0.008274439722299576,0.8659960031509399,-0.499983012676239,-0.00827253982424736,0.8659960031509399,-0.499983012676239,-0.00827253982424736,-0.34847599267959595,0.34847599267959595,0.8701320290565491,-0.34847599267959595,0.34847599267959595,0.8701320290565491,-0.42679399251937866,0.24640999734401703,0.8701320290565491,-0.34847599267959595,0.34847599267959595,0.8701320290565491,-0.42679399251937866,0.24640999734401703,0.8701320290565491,-0.42679399251937866,0.24640999734401703,0.8701320290565491,-0.43920400738716125,0.25357499718666077,-0.8618580102920532,-0.43920400738716125,0.25357499718666077,-0.8618580102920532,-0.4898679852485657,0.1312599927186966,-0.8618590235710144,-0.43920400738716125,0.25357499718666077,-0.8618580102920532,-0.4898679852485657,0.1312599927186966,-0.8618590235710144,-0.4898679852485657,0.1312599927186966,-0.8618590235710144,0.8659960031509399,-0.499983012676239,-0.00827253982424736,0.8659960031509399,-0.499983012676239,-0.00827253982424736,0.9658929705619812,-0.25881001353263855,-0.00827230978757143,0.8659960031509399,-0.499983012676239,-0.00827253982424736,0.9658929705619812,-0.25881001353263855,-0.00827230978757143,0.9658929705619812,-0.25881001353263855,-0.00827230978757143,-0.42679399251937866,0.24640999734401703,0.8701320290565491,-0.42679399251937866,0.24640999734401703,0.8701320290565491,-0.4760259985923767,0.12755100429058075,0.8701320290565491,-0.42679399251937866,0.24640999734401703,0.8701320290565491,-0.4760259985923767,0.12755100429058075,0.8701320290565491,-0.4760259985923767,0.12755100429058075,0.8701320290565491,-0.4898679852485657,0.1312599927186966,-0.8618590235710144,-0.4898679852485657,0.1312599927186966,-0.8618590235710144,-0.507148027420044,2.2401499322199925e-8,-0.8618590235710144,-0.4898679852485657,0.1312599927186966,-0.8618590235710144,-0.507148027420044,2.2401499322199925e-8,-0.8618590235710144,-0.507148027420044,2.2401499322199925e-8,-0.8618590235710144,0.9658929705619812,-0.25881001353263855,-0.00827230978757143,0.9658929705619812,-0.25881001353263855,-0.00827230978757143,0.999966025352478,1.2775299751410785e-7,-0.008270660415291786,0.9658929705619812,-0.25881001353263855,-0.00827230978757143,0.999966025352478,1.2775299751410785e-7,-0.008270660415291786,0.999966025352478,1.2775299751410785e-7,-0.008270660415291786,-0.4760259985923767,0.12755100429058075,0.8701320290565491,-0.4760259985923767,0.12755100429058075,0.8701320290565491,-0.49281901121139526,-2.239869978382103e-8,0.8701320290565491,-0.4760259985923767,0.12755100429058075,0.8701320290565491,-0.49281901121139526,-2.239869978382103e-8,0.8701320290565491,-0.49281901121139526,-2.239869978382103e-8,0.8701320290565491,-0.507148027420044,2.2401499322199925e-8,-0.8618590235710144,-0.507148027420044,2.2401499322199925e-8,-0.8618590235710144,-0.4898670017719269,-0.1312589943408966,-0.8618590235710144,-0.507148027420044,2.2401499322199925e-8,-0.8618590235710144,-0.4898670017719269,-0.1312589943408966,-0.8618590235710144,-0.4898670017719269,-0.1312589943408966,-0.8618590235710144,0.999966025352478,1.2775299751410785e-7,-0.008270660415291786,0.999966025352478,1.2775299751410785e-7,-0.008270660415291786,0.9658929705619812,0.25881001353263855,-0.008270800113677979,0.999966025352478,1.2775299751410785e-7,-0.008270660415291786,0.9658929705619812,0.25881001353263855,-0.008270800113677979,0.9658929705619812,0.25881001353263855,-0.008270800113677979,-0.49281901121139526,-2.239869978382103e-8,0.8701320290565491,-0.49281901121139526,-2.239869978382103e-8,0.8701320290565491,-0.4760259985923767,-0.12755100429058075,0.8701320290565491,-0.49281901121139526,-2.239869978382103e-8,0.8701320290565491,-0.4760259985923767,-0.12755100429058075,0.8701320290565491,-0.4760259985923767,-0.12755100429058075,0.8701320290565491,-0.4898670017719269,-0.1312589943408966,-0.8618590235710144,-0.4898670017719269,-0.1312589943408966,-0.8618590235710144,-0.4392459988594055,-0.2535009980201721,-0.8618590235710144,-0.4898670017719269,-0.1312589943408966,-0.8618590235710144,-0.4392459988594055,-0.2535009980201721,-0.8618590235710144,-0.4392459988594055,-0.2535009980201721,-0.8618590235710144,0.9658929705619812,0.25881001353263855,-0.008270800113677979,0.9658929705619812,0.25881001353263855,-0.008270800113677979,0.8659549951553345,0.5000540018081665,-0.008274099789559841,0.9658929705619812,0.25881001353263855,-0.008270800113677979,0.8659549951553345,0.5000540018081665,-0.008274099789559841,0.8659549951553345,0.5000540018081665,-0.008274099789559841,-0.4760259985923767,-0.12755100429058075,0.8701320290565491,-0.4760259985923767,-0.12755100429058075,0.8701320290565491,-0.42677199840545654,-0.24644500017166138,0.8701329827308655,-0.4760259985923767,-0.12755100429058075,0.8701320290565491,-0.42677199840545654,-0.24644500017166138,0.8701329827308655,-0.42677199840545654,-0.24644500017166138,0.8701329827308655,-0.4392459988594055,-0.2535009980201721,-0.8618590235710144,-0.4392459988594055,-0.2535009980201721,-0.8618590235710144,-0.3910439908504486,-0.3252269923686981,-0.8609949946403503,-0.4392459988594055,-0.2535009980201721,-0.8618590235710144,-0.3910439908504486,-0.3252269923686981,-0.8609949946403503,-0.3910439908504486,-0.3252269923686981,-0.8609949946403503,0.8659549951553345,0.5000540018081665,-0.008274099789559841,0.8659549951553345,0.5000540018081665,-0.008274099789559841,0.7689840197563171,0.6392149925231934,-0.008242569863796234,0.8659549951553345,0.5000540018081665,-0.008274099789559841,0.7689840197563171,0.6392149925231934,-0.008242569863796234,0.7689840197563171,0.6392149925231934,-0.008242569863796234,-0.42677199840545654,-0.24644500017166138,0.8701329827308655,-0.42677199840545654,-0.24644500017166138,0.8701329827308655,-0.3801479935646057,-0.31591999530792236,0.8693000078201294,-0.42677199840545654,-0.24644500017166138,0.8701329827308655,-0.3801479935646057,-0.31591999530792236,0.8693000078201294,-0.3801479935646057,-0.31591999530792236,0.8693000078201294,-0.3910439908504486,-0.3252269923686981,-0.8609949946403503,-0.3910439908504486,-0.3252269923686981,-0.8609949946403503,-0.4653390049934387,-0.16737300157546997,-0.869163990020752,-0.3910439908504486,-0.3252269923686981,-0.8609949946403503,-0.4653390049934387,-0.16737300157546997,-0.869163990020752,-0.4653390049934387,-0.16737300157546997,-0.869163990020752,0.7689840197563171,0.6392149925231934,-0.008242569863796234,0.7689840197563171,0.6392149925231934,-0.008242569863796234,0.743582010269165,0.6685940027236938,-0.008267019875347614,0.7689840197563171,0.6392149925231934,-0.008242569863796234,0.743582010269165,0.6685940027236938,-0.008267019875347614,0.743582010269165,0.6685940027236938,-0.008267019875347614,-0.3801479935646057,-0.31591999530792236,0.8693000078201294,-0.3801479935646057,-0.31591999530792236,0.8693000078201294,-0.44932401180267334,-0.16983400285243988,0.8770769834518433,-0.3801479935646057,-0.31591999530792236,0.8693000078201294,-0.44932401180267334,-0.16983400285243988,0.8770769834518433,-0.44932401180267334,-0.16983400285243988,0.8770769834518433,-0.4653390049934387,-0.16737300157546997,-0.869163990020752,-0.4653390049934387,-0.16737300157546997,-0.869163990020752,-0.5181999802589417,0.05637500062584877,-0.8533989787101746,-0.4653390049934387,-0.16737300157546997,-0.869163990020752,-0.5181999802589417,0.05637500062584877,-0.8533989787101746,-0.5181999802589417,0.05637500062584877,-0.8533989787101746,0.99993497133255,0.008412989787757397,-0.007749670185148716,0.99993497133255,0.008412989787757397,-0.007749670185148716,0.9953939914703369,-0.0955365002155304,-0.008034519851207733,0.99993497133255,0.008412989787757397,-0.007749670185148716,0.9953939914703369,-0.0955365002155304,-0.008034519851207733,0.9953939914703369,-0.0955365002155304,-0.008034519851207733,-0.44932401180267334,-0.16983400285243988,0.8770769834518433,-0.44932401180267334,-0.16983400285243988,0.8770769834518433,-0.5018590092658997,0.04691879823803902,0.8636760115623474,-0.44932401180267334,-0.16983400285243988,0.8770769834518433,-0.5018590092658997,0.04691879823803902,0.8636760115623474,-0.5018590092658997,0.04691879823803902,0.8636760115623474,-0.5181999802589417,0.05637500062584877,-0.8533989787101746,-0.5181999802589417,0.05637500062584877,-0.8533989787101746,-0.498867005109787,0.10130699723958969,-0.8607370257377625,-0.5181999802589417,0.05637500062584877,-0.8533989787101746,-0.498867005109787,0.10130699723958969,-0.8607370257377625,-0.498867005109787,0.10130699723958969,-0.8607370257377625,0.9953939914703369,-0.0955365002155304,-0.008034519851207733,0.9953939914703369,-0.0955365002155304,-0.008034519851207733,0.980076014995575,-0.19845199584960938,-0.008232389576733112,0.9953939914703369,-0.0955365002155304,-0.008034519851207733,0.980076014995575,-0.19845199584960938,-0.008232389576733112,0.980076014995575,-0.19845199584960938,-0.008232389576733112,-0.5018590092658997,0.04691879823803902,0.8636760115623474,-0.5018590092658997,0.04691879823803902,0.8636760115623474,-0.484840989112854,0.09817089885473251,0.8690750002861023,-0.5018590092658997,0.04691879823803902,0.8636760115623474,-0.484840989112854,0.09817089885473251,0.8690750002861023,-0.484840989112854,0.09817089885473251,0.8690750002861023,-0.2130959928035736,-0.9770309925079346,8.961659858641724e-8,-0.2130959928035736,-0.9770309925079346,8.961659858641724e-8,-0.2130959928035736,-0.9770309925079346,8.961659858641724e-8,-0.6551790237426758,0.5060210227966309,-0.5609660148620605,-0.6551790237426758,0.5060210227966309,-0.5609660148620605,-0.7022410035133362,0.4898670017719269,-0.5166119933128357,-0.6551790237426758,0.5060210227966309,-0.5609660148620605,-0.7022410035133362,0.4898670017719269,-0.5166119933128357,-0.7022410035133362,0.4898670017719269,-0.5166119933128357,0.0864948034286499,-0.9914119839668274,-0.09809040278196335,0.0864948034286499,-0.9914119839668274,-0.09809040278196335,0.17715699970722198,-0.9658929705619812,-0.18885600566864014,0.0864948034286499,-0.9914119839668274,-0.09809040278196335,0.17715699970722198,-0.9658929705619812,-0.18885600566864014,0.17715699970722198,-0.9658929705619812,-0.18885600566864014,0.5682039856910706,0.491784006357193,0.6597669720649719,0.5682039856910706,0.491784006357193,0.6597669720649719,0.5250849723815918,0.4760249853134155,0.705469012260437,0.5682039856910706,0.491784006357193,0.6597669720649719,0.5250849723815918,0.4760249853134155,0.705469012260437,0.5250849723815918,0.4760249853134155,0.705469012260437,-0.7022410035133362,0.4898670017719269,-0.5166119933128357,-0.7022410035133362,0.4898670017719269,-0.5166119933128357,-0.7887300252914429,0.43920400738716125,-0.4301210045814514,-0.7022410035133362,0.4898670017719269,-0.5166119933128357,-0.7887300252914429,0.43920400738716125,-0.4301210045814514,-0.7887300252914429,0.43920400738716125,-0.4301210045814514,0.17715699970722198,-0.9658929705619812,-0.18885600566864014,0.17715699970722198,-0.9658929705619812,-0.18885600566864014,0.3476890027523041,-0.8659960031509399,-0.35939401388168335,0.17715699970722198,-0.9658929705619812,-0.18885600566864014,0.3476890027523041,-0.8659960031509399,-0.35939401388168335,0.3476890027523041,-0.8659960031509399,-0.35939401388168335,0.5250849723815918,0.4760249853134155,0.705469012260437,0.5250849723815918,0.4760249853134155,0.705469012260437,0.4410400092601776,0.4267919957637787,0.7895140051841736,0.5250849723815918,0.4760249853134155,0.705469012260437,0.4410400092601776,0.4267919957637787,0.7895140051841736,0.4410400092601776,0.4267919957637787,0.7895140051841736,-0.7887300252914429,0.43920400738716125,-0.4301210045814514,-0.7887300252914429,0.43920400738716125,-0.4301210045814514,-0.8629999756813049,0.35860899090766907,-0.3558509945869446,-0.7887300252914429,0.43920400738716125,-0.4301210045814514,-0.8629999756813049,0.35860899090766907,-0.3558509945869446,-0.8629999756813049,0.35860899090766907,-0.3558509945869446,0.3476890027523041,-0.8659960031509399,-0.35939401388168335,0.3476890027523041,-0.8659960031509399,-0.35939401388168335,0.49413201212882996,-0.707082986831665,-0.5058339834213257,0.3476890027523041,-0.8659960031509399,-0.35939401388168335,0.49413201212882996,-0.707082986831665,-0.5058339834213257,0.49413201212882996,-0.707082986831665,-0.5058339834213257,0.4410400092601776,0.4267919957637787,0.7895140051841736,0.4410400092601776,0.4267919957637787,0.7895140051841736,0.3688659965991974,0.34847599267959595,0.8616859912872314,0.4410400092601776,0.4267919957637787,0.7895140051841736,0.3688659965991974,0.34847599267959595,0.8616859912872314,0.3688659965991974,0.34847599267959595,0.8616859912872314,-0.8629999756813049,0.35860899090766907,-0.3558509945869446,-0.8629999756813049,0.35860899090766907,-0.3558509945869446,-0.9199900031089783,0.253574013710022,-0.2988629937171936,-0.8629999756813049,0.35860899090766907,-0.3558509945869446,-0.9199900031089783,0.253574013710022,-0.2988629937171936,-0.9199900031089783,0.253574013710022,-0.2988629937171936,0.49413201212882996,-0.707082986831665,-0.5058339834213257,0.49413201212882996,-0.707082986831665,-0.5058339834213257,0.6065019965171814,-0.499983012676239,-0.6182010173797607,0.49413201212882996,-0.707082986831665,-0.5058339834213257,0.6065019965171814,-0.499983012676239,-0.6182010173797607,0.6065019965171814,-0.499983012676239,-0.6182010173797607,0.3688659965991974,0.34847599267959595,0.8616859912872314,0.3688659965991974,0.34847599267959595,0.8616859912872314,0.3134869933128357,0.24640999734401703,0.9170650243759155,0.3688659965991974,0.34847599267959595,0.8616859912872314,0.3134869933128357,0.24640999734401703,0.9170650243759155,0.3134869933128357,0.24640999734401703,0.9170650243759155,-0.9199900031089783,0.253574013710022,-0.2988629937171936,-0.9199900031089783,0.253574013710022,-0.2988629937171936,-0.9558150172233582,0.1312589943408966,-0.2630380094051361,-0.9199900031089783,0.253574013710022,-0.2988629937171936,-0.9558150172233582,0.1312589943408966,-0.2630380094051361,-0.9558150172233582,0.1312589943408966,-0.2630380094051361,0.6065019965171814,-0.499983012676239,-0.6182010173797607,0.6065019965171814,-0.499983012676239,-0.6182010173797607,0.6771399974822998,-0.25881001353263855,-0.6888390183448792,0.6065019965171814,-0.499983012676239,-0.6182010173797607,0.6771399974822998,-0.25881001353263855,-0.6888390183448792,0.6771399974822998,-0.25881001353263855,-0.6888390183448792,0.3134869933128357,0.24640999734401703,0.9170650243759155,0.3134869933128357,0.24640999734401703,0.9170650243759155,0.27867498993873596,0.12755100429058075,0.951878011226654,0.3134869933128357,0.24640999734401703,0.9170650243759155,0.27867498993873596,0.12755100429058075,0.951878011226654,0.27867498993873596,0.12755100429058075,0.951878011226654,-0.9558150172233582,0.1312589943408966,-0.2630380094051361,-0.9558150172233582,0.1312589943408966,-0.2630380094051361,-0.968034029006958,-2.2401499322199925e-8,-0.25081899762153625,-0.9558150172233582,0.1312589943408966,-0.2630380094051361,-0.968034029006958,-2.2401499322199925e-8,-0.25081899762153625,-0.968034029006958,-2.2401499322199925e-8,-0.25081899762153625,0.6771399974822998,-0.25881001353263855,-0.6888390183448792,0.6771399974822998,-0.25881001353263855,-0.6888390183448792,0.7012349963188171,1.3526799591545569e-7,-0.7129309773445129,0.6771399974822998,-0.25881001353263855,-0.6888390183448792,0.7012349963188171,1.3526799591545569e-7,-0.7129309773445129,0.7012349963188171,1.3526799591545569e-7,-0.7129309773445129,0.27867498993873596,0.12755100429058075,0.951878011226654,0.27867498993873596,0.12755100429058075,0.951878011226654,0.26680099964141846,-8.586179944813921e-8,0.9637519717216492,0.27867498993873596,0.12755100429058075,0.951878011226654,0.26680099964141846,-8.586179944813921e-8,0.9637519717216492,0.26680099964141846,-8.586179944813921e-8,0.9637519717216492,-0.968034029006958,-2.2401499322199925e-8,-0.25081899762153625,-0.968034029006958,-2.2401499322199925e-8,-0.25081899762153625,-0.9558150172233582,-0.1312589943408966,-0.2630380094051361,-0.968034029006958,-2.2401499322199925e-8,-0.25081899762153625,-0.9558150172233582,-0.1312589943408966,-0.2630380094051361,-0.9558150172233582,-0.1312589943408966,-0.2630380094051361,0.7012349963188171,1.3526799591545569e-7,-0.7129309773445129,0.7012349963188171,1.3526799591545569e-7,-0.7129309773445129,0.677141010761261,0.25881001353263855,-0.6888369917869568,0.7012349963188171,1.3526799591545569e-7,-0.7129309773445129,0.677141010761261,0.25881001353263855,-0.6888369917869568,0.677141010761261,0.25881001353263855,-0.6888369917869568,0.26680099964141846,-8.586179944813921e-8,0.9637519717216492,0.26680099964141846,-8.586179944813921e-8,0.9637519717216492,0.27867600321769714,-0.12755100429058075,0.9518769979476929,0.26680099964141846,-8.586179944813921e-8,0.9637519717216492,0.27867600321769714,-0.12755100429058075,0.9518769979476929,0.27867600321769714,-0.12755100429058075,0.9518769979476929,-0.9558150172233582,-0.1312589943408966,-0.2630380094051361,-0.9558150172233582,-0.1312589943408966,-0.2630380094051361,-0.9200199842453003,-0.2535000145435333,-0.2988330125808716,-0.9558150172233582,-0.1312589943408966,-0.2630380094051361,-0.9200199842453003,-0.2535000145435333,-0.2988330125808716,-0.9200199842453003,-0.2535000145435333,-0.2988330125808716,0.677141010761261,0.25881001353263855,-0.6888369917869568,0.677141010761261,0.25881001353263855,-0.6888369917869568,0.6064710021018982,0.5000540018081665,-0.6181740164756775,0.677141010761261,0.25881001353263855,-0.6888369917869568,0.6064710021018982,0.5000540018081665,-0.6181740164756775,0.6064710021018982,0.5000540018081665,-0.6181740164756775,0.27867600321769714,-0.12755100429058075,0.9518769979476929,0.27867600321769714,-0.12755100429058075,0.9518769979476929,0.31350401043891907,-0.24644500017166138,0.9170500040054321,0.27867600321769714,-0.12755100429058075,0.9518769979476929,0.31350401043891907,-0.24644500017166138,0.9170500040054321,0.31350401043891907,-0.24644500017166138,0.9170500040054321,-0.9200199842453003,-0.2535000145435333,-0.2988330125808716,-0.9200199842453003,-0.2535000145435333,-0.2988330125808716,-0.885325014591217,-0.3252269923686981,-0.33230599761009216,-0.9200199842453003,-0.2535000145435333,-0.2988330125808716,-0.885325014591217,-0.3252269923686981,-0.33230599761009216,-0.885325014591217,-0.3252269923686981,-0.33230599761009216,0.6064710021018982,0.5000540018081665,-0.6181740164756775,0.6064710021018982,0.5000540018081665,-0.6181740164756775,0.5379250049591064,0.6392149925231934,-0.5495830178260803,0.6064710021018982,0.5000540018081665,-0.6181740164756775,0.5379250049591064,0.6392149925231934,-0.5495830178260803,0.5379250049591064,0.6392149925231934,-0.5495830178260803,0.31350401043891907,-0.24644500017166138,0.9170500040054321,0.31350401043891907,-0.24644500017166138,0.9170500040054321,0.34588301181793213,-0.31591999530792236,0.8834930062294006,0.31350401043891907,-0.24644500017166138,0.9170500040054321,0.34588301181793213,-0.31591999530792236,0.8834930062294006,0.34588301181793213,-0.31591999530792236,0.8834930062294006,-0.885325014591217,-0.3252269923686981,-0.33230599761009216,-0.885325014591217,-0.3252269923686981,-0.33230599761009216,-0.9436360001564026,-0.16737300157546997,-0.28554800152778625,-0.885325014591217,-0.3252269923686981,-0.33230599761009216,-0.9436360001564026,-0.16737300157546997,-0.28554800152778625,-0.9436360001564026,-0.16737300157546997,-0.28554800152778625,0.5379250049591064,0.6392149925231934,-0.5495830178260803,0.5379250049591064,0.6392149925231934,-0.5495830178260803,0.5199450254440308,0.6685940027236938,-0.5316380262374878,0.5379250049591064,0.6392149925231934,-0.5495830178260803,0.5199450254440308,0.6685940027236938,-0.5316380262374878,0.5199450254440308,0.6685940027236938,-0.5316380262374878,0.34588301181793213,-0.31591999530792236,0.8834930062294006,0.34588301181793213,-0.31591999530792236,0.8834930062294006,0.3024680018424988,-0.16983400285243988,0.9379069805145264,0.34588301181793213,-0.31591999530792236,0.8834930062294006,0.3024680018424988,-0.16983400285243988,0.9379069805145264,0.3024680018424988,-0.16983400285243988,0.9379069805145264,-0.9436360001564026,-0.16737300157546997,-0.28554800152778625,-0.9436360001564026,-0.16737300157546997,-0.28554800152778625,-0.9698669910430908,0.05637500062584877,-0.23702199757099152,-0.9436360001564026,-0.16737300157546997,-0.28554800152778625,-0.9698669910430908,0.05637500062584877,-0.23702199757099152,-0.9698669910430908,0.05637500062584877,-0.23702199757099152,0.7015810012817383,0.00841290969401598,-0.7125399708747864,0.7015810012817383,0.00841290969401598,-0.7125399708747864,0.6981679797172546,-0.09553659707307816,-0.7095310091972351,0.7015810012817383,0.00841290969401598,-0.7125399708747864,0.6981679797172546,-0.09553659707307816,-0.7095310091972351,0.6981679797172546,-0.09553659707307816,-0.7095310091972351,0.3024680018424988,-0.16983400285243988,0.9379069805145264,0.3024680018424988,-0.16983400285243988,0.9379069805145264,0.25584301352500916,0.04691879823803902,0.9655789732933044,0.3024680018424988,-0.16983400285243988,0.9379069805145264,0.25584301352500916,0.04691879823803902,0.9655789732933044,0.25584301352500916,0.04691879823803902,0.9655789732933044,-0.9698669910430908,0.05637500062584877,-0.23702199757099152,-0.9698669910430908,0.05637500062584877,-0.23702199757099152,-0.9613850116729736,0.10130699723958969,-0.25588101148605347,-0.9698669910430908,0.05637500062584877,-0.23702199757099152,-0.9613850116729736,0.10130699723958969,-0.25588101148605347,-0.9613850116729736,0.10130699723958969,-0.25588101148605347,0.6981679797172546,-0.09553659707307816,-0.7095310091972351,0.6981679797172546,-0.09553659707307816,-0.7095310091972351,0.6871970295906067,-0.19845199584960938,-0.6988400220870972,0.6981679797172546,-0.09553659707307816,-0.7095310091972351,0.6871970295906067,-0.19845199584960938,-0.6988400220870972,0.6871970295906067,-0.19845199584960938,-0.6988400220870972,0.25584301352500916,0.04691879823803902,0.9655789732933044,0.25584301352500916,0.04691879823803902,0.9655789732933044,0.27169400453567505,0.09817089885473251,0.9573630094528198,0.25584301352500916,0.04691879823803902,0.9655789732933044,0.27169400453567505,0.09817089885473251,0.9573630094528198,0.27169400453567505,0.09817089885473251,0.9573630094528198,-0.1506810039281845,-0.9770309925079346,0.1506810039281845,-0.1506810039281845,-0.9770309925079346,0.1506810039281845,-0.1506810039281845,-0.9770309925079346,0.1506810039281845,-0.8599449992179871,0.5060210227966309,0.06661880016326904,-0.8599449992179871,0.5060210227966309,0.06661880016326904,-0.8618590235710144,0.4898670017719269,0.1312599927186966,-0.8599449992179871,0.5060210227966309,0.06661880016326904,-0.8618590235710144,0.4898670017719269,0.1312599927186966,-0.8618590235710144,0.4898670017719269,0.1312599927186966,-0.008199330419301987,-0.9914119839668274,-0.1305209994316101,-0.008199330419301987,-0.9914119839668274,-0.1305209994316101,-0.008273099549114704,-0.9658929705619812,-0.25881001353263855,-0.008199330419301987,-0.9914119839668274,-0.1305209994316101,-0.008273099549114704,-0.9658929705619812,-0.25881001353263855,-0.008273099549114704,-0.9658929705619812,-0.25881001353263855,0.8683059811592102,0.491784006357193,0.06474470347166061,0.8683059811592102,0.491784006357193,0.06474470347166061,0.8701329827308655,0.4760249853134155,0.12755100429058075,0.8683059811592102,0.491784006357193,0.06474470347166061,0.8701329827308655,0.4760249853134155,0.12755100429058075,0.8701329827308655,0.4760249853134155,0.12755100429058075,-0.8618590235710144,0.4898670017719269,0.1312599927186966,-0.8618590235710144,0.4898670017719269,0.1312599927186966,-0.8618580102920532,0.43920400738716125,0.25357499718666077,-0.8618590235710144,0.4898670017719269,0.1312599927186966,-0.8618580102920532,0.43920400738716125,0.25357499718666077,-0.8618580102920532,0.43920400738716125,0.25357499718666077,-0.008273099549114704,-0.9658929705619812,-0.25881001353263855,-0.008273099549114704,-0.9658929705619812,-0.25881001353263855,-0.008276659995317459,-0.8659960031509399,-0.499983012676239,-0.008273099549114704,-0.9658929705619812,-0.25881001353263855,-0.008276659995317459,-0.8659960031509399,-0.499983012676239,-0.008276659995317459,-0.8659960031509399,-0.499983012676239,0.8701329827308655,0.4760249853134155,0.12755100429058075,0.8701329827308655,0.4760249853134155,0.12755100429058075,0.8701329827308655,0.4267919957637787,0.24640899896621704,0.8701329827308655,0.4760249853134155,0.12755100429058075,0.8701329827308655,0.4267919957637787,0.24640899896621704,0.8701329827308655,0.4267919957637787,0.24640899896621704,-0.8618580102920532,0.43920400738716125,0.25357499718666077,-0.8618580102920532,0.43920400738716125,0.25357499718666077,-0.8618580102920532,0.35860899090766907,0.35860899090766907,-0.8618580102920532,0.43920400738716125,0.25357499718666077,-0.8618580102920532,0.35860899090766907,0.35860899090766907,-0.8618580102920532,0.35860899090766907,0.35860899090766907,-0.008276659995317459,-0.8659960031509399,-0.499983012676239,-0.008276659995317459,-0.8659960031509399,-0.499983012676239,-0.008274439722299576,-0.707082986831665,-0.707082986831665,-0.008276659995317459,-0.8659960031509399,-0.499983012676239,-0.008274439722299576,-0.707082986831665,-0.707082986831665,-0.008274439722299576,-0.707082986831665,-0.707082986831665,0.8701329827308655,0.4267919957637787,0.24640899896621704,0.8701329827308655,0.4267919957637787,0.24640899896621704,0.8701320290565491,0.34847599267959595,0.34847599267959595,0.8701329827308655,0.4267919957637787,0.24640899896621704,0.8701320290565491,0.34847599267959595,0.34847599267959595,0.8701320290565491,0.34847599267959595,0.34847599267959595,-0.8618580102920532,0.35860899090766907,0.35860899090766907,-0.8618580102920532,0.35860899090766907,0.35860899090766907,-0.8618580102920532,0.25357499718666077,0.43920400738716125,-0.8618580102920532,0.35860899090766907,0.35860899090766907,-0.8618580102920532,0.25357499718666077,0.43920400738716125,-0.8618580102920532,0.25357499718666077,0.43920400738716125,-0.008274439722299576,-0.707082986831665,-0.707082986831665,-0.008274439722299576,-0.707082986831665,-0.707082986831665,-0.00827253982424736,-0.499983012676239,-0.8659960031509399,-0.008274439722299576,-0.707082986831665,-0.707082986831665,-0.00827253982424736,-0.499983012676239,-0.8659960031509399,-0.00827253982424736,-0.499983012676239,-0.8659960031509399,0.8701320290565491,0.34847599267959595,0.34847599267959595,0.8701320290565491,0.34847599267959595,0.34847599267959595,0.8701320290565491,0.24640999734401703,0.42679399251937866,0.8701320290565491,0.34847599267959595,0.34847599267959595,0.8701320290565491,0.24640999734401703,0.42679399251937866,0.8701320290565491,0.24640999734401703,0.42679399251937866,-0.8618580102920532,0.25357499718666077,0.43920400738716125,-0.8618580102920532,0.25357499718666077,0.43920400738716125,-0.8618590235710144,0.1312599927186966,0.4898679852485657,-0.8618580102920532,0.25357499718666077,0.43920400738716125,-0.8618590235710144,0.1312599927186966,0.4898679852485657,-0.8618590235710144,0.1312599927186966,0.4898679852485657,-0.00827253982424736,-0.499983012676239,-0.8659960031509399,-0.00827253982424736,-0.499983012676239,-0.8659960031509399,-0.00827230978757143,-0.25881001353263855,-0.9658929705619812,-0.00827253982424736,-0.499983012676239,-0.8659960031509399,-0.00827230978757143,-0.25881001353263855,-0.9658929705619812,-0.00827230978757143,-0.25881001353263855,-0.9658929705619812,0.8701320290565491,0.24640999734401703,0.42679399251937866,0.8701320290565491,0.24640999734401703,0.42679399251937866,0.8701320290565491,0.12755100429058075,0.4760259985923767,0.8701320290565491,0.24640999734401703,0.42679399251937866,0.8701320290565491,0.12755100429058075,0.4760259985923767,0.8701320290565491,0.12755100429058075,0.4760259985923767,-0.8618590235710144,0.1312599927186966,0.4898679852485657,-0.8618590235710144,0.1312599927186966,0.4898679852485657,-0.8618590235710144,2.2401499322199925e-8,0.507148027420044,-0.8618590235710144,0.1312599927186966,0.4898679852485657,-0.8618590235710144,2.2401499322199925e-8,0.507148027420044,-0.8618590235710144,2.2401499322199925e-8,0.507148027420044,-0.00827230978757143,-0.25881001353263855,-0.9658929705619812,-0.00827230978757143,-0.25881001353263855,-0.9658929705619812,-0.008270660415291786,1.3526799591545569e-7,-0.999966025352478,-0.00827230978757143,-0.25881001353263855,-0.9658929705619812,-0.008270660415291786,1.3526799591545569e-7,-0.999966025352478,-0.008270660415291786,1.3526799591545569e-7,-0.999966025352478,0.8701320290565491,0.12755100429058075,0.4760259985923767,0.8701320290565491,0.12755100429058075,0.4760259985923767,0.8701320290565491,-2.239869978382103e-8,0.49281901121139526,0.8701320290565491,0.12755100429058075,0.4760259985923767,0.8701320290565491,-2.239869978382103e-8,0.49281901121139526,0.8701320290565491,-2.239869978382103e-8,0.49281901121139526,-0.8618590235710144,2.2401499322199925e-8,0.507148027420044,-0.8618590235710144,2.2401499322199925e-8,0.507148027420044,-0.8618590235710144,-0.1312589943408966,0.4898670017719269,-0.8618590235710144,2.2401499322199925e-8,0.507148027420044,-0.8618590235710144,-0.1312589943408966,0.4898670017719269,-0.8618590235710144,-0.1312589943408966,0.4898670017719269,-0.008270660415291786,1.3526799591545569e-7,-0.999966025352478,-0.008270660415291786,1.3526799591545569e-7,-0.999966025352478,-0.008270800113677979,0.25881001353263855,-0.9658929705619812,-0.008270660415291786,1.3526799591545569e-7,-0.999966025352478,-0.008270800113677979,0.25881001353263855,-0.9658929705619812,-0.008270800113677979,0.25881001353263855,-0.9658929705619812,0.8701320290565491,-2.239869978382103e-8,0.49281901121139526,0.8701320290565491,-2.239869978382103e-8,0.49281901121139526,0.8701320290565491,-0.12755100429058075,0.4760259985923767,0.8701320290565491,-2.239869978382103e-8,0.49281901121139526,0.8701320290565491,-0.12755100429058075,0.4760259985923767,0.8701320290565491,-0.12755100429058075,0.4760259985923767,-0.8618590235710144,-0.1312589943408966,0.4898670017719269,-0.8618590235710144,-0.1312589943408966,0.4898670017719269,-0.8618590235710144,-0.2535009980201721,0.4392459988594055,-0.8618590235710144,-0.1312589943408966,0.4898670017719269,-0.8618590235710144,-0.2535009980201721,0.4392459988594055,-0.8618590235710144,-0.2535009980201721,0.4392459988594055,-0.008270800113677979,0.25881001353263855,-0.9658929705619812,-0.008270800113677979,0.25881001353263855,-0.9658929705619812,-0.008274099789559841,0.5000540018081665,-0.8659549951553345,-0.008270800113677979,0.25881001353263855,-0.9658929705619812,-0.008274099789559841,0.5000540018081665,-0.8659549951553345,-0.008274099789559841,0.5000540018081665,-0.8659549951553345,0.8701320290565491,-0.12755100429058075,0.4760259985923767,0.8701320290565491,-0.12755100429058075,0.4760259985923767,0.8701329827308655,-0.24644500017166138,0.42677199840545654,0.8701320290565491,-0.12755100429058075,0.4760259985923767,0.8701329827308655,-0.24644500017166138,0.42677199840545654,0.8701329827308655,-0.24644500017166138,0.42677199840545654,-0.8618590235710144,-0.2535009980201721,0.4392459988594055,-0.8618590235710144,-0.2535009980201721,0.4392459988594055,-0.8609949946403503,-0.3252269923686981,0.3910439908504486,-0.8618590235710144,-0.2535009980201721,0.4392459988594055,-0.8609949946403503,-0.3252269923686981,0.3910439908504486,-0.8609949946403503,-0.3252269923686981,0.3910439908504486,-0.008274099789559841,0.5000540018081665,-0.8659549951553345,-0.008274099789559841,0.5000540018081665,-0.8659549951553345,-0.008242569863796234,0.6392149925231934,-0.7689840197563171,-0.008274099789559841,0.5000540018081665,-0.8659549951553345,-0.008242569863796234,0.6392149925231934,-0.7689840197563171,-0.008242569863796234,0.6392149925231934,-0.7689840197563171,0.8701329827308655,-0.24644500017166138,0.42677199840545654,0.8701329827308655,-0.24644500017166138,0.42677199840545654,0.8693000078201294,-0.31591999530792236,0.3801479935646057,0.8701329827308655,-0.24644500017166138,0.42677199840545654,0.8693000078201294,-0.31591999530792236,0.3801479935646057,0.8693000078201294,-0.31591999530792236,0.3801479935646057,-0.8609949946403503,-0.3252269923686981,0.3910439908504486,-0.8609949946403503,-0.3252269923686981,0.3910439908504486,-0.869163990020752,-0.16737300157546997,0.4653390049934387,-0.8609949946403503,-0.3252269923686981,0.3910439908504486,-0.869163990020752,-0.16737300157546997,0.4653390049934387,-0.869163990020752,-0.16737300157546997,0.4653390049934387,-0.008242569863796234,0.6392149925231934,-0.7689840197563171,-0.008242569863796234,0.6392149925231934,-0.7689840197563171,-0.008267019875347614,0.6685940027236938,-0.743582010269165,-0.008242569863796234,0.6392149925231934,-0.7689840197563171,-0.008267019875347614,0.6685940027236938,-0.743582010269165,-0.008267019875347614,0.6685940027236938,-0.743582010269165,0.8693000078201294,-0.31591999530792236,0.3801479935646057,0.8693000078201294,-0.31591999530792236,0.3801479935646057,0.8770769834518433,-0.16983400285243988,0.44932401180267334,0.8693000078201294,-0.31591999530792236,0.3801479935646057,0.8770769834518433,-0.16983400285243988,0.44932401180267334,0.8770769834518433,-0.16983400285243988,0.44932401180267334,-0.869163990020752,-0.16737300157546997,0.4653390049934387,-0.869163990020752,-0.16737300157546997,0.4653390049934387,-0.8533989787101746,0.05637500062584877,0.5181999802589417,-0.869163990020752,-0.16737300157546997,0.4653390049934387,-0.8533989787101746,0.05637500062584877,0.5181999802589417,-0.8533989787101746,0.05637500062584877,0.5181999802589417,-0.007749670185148716,0.008412989787757397,-0.99993497133255,-0.007749670185148716,0.008412989787757397,-0.99993497133255,-0.008034519851207733,-0.0955365002155304,-0.9953939914703369,-0.007749670185148716,0.008412989787757397,-0.99993497133255,-0.008034519851207733,-0.0955365002155304,-0.9953939914703369,-0.008034519851207733,-0.0955365002155304,-0.9953939914703369,0.8770769834518433,-0.16983400285243988,0.44932401180267334,0.8770769834518433,-0.16983400285243988,0.44932401180267334,0.8636760115623474,0.04691879823803902,0.5018590092658997,0.8770769834518433,-0.16983400285243988,0.44932401180267334,0.8636760115623474,0.04691879823803902,0.5018590092658997,0.8636760115623474,0.04691879823803902,0.5018590092658997,-0.8533989787101746,0.05637500062584877,0.5181999802589417,-0.8533989787101746,0.05637500062584877,0.5181999802589417,-0.8607370257377625,0.10130699723958969,0.498867005109787,-0.8533989787101746,0.05637500062584877,0.5181999802589417,-0.8607370257377625,0.10130699723958969,0.498867005109787,-0.8607370257377625,0.10130699723958969,0.498867005109787,-0.008034519851207733,-0.0955365002155304,-0.9953939914703369,-0.008034519851207733,-0.0955365002155304,-0.9953939914703369,-0.008232389576733112,-0.19845199584960938,-0.980076014995575,-0.008034519851207733,-0.0955365002155304,-0.9953939914703369,-0.008232389576733112,-0.19845199584960938,-0.980076014995575,-0.008232389576733112,-0.19845199584960938,-0.980076014995575,0.8636760115623474,0.04691879823803902,0.5018590092658997,0.8636760115623474,0.04691879823803902,0.5018590092658997,0.8690750002861023,0.09817089885473251,0.484840989112854,0.8636760115623474,0.04691879823803902,0.5018590092658997,0.8690750002861023,0.09817089885473251,0.484840989112854,0.8690750002861023,0.09817089885473251,0.484840989112854,8.961659858641724e-8,-0.9770309925079346,0.2130959928035736,8.961659858641724e-8,-0.9770309925079346,0.2130959928035736,8.961659858641724e-8,-0.9770309925079346,0.2130959928035736,-0.5609660148620605,0.5060210227966309,0.6551790237426758,-0.5609660148620605,0.5060210227966309,0.6551790237426758,-0.5166119933128357,0.4898670017719269,0.7022410035133362,-0.5609660148620605,0.5060210227966309,0.6551790237426758,-0.5166119933128357,0.4898670017719269,0.7022410035133362,-0.5166119933128357,0.4898670017719269,0.7022410035133362,-0.09809040278196335,-0.9914119839668274,-0.0864948034286499,-0.09809040278196335,-0.9914119839668274,-0.0864948034286499,-0.18885600566864014,-0.9658929705619812,-0.17715699970722198,-0.09809040278196335,-0.9914119839668274,-0.0864948034286499,-0.18885600566864014,-0.9658929705619812,-0.17715699970722198,-0.18885600566864014,-0.9658929705619812,-0.17715699970722198,0.6597669720649719,0.491784006357193,-0.5682039856910706,0.6597669720649719,0.491784006357193,-0.5682039856910706,0.705469012260437,0.4760249853134155,-0.5250849723815918,0.6597669720649719,0.491784006357193,-0.5682039856910706,0.705469012260437,0.4760249853134155,-0.5250849723815918,0.705469012260437,0.4760249853134155,-0.5250849723815918,-0.5166119933128357,0.4898670017719269,0.7022410035133362,-0.5166119933128357,0.4898670017719269,0.7022410035133362,-0.4301210045814514,0.43920400738716125,0.7887300252914429,-0.5166119933128357,0.4898670017719269,0.7022410035133362,-0.4301210045814514,0.43920400738716125,0.7887300252914429,-0.4301210045814514,0.43920400738716125,0.7887300252914429,-0.18885600566864014,-0.9658929705619812,-0.17715699970722198,-0.18885600566864014,-0.9658929705619812,-0.17715699970722198,-0.35939401388168335,-0.8659960031509399,-0.3476890027523041,-0.18885600566864014,-0.9658929705619812,-0.17715699970722198,-0.35939401388168335,-0.8659960031509399,-0.3476890027523041,-0.35939401388168335,-0.8659960031509399,-0.3476890027523041,0.705469012260437,0.4760249853134155,-0.5250849723815918,0.705469012260437,0.4760249853134155,-0.5250849723815918,0.7895140051841736,0.4267919957637787,-0.4410400092601776,0.705469012260437,0.4760249853134155,-0.5250849723815918,0.7895140051841736,0.4267919957637787,-0.4410400092601776,0.7895140051841736,0.4267919957637787,-0.4410400092601776,-0.4301210045814514,0.43920400738716125,0.7887300252914429,-0.4301210045814514,0.43920400738716125,0.7887300252914429,-0.3558509945869446,0.35860899090766907,0.8629999756813049,-0.4301210045814514,0.43920400738716125,0.7887300252914429,-0.3558509945869446,0.35860899090766907,0.8629999756813049,-0.3558509945869446,0.35860899090766907,0.8629999756813049,-0.35939401388168335,-0.8659960031509399,-0.3476890027523041,-0.35939401388168335,-0.8659960031509399,-0.3476890027523041,-0.5058339834213257,-0.707082986831665,-0.49413201212882996,-0.35939401388168335,-0.8659960031509399,-0.3476890027523041,-0.5058339834213257,-0.707082986831665,-0.49413201212882996,-0.5058339834213257,-0.707082986831665,-0.49413201212882996,0.7895140051841736,0.4267919957637787,-0.4410400092601776,0.7895140051841736,0.4267919957637787,-0.4410400092601776,0.8616859912872314,0.34847599267959595,-0.3688659965991974,0.7895140051841736,0.4267919957637787,-0.4410400092601776,0.8616859912872314,0.34847599267959595,-0.3688659965991974,0.8616859912872314,0.34847599267959595,-0.3688659965991974,-0.3558509945869446,0.35860899090766907,0.8629999756813049,-0.3558509945869446,0.35860899090766907,0.8629999756813049,-0.2988629937171936,0.253574013710022,0.9199900031089783,-0.3558509945869446,0.35860899090766907,0.8629999756813049,-0.2988629937171936,0.253574013710022,0.9199900031089783,-0.2988629937171936,0.253574013710022,0.9199900031089783,-0.5058339834213257,-0.707082986831665,-0.49413201212882996,-0.5058339834213257,-0.707082986831665,-0.49413201212882996,-0.6182010173797607,-0.499983012676239,-0.6065019965171814,-0.5058339834213257,-0.707082986831665,-0.49413201212882996,-0.6182010173797607,-0.499983012676239,-0.6065019965171814,-0.6182010173797607,-0.499983012676239,-0.6065019965171814,0.8616859912872314,0.34847599267959595,-0.3688659965991974,0.8616859912872314,0.34847599267959595,-0.3688659965991974,0.9170650243759155,0.24640999734401703,-0.3134869933128357,0.8616859912872314,0.34847599267959595,-0.3688659965991974,0.9170650243759155,0.24640999734401703,-0.3134869933128357,0.9170650243759155,0.24640999734401703,-0.3134869933128357,-0.2988629937171936,0.253574013710022,0.9199900031089783,-0.2988629937171936,0.253574013710022,0.9199900031089783,-0.2630380094051361,0.1312589943408966,0.9558150172233582,-0.2988629937171936,0.253574013710022,0.9199900031089783,-0.2630380094051361,0.1312589943408966,0.9558150172233582,-0.2630380094051361,0.1312589943408966,0.9558150172233582,-0.6182010173797607,-0.499983012676239,-0.6065019965171814,-0.6182010173797607,-0.499983012676239,-0.6065019965171814,-0.6888390183448792,-0.25881001353263855,-0.6771399974822998,-0.6182010173797607,-0.499983012676239,-0.6065019965171814,-0.6888390183448792,-0.25881001353263855,-0.6771399974822998,-0.6888390183448792,-0.25881001353263855,-0.6771399974822998,0.9170650243759155,0.24640999734401703,-0.3134869933128357,0.9170650243759155,0.24640999734401703,-0.3134869933128357,0.951878011226654,0.12755100429058075,-0.27867498993873596,0.9170650243759155,0.24640999734401703,-0.3134869933128357,0.951878011226654,0.12755100429058075,-0.27867498993873596,0.951878011226654,0.12755100429058075,-0.27867498993873596,-0.2630380094051361,0.1312589943408966,0.9558150172233582,-0.2630380094051361,0.1312589943408966,0.9558150172233582,-0.25081899762153625,-2.2401499322199925e-8,0.968034029006958,-0.2630380094051361,0.1312589943408966,0.9558150172233582,-0.25081899762153625,-2.2401499322199925e-8,0.968034029006958,-0.25081899762153625,-2.2401499322199925e-8,0.968034029006958,-0.6888390183448792,-0.25881001353263855,-0.6771399974822998,-0.6888390183448792,-0.25881001353263855,-0.6771399974822998,-0.7129309773445129,1.3526799591545569e-7,-0.7012349963188171,-0.6888390183448792,-0.25881001353263855,-0.6771399974822998,-0.7129309773445129,1.3526799591545569e-7,-0.7012349963188171,-0.7129309773445129,1.3526799591545569e-7,-0.7012349963188171,0.951878011226654,0.12755100429058075,-0.27867498993873596,0.951878011226654,0.12755100429058075,-0.27867498993873596,0.9637519717216492,-8.586179944813921e-8,-0.26680099964141846,0.951878011226654,0.12755100429058075,-0.27867498993873596,0.9637519717216492,-8.586179944813921e-8,-0.26680099964141846,0.9637519717216492,-8.586179944813921e-8,-0.26680099964141846,-0.25081899762153625,-2.2401499322199925e-8,0.968034029006958,-0.25081899762153625,-2.2401499322199925e-8,0.968034029006958,-0.2630380094051361,-0.1312589943408966,0.9558150172233582,-0.25081899762153625,-2.2401499322199925e-8,0.968034029006958,-0.2630380094051361,-0.1312589943408966,0.9558150172233582,-0.2630380094051361,-0.1312589943408966,0.9558150172233582,-0.7129309773445129,1.3526799591545569e-7,-0.7012349963188171,-0.7129309773445129,1.3526799591545569e-7,-0.7012349963188171,-0.6888369917869568,0.25881001353263855,-0.677141010761261,-0.7129309773445129,1.3526799591545569e-7,-0.7012349963188171,-0.6888369917869568,0.25881001353263855,-0.677141010761261,-0.6888369917869568,0.25881001353263855,-0.677141010761261,0.9637519717216492,-8.586179944813921e-8,-0.26680099964141846,0.9637519717216492,-8.586179944813921e-8,-0.26680099964141846,0.9518769979476929,-0.12755100429058075,-0.27867600321769714,0.9637519717216492,-8.586179944813921e-8,-0.26680099964141846,0.9518769979476929,-0.12755100429058075,-0.27867600321769714,0.9518769979476929,-0.12755100429058075,-0.27867600321769714,-0.2630380094051361,-0.1312589943408966,0.9558150172233582,-0.2630380094051361,-0.1312589943408966,0.9558150172233582,-0.2988330125808716,-0.2535000145435333,0.9200199842453003,-0.2630380094051361,-0.1312589943408966,0.9558150172233582,-0.2988330125808716,-0.2535000145435333,0.9200199842453003,-0.2988330125808716,-0.2535000145435333,0.9200199842453003,-0.6888369917869568,0.25881001353263855,-0.677141010761261,-0.6888369917869568,0.25881001353263855,-0.677141010761261,-0.6181740164756775,0.5000540018081665,-0.6064710021018982,-0.6888369917869568,0.25881001353263855,-0.677141010761261,-0.6181740164756775,0.5000540018081665,-0.6064710021018982,-0.6181740164756775,0.5000540018081665,-0.6064710021018982,0.9518769979476929,-0.12755100429058075,-0.27867600321769714,0.9518769979476929,-0.12755100429058075,-0.27867600321769714,0.9170500040054321,-0.24644500017166138,-0.31350401043891907,0.9518769979476929,-0.12755100429058075,-0.27867600321769714,0.9170500040054321,-0.24644500017166138,-0.31350401043891907,0.9170500040054321,-0.24644500017166138,-0.31350401043891907,-0.2988330125808716,-0.2535000145435333,0.9200199842453003,-0.2988330125808716,-0.2535000145435333,0.9200199842453003,-0.33230599761009216,-0.3252269923686981,0.885325014591217,-0.2988330125808716,-0.2535000145435333,0.9200199842453003,-0.33230599761009216,-0.3252269923686981,0.885325014591217,-0.33230599761009216,-0.3252269923686981,0.885325014591217,-0.6181740164756775,0.5000540018081665,-0.6064710021018982,-0.6181740164756775,0.5000540018081665,-0.6064710021018982,-0.5495830178260803,0.6392149925231934,-0.5379250049591064,-0.6181740164756775,0.5000540018081665,-0.6064710021018982,-0.5495830178260803,0.6392149925231934,-0.5379250049591064,-0.5495830178260803,0.6392149925231934,-0.5379250049591064,0.9170500040054321,-0.24644500017166138,-0.31350401043891907,0.9170500040054321,-0.24644500017166138,-0.31350401043891907,0.8834930062294006,-0.31591999530792236,-0.34588301181793213,0.9170500040054321,-0.24644500017166138,-0.31350401043891907,0.8834930062294006,-0.31591999530792236,-0.34588301181793213,0.8834930062294006,-0.31591999530792236,-0.34588301181793213,-0.33230599761009216,-0.3252269923686981,0.885325014591217,-0.33230599761009216,-0.3252269923686981,0.885325014591217,-0.28554800152778625,-0.16737300157546997,0.9436360001564026,-0.33230599761009216,-0.3252269923686981,0.885325014591217,-0.28554800152778625,-0.16737300157546997,0.9436360001564026,-0.28554800152778625,-0.16737300157546997,0.9436360001564026,-0.5495830178260803,0.6392149925231934,-0.5379250049591064,-0.5495830178260803,0.6392149925231934,-0.5379250049591064,-0.5316380262374878,0.6685940027236938,-0.5199450254440308,-0.5495830178260803,0.6392149925231934,-0.5379250049591064,-0.5316380262374878,0.6685940027236938,-0.5199450254440308,-0.5316380262374878,0.6685940027236938,-0.5199450254440308,0.8834930062294006,-0.31591999530792236,-0.34588301181793213,0.8834930062294006,-0.31591999530792236,-0.34588301181793213,0.9379069805145264,-0.16983400285243988,-0.3024680018424988,0.8834930062294006,-0.31591999530792236,-0.34588301181793213,0.9379069805145264,-0.16983400285243988,-0.3024680018424988,0.9379069805145264,-0.16983400285243988,-0.3024680018424988,-0.28554800152778625,-0.16737300157546997,0.9436360001564026,-0.28554800152778625,-0.16737300157546997,0.9436360001564026,-0.23702199757099152,0.05637500062584877,0.9698669910430908,-0.28554800152778625,-0.16737300157546997,0.9436360001564026,-0.23702199757099152,0.05637500062584877,0.9698669910430908,-0.23702199757099152,0.05637500062584877,0.9698669910430908,-0.7125399708747864,0.00841290969401598,-0.7015810012817383,-0.7125399708747864,0.00841290969401598,-0.7015810012817383,-0.7095310091972351,-0.09553659707307816,-0.6981679797172546,-0.7125399708747864,0.00841290969401598,-0.7015810012817383,-0.7095310091972351,-0.09553659707307816,-0.6981679797172546,-0.7095310091972351,-0.09553659707307816,-0.6981679797172546,0.9379069805145264,-0.16983400285243988,-0.3024680018424988,0.9379069805145264,-0.16983400285243988,-0.3024680018424988,0.9655789732933044,0.04691879823803902,-0.25584301352500916,0.9379069805145264,-0.16983400285243988,-0.3024680018424988,0.9655789732933044,0.04691879823803902,-0.25584301352500916,0.9655789732933044,0.04691879823803902,-0.25584301352500916,-0.23702199757099152,0.05637500062584877,0.9698669910430908,-0.23702199757099152,0.05637500062584877,0.9698669910430908,-0.25588101148605347,0.10130699723958969,0.9613850116729736,-0.23702199757099152,0.05637500062584877,0.9698669910430908,-0.25588101148605347,0.10130699723958969,0.9613850116729736,-0.25588101148605347,0.10130699723958969,0.9613850116729736,-0.7095310091972351,-0.09553659707307816,-0.6981679797172546,-0.7095310091972351,-0.09553659707307816,-0.6981679797172546,-0.6988400220870972,-0.19845199584960938,-0.6871970295906067,-0.7095310091972351,-0.09553659707307816,-0.6981679797172546,-0.6988400220870972,-0.19845199584960938,-0.6871970295906067,-0.6988400220870972,-0.19845199584960938,-0.6871970295906067,0.9655789732933044,0.04691879823803902,-0.25584301352500916,0.9655789732933044,0.04691879823803902,-0.25584301352500916,0.9573630094528198,0.09817089885473251,-0.27169400453567505,0.9655789732933044,0.04691879823803902,-0.25584301352500916,0.9573630094528198,0.09817089885473251,-0.27169400453567505,0.9573630094528198,0.09817089885473251,-0.27169400453567505,0.1506810039281845,-0.9770309925079346,0.1506810039281845,0.1506810039281845,-0.9770309925079346,0.1506810039281845,0.1506810039281845,-0.9770309925079346,0.1506810039281845,0.06661880016326904,0.5060210227966309,0.8599449992179871,0.06661880016326904,0.5060210227966309,0.8599449992179871,0.1312599927186966,0.4898670017719269,0.8618590235710144,0.06661880016326904,0.5060210227966309,0.8599449992179871,0.1312599927186966,0.4898670017719269,0.8618590235710144,0.1312599927186966,0.4898670017719269,0.8618590235710144,-0.1305209994316101,-0.9914119839668274,0.008199330419301987,-0.1305209994316101,-0.9914119839668274,0.008199330419301987,-0.25881001353263855,-0.9658929705619812,0.008273099549114704,-0.1305209994316101,-0.9914119839668274,0.008199330419301987,-0.25881001353263855,-0.9658929705619812,0.008273099549114704,-0.25881001353263855,-0.9658929705619812,0.008273099549114704,0.06474470347166061,0.491784006357193,-0.8683059811592102,0.06474470347166061,0.491784006357193,-0.8683059811592102,0.12755100429058075,0.4760249853134155,-0.8701329827308655,0.06474470347166061,0.491784006357193,-0.8683059811592102,0.12755100429058075,0.4760249853134155,-0.8701329827308655,0.12755100429058075,0.4760249853134155,-0.8701329827308655,0.1312599927186966,0.4898670017719269,0.8618590235710144,0.1312599927186966,0.4898670017719269,0.8618590235710144,0.25357499718666077,0.43920400738716125,0.8618580102920532,0.1312599927186966,0.4898670017719269,0.8618590235710144,0.25357499718666077,0.43920400738716125,0.8618580102920532,0.25357499718666077,0.43920400738716125,0.8618580102920532,-0.25881001353263855,-0.9658929705619812,0.008273099549114704,-0.25881001353263855,-0.9658929705619812,0.008273099549114704,-0.499983012676239,-0.8659960031509399,0.008276659995317459,-0.25881001353263855,-0.9658929705619812,0.008273099549114704,-0.499983012676239,-0.8659960031509399,0.008276659995317459,-0.499983012676239,-0.8659960031509399,0.008276659995317459,0.12755100429058075,0.4760249853134155,-0.8701329827308655,0.12755100429058075,0.4760249853134155,-0.8701329827308655,0.24640899896621704,0.4267919957637787,-0.8701329827308655,0.12755100429058075,0.4760249853134155,-0.8701329827308655,0.24640899896621704,0.4267919957637787,-0.8701329827308655,0.24640899896621704,0.4267919957637787,-0.8701329827308655,0.25357499718666077,0.43920400738716125,0.8618580102920532,0.25357499718666077,0.43920400738716125,0.8618580102920532,0.35860899090766907,0.35860899090766907,0.8618580102920532,0.25357499718666077,0.43920400738716125,0.8618580102920532,0.35860899090766907,0.35860899090766907,0.8618580102920532,0.35860899090766907,0.35860899090766907,0.8618580102920532,-0.499983012676239,-0.8659960031509399,0.008276659995317459,-0.499983012676239,-0.8659960031509399,0.008276659995317459,-0.707082986831665,-0.707082986831665,0.008274439722299576,-0.499983012676239,-0.8659960031509399,0.008276659995317459,-0.707082986831665,-0.707082986831665,0.008274439722299576,-0.707082986831665,-0.707082986831665,0.008274439722299576,0.24640899896621704,0.4267919957637787,-0.8701329827308655,0.24640899896621704,0.4267919957637787,-0.8701329827308655,0.34847599267959595,0.34847599267959595,-0.8701320290565491,0.24640899896621704,0.4267919957637787,-0.8701329827308655,0.34847599267959595,0.34847599267959595,-0.8701320290565491,0.34847599267959595,0.34847599267959595,-0.8701320290565491,0.35860899090766907,0.35860899090766907,0.8618580102920532,0.35860899090766907,0.35860899090766907,0.8618580102920532,0.43920400738716125,0.25357499718666077,0.8618580102920532,0.35860899090766907,0.35860899090766907,0.8618580102920532,0.43920400738716125,0.25357499718666077,0.8618580102920532,0.43920400738716125,0.25357499718666077,0.8618580102920532,-0.707082986831665,-0.707082986831665,0.008274439722299576,-0.707082986831665,-0.707082986831665,0.008274439722299576,-0.8659960031509399,-0.499983012676239,0.00827253982424736,-0.707082986831665,-0.707082986831665,0.008274439722299576,-0.8659960031509399,-0.499983012676239,0.00827253982424736,-0.8659960031509399,-0.499983012676239,0.00827253982424736,0.34847599267959595,0.34847599267959595,-0.8701320290565491,0.34847599267959595,0.34847599267959595,-0.8701320290565491,0.42679399251937866,0.24640999734401703,-0.8701320290565491,0.34847599267959595,0.34847599267959595,-0.8701320290565491,0.42679399251937866,0.24640999734401703,-0.8701320290565491,0.42679399251937866,0.24640999734401703,-0.8701320290565491,0.43920400738716125,0.25357499718666077,0.8618580102920532,0.43920400738716125,0.25357499718666077,0.8618580102920532,0.4898679852485657,0.1312599927186966,0.8618590235710144,0.43920400738716125,0.25357499718666077,0.8618580102920532,0.4898679852485657,0.1312599927186966,0.8618590235710144,0.4898679852485657,0.1312599927186966,0.8618590235710144,-0.8659960031509399,-0.499983012676239,0.00827253982424736,-0.8659960031509399,-0.499983012676239,0.00827253982424736,-0.9658929705619812,-0.25881001353263855,0.00827230978757143,-0.8659960031509399,-0.499983012676239,0.00827253982424736,-0.9658929705619812,-0.25881001353263855,0.00827230978757143,-0.9658929705619812,-0.25881001353263855,0.00827230978757143,0.42679399251937866,0.24640999734401703,-0.8701320290565491,0.42679399251937866,0.24640999734401703,-0.8701320290565491,0.4760259985923767,0.12755100429058075,-0.8701320290565491,0.42679399251937866,0.24640999734401703,-0.8701320290565491,0.4760259985923767,0.12755100429058075,-0.8701320290565491,0.4760259985923767,0.12755100429058075,-0.8701320290565491,0.4898679852485657,0.1312599927186966,0.8618590235710144,0.4898679852485657,0.1312599927186966,0.8618590235710144,0.507148027420044,2.2401499322199925e-8,0.8618590235710144,0.4898679852485657,0.1312599927186966,0.8618590235710144,0.507148027420044,2.2401499322199925e-8,0.8618590235710144,0.507148027420044,2.2401499322199925e-8,0.8618590235710144,-0.9658929705619812,-0.25881001353263855,0.00827230978757143,-0.9658929705619812,-0.25881001353263855,0.00827230978757143,-0.999966025352478,1.2775299751410785e-7,0.008270660415291786,-0.9658929705619812,-0.25881001353263855,0.00827230978757143,-0.999966025352478,1.2775299751410785e-7,0.008270660415291786,-0.999966025352478,1.2775299751410785e-7,0.008270660415291786,0.4760259985923767,0.12755100429058075,-0.8701320290565491,0.4760259985923767,0.12755100429058075,-0.8701320290565491,0.49281901121139526,-2.239869978382103e-8,-0.8701320290565491,0.4760259985923767,0.12755100429058075,-0.8701320290565491,0.49281901121139526,-2.239869978382103e-8,-0.8701320290565491,0.49281901121139526,-2.239869978382103e-8,-0.8701320290565491,0.507148027420044,2.2401499322199925e-8,0.8618590235710144,0.507148027420044,2.2401499322199925e-8,0.8618590235710144,0.4898670017719269,-0.1312589943408966,0.8618590235710144,0.507148027420044,2.2401499322199925e-8,0.8618590235710144,0.4898670017719269,-0.1312589943408966,0.8618590235710144,0.4898670017719269,-0.1312589943408966,0.8618590235710144,-0.999966025352478,1.2775299751410785e-7,0.008270660415291786,-0.999966025352478,1.2775299751410785e-7,0.008270660415291786,-0.9658929705619812,0.25881001353263855,0.008270800113677979,-0.999966025352478,1.2775299751410785e-7,0.008270660415291786,-0.9658929705619812,0.25881001353263855,0.008270800113677979,-0.9658929705619812,0.25881001353263855,0.008270800113677979,0.49281901121139526,-2.239869978382103e-8,-0.8701320290565491,0.49281901121139526,-2.239869978382103e-8,-0.8701320290565491,0.4760259985923767,-0.12755100429058075,-0.8701320290565491,0.49281901121139526,-2.239869978382103e-8,-0.8701320290565491,0.4760259985923767,-0.12755100429058075,-0.8701320290565491,0.4760259985923767,-0.12755100429058075,-0.8701320290565491,0.4898670017719269,-0.1312589943408966,0.8618590235710144,0.4898670017719269,-0.1312589943408966,0.8618590235710144,0.4392459988594055,-0.2535009980201721,0.8618590235710144,0.4898670017719269,-0.1312589943408966,0.8618590235710144,0.4392459988594055,-0.2535009980201721,0.8618590235710144,0.4392459988594055,-0.2535009980201721,0.8618590235710144,-0.9658929705619812,0.25881001353263855,0.008270800113677979,-0.9658929705619812,0.25881001353263855,0.008270800113677979,-0.8659549951553345,0.5000540018081665,0.008274099789559841,-0.9658929705619812,0.25881001353263855,0.008270800113677979,-0.8659549951553345,0.5000540018081665,0.008274099789559841,-0.8659549951553345,0.5000540018081665,0.008274099789559841,0.4760259985923767,-0.12755100429058075,-0.8701320290565491,0.4760259985923767,-0.12755100429058075,-0.8701320290565491,0.42677199840545654,-0.24644500017166138,-0.8701329827308655,0.4760259985923767,-0.12755100429058075,-0.8701320290565491,0.42677199840545654,-0.24644500017166138,-0.8701329827308655,0.42677199840545654,-0.24644500017166138,-0.8701329827308655,0.4392459988594055,-0.2535009980201721,0.8618590235710144,0.4392459988594055,-0.2535009980201721,0.8618590235710144,0.3910439908504486,-0.3252269923686981,0.8609949946403503,0.4392459988594055,-0.2535009980201721,0.8618590235710144,0.3910439908504486,-0.3252269923686981,0.8609949946403503,0.3910439908504486,-0.3252269923686981,0.8609949946403503,-0.8659549951553345,0.5000540018081665,0.008274099789559841,-0.8659549951553345,0.5000540018081665,0.008274099789559841,-0.7689840197563171,0.6392149925231934,0.008242569863796234,-0.8659549951553345,0.5000540018081665,0.008274099789559841,-0.7689840197563171,0.6392149925231934,0.008242569863796234,-0.7689840197563171,0.6392149925231934,0.008242569863796234,0.42677199840545654,-0.24644500017166138,-0.8701329827308655,0.42677199840545654,-0.24644500017166138,-0.8701329827308655,0.3801479935646057,-0.31591999530792236,-0.8693000078201294,0.42677199840545654,-0.24644500017166138,-0.8701329827308655,0.3801479935646057,-0.31591999530792236,-0.8693000078201294,0.3801479935646057,-0.31591999530792236,-0.8693000078201294,0.3910439908504486,-0.3252269923686981,0.8609949946403503,0.3910439908504486,-0.3252269923686981,0.8609949946403503,0.4653390049934387,-0.16737300157546997,0.869163990020752,0.3910439908504486,-0.3252269923686981,0.8609949946403503,0.4653390049934387,-0.16737300157546997,0.869163990020752,0.4653390049934387,-0.16737300157546997,0.869163990020752,-0.7689840197563171,0.6392149925231934,0.008242569863796234,-0.7689840197563171,0.6392149925231934,0.008242569863796234,-0.743582010269165,0.6685940027236938,0.008267019875347614,-0.7689840197563171,0.6392149925231934,0.008242569863796234,-0.743582010269165,0.6685940027236938,0.008267019875347614,-0.743582010269165,0.6685940027236938,0.008267019875347614,0.3801479935646057,-0.31591999530792236,-0.8693000078201294,0.3801479935646057,-0.31591999530792236,-0.8693000078201294,0.44932401180267334,-0.16983400285243988,-0.8770769834518433,0.3801479935646057,-0.31591999530792236,-0.8693000078201294,0.44932401180267334,-0.16983400285243988,-0.8770769834518433,0.44932401180267334,-0.16983400285243988,-0.8770769834518433,0.4653390049934387,-0.16737300157546997,0.869163990020752,0.4653390049934387,-0.16737300157546997,0.869163990020752,0.5181999802589417,0.05637500062584877,0.8533989787101746,0.4653390049934387,-0.16737300157546997,0.869163990020752,0.5181999802589417,0.05637500062584877,0.8533989787101746,0.5181999802589417,0.05637500062584877,0.8533989787101746,-0.99993497133255,0.008412989787757397,0.007749670185148716,-0.99993497133255,0.008412989787757397,0.007749670185148716,-0.9953939914703369,-0.0955365002155304,0.008034519851207733,-0.99993497133255,0.008412989787757397,0.007749670185148716,-0.9953939914703369,-0.0955365002155304,0.008034519851207733,-0.9953939914703369,-0.0955365002155304,0.008034519851207733,0.44932401180267334,-0.16983400285243988,-0.8770769834518433,0.44932401180267334,-0.16983400285243988,-0.8770769834518433,0.5018590092658997,0.04691879823803902,-0.8636760115623474,0.44932401180267334,-0.16983400285243988,-0.8770769834518433,0.5018590092658997,0.04691879823803902,-0.8636760115623474,0.5018590092658997,0.04691879823803902,-0.8636760115623474,0.5181999802589417,0.05637500062584877,0.8533989787101746,0.5181999802589417,0.05637500062584877,0.8533989787101746,0.498867005109787,0.10130699723958969,0.8607370257377625,0.5181999802589417,0.05637500062584877,0.8533989787101746,0.498867005109787,0.10130699723958969,0.8607370257377625,0.498867005109787,0.10130699723958969,0.8607370257377625,-0.9953939914703369,-0.0955365002155304,0.008034519851207733,-0.9953939914703369,-0.0955365002155304,0.008034519851207733,-0.980076014995575,-0.19845199584960938,0.008232389576733112,-0.9953939914703369,-0.0955365002155304,0.008034519851207733,-0.980076014995575,-0.19845199584960938,0.008232389576733112,-0.980076014995575,-0.19845199584960938,0.008232389576733112,0.5018590092658997,0.04691879823803902,-0.8636760115623474,0.5018590092658997,0.04691879823803902,-0.8636760115623474,0.484840989112854,0.09817089885473251,-0.8690750002861023,0.5018590092658997,0.04691879823803902,-0.8636760115623474,0.484840989112854,0.09817089885473251,-0.8690750002861023,0.484840989112854,0.09817089885473251,-0.8690750002861023,0.2130959928035736,-0.9770309925079346,-8.961659858641724e-8,0.2130959928035736,-0.9770309925079346,-8.961659858641724e-8,0.2130959928035736,-0.9770309925079346,-8.961659858641724e-8,0.6551790237426758,0.5060210227966309,0.5609660148620605,0.6551790237426758,0.5060210227966309,0.5609660148620605,0.7022410035133362,0.4898670017719269,0.5166119933128357,0.6551790237426758,0.5060210227966309,0.5609660148620605,0.7022410035133362,0.4898670017719269,0.5166119933128357,0.7022410035133362,0.4898670017719269,0.5166119933128357,-0.0864948034286499,-0.9914119839668274,0.09809040278196335,-0.0864948034286499,-0.9914119839668274,0.09809040278196335,-0.17715699970722198,-0.9658929705619812,0.18885600566864014,-0.0864948034286499,-0.9914119839668274,0.09809040278196335,-0.17715699970722198,-0.9658929705619812,0.18885600566864014,-0.17715699970722198,-0.9658929705619812,0.18885600566864014,-0.5682039856910706,0.491784006357193,-0.6597669720649719,-0.5682039856910706,0.491784006357193,-0.6597669720649719,-0.5250849723815918,0.4760249853134155,-0.705469012260437,-0.5682039856910706,0.491784006357193,-0.6597669720649719,-0.5250849723815918,0.4760249853134155,-0.705469012260437,-0.5250849723815918,0.4760249853134155,-0.705469012260437,0.7022410035133362,0.4898670017719269,0.5166119933128357,0.7022410035133362,0.4898670017719269,0.5166119933128357,0.7887300252914429,0.43920400738716125,0.4301210045814514,0.7022410035133362,0.4898670017719269,0.5166119933128357,0.7887300252914429,0.43920400738716125,0.4301210045814514,0.7887300252914429,0.43920400738716125,0.4301210045814514,-0.17715699970722198,-0.9658929705619812,0.18885600566864014,-0.17715699970722198,-0.9658929705619812,0.18885600566864014,-0.3476890027523041,-0.8659960031509399,0.35939401388168335,-0.17715699970722198,-0.9658929705619812,0.18885600566864014,-0.3476890027523041,-0.8659960031509399,0.35939401388168335,-0.3476890027523041,-0.8659960031509399,0.35939401388168335,-0.5250849723815918,0.4760249853134155,-0.705469012260437,-0.5250849723815918,0.4760249853134155,-0.705469012260437,-0.4410400092601776,0.4267919957637787,-0.7895140051841736,-0.5250849723815918,0.4760249853134155,-0.705469012260437,-0.4410400092601776,0.4267919957637787,-0.7895140051841736,-0.4410400092601776,0.4267919957637787,-0.7895140051841736,0.7887300252914429,0.43920400738716125,0.4301210045814514,0.7887300252914429,0.43920400738716125,0.4301210045814514,0.8629999756813049,0.35860899090766907,0.3558509945869446,0.7887300252914429,0.43920400738716125,0.4301210045814514,0.8629999756813049,0.35860899090766907,0.3558509945869446,0.8629999756813049,0.35860899090766907,0.3558509945869446,-0.3476890027523041,-0.8659960031509399,0.35939401388168335,-0.3476890027523041,-0.8659960031509399,0.35939401388168335,-0.49413201212882996,-0.707082986831665,0.5058339834213257,-0.3476890027523041,-0.8659960031509399,0.35939401388168335,-0.49413201212882996,-0.707082986831665,0.5058339834213257,-0.49413201212882996,-0.707082986831665,0.5058339834213257,-0.4410400092601776,0.4267919957637787,-0.7895140051841736,-0.4410400092601776,0.4267919957637787,-0.7895140051841736,-0.3688659965991974,0.34847599267959595,-0.8616859912872314,-0.4410400092601776,0.4267919957637787,-0.7895140051841736,-0.3688659965991974,0.34847599267959595,-0.8616859912872314,-0.3688659965991974,0.34847599267959595,-0.8616859912872314,0.8629999756813049,0.35860899090766907,0.3558509945869446,0.8629999756813049,0.35860899090766907,0.3558509945869446,0.9199900031089783,0.253574013710022,0.2988629937171936,0.8629999756813049,0.35860899090766907,0.3558509945869446,0.9199900031089783,0.253574013710022,0.2988629937171936,0.9199900031089783,0.253574013710022,0.2988629937171936,-0.49413201212882996,-0.707082986831665,0.5058339834213257,-0.49413201212882996,-0.707082986831665,0.5058339834213257,-0.6065019965171814,-0.499983012676239,0.6182010173797607,-0.49413201212882996,-0.707082986831665,0.5058339834213257,-0.6065019965171814,-0.499983012676239,0.6182010173797607,-0.6065019965171814,-0.499983012676239,0.6182010173797607,-0.3688659965991974,0.34847599267959595,-0.8616859912872314,-0.3688659965991974,0.34847599267959595,-0.8616859912872314,-0.3134869933128357,0.24640999734401703,-0.9170650243759155,-0.3688659965991974,0.34847599267959595,-0.8616859912872314,-0.3134869933128357,0.24640999734401703,-0.9170650243759155,-0.3134869933128357,0.24640999734401703,-0.9170650243759155,0.9199900031089783,0.253574013710022,0.2988629937171936,0.9199900031089783,0.253574013710022,0.2988629937171936,0.9558150172233582,0.1312589943408966,0.2630380094051361,0.9199900031089783,0.253574013710022,0.2988629937171936,0.9558150172233582,0.1312589943408966,0.2630380094051361,0.9558150172233582,0.1312589943408966,0.2630380094051361,-0.6065019965171814,-0.499983012676239,0.6182010173797607,-0.6065019965171814,-0.499983012676239,0.6182010173797607,-0.6771399974822998,-0.25881001353263855,0.6888390183448792,-0.6065019965171814,-0.499983012676239,0.6182010173797607,-0.6771399974822998,-0.25881001353263855,0.6888390183448792,-0.6771399974822998,-0.25881001353263855,0.6888390183448792,-0.3134869933128357,0.24640999734401703,-0.9170650243759155,-0.3134869933128357,0.24640999734401703,-0.9170650243759155,-0.27867498993873596,0.12755100429058075,-0.951878011226654,-0.3134869933128357,0.24640999734401703,-0.9170650243759155,-0.27867498993873596,0.12755100429058075,-0.951878011226654,-0.27867498993873596,0.12755100429058075,-0.951878011226654,0.9558150172233582,0.1312589943408966,0.2630380094051361,0.9558150172233582,0.1312589943408966,0.2630380094051361,0.968034029006958,-2.2401499322199925e-8,0.25081899762153625,0.9558150172233582,0.1312589943408966,0.2630380094051361,0.968034029006958,-2.2401499322199925e-8,0.25081899762153625,0.968034029006958,-2.2401499322199925e-8,0.25081899762153625,-0.6771399974822998,-0.25881001353263855,0.6888390183448792,-0.6771399974822998,-0.25881001353263855,0.6888390183448792,-0.7012349963188171,1.3526799591545569e-7,0.7129309773445129,-0.6771399974822998,-0.25881001353263855,0.6888390183448792,-0.7012349963188171,1.3526799591545569e-7,0.7129309773445129,-0.7012349963188171,1.3526799591545569e-7,0.7129309773445129,-0.27867498993873596,0.12755100429058075,-0.951878011226654,-0.27867498993873596,0.12755100429058075,-0.951878011226654,-0.26680099964141846,-8.586179944813921e-8,-0.9637519717216492,-0.27867498993873596,0.12755100429058075,-0.951878011226654,-0.26680099964141846,-8.586179944813921e-8,-0.9637519717216492,-0.26680099964141846,-8.586179944813921e-8,-0.9637519717216492,0.968034029006958,-2.2401499322199925e-8,0.25081899762153625,0.968034029006958,-2.2401499322199925e-8,0.25081899762153625,0.9558150172233582,-0.1312589943408966,0.2630380094051361,0.968034029006958,-2.2401499322199925e-8,0.25081899762153625,0.9558150172233582,-0.1312589943408966,0.2630380094051361,0.9558150172233582,-0.1312589943408966,0.2630380094051361,-0.7012349963188171,1.3526799591545569e-7,0.7129309773445129,-0.7012349963188171,1.3526799591545569e-7,0.7129309773445129,-0.677141010761261,0.25881001353263855,0.6888369917869568,-0.7012349963188171,1.3526799591545569e-7,0.7129309773445129,-0.677141010761261,0.25881001353263855,0.6888369917869568,-0.677141010761261,0.25881001353263855,0.6888369917869568,-0.26680099964141846,-8.586179944813921e-8,-0.9637519717216492,-0.26680099964141846,-8.586179944813921e-8,-0.9637519717216492,-0.27867600321769714,-0.12755100429058075,-0.9518769979476929,-0.26680099964141846,-8.586179944813921e-8,-0.9637519717216492,-0.27867600321769714,-0.12755100429058075,-0.9518769979476929,-0.27867600321769714,-0.12755100429058075,-0.9518769979476929,0.9558150172233582,-0.1312589943408966,0.2630380094051361,0.9558150172233582,-0.1312589943408966,0.2630380094051361,0.9200199842453003,-0.2535000145435333,0.2988330125808716,0.9558150172233582,-0.1312589943408966,0.2630380094051361,0.9200199842453003,-0.2535000145435333,0.2988330125808716,0.9200199842453003,-0.2535000145435333,0.2988330125808716,-0.677141010761261,0.25881001353263855,0.6888369917869568,-0.677141010761261,0.25881001353263855,0.6888369917869568,-0.6064710021018982,0.5000540018081665,0.6181740164756775,-0.677141010761261,0.25881001353263855,0.6888369917869568,-0.6064710021018982,0.5000540018081665,0.6181740164756775,-0.6064710021018982,0.5000540018081665,0.6181740164756775,-0.27867600321769714,-0.12755100429058075,-0.9518769979476929,-0.27867600321769714,-0.12755100429058075,-0.9518769979476929,-0.31350401043891907,-0.24644500017166138,-0.9170500040054321,-0.27867600321769714,-0.12755100429058075,-0.9518769979476929,-0.31350401043891907,-0.24644500017166138,-0.9170500040054321,-0.31350401043891907,-0.24644500017166138,-0.9170500040054321,0.9200199842453003,-0.2535000145435333,0.2988330125808716,0.9200199842453003,-0.2535000145435333,0.2988330125808716,0.885325014591217,-0.3252269923686981,0.33230599761009216,0.9200199842453003,-0.2535000145435333,0.2988330125808716,0.885325014591217,-0.3252269923686981,0.33230599761009216,0.885325014591217,-0.3252269923686981,0.33230599761009216,-0.6064710021018982,0.5000540018081665,0.6181740164756775,-0.6064710021018982,0.5000540018081665,0.6181740164756775,-0.5379250049591064,0.6392149925231934,0.5495830178260803,-0.6064710021018982,0.5000540018081665,0.6181740164756775,-0.5379250049591064,0.6392149925231934,0.5495830178260803,-0.5379250049591064,0.6392149925231934,0.5495830178260803,-0.31350401043891907,-0.24644500017166138,-0.9170500040054321,-0.31350401043891907,-0.24644500017166138,-0.9170500040054321,-0.34588301181793213,-0.31591999530792236,-0.8834930062294006,-0.31350401043891907,-0.24644500017166138,-0.9170500040054321,-0.34588301181793213,-0.31591999530792236,-0.8834930062294006,-0.34588301181793213,-0.31591999530792236,-0.8834930062294006,0.885325014591217,-0.3252269923686981,0.33230599761009216,0.885325014591217,-0.3252269923686981,0.33230599761009216,0.9436360001564026,-0.16737300157546997,0.28554800152778625,0.885325014591217,-0.3252269923686981,0.33230599761009216,0.9436360001564026,-0.16737300157546997,0.28554800152778625,0.9436360001564026,-0.16737300157546997,0.28554800152778625,-0.5379250049591064,0.6392149925231934,0.5495830178260803,-0.5379250049591064,0.6392149925231934,0.5495830178260803,-0.5199450254440308,0.6685940027236938,0.5316380262374878,-0.5379250049591064,0.6392149925231934,0.5495830178260803,-0.5199450254440308,0.6685940027236938,0.5316380262374878,-0.5199450254440308,0.6685940027236938,0.5316380262374878,-0.34588301181793213,-0.31591999530792236,-0.8834930062294006,-0.34588301181793213,-0.31591999530792236,-0.8834930062294006,-0.3024680018424988,-0.16983400285243988,-0.9379069805145264,-0.34588301181793213,-0.31591999530792236,-0.8834930062294006,-0.3024680018424988,-0.16983400285243988,-0.9379069805145264,-0.3024680018424988,-0.16983400285243988,-0.9379069805145264,0.9436360001564026,-0.16737300157546997,0.28554800152778625,0.9436360001564026,-0.16737300157546997,0.28554800152778625,0.9698669910430908,0.05637500062584877,0.23702199757099152,0.9436360001564026,-0.16737300157546997,0.28554800152778625,0.9698669910430908,0.05637500062584877,0.23702199757099152,0.9698669910430908,0.05637500062584877,0.23702199757099152,-0.7015810012817383,0.00841290969401598,0.7125399708747864,-0.7015810012817383,0.00841290969401598,0.7125399708747864,-0.6981679797172546,-0.09553659707307816,0.7095310091972351,-0.7015810012817383,0.00841290969401598,0.7125399708747864,-0.6981679797172546,-0.09553659707307816,0.7095310091972351,-0.6981679797172546,-0.09553659707307816,0.7095310091972351,-0.3024680018424988,-0.16983400285243988,-0.9379069805145264,-0.3024680018424988,-0.16983400285243988,-0.9379069805145264,-0.25584301352500916,0.04691879823803902,-0.9655789732933044,-0.3024680018424988,-0.16983400285243988,-0.9379069805145264,-0.25584301352500916,0.04691879823803902,-0.9655789732933044,-0.25584301352500916,0.04691879823803902,-0.9655789732933044,0.9698669910430908,0.05637500062584877,0.23702199757099152,0.9698669910430908,0.05637500062584877,0.23702199757099152,0.9613850116729736,0.10130699723958969,0.25588101148605347,0.9698669910430908,0.05637500062584877,0.23702199757099152,0.9613850116729736,0.10130699723958969,0.25588101148605347,0.9613850116729736,0.10130699723958969,0.25588101148605347,-0.6981679797172546,-0.09553659707307816,0.7095310091972351,-0.6981679797172546,-0.09553659707307816,0.7095310091972351,-0.6871970295906067,-0.19845199584960938,0.6988400220870972,-0.6981679797172546,-0.09553659707307816,0.7095310091972351,-0.6871970295906067,-0.19845199584960938,0.6988400220870972,-0.6871970295906067,-0.19845199584960938,0.6988400220870972,-0.25584301352500916,0.04691879823803902,-0.9655789732933044,-0.25584301352500916,0.04691879823803902,-0.9655789732933044,-0.27169400453567505,0.09817089885473251,-0.9573630094528198,-0.25584301352500916,0.04691879823803902,-0.9655789732933044,-0.27169400453567505,0.09817089885473251,-0.9573630094528198,-0.27169400453567505,0.09817089885473251,-0.9573630094528198,0.1506810039281845,-0.9770309925079346,-0.1506810039281845,0.1506810039281845,-0.9770309925079346,-0.1506810039281845,0.1506810039281845,-0.9770309925079346,-0.1506810039281845,0.8599449992179871,0.5060210227966309,-0.06661880016326904,0.8599449992179871,0.5060210227966309,-0.06661880016326904,0.8618590235710144,0.4898670017719269,-0.1312599927186966,0.8599449992179871,0.5060210227966309,-0.06661880016326904,0.8618590235710144,0.4898670017719269,-0.1312599927186966,0.8618590235710144,0.4898670017719269,-0.1312599927186966,0.008199330419301987,-0.9914119839668274,0.1305209994316101,0.008199330419301987,-0.9914119839668274,0.1305209994316101,0.008273099549114704,-0.9658929705619812,0.25881001353263855,0.008199330419301987,-0.9914119839668274,0.1305209994316101,0.008273099549114704,-0.9658929705619812,0.25881001353263855,0.008273099549114704,-0.9658929705619812,0.25881001353263855,-0.8683059811592102,0.491784006357193,-0.06474470347166061,-0.8683059811592102,0.491784006357193,-0.06474470347166061,-0.8701329827308655,0.4760249853134155,-0.12755100429058075,-0.8683059811592102,0.491784006357193,-0.06474470347166061,-0.8701329827308655,0.4760249853134155,-0.12755100429058075,-0.8701329827308655,0.4760249853134155,-0.12755100429058075,0.8618590235710144,0.4898670017719269,-0.1312599927186966,0.8618590235710144,0.4898670017719269,-0.1312599927186966,0.8618580102920532,0.43920400738716125,-0.25357499718666077,0.8618590235710144,0.4898670017719269,-0.1312599927186966,0.8618580102920532,0.43920400738716125,-0.25357499718666077,0.8618580102920532,0.43920400738716125,-0.25357499718666077,0.008273099549114704,-0.9658929705619812,0.25881001353263855,0.008273099549114704,-0.9658929705619812,0.25881001353263855,0.008276659995317459,-0.8659960031509399,0.499983012676239,0.008273099549114704,-0.9658929705619812,0.25881001353263855,0.008276659995317459,-0.8659960031509399,0.499983012676239,0.008276659995317459,-0.8659960031509399,0.499983012676239,-0.8701329827308655,0.4760249853134155,-0.12755100429058075,-0.8701329827308655,0.4760249853134155,-0.12755100429058075,-0.8701329827308655,0.4267919957637787,-0.24640899896621704,-0.8701329827308655,0.4760249853134155,-0.12755100429058075,-0.8701329827308655,0.4267919957637787,-0.24640899896621704,-0.8701329827308655,0.4267919957637787,-0.24640899896621704,0.8618580102920532,0.43920400738716125,-0.25357499718666077,0.8618580102920532,0.43920400738716125,-0.25357499718666077,0.8618580102920532,0.35860899090766907,-0.35860899090766907,0.8618580102920532,0.43920400738716125,-0.25357499718666077,0.8618580102920532,0.35860899090766907,-0.35860899090766907,0.8618580102920532,0.35860899090766907,-0.35860899090766907,0.008276659995317459,-0.8659960031509399,0.499983012676239,0.008276659995317459,-0.8659960031509399,0.499983012676239,0.008274439722299576,-0.707082986831665,0.707082986831665,0.008276659995317459,-0.8659960031509399,0.499983012676239,0.008274439722299576,-0.707082986831665,0.707082986831665,0.008274439722299576,-0.707082986831665,0.707082986831665,-0.8701329827308655,0.4267919957637787,-0.24640899896621704,-0.8701329827308655,0.4267919957637787,-0.24640899896621704,-0.8701320290565491,0.34847599267959595,-0.34847599267959595,-0.8701329827308655,0.4267919957637787,-0.24640899896621704,-0.8701320290565491,0.34847599267959595,-0.34847599267959595,-0.8701320290565491,0.34847599267959595,-0.34847599267959595,0.8618580102920532,0.35860899090766907,-0.35860899090766907,0.8618580102920532,0.35860899090766907,-0.35860899090766907,0.8618580102920532,0.25357499718666077,-0.43920400738716125,0.8618580102920532,0.35860899090766907,-0.35860899090766907,0.8618580102920532,0.25357499718666077,-0.43920400738716125,0.8618580102920532,0.25357499718666077,-0.43920400738716125,0.008274439722299576,-0.707082986831665,0.707082986831665,0.008274439722299576,-0.707082986831665,0.707082986831665,0.00827253982424736,-0.499983012676239,0.8659960031509399,0.008274439722299576,-0.707082986831665,0.707082986831665,0.00827253982424736,-0.499983012676239,0.8659960031509399,0.00827253982424736,-0.499983012676239,0.8659960031509399,-0.8701320290565491,0.34847599267959595,-0.34847599267959595,-0.8701320290565491,0.34847599267959595,-0.34847599267959595,-0.8701320290565491,0.24640999734401703,-0.42679399251937866,-0.8701320290565491,0.34847599267959595,-0.34847599267959595,-0.8701320290565491,0.24640999734401703,-0.42679399251937866,-0.8701320290565491,0.24640999734401703,-0.42679399251937866,0.8618580102920532,0.25357499718666077,-0.43920400738716125,0.8618580102920532,0.25357499718666077,-0.43920400738716125,0.8618590235710144,0.1312599927186966,-0.4898679852485657,0.8618580102920532,0.25357499718666077,-0.43920400738716125,0.8618590235710144,0.1312599927186966,-0.4898679852485657,0.8618590235710144,0.1312599927186966,-0.4898679852485657,0.00827253982424736,-0.499983012676239,0.8659960031509399,0.00827253982424736,-0.499983012676239,0.8659960031509399,0.00827230978757143,-0.25881001353263855,0.9658929705619812,0.00827253982424736,-0.499983012676239,0.8659960031509399,0.00827230978757143,-0.25881001353263855,0.9658929705619812,0.00827230978757143,-0.25881001353263855,0.9658929705619812,-0.8701320290565491,0.24640999734401703,-0.42679399251937866,-0.8701320290565491,0.24640999734401703,-0.42679399251937866,-0.8701320290565491,0.12755100429058075,-0.4760259985923767,-0.8701320290565491,0.24640999734401703,-0.42679399251937866,-0.8701320290565491,0.12755100429058075,-0.4760259985923767,-0.8701320290565491,0.12755100429058075,-0.4760259985923767,0.8618590235710144,0.1312599927186966,-0.4898679852485657,0.8618590235710144,0.1312599927186966,-0.4898679852485657,0.8618590235710144,2.2401499322199925e-8,-0.507148027420044,0.8618590235710144,0.1312599927186966,-0.4898679852485657,0.8618590235710144,2.2401499322199925e-8,-0.507148027420044,0.8618590235710144,2.2401499322199925e-8,-0.507148027420044,0.00827230978757143,-0.25881001353263855,0.9658929705619812,0.00827230978757143,-0.25881001353263855,0.9658929705619812,0.008270660415291786,1.3526799591545569e-7,0.999966025352478,0.00827230978757143,-0.25881001353263855,0.9658929705619812,0.008270660415291786,1.3526799591545569e-7,0.999966025352478,0.008270660415291786,1.3526799591545569e-7,0.999966025352478,-0.8701320290565491,0.12755100429058075,-0.4760259985923767,-0.8701320290565491,0.12755100429058075,-0.4760259985923767,-0.8701320290565491,-2.239869978382103e-8,-0.49281901121139526,-0.8701320290565491,0.12755100429058075,-0.4760259985923767,-0.8701320290565491,-2.239869978382103e-8,-0.49281901121139526,-0.8701320290565491,-2.239869978382103e-8,-0.49281901121139526,0.8618590235710144,2.2401499322199925e-8,-0.507148027420044,0.8618590235710144,2.2401499322199925e-8,-0.507148027420044,0.8618590235710144,-0.1312589943408966,-0.4898670017719269,0.8618590235710144,2.2401499322199925e-8,-0.507148027420044,0.8618590235710144,-0.1312589943408966,-0.4898670017719269,0.8618590235710144,-0.1312589943408966,-0.4898670017719269,0.008270660415291786,1.3526799591545569e-7,0.999966025352478,0.008270660415291786,1.3526799591545569e-7,0.999966025352478,0.008270800113677979,0.25881001353263855,0.9658929705619812,0.008270660415291786,1.3526799591545569e-7,0.999966025352478,0.008270800113677979,0.25881001353263855,0.9658929705619812,0.008270800113677979,0.25881001353263855,0.9658929705619812,-0.8701320290565491,-2.239869978382103e-8,-0.49281901121139526,-0.8701320290565491,-2.239869978382103e-8,-0.49281901121139526,-0.8701320290565491,-0.12755100429058075,-0.4760259985923767,-0.8701320290565491,-2.239869978382103e-8,-0.49281901121139526,-0.8701320290565491,-0.12755100429058075,-0.4760259985923767,-0.8701320290565491,-0.12755100429058075,-0.4760259985923767,0.8618590235710144,-0.1312589943408966,-0.4898670017719269,0.8618590235710144,-0.1312589943408966,-0.4898670017719269,0.8618590235710144,-0.2535009980201721,-0.4392459988594055,0.8618590235710144,-0.1312589943408966,-0.4898670017719269,0.8618590235710144,-0.2535009980201721,-0.4392459988594055,0.8618590235710144,-0.2535009980201721,-0.4392459988594055,0.008270800113677979,0.25881001353263855,0.9658929705619812,0.008270800113677979,0.25881001353263855,0.9658929705619812,0.008274099789559841,0.5000540018081665,0.8659549951553345,0.008270800113677979,0.25881001353263855,0.9658929705619812,0.008274099789559841,0.5000540018081665,0.8659549951553345,0.008274099789559841,0.5000540018081665,0.8659549951553345,-0.8701320290565491,-0.12755100429058075,-0.4760259985923767,-0.8701320290565491,-0.12755100429058075,-0.4760259985923767,-0.8701329827308655,-0.24644500017166138,-0.42677199840545654,-0.8701320290565491,-0.12755100429058075,-0.4760259985923767,-0.8701329827308655,-0.24644500017166138,-0.42677199840545654,-0.8701329827308655,-0.24644500017166138,-0.42677199840545654,0.8618590235710144,-0.2535009980201721,-0.4392459988594055,0.8618590235710144,-0.2535009980201721,-0.4392459988594055,0.8609949946403503,-0.3252269923686981,-0.3910439908504486,0.8618590235710144,-0.2535009980201721,-0.4392459988594055,0.8609949946403503,-0.3252269923686981,-0.3910439908504486,0.8609949946403503,-0.3252269923686981,-0.3910439908504486,0.008274099789559841,0.5000540018081665,0.8659549951553345,0.008274099789559841,0.5000540018081665,0.8659549951553345,0.008242569863796234,0.6392149925231934,0.7689840197563171,0.008274099789559841,0.5000540018081665,0.8659549951553345,0.008242569863796234,0.6392149925231934,0.7689840197563171,0.008242569863796234,0.6392149925231934,0.7689840197563171,-0.8701329827308655,-0.24644500017166138,-0.42677199840545654,-0.8701329827308655,-0.24644500017166138,-0.42677199840545654,-0.8693000078201294,-0.31591999530792236,-0.3801479935646057,-0.8701329827308655,-0.24644500017166138,-0.42677199840545654,-0.8693000078201294,-0.31591999530792236,-0.3801479935646057,-0.8693000078201294,-0.31591999530792236,-0.3801479935646057,0.8609949946403503,-0.3252269923686981,-0.3910439908504486,0.8609949946403503,-0.3252269923686981,-0.3910439908504486,0.869163990020752,-0.16737300157546997,-0.4653390049934387,0.8609949946403503,-0.3252269923686981,-0.3910439908504486,0.869163990020752,-0.16737300157546997,-0.4653390049934387,0.869163990020752,-0.16737300157546997,-0.4653390049934387,0.008242569863796234,0.6392149925231934,0.7689840197563171,0.008242569863796234,0.6392149925231934,0.7689840197563171,0.008267019875347614,0.6685940027236938,0.743582010269165,0.008242569863796234,0.6392149925231934,0.7689840197563171,0.008267019875347614,0.6685940027236938,0.743582010269165,0.008267019875347614,0.6685940027236938,0.743582010269165,-0.8693000078201294,-0.31591999530792236,-0.3801479935646057,-0.8693000078201294,-0.31591999530792236,-0.3801479935646057,-0.8770769834518433,-0.16983400285243988,-0.44932401180267334,-0.8693000078201294,-0.31591999530792236,-0.3801479935646057,-0.8770769834518433,-0.16983400285243988,-0.44932401180267334,-0.8770769834518433,-0.16983400285243988,-0.44932401180267334,0.869163990020752,-0.16737300157546997,-0.4653390049934387,0.869163990020752,-0.16737300157546997,-0.4653390049934387,0.8533989787101746,0.05637500062584877,-0.5181999802589417,0.869163990020752,-0.16737300157546997,-0.4653390049934387,0.8533989787101746,0.05637500062584877,-0.5181999802589417,0.8533989787101746,0.05637500062584877,-0.5181999802589417,0.007749670185148716,0.008412989787757397,0.99993497133255,0.007749670185148716,0.008412989787757397,0.99993497133255,0.008034519851207733,-0.0955365002155304,0.9953939914703369,0.007749670185148716,0.008412989787757397,0.99993497133255,0.008034519851207733,-0.0955365002155304,0.9953939914703369,0.008034519851207733,-0.0955365002155304,0.9953939914703369,-0.8770769834518433,-0.16983400285243988,-0.44932401180267334,-0.8770769834518433,-0.16983400285243988,-0.44932401180267334,-0.8636760115623474,0.04691879823803902,-0.5018590092658997,-0.8770769834518433,-0.16983400285243988,-0.44932401180267334,-0.8636760115623474,0.04691879823803902,-0.5018590092658997,-0.8636760115623474,0.04691879823803902,-0.5018590092658997,0.8533989787101746,0.05637500062584877,-0.5181999802589417,0.8533989787101746,0.05637500062584877,-0.5181999802589417,0.8607370257377625,0.10130699723958969,-0.498867005109787,0.8533989787101746,0.05637500062584877,-0.5181999802589417,0.8607370257377625,0.10130699723958969,-0.498867005109787,0.8607370257377625,0.10130699723958969,-0.498867005109787,0.008034519851207733,-0.0955365002155304,0.9953939914703369,0.008034519851207733,-0.0955365002155304,0.9953939914703369,0.008232389576733112,-0.19845199584960938,0.980076014995575,0.008034519851207733,-0.0955365002155304,0.9953939914703369,0.008232389576733112,-0.19845199584960938,0.980076014995575,0.008232389576733112,-0.19845199584960938,0.980076014995575,-0.8636760115623474,0.04691879823803902,-0.5018590092658997,-0.8636760115623474,0.04691879823803902,-0.5018590092658997,-0.8690750002861023,0.09817089885473251,-0.484840989112854,-0.8636760115623474,0.04691879823803902,-0.5018590092658997,-0.8690750002861023,0.09817089885473251,-0.484840989112854,-0.8690750002861023,0.09817089885473251,-0.484840989112854,-8.961659858641724e-8,-0.9770309925079346,-0.2130959928035736,-8.961659858641724e-8,-0.9770309925079346,-0.2130959928035736,-8.961659858641724e-8,-0.9770309925079346,-0.2130959928035736,0.5609660148620605,0.5060210227966309,-0.6551790237426758,0.5609660148620605,0.5060210227966309,-0.6551790237426758,0.5166119933128357,0.4898670017719269,-0.7022410035133362,0.5609660148620605,0.5060210227966309,-0.6551790237426758,0.5166119933128357,0.4898670017719269,-0.7022410035133362,0.5166119933128357,0.4898670017719269,-0.7022410035133362,0.09809040278196335,-0.9914119839668274,0.0864948034286499,0.09809040278196335,-0.9914119839668274,0.0864948034286499,0.18885600566864014,-0.9658929705619812,0.17715699970722198,0.09809040278196335,-0.9914119839668274,0.0864948034286499,0.18885600566864014,-0.9658929705619812,0.17715699970722198,0.18885600566864014,-0.9658929705619812,0.17715699970722198,-0.6597669720649719,0.491784006357193,0.5682039856910706,-0.6597669720649719,0.491784006357193,0.5682039856910706,-0.705469012260437,0.4760249853134155,0.5250849723815918,-0.6597669720649719,0.491784006357193,0.5682039856910706,-0.705469012260437,0.4760249853134155,0.5250849723815918,-0.705469012260437,0.4760249853134155,0.5250849723815918,0.5166119933128357,0.4898670017719269,-0.7022410035133362,0.5166119933128357,0.4898670017719269,-0.7022410035133362,0.4301210045814514,0.43920400738716125,-0.7887300252914429,0.5166119933128357,0.4898670017719269,-0.7022410035133362,0.4301210045814514,0.43920400738716125,-0.7887300252914429,0.4301210045814514,0.43920400738716125,-0.7887300252914429,0.18885600566864014,-0.9658929705619812,0.17715699970722198,0.18885600566864014,-0.9658929705619812,0.17715699970722198,0.35939401388168335,-0.8659960031509399,0.3476890027523041,0.18885600566864014,-0.9658929705619812,0.17715699970722198,0.35939401388168335,-0.8659960031509399,0.3476890027523041,0.35939401388168335,-0.8659960031509399,0.3476890027523041,-0.705469012260437,0.4760249853134155,0.5250849723815918,-0.705469012260437,0.4760249853134155,0.5250849723815918,-0.7895140051841736,0.4267919957637787,0.4410400092601776,-0.705469012260437,0.4760249853134155,0.5250849723815918,-0.7895140051841736,0.4267919957637787,0.4410400092601776,-0.7895140051841736,0.4267919957637787,0.4410400092601776,0.4301210045814514,0.43920400738716125,-0.7887300252914429,0.4301210045814514,0.43920400738716125,-0.7887300252914429,0.3558509945869446,0.35860899090766907,-0.8629999756813049,0.4301210045814514,0.43920400738716125,-0.7887300252914429,0.3558509945869446,0.35860899090766907,-0.8629999756813049,0.3558509945869446,0.35860899090766907,-0.8629999756813049,0.35939401388168335,-0.8659960031509399,0.3476890027523041,0.35939401388168335,-0.8659960031509399,0.3476890027523041,0.5058339834213257,-0.707082986831665,0.49413201212882996,0.35939401388168335,-0.8659960031509399,0.3476890027523041,0.5058339834213257,-0.707082986831665,0.49413201212882996,0.5058339834213257,-0.707082986831665,0.49413201212882996,-0.7895140051841736,0.4267919957637787,0.4410400092601776,-0.7895140051841736,0.4267919957637787,0.4410400092601776,-0.8616859912872314,0.34847599267959595,0.3688659965991974,-0.7895140051841736,0.4267919957637787,0.4410400092601776,-0.8616859912872314,0.34847599267959595,0.3688659965991974,-0.8616859912872314,0.34847599267959595,0.3688659965991974,0.3558509945869446,0.35860899090766907,-0.8629999756813049,0.3558509945869446,0.35860899090766907,-0.8629999756813049,0.2988629937171936,0.253574013710022,-0.9199900031089783,0.3558509945869446,0.35860899090766907,-0.8629999756813049,0.2988629937171936,0.253574013710022,-0.9199900031089783,0.2988629937171936,0.253574013710022,-0.9199900031089783,0.5058339834213257,-0.707082986831665,0.49413201212882996,0.5058339834213257,-0.707082986831665,0.49413201212882996,0.6182010173797607,-0.499983012676239,0.6065019965171814,0.5058339834213257,-0.707082986831665,0.49413201212882996,0.6182010173797607,-0.499983012676239,0.6065019965171814,0.6182010173797607,-0.499983012676239,0.6065019965171814,-0.8616859912872314,0.34847599267959595,0.3688659965991974,-0.8616859912872314,0.34847599267959595,0.3688659965991974,-0.9170650243759155,0.24640999734401703,0.3134869933128357,-0.8616859912872314,0.34847599267959595,0.3688659965991974,-0.9170650243759155,0.24640999734401703,0.3134869933128357,-0.9170650243759155,0.24640999734401703,0.3134869933128357,0.2988629937171936,0.253574013710022,-0.9199900031089783,0.2988629937171936,0.253574013710022,-0.9199900031089783,0.2630380094051361,0.1312589943408966,-0.9558150172233582,0.2988629937171936,0.253574013710022,-0.9199900031089783,0.2630380094051361,0.1312589943408966,-0.9558150172233582,0.2630380094051361,0.1312589943408966,-0.9558150172233582,0.6182010173797607,-0.499983012676239,0.6065019965171814,0.6182010173797607,-0.499983012676239,0.6065019965171814,0.6888390183448792,-0.25881001353263855,0.6771399974822998,0.6182010173797607,-0.499983012676239,0.6065019965171814,0.6888390183448792,-0.25881001353263855,0.6771399974822998,0.6888390183448792,-0.25881001353263855,0.6771399974822998,-0.9170650243759155,0.24640999734401703,0.3134869933128357,-0.9170650243759155,0.24640999734401703,0.3134869933128357,-0.951878011226654,0.12755100429058075,0.27867498993873596,-0.9170650243759155,0.24640999734401703,0.3134869933128357,-0.951878011226654,0.12755100429058075,0.27867498993873596,-0.951878011226654,0.12755100429058075,0.27867498993873596,0.2630380094051361,0.1312589943408966,-0.9558150172233582,0.2630380094051361,0.1312589943408966,-0.9558150172233582,0.25081899762153625,-2.2401499322199925e-8,-0.968034029006958,0.2630380094051361,0.1312589943408966,-0.9558150172233582,0.25081899762153625,-2.2401499322199925e-8,-0.968034029006958,0.25081899762153625,-2.2401499322199925e-8,-0.968034029006958,0.6888390183448792,-0.25881001353263855,0.6771399974822998,0.6888390183448792,-0.25881001353263855,0.6771399974822998,0.7129309773445129,1.3526799591545569e-7,0.7012349963188171,0.6888390183448792,-0.25881001353263855,0.6771399974822998,0.7129309773445129,1.3526799591545569e-7,0.7012349963188171,0.7129309773445129,1.3526799591545569e-7,0.7012349963188171,-0.951878011226654,0.12755100429058075,0.27867498993873596,-0.951878011226654,0.12755100429058075,0.27867498993873596,-0.9637519717216492,-8.586179944813921e-8,0.26680099964141846,-0.951878011226654,0.12755100429058075,0.27867498993873596,-0.9637519717216492,-8.586179944813921e-8,0.26680099964141846,-0.9637519717216492,-8.586179944813921e-8,0.26680099964141846,0.25081899762153625,-2.2401499322199925e-8,-0.968034029006958,0.25081899762153625,-2.2401499322199925e-8,-0.968034029006958,0.2630380094051361,-0.1312589943408966,-0.9558150172233582,0.25081899762153625,-2.2401499322199925e-8,-0.968034029006958,0.2630380094051361,-0.1312589943408966,-0.9558150172233582,0.2630380094051361,-0.1312589943408966,-0.9558150172233582,0.7129309773445129,1.3526799591545569e-7,0.7012349963188171,0.7129309773445129,1.3526799591545569e-7,0.7012349963188171,0.6888369917869568,0.25881001353263855,0.677141010761261,0.7129309773445129,1.3526799591545569e-7,0.7012349963188171,0.6888369917869568,0.25881001353263855,0.677141010761261,0.6888369917869568,0.25881001353263855,0.677141010761261,-0.9637519717216492,-8.586179944813921e-8,0.26680099964141846,-0.9637519717216492,-8.586179944813921e-8,0.26680099964141846,-0.9518769979476929,-0.12755100429058075,0.27867600321769714,-0.9637519717216492,-8.586179944813921e-8,0.26680099964141846,-0.9518769979476929,-0.12755100429058075,0.27867600321769714,-0.9518769979476929,-0.12755100429058075,0.27867600321769714,0.2630380094051361,-0.1312589943408966,-0.9558150172233582,0.2630380094051361,-0.1312589943408966,-0.9558150172233582,0.2988330125808716,-0.2535000145435333,-0.9200199842453003,0.2630380094051361,-0.1312589943408966,-0.9558150172233582,0.2988330125808716,-0.2535000145435333,-0.9200199842453003,0.2988330125808716,-0.2535000145435333,-0.9200199842453003,0.6888369917869568,0.25881001353263855,0.677141010761261,0.6888369917869568,0.25881001353263855,0.677141010761261,0.6181740164756775,0.5000540018081665,0.6064710021018982,0.6888369917869568,0.25881001353263855,0.677141010761261,0.6181740164756775,0.5000540018081665,0.6064710021018982,0.6181740164756775,0.5000540018081665,0.6064710021018982,-0.9518769979476929,-0.12755100429058075,0.27867600321769714,-0.9518769979476929,-0.12755100429058075,0.27867600321769714,-0.9170500040054321,-0.24644500017166138,0.31350401043891907,-0.9518769979476929,-0.12755100429058075,0.27867600321769714,-0.9170500040054321,-0.24644500017166138,0.31350401043891907,-0.9170500040054321,-0.24644500017166138,0.31350401043891907,0.2988330125808716,-0.2535000145435333,-0.9200199842453003,0.2988330125808716,-0.2535000145435333,-0.9200199842453003,0.33230599761009216,-0.3252269923686981,-0.885325014591217,0.2988330125808716,-0.2535000145435333,-0.9200199842453003,0.33230599761009216,-0.3252269923686981,-0.885325014591217,0.33230599761009216,-0.3252269923686981,-0.885325014591217,0.6181740164756775,0.5000540018081665,0.6064710021018982,0.6181740164756775,0.5000540018081665,0.6064710021018982,0.5495830178260803,0.6392149925231934,0.5379250049591064,0.6181740164756775,0.5000540018081665,0.6064710021018982,0.5495830178260803,0.6392149925231934,0.5379250049591064,0.5495830178260803,0.6392149925231934,0.5379250049591064,-0.9170500040054321,-0.24644500017166138,0.31350401043891907,-0.9170500040054321,-0.24644500017166138,0.31350401043891907,-0.8834930062294006,-0.31591999530792236,0.34588301181793213,-0.9170500040054321,-0.24644500017166138,0.31350401043891907,-0.8834930062294006,-0.31591999530792236,0.34588301181793213,-0.8834930062294006,-0.31591999530792236,0.34588301181793213,0.33230599761009216,-0.3252269923686981,-0.885325014591217,0.33230599761009216,-0.3252269923686981,-0.885325014591217,0.28554800152778625,-0.16737300157546997,-0.9436360001564026,0.33230599761009216,-0.3252269923686981,-0.885325014591217,0.28554800152778625,-0.16737300157546997,-0.9436360001564026,0.28554800152778625,-0.16737300157546997,-0.9436360001564026,0.5495830178260803,0.6392149925231934,0.5379250049591064,0.5495830178260803,0.6392149925231934,0.5379250049591064,0.5316380262374878,0.6685940027236938,0.5199450254440308,0.5495830178260803,0.6392149925231934,0.5379250049591064,0.5316380262374878,0.6685940027236938,0.5199450254440308,0.5316380262374878,0.6685940027236938,0.5199450254440308,-0.8834930062294006,-0.31591999530792236,0.34588301181793213,-0.8834930062294006,-0.31591999530792236,0.34588301181793213,-0.9379069805145264,-0.16983400285243988,0.3024680018424988,-0.8834930062294006,-0.31591999530792236,0.34588301181793213,-0.9379069805145264,-0.16983400285243988,0.3024680018424988,-0.9379069805145264,-0.16983400285243988,0.3024680018424988,0.28554800152778625,-0.16737300157546997,-0.9436360001564026,0.28554800152778625,-0.16737300157546997,-0.9436360001564026,0.23702199757099152,0.05637500062584877,-0.9698669910430908,0.28554800152778625,-0.16737300157546997,-0.9436360001564026,0.23702199757099152,0.05637500062584877,-0.9698669910430908,0.23702199757099152,0.05637500062584877,-0.9698669910430908,0.7125399708747864,0.00841290969401598,0.7015810012817383,0.7125399708747864,0.00841290969401598,0.7015810012817383,0.7095310091972351,-0.09553659707307816,0.6981679797172546,0.7125399708747864,0.00841290969401598,0.7015810012817383,0.7095310091972351,-0.09553659707307816,0.6981679797172546,0.7095310091972351,-0.09553659707307816,0.6981679797172546,-0.9379069805145264,-0.16983400285243988,0.3024680018424988,-0.9379069805145264,-0.16983400285243988,0.3024680018424988,-0.9655789732933044,0.04691879823803902,0.25584301352500916,-0.9379069805145264,-0.16983400285243988,0.3024680018424988,-0.9655789732933044,0.04691879823803902,0.25584301352500916,-0.9655789732933044,0.04691879823803902,0.25584301352500916,0.23702199757099152,0.05637500062584877,-0.9698669910430908,0.23702199757099152,0.05637500062584877,-0.9698669910430908,0.25588101148605347,0.10130699723958969,-0.9613850116729736,0.23702199757099152,0.05637500062584877,-0.9698669910430908,0.25588101148605347,0.10130699723958969,-0.9613850116729736,0.25588101148605347,0.10130699723958969,-0.9613850116729736,0.7095310091972351,-0.09553659707307816,0.6981679797172546,0.7095310091972351,-0.09553659707307816,0.6981679797172546,0.6988400220870972,-0.19845199584960938,0.6871970295906067,0.7095310091972351,-0.09553659707307816,0.6981679797172546,0.6988400220870972,-0.19845199584960938,0.6871970295906067,0.6988400220870972,-0.19845199584960938,0.6871970295906067,-0.9655789732933044,0.04691879823803902,0.25584301352500916,-0.9655789732933044,0.04691879823803902,0.25584301352500916,-0.9573630094528198,0.09817089885473251,0.27169400453567505,-0.9655789732933044,0.04691879823803902,0.25584301352500916,-0.9573630094528198,0.09817089885473251,0.27169400453567505,-0.9573630094528198,0.09817089885473251,0.27169400453567505,-0.1506810039281845,-0.9770309925079346,-0.1506810039281845,-0.1506810039281845,-0.9770309925079346,-0.1506810039281845,-0.1506810039281845,-0.9770309925079346,-0.1506810039281845,-0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.918192982673645,-0.11078199744224548,-0.3803279995918274,-0.918192982673645,-0.11078199744224548,-0.3803279995918274,-0.918192982673645,-0.11078199744224548,-0.3803279995918274,-0.918192982673645,-0.11078199744224548,-0.3803279995918274,-0.918192982673645,-0.11078199744224548,-0.3803279995918274,-0.918192982673645,-0.11078199744224548,-0.3803279995918274,-0.918192982673645,-0.11078199744224548,0.3803279995918274,-0.918192982673645,-0.11078199744224548,0.3803279995918274,-0.918192982673645,-0.11078199744224548,0.3803279995918274,-0.918192982673645,-0.11078199744224548,0.3803279995918274,-0.918192982673645,-0.11078199744224548,0.3803279995918274,-0.918192982673645,-0.11078199744224548,0.3803279995918274,-0.3803279995918274,-0.11078199744224548,0.918192982673645,-0.3803279995918274,-0.11078199744224548,0.918192982673645,-0.3803279995918274,-0.11078199744224548,0.918192982673645,-0.3803279995918274,-0.11078199744224548,0.918192982673645,-0.3803279995918274,-0.11078199744224548,0.918192982673645,-0.3803279995918274,-0.11078199744224548,0.918192982673645,0.3803279995918274,-0.11078199744224548,0.918192982673645,0.3803279995918274,-0.11078199744224548,0.918192982673645,0.3803279995918274,-0.11078199744224548,0.918192982673645,0.3803279995918274,-0.11078199744224548,0.918192982673645,0.3803279995918274,-0.11078199744224548,0.918192982673645,0.3803279995918274,-0.11078199744224548,0.918192982673645,0.918192982673645,-0.11078199744224548,0.3803279995918274,0.918192982673645,-0.11078199744224548,0.3803279995918274,0.918192982673645,-0.11078199744224548,0.3803279995918274,0.918192982673645,-0.11078199744224548,0.3803279995918274,0.918192982673645,-0.11078199744224548,0.3803279995918274,0.918192982673645,-0.11078199744224548,0.3803279995918274,0.918192982673645,-0.11078199744224548,-0.3803279995918274,0.918192982673645,-0.11078199744224548,-0.3803279995918274,0.918192982673645,-0.11078199744224548,-0.3803279995918274,0.918192982673645,-0.11078199744224548,-0.3803279995918274,0.918192982673645,-0.11078199744224548,-0.3803279995918274,0.918192982673645,-0.11078199744224548,-0.3803279995918274,0.3803279995918274,-0.11078199744224548,-0.918192982673645,0.3803279995918274,-0.11078199744224548,-0.918192982673645,0.3803279995918274,-0.11078199744224548,-0.918192982673645,0.3803279995918274,-0.11078199744224548,-0.918192982673645,0.3803279995918274,-0.11078199744224548,-0.918192982673645,0.3803279995918274,-0.11078199744224548,-0.918192982673645,-0.03404499962925911,-0.9653850197792053,-0.2585979998111725,-0.017181599512696266,-0.9912980198860168,-0.13050700724124908,-0.03404499962925911,-0.9653850197792053,-0.2585979998111725,-0.09981510043144226,-0.9653850197792053,-0.2409750074148178,-0.050373900681734085,-0.9912980198860168,-0.12161300331354141,-0.09981510043144226,-0.9653850197792053,-0.2409750074148178,-0.15878300368785858,-0.9653850197792053,-0.2069299966096878,-0.08013329654932022,-0.9912980198860168,-0.10443200170993805,-0.15878300368785858,-0.9653850197792053,-0.2069299966096878,-0.2069299966096878,-0.9653850197792053,-0.15878300368785858,-0.10443200170993805,-0.9912980198860168,-0.08013329654932022,-0.2069299966096878,-0.9653850197792053,-0.15878300368785858,-0.2409750074148178,-0.9653850197792053,-0.09981519728899002,-0.12161300331354141,-0.9912980198860168,-0.050373900681734085,-0.2409750074148178,-0.9653850197792053,-0.09981519728899002,-0.2585979998111725,-0.9653850197792053,-0.03404499962925911,-0.13050700724124908,-0.9912980198860168,-0.017181599512696266,-0.2585979998111725,-0.9653850197792053,-0.03404499962925911,-0.2585979998111725,-0.9653850197792053,0.03404499962925911,-0.13050700724124908,-0.9912980198860168,0.017181599512696266,-0.2585979998111725,-0.9653850197792053,0.03404499962925911,-0.2409750074148178,-0.9653850197792053,0.09981510043144226,-0.12161300331354141,-0.9912980198860168,0.050373900681734085,-0.2409750074148178,-0.9653850197792053,0.09981510043144226,-0.2069299966096878,-0.9653850197792053,0.15878300368785858,-0.10443200170993805,-0.9912980198860168,0.08013329654932022,-0.2069299966096878,-0.9653850197792053,0.15878300368785858,-0.15878300368785858,-0.9653850197792053,0.2069299966096878,-0.08013329654932022,-0.9912980198860168,0.10443200170993805,-0.15878300368785858,-0.9653850197792053,0.2069299966096878,-0.09981519728899002,-0.9653850197792053,0.2409750074148178,-0.050373900681734085,-0.9912980198860168,0.12161300331354141,-0.09981519728899002,-0.9653850197792053,0.2409750074148178,-0.03404499962925911,-0.9653850197792053,0.2585979998111725,-0.017181599512696266,-0.9912980198860168,0.13050700724124908,-0.03404499962925911,-0.9653850197792053,0.2585979998111725,0.03404499962925911,-0.9653850197792053,0.2585979998111725,0.017181599512696266,-0.9912980198860168,0.13050700724124908,0.03404499962925911,-0.9653850197792053,0.2585979998111725,0.09981510043144226,-0.9653850197792053,0.2409750074148178,0.050373900681734085,-0.9912980198860168,0.12161300331354141,0.09981510043144226,-0.9653850197792053,0.2409750074148178,0.15878300368785858,-0.9653850197792053,0.2069299966096878,0.08013329654932022,-0.9912980198860168,0.10443200170993805,0.15878300368785858,-0.9653850197792053,0.2069299966096878,0.2069299966096878,-0.9653850197792053,0.15878300368785858,0.10443200170993805,-0.9912980198860168,0.08013329654932022,0.2069299966096878,-0.9653850197792053,0.15878300368785858,0.2409750074148178,-0.9653850197792053,0.09981519728899002,0.12161300331354141,-0.9912980198860168,0.050373900681734085,0.2409750074148178,-0.9653850197792053,0.09981519728899002,0.2585979998111725,-0.9653850197792053,0.03404499962925911,0.13050700724124908,-0.9912980198860168,0.017181599512696266,0.2585979998111725,-0.9653850197792053,0.03404499962925911,0.2585979998111725,-0.9653850197792053,-0.03404499962925911,0.13050700724124908,-0.9912980198860168,-0.017181599512696266,0.2585979998111725,-0.9653850197792053,-0.03404499962925911,0.2409750074148178,-0.9653850197792053,-0.09981510043144226,0.12161300331354141,-0.9912980198860168,-0.050373900681734085,0.2409750074148178,-0.9653850197792053,-0.09981510043144226,0.2069299966096878,-0.9653850197792053,-0.15878300368785858,0.10443200170993805,-0.9912980198860168,-0.08013329654932022,0.2069299966096878,-0.9653850197792053,-0.15878300368785858,0.15878300368785858,-0.9653850197792053,-0.2069299966096878,0.08013329654932022,-0.9912980198860168,-0.10443200170993805,0.15878300368785858,-0.9653850197792053,-0.2069299966096878,0.09981519728899002,-0.9653850197792053,-0.2409750074148178,0.050373900681734085,-0.9912980198860168,-0.12161300331354141,0.09981519728899002,-0.9653850197792053,-0.2409750074148178,0.03404499962925911,-0.9653850197792053,-0.2585979998111725,0.017181599512696266,-0.9912980198860168,-0.13050700724124908,0.03404499962925911,-0.9653850197792053,-0.2585979998111725,-0.06566949933767319,-0.8642200231552124,-0.4988110065460205,-0.03404499962925911,-0.9653850197792053,-0.2585979998111725,-0.06566949933767319,-0.8642200231552124,-0.4988110065460205,-0.03404499962925911,-0.9653850197792053,-0.2585979998111725,-0.03404499962925911,-0.9653850197792053,-0.2585979998111725,-0.06566949933767319,-0.8642200231552124,-0.4988110065460205,-0.19253399968147278,-0.8642200231552124,-0.46481698751449585,-0.09981510043144226,-0.9653850197792053,-0.2409750074148178,-0.19253399968147278,-0.8642200231552124,-0.46481698751449585,-0.09981510043144226,-0.9653850197792053,-0.2409750074148178,-0.09981510043144226,-0.9653850197792053,-0.2409750074148178,-0.19253399968147278,-0.8642200231552124,-0.46481698751449585,-0.30627700686454773,-0.8642200231552124,-0.39914798736572266,-0.15878300368785858,-0.9653850197792053,-0.2069299966096878,-0.30627700686454773,-0.8642200231552124,-0.39914798736572266,-0.15878300368785858,-0.9653850197792053,-0.2069299966096878,-0.15878300368785858,-0.9653850197792053,-0.2069299966096878,-0.30627700686454773,-0.8642200231552124,-0.39914798736572266,-0.39914798736572266,-0.8642200231552124,-0.30627700686454773,-0.2069299966096878,-0.9653850197792053,-0.15878300368785858,-0.39914798736572266,-0.8642200231552124,-0.30627700686454773,-0.2069299966096878,-0.9653850197792053,-0.15878300368785858,-0.2069299966096878,-0.9653850197792053,-0.15878300368785858,-0.39914798736572266,-0.8642200231552124,-0.30627700686454773,-0.46481698751449585,-0.8642200231552124,-0.19253399968147278,-0.2409750074148178,-0.9653850197792053,-0.09981519728899002,-0.46481698751449585,-0.8642200231552124,-0.19253399968147278,-0.2409750074148178,-0.9653850197792053,-0.09981519728899002,-0.2409750074148178,-0.9653850197792053,-0.09981519728899002,-0.46481698751449585,-0.8642200231552124,-0.19253399968147278,-0.4988110065460205,-0.8642200231552124,-0.06566960364580154,-0.2585979998111725,-0.9653850197792053,-0.03404499962925911,-0.4988110065460205,-0.8642200231552124,-0.06566960364580154,-0.2585979998111725,-0.9653850197792053,-0.03404499962925911,-0.2585979998111725,-0.9653850197792053,-0.03404499962925911,-0.4988110065460205,-0.8642200231552124,-0.06566960364580154,-0.4988110065460205,-0.8642200231552124,0.06566949933767319,-0.2585979998111725,-0.9653850197792053,0.03404499962925911,-0.4988110065460205,-0.8642200231552124,0.06566949933767319,-0.2585979998111725,-0.9653850197792053,0.03404499962925911,-0.2585979998111725,-0.9653850197792053,0.03404499962925911,-0.4988110065460205,-0.8642200231552124,0.06566949933767319,-0.46481698751449585,-0.8642200231552124,0.19253399968147278,-0.2409750074148178,-0.9653850197792053,0.09981510043144226,-0.46481698751449585,-0.8642200231552124,0.19253399968147278,-0.2409750074148178,-0.9653850197792053,0.09981510043144226,-0.2409750074148178,-0.9653850197792053,0.09981510043144226,-0.46481698751449585,-0.8642200231552124,0.19253399968147278,-0.39914798736572266,-0.8642200231552124,0.30627700686454773,-0.2069299966096878,-0.9653850197792053,0.15878300368785858,-0.39914798736572266,-0.8642200231552124,0.30627700686454773,-0.2069299966096878,-0.9653850197792053,0.15878300368785858,-0.2069299966096878,-0.9653850197792053,0.15878300368785858,-0.39914798736572266,-0.8642200231552124,0.30627700686454773,-0.30627700686454773,-0.8642200231552124,0.39914798736572266,-0.15878300368785858,-0.9653850197792053,0.2069299966096878,-0.30627700686454773,-0.8642200231552124,0.39914798736572266,-0.15878300368785858,-0.9653850197792053,0.2069299966096878,-0.15878300368785858,-0.9653850197792053,0.2069299966096878,-0.30627700686454773,-0.8642200231552124,0.39914798736572266,-0.19253399968147278,-0.8642200231552124,0.46481698751449585,-0.09981519728899002,-0.9653850197792053,0.2409750074148178,-0.19253399968147278,-0.8642200231552124,0.46481698751449585,-0.09981519728899002,-0.9653850197792053,0.2409750074148178,-0.09981519728899002,-0.9653850197792053,0.2409750074148178,-0.19253399968147278,-0.8642200231552124,0.46481698751449585,-0.06566960364580154,-0.8642200231552124,0.4988110065460205,-0.03404499962925911,-0.9653850197792053,0.2585979998111725,-0.06566960364580154,-0.8642200231552124,0.4988110065460205,-0.03404499962925911,-0.9653850197792053,0.2585979998111725,-0.03404499962925911,-0.9653850197792053,0.2585979998111725,-0.06566960364580154,-0.8642200231552124,0.4988110065460205,0.06566949933767319,-0.8642200231552124,0.4988110065460205,0.03404499962925911,-0.9653850197792053,0.2585979998111725,0.06566949933767319,-0.8642200231552124,0.4988110065460205,0.03404499962925911,-0.9653850197792053,0.2585979998111725,0.03404499962925911,-0.9653850197792053,0.2585979998111725,0.06566949933767319,-0.8642200231552124,0.4988110065460205,0.19253399968147278,-0.8642200231552124,0.46481698751449585,0.09981510043144226,-0.9653850197792053,0.2409750074148178,0.19253399968147278,-0.8642200231552124,0.46481698751449585,0.09981510043144226,-0.9653850197792053,0.2409750074148178,0.09981510043144226,-0.9653850197792053,0.2409750074148178,0.19253399968147278,-0.8642200231552124,0.46481698751449585,0.30627700686454773,-0.8642200231552124,0.39914798736572266,0.15878300368785858,-0.9653850197792053,0.2069299966096878,0.30627700686454773,-0.8642200231552124,0.39914798736572266,0.15878300368785858,-0.9653850197792053,0.2069299966096878,0.15878300368785858,-0.9653850197792053,0.2069299966096878,0.30627700686454773,-0.8642200231552124,0.39914798736572266,0.39914798736572266,-0.8642200231552124,0.30627700686454773,0.2069299966096878,-0.9653850197792053,0.15878300368785858,0.39914798736572266,-0.8642200231552124,0.30627700686454773,0.2069299966096878,-0.9653850197792053,0.15878300368785858,0.2069299966096878,-0.9653850197792053,0.15878300368785858,0.39914798736572266,-0.8642200231552124,0.30627700686454773,0.46481698751449585,-0.8642200231552124,0.19253399968147278,0.2409750074148178,-0.9653850197792053,0.09981519728899002,0.46481698751449585,-0.8642200231552124,0.19253399968147278,0.2409750074148178,-0.9653850197792053,0.09981519728899002,0.2409750074148178,-0.9653850197792053,0.09981519728899002,0.46481698751449585,-0.8642200231552124,0.19253399968147278,0.4988110065460205,-0.8642200231552124,0.06566960364580154,0.2585979998111725,-0.9653850197792053,0.03404499962925911,0.4988110065460205,-0.8642200231552124,0.06566960364580154,0.2585979998111725,-0.9653850197792053,0.03404499962925911,0.2585979998111725,-0.9653850197792053,0.03404499962925911,0.4988110065460205,-0.8642200231552124,0.06566960364580154,0.4988110065460205,-0.8642200231552124,-0.06566949933767319,0.2585979998111725,-0.9653850197792053,-0.03404499962925911,0.4988110065460205,-0.8642200231552124,-0.06566949933767319,0.2585979998111725,-0.9653850197792053,-0.03404499962925911,0.2585979998111725,-0.9653850197792053,-0.03404499962925911,0.4988110065460205,-0.8642200231552124,-0.06566949933767319,0.46481698751449585,-0.8642200231552124,-0.19253399968147278,0.2409750074148178,-0.9653850197792053,-0.09981510043144226,0.46481698751449585,-0.8642200231552124,-0.19253399968147278,0.2409750074148178,-0.9653850197792053,-0.09981510043144226,0.2409750074148178,-0.9653850197792053,-0.09981510043144226,0.46481698751449585,-0.8642200231552124,-0.19253399968147278,0.39914798736572266,-0.8642200231552124,-0.30627700686454773,0.2069299966096878,-0.9653850197792053,-0.15878300368785858,0.39914798736572266,-0.8642200231552124,-0.30627700686454773,0.2069299966096878,-0.9653850197792053,-0.15878300368785858,0.2069299966096878,-0.9653850197792053,-0.15878300368785858,0.39914798736572266,-0.8642200231552124,-0.30627700686454773,0.30627700686454773,-0.8642200231552124,-0.39914798736572266,0.15878300368785858,-0.9653850197792053,-0.2069299966096878,0.30627700686454773,-0.8642200231552124,-0.39914798736572266,0.15878300368785858,-0.9653850197792053,-0.2069299966096878,0.15878300368785858,-0.9653850197792053,-0.2069299966096878,0.30627700686454773,-0.8642200231552124,-0.39914798736572266,0.19253399968147278,-0.8642200231552124,-0.46481698751449585,0.09981519728899002,-0.9653850197792053,-0.2409750074148178,0.19253399968147278,-0.8642200231552124,-0.46481698751449585,0.09981519728899002,-0.9653850197792053,-0.2409750074148178,0.09981519728899002,-0.9653850197792053,-0.2409750074148178,0.19253399968147278,-0.8642200231552124,-0.46481698751449585,0.06566960364580154,-0.8642200231552124,-0.4988110065460205,0.03404499962925911,-0.9653850197792053,-0.2585979998111725,0.06566960364580154,-0.8642200231552124,-0.4988110065460205,0.03404499962925911,-0.9653850197792053,-0.2585979998111725,0.03404499962925911,-0.9653850197792053,-0.2585979998111725,0.06566960364580154,-0.8642200231552124,-0.4988110065460205,-0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.06566949933767319,-0.8642200231552124,-0.4988110065460205,-0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.06566949933767319,-0.8642200231552124,-0.4988110065460205,-0.06566949933767319,-0.8642200231552124,-0.4988110065460205,-0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.27171799540519714,-0.7041670083999634,-0.655987024307251,-0.19253399968147278,-0.8642200231552124,-0.46481698751449585,-0.27171799540519714,-0.7041670083999634,-0.655987024307251,-0.19253399968147278,-0.8642200231552124,-0.46481698751449585,-0.19253399968147278,-0.8642200231552124,-0.46481698751449585,-0.27171799540519714,-0.7041670083999634,-0.655987024307251,-0.4322420060634613,-0.7041670083999634,-0.5633080005645752,-0.30627700686454773,-0.8642200231552124,-0.39914798736572266,-0.4322420060634613,-0.7041670083999634,-0.5633080005645752,-0.30627700686454773,-0.8642200231552124,-0.39914798736572266,-0.30627700686454773,-0.8642200231552124,-0.39914798736572266,-0.4322420060634613,-0.7041670083999634,-0.5633080005645752,-0.5633080005645752,-0.7041670083999634,-0.4322420060634613,-0.39914798736572266,-0.8642200231552124,-0.30627700686454773,-0.5633080005645752,-0.7041670083999634,-0.4322420060634613,-0.39914798736572266,-0.8642200231552124,-0.30627700686454773,-0.39914798736572266,-0.8642200231552124,-0.30627700686454773,-0.5633080005645752,-0.7041670083999634,-0.4322420060634613,-0.655987024307251,-0.7041670083999634,-0.27171799540519714,-0.46481698751449585,-0.8642200231552124,-0.19253399968147278,-0.655987024307251,-0.7041670083999634,-0.27171799540519714,-0.46481698751449585,-0.8642200231552124,-0.19253399968147278,-0.46481698751449585,-0.8642200231552124,-0.19253399968147278,-0.655987024307251,-0.7041670083999634,-0.27171799540519714,-0.7039600014686584,-0.7041670083999634,-0.09267830103635788,-0.4988110065460205,-0.8642200231552124,-0.06566960364580154,-0.7039600014686584,-0.7041670083999634,-0.09267830103635788,-0.4988110065460205,-0.8642200231552124,-0.06566960364580154,-0.4988110065460205,-0.8642200231552124,-0.06566960364580154,-0.7039600014686584,-0.7041670083999634,-0.09267830103635788,-0.7039600014686584,-0.7041670083999634,0.09267830103635788,-0.4988110065460205,-0.8642200231552124,0.06566949933767319,-0.7039600014686584,-0.7041670083999634,0.09267830103635788,-0.4988110065460205,-0.8642200231552124,0.06566949933767319,-0.4988110065460205,-0.8642200231552124,0.06566949933767319,-0.7039600014686584,-0.7041670083999634,0.09267830103635788,-0.655987024307251,-0.7041670083999634,0.2717190086841583,-0.46481698751449585,-0.8642200231552124,0.19253399968147278,-0.655987024307251,-0.7041670083999634,0.2717190086841583,-0.46481698751449585,-0.8642200231552124,0.19253399968147278,-0.46481698751449585,-0.8642200231552124,0.19253399968147278,-0.655987024307251,-0.7041670083999634,0.2717190086841583,-0.5633080005645752,-0.7041670083999634,0.4322420060634613,-0.39914798736572266,-0.8642200231552124,0.30627700686454773,-0.5633080005645752,-0.7041670083999634,0.4322420060634613,-0.39914798736572266,-0.8642200231552124,0.30627700686454773,-0.39914798736572266,-0.8642200231552124,0.30627700686454773,-0.5633080005645752,-0.7041670083999634,0.4322420060634613,-0.4322420060634613,-0.7041670083999634,0.5633080005645752,-0.30627700686454773,-0.8642200231552124,0.39914798736572266,-0.4322420060634613,-0.7041670083999634,0.5633080005645752,-0.30627700686454773,-0.8642200231552124,0.39914798736572266,-0.30627700686454773,-0.8642200231552124,0.39914798736572266,-0.4322420060634613,-0.7041670083999634,0.5633080005645752,-0.2717190086841583,-0.7041670083999634,0.655987024307251,-0.19253399968147278,-0.8642200231552124,0.46481698751449585,-0.2717190086841583,-0.7041670083999634,0.655987024307251,-0.19253399968147278,-0.8642200231552124,0.46481698751449585,-0.19253399968147278,-0.8642200231552124,0.46481698751449585,-0.2717190086841583,-0.7041670083999634,0.655987024307251,-0.09267830103635788,-0.7041670083999634,0.7039600014686584,-0.06566960364580154,-0.8642200231552124,0.4988110065460205,-0.09267830103635788,-0.7041670083999634,0.7039600014686584,-0.06566960364580154,-0.8642200231552124,0.4988110065460205,-0.06566960364580154,-0.8642200231552124,0.4988110065460205,-0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.06566949933767319,-0.8642200231552124,0.4988110065460205,0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.06566949933767319,-0.8642200231552124,0.4988110065460205,0.06566949933767319,-0.8642200231552124,0.4988110065460205,0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.27171799540519714,-0.7041670083999634,0.655987024307251,0.19253399968147278,-0.8642200231552124,0.46481698751449585,0.27171799540519714,-0.7041670083999634,0.655987024307251,0.19253399968147278,-0.8642200231552124,0.46481698751449585,0.19253399968147278,-0.8642200231552124,0.46481698751449585,0.27171799540519714,-0.7041670083999634,0.655987024307251,0.4322420060634613,-0.7041670083999634,0.5633080005645752,0.30627700686454773,-0.8642200231552124,0.39914798736572266,0.4322420060634613,-0.7041670083999634,0.5633080005645752,0.30627700686454773,-0.8642200231552124,0.39914798736572266,0.30627700686454773,-0.8642200231552124,0.39914798736572266,0.4322420060634613,-0.7041670083999634,0.5633080005645752,0.5633080005645752,-0.7041670083999634,0.4322420060634613,0.39914798736572266,-0.8642200231552124,0.30627700686454773,0.5633080005645752,-0.7041670083999634,0.4322420060634613,0.39914798736572266,-0.8642200231552124,0.30627700686454773,0.39914798736572266,-0.8642200231552124,0.30627700686454773,0.5633080005645752,-0.7041670083999634,0.4322420060634613,0.655987024307251,-0.7041670083999634,0.27171799540519714,0.46481698751449585,-0.8642200231552124,0.19253399968147278,0.655987024307251,-0.7041670083999634,0.27171799540519714,0.46481698751449585,-0.8642200231552124,0.19253399968147278,0.46481698751449585,-0.8642200231552124,0.19253399968147278,0.655987024307251,-0.7041670083999634,0.27171799540519714,0.7039600014686584,-0.7041670083999634,0.09267830103635788,0.4988110065460205,-0.8642200231552124,0.06566960364580154,0.7039600014686584,-0.7041670083999634,0.09267830103635788,0.4988110065460205,-0.8642200231552124,0.06566960364580154,0.4988110065460205,-0.8642200231552124,0.06566960364580154,0.7039600014686584,-0.7041670083999634,0.09267830103635788,0.7039600014686584,-0.7041670083999634,-0.09267830103635788,0.4988110065460205,-0.8642200231552124,-0.06566949933767319,0.7039600014686584,-0.7041670083999634,-0.09267830103635788,0.4988110065460205,-0.8642200231552124,-0.06566949933767319,0.4988110065460205,-0.8642200231552124,-0.06566949933767319,0.7039600014686584,-0.7041670083999634,-0.09267830103635788,0.655987024307251,-0.7041670083999634,-0.27171799540519714,0.46481698751449585,-0.8642200231552124,-0.19253399968147278,0.655987024307251,-0.7041670083999634,-0.27171799540519714,0.46481698751449585,-0.8642200231552124,-0.19253399968147278,0.46481698751449585,-0.8642200231552124,-0.19253399968147278,0.655987024307251,-0.7041670083999634,-0.27171799540519714,0.5633080005645752,-0.7041670083999634,-0.4322420060634613,0.39914798736572266,-0.8642200231552124,-0.30627700686454773,0.5633080005645752,-0.7041670083999634,-0.4322420060634613,0.39914798736572266,-0.8642200231552124,-0.30627700686454773,0.39914798736572266,-0.8642200231552124,-0.30627700686454773,0.5633080005645752,-0.7041670083999634,-0.4322420060634613,0.4322420060634613,-0.7041670083999634,-0.5633080005645752,0.30627700686454773,-0.8642200231552124,-0.39914798736572266,0.4322420060634613,-0.7041670083999634,-0.5633080005645752,0.30627700686454773,-0.8642200231552124,-0.39914798736572266,0.30627700686454773,-0.8642200231552124,-0.39914798736572266,0.4322420060634613,-0.7041670083999634,-0.5633080005645752,0.27171799540519714,-0.7041670083999634,-0.655987024307251,0.19253399968147278,-0.8642200231552124,-0.46481698751449585,0.27171799540519714,-0.7041670083999634,-0.655987024307251,0.19253399968147278,-0.8642200231552124,-0.46481698751449585,0.19253399968147278,-0.8642200231552124,-0.46481698751449585,0.27171799540519714,-0.7041670083999634,-0.655987024307251,0.09267830103635788,-0.7041670083999634,-0.7039600014686584,0.06566960364580154,-0.8642200231552124,-0.4988110065460205,0.09267830103635788,-0.7041670083999634,-0.7039600014686584,0.06566960364580154,-0.8642200231552124,-0.4988110065460205,0.06566960364580154,-0.8642200231552124,-0.4988110065460205,0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.09267830103635788,-0.7041670083999634,-0.7039600014686584,-0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.33209800720214844,-0.49689099192619324,-0.8017550110816956,-0.27171799540519714,-0.7041670083999634,-0.655987024307251,-0.33209800720214844,-0.49689099192619324,-0.8017550110816956,-0.27171799540519714,-0.7041670083999634,-0.655987024307251,-0.27171799540519714,-0.7041670083999634,-0.655987024307251,-0.33209800720214844,-0.49689099192619324,-0.8017550110816956,-0.5282909870147705,-0.49689099192619324,-0.6884829998016357,-0.4322420060634613,-0.7041670083999634,-0.5633080005645752,-0.5282909870147705,-0.49689099192619324,-0.6884829998016357,-0.4322420060634613,-0.7041670083999634,-0.5633080005645752,-0.4322420060634613,-0.7041670083999634,-0.5633080005645752,-0.5282909870147705,-0.49689099192619324,-0.6884829998016357,-0.6884829998016357,-0.49689099192619324,-0.5282909870147705,-0.5633080005645752,-0.7041670083999634,-0.4322420060634613,-0.6884829998016357,-0.49689099192619324,-0.5282909870147705,-0.5633080005645752,-0.7041670083999634,-0.4322420060634613,-0.5633080005645752,-0.7041670083999634,-0.4322420060634613,-0.6884829998016357,-0.49689099192619324,-0.5282909870147705,-0.8017550110816956,-0.49689099192619324,-0.33209800720214844,-0.655987024307251,-0.7041670083999634,-0.27171799540519714,-0.8017550110816956,-0.49689099192619324,-0.33209800720214844,-0.655987024307251,-0.7041670083999634,-0.27171799540519714,-0.655987024307251,-0.7041670083999634,-0.27171799540519714,-0.8017550110816956,-0.49689099192619324,-0.33209800720214844,-0.860388994216919,-0.49689099192619324,-0.11327199637889862,-0.7039600014686584,-0.7041670083999634,-0.09267830103635788,-0.860388994216919,-0.49689099192619324,-0.11327199637889862,-0.7039600014686584,-0.7041670083999634,-0.09267830103635788,-0.7039600014686584,-0.7041670083999634,-0.09267830103635788,-0.860388994216919,-0.49689099192619324,-0.11327199637889862,-0.860388994216919,-0.49689099192619324,0.11327199637889862,-0.7039600014686584,-0.7041670083999634,0.09267830103635788,-0.860388994216919,-0.49689099192619324,0.11327199637889862,-0.7039600014686584,-0.7041670083999634,0.09267830103635788,-0.7039600014686584,-0.7041670083999634,0.09267830103635788,-0.860388994216919,-0.49689099192619324,0.11327199637889862,-0.8017550110816956,-0.49689099192619324,0.33209800720214844,-0.655987024307251,-0.7041670083999634,0.2717190086841583,-0.8017550110816956,-0.49689099192619324,0.33209800720214844,-0.655987024307251,-0.7041670083999634,0.2717190086841583,-0.655987024307251,-0.7041670083999634,0.2717190086841583,-0.8017550110816956,-0.49689099192619324,0.33209800720214844,-0.6884829998016357,-0.49689099192619324,0.5282909870147705,-0.5633080005645752,-0.7041670083999634,0.4322420060634613,-0.6884829998016357,-0.49689099192619324,0.5282909870147705,-0.5633080005645752,-0.7041670083999634,0.4322420060634613,-0.5633080005645752,-0.7041670083999634,0.4322420060634613,-0.6884829998016357,-0.49689099192619324,0.5282909870147705,-0.5282909870147705,-0.49689099192619324,0.6884829998016357,-0.4322420060634613,-0.7041670083999634,0.5633080005645752,-0.5282909870147705,-0.49689099192619324,0.6884829998016357,-0.4322420060634613,-0.7041670083999634,0.5633080005645752,-0.4322420060634613,-0.7041670083999634,0.5633080005645752,-0.5282909870147705,-0.49689099192619324,0.6884829998016357,-0.33209800720214844,-0.49689099192619324,0.8017550110816956,-0.2717190086841583,-0.7041670083999634,0.655987024307251,-0.33209800720214844,-0.49689099192619324,0.8017550110816956,-0.2717190086841583,-0.7041670083999634,0.655987024307251,-0.2717190086841583,-0.7041670083999634,0.655987024307251,-0.33209800720214844,-0.49689099192619324,0.8017550110816956,-0.11327199637889862,-0.49689099192619324,0.860388994216919,-0.09267830103635788,-0.7041670083999634,0.7039600014686584,-0.11327199637889862,-0.49689099192619324,0.860388994216919,-0.09267830103635788,-0.7041670083999634,0.7039600014686584,-0.09267830103635788,-0.7041670083999634,0.7039600014686584,-0.11327199637889862,-0.49689099192619324,0.860388994216919,0.11327199637889862,-0.49689099192619324,0.860388994216919,0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.11327199637889862,-0.49689099192619324,0.860388994216919,0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.09267830103635788,-0.7041670083999634,0.7039600014686584,0.11327199637889862,-0.49689099192619324,0.860388994216919,0.33209800720214844,-0.49689099192619324,0.8017550110816956,0.27171799540519714,-0.7041670083999634,0.655987024307251,0.33209800720214844,-0.49689099192619324,0.8017550110816956,0.27171799540519714,-0.7041670083999634,0.655987024307251,0.27171799540519714,-0.7041670083999634,0.655987024307251,0.33209800720214844,-0.49689099192619324,0.8017550110816956,0.5282909870147705,-0.49689099192619324,0.6884829998016357,0.4322420060634613,-0.7041670083999634,0.5633080005645752,0.5282909870147705,-0.49689099192619324,0.6884829998016357,0.4322420060634613,-0.7041670083999634,0.5633080005645752,0.4322420060634613,-0.7041670083999634,0.5633080005645752,0.5282909870147705,-0.49689099192619324,0.6884829998016357,0.6884829998016357,-0.49689099192619324,0.5282909870147705,0.5633080005645752,-0.7041670083999634,0.4322420060634613,0.6884829998016357,-0.49689099192619324,0.5282909870147705,0.5633080005645752,-0.7041670083999634,0.4322420060634613,0.5633080005645752,-0.7041670083999634,0.4322420060634613,0.6884829998016357,-0.49689099192619324,0.5282909870147705,0.8017550110816956,-0.49689099192619324,0.33209800720214844,0.655987024307251,-0.7041670083999634,0.27171799540519714,0.8017550110816956,-0.49689099192619324,0.33209800720214844,0.655987024307251,-0.7041670083999634,0.27171799540519714,0.655987024307251,-0.7041670083999634,0.27171799540519714,0.8017550110816956,-0.49689099192619324,0.33209800720214844,0.860388994216919,-0.49689099192619324,0.11327199637889862,0.7039600014686584,-0.7041670083999634,0.09267830103635788,0.860388994216919,-0.49689099192619324,0.11327199637889862,0.7039600014686584,-0.7041670083999634,0.09267830103635788,0.7039600014686584,-0.7041670083999634,0.09267830103635788,0.860388994216919,-0.49689099192619324,0.11327199637889862,0.860388994216919,-0.49689099192619324,-0.11327199637889862,0.7039600014686584,-0.7041670083999634,-0.09267830103635788,0.860388994216919,-0.49689099192619324,-0.11327199637889862,0.7039600014686584,-0.7041670083999634,-0.09267830103635788,0.7039600014686584,-0.7041670083999634,-0.09267830103635788,0.860388994216919,-0.49689099192619324,-0.11327199637889862,0.8017550110816956,-0.49689099192619324,-0.33209800720214844,0.655987024307251,-0.7041670083999634,-0.27171799540519714,0.8017550110816956,-0.49689099192619324,-0.33209800720214844,0.655987024307251,-0.7041670083999634,-0.27171799540519714,0.655987024307251,-0.7041670083999634,-0.27171799540519714,0.8017550110816956,-0.49689099192619324,-0.33209800720214844,0.6884829998016357,-0.49689099192619324,-0.5282909870147705,0.5633080005645752,-0.7041670083999634,-0.4322420060634613,0.6884829998016357,-0.49689099192619324,-0.5282909870147705,0.5633080005645752,-0.7041670083999634,-0.4322420060634613,0.5633080005645752,-0.7041670083999634,-0.4322420060634613,0.6884829998016357,-0.49689099192619324,-0.5282909870147705,0.5282909870147705,-0.49689099192619324,-0.6884829998016357,0.4322420060634613,-0.7041670083999634,-0.5633080005645752,0.5282909870147705,-0.49689099192619324,-0.6884829998016357,0.4322420060634613,-0.7041670083999634,-0.5633080005645752,0.4322420060634613,-0.7041670083999634,-0.5633080005645752,0.5282909870147705,-0.49689099192619324,-0.6884829998016357,0.33209800720214844,-0.49689099192619324,-0.8017550110816956,0.27171799540519714,-0.7041670083999634,-0.655987024307251,0.33209800720214844,-0.49689099192619324,-0.8017550110816956,0.27171799540519714,-0.7041670083999634,-0.655987024307251,0.27171799540519714,-0.7041670083999634,-0.655987024307251,0.33209800720214844,-0.49689099192619324,-0.8017550110816956,0.11327199637889862,-0.49689099192619324,-0.860388994216919,0.09267830103635788,-0.7041670083999634,-0.7039600014686584,0.11327199637889862,-0.49689099192619324,-0.860388994216919,0.09267830103635788,-0.7041670083999634,-0.7039600014686584,0.09267830103635788,-0.7041670083999634,-0.7039600014686584,0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.11327199637889862,-0.49689099192619324,-0.860388994216919,-0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.36984801292419434,-0.25682100653648376,-0.8928920030593872,-0.33209800720214844,-0.49689099192619324,-0.8017550110816956,-0.36984801292419434,-0.25682100653648376,-0.8928920030593872,-0.33209800720214844,-0.49689099192619324,-0.8017550110816956,-0.33209800720214844,-0.49689099192619324,-0.8017550110816956,-0.36984801292419434,-0.25682100653648376,-0.8928920030593872,-0.5883430242538452,-0.25682100653648376,-0.7667440176010132,-0.5282909870147705,-0.49689099192619324,-0.6884829998016357,-0.5883430242538452,-0.25682100653648376,-0.7667440176010132,-0.5282909870147705,-0.49689099192619324,-0.6884829998016357,-0.5282909870147705,-0.49689099192619324,-0.6884829998016357,-0.5883430242538452,-0.25682100653648376,-0.7667440176010132,-0.7667440176010132,-0.25682100653648376,-0.5883430242538452,-0.6884829998016357,-0.49689099192619324,-0.5282909870147705,-0.7667440176010132,-0.25682100653648376,-0.5883430242538452,-0.6884829998016357,-0.49689099192619324,-0.5282909870147705,-0.6884829998016357,-0.49689099192619324,-0.5282909870147705,-0.7667440176010132,-0.25682100653648376,-0.5883430242538452,-0.8928920030593872,-0.25682100653648376,-0.36984801292419434,-0.8017550110816956,-0.49689099192619324,-0.33209800720214844,-0.8928920030593872,-0.25682100653648376,-0.36984801292419434,-0.8017550110816956,-0.49689099192619324,-0.33209800720214844,-0.8017550110816956,-0.49689099192619324,-0.33209800720214844,-0.8928920030593872,-0.25682100653648376,-0.36984801292419434,-0.9581909775733948,-0.25682100653648376,-0.12614800035953522,-0.860388994216919,-0.49689099192619324,-0.11327199637889862,-0.9581909775733948,-0.25682100653648376,-0.12614800035953522,-0.860388994216919,-0.49689099192619324,-0.11327199637889862,-0.860388994216919,-0.49689099192619324,-0.11327199637889862,-0.9581909775733948,-0.25682100653648376,-0.12614800035953522,-0.9581909775733948,-0.25682100653648376,0.12614800035953522,-0.860388994216919,-0.49689099192619324,0.11327199637889862,-0.9581909775733948,-0.25682100653648376,0.12614800035953522,-0.860388994216919,-0.49689099192619324,0.11327199637889862,-0.860388994216919,-0.49689099192619324,0.11327199637889862,-0.9581909775733948,-0.25682100653648376,0.12614800035953522,-0.8928920030593872,-0.25682100653648376,0.36984801292419434,-0.8017550110816956,-0.49689099192619324,0.33209800720214844,-0.8928920030593872,-0.25682100653648376,0.36984801292419434,-0.8017550110816956,-0.49689099192619324,0.33209800720214844,-0.8017550110816956,-0.49689099192619324,0.33209800720214844,-0.8928920030593872,-0.25682100653648376,0.36984801292419434,-0.7667440176010132,-0.25682100653648376,0.5883430242538452,-0.6884829998016357,-0.49689099192619324,0.5282909870147705,-0.7667440176010132,-0.25682100653648376,0.5883430242538452,-0.6884829998016357,-0.49689099192619324,0.5282909870147705,-0.6884829998016357,-0.49689099192619324,0.5282909870147705,-0.7667440176010132,-0.25682100653648376,0.5883430242538452,-0.5883430242538452,-0.25682100653648376,0.7667440176010132,-0.5282909870147705,-0.49689099192619324,0.6884829998016357,-0.5883430242538452,-0.25682100653648376,0.7667440176010132,-0.5282909870147705,-0.49689099192619324,0.6884829998016357,-0.5282909870147705,-0.49689099192619324,0.6884829998016357,-0.5883430242538452,-0.25682100653648376,0.7667440176010132,-0.36984801292419434,-0.25682100653648376,0.8928920030593872,-0.33209800720214844,-0.49689099192619324,0.8017550110816956,-0.36984801292419434,-0.25682100653648376,0.8928920030593872,-0.33209800720214844,-0.49689099192619324,0.8017550110816956,-0.33209800720214844,-0.49689099192619324,0.8017550110816956,-0.36984801292419434,-0.25682100653648376,0.8928920030593872,-0.12614800035953522,-0.25682100653648376,0.9581909775733948,-0.11327199637889862,-0.49689099192619324,0.860388994216919,-0.12614800035953522,-0.25682100653648376,0.9581909775733948,-0.11327199637889862,-0.49689099192619324,0.860388994216919,-0.11327199637889862,-0.49689099192619324,0.860388994216919,-0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.11327199637889862,-0.49689099192619324,0.860388994216919,0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.11327199637889862,-0.49689099192619324,0.860388994216919,0.11327199637889862,-0.49689099192619324,0.860388994216919,0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.36984801292419434,-0.25682100653648376,0.8928920030593872,0.33209800720214844,-0.49689099192619324,0.8017550110816956,0.36984801292419434,-0.25682100653648376,0.8928920030593872,0.33209800720214844,-0.49689099192619324,0.8017550110816956,0.33209800720214844,-0.49689099192619324,0.8017550110816956,0.36984801292419434,-0.25682100653648376,0.8928920030593872,0.5883430242538452,-0.25682100653648376,0.7667440176010132,0.5282909870147705,-0.49689099192619324,0.6884829998016357,0.5883430242538452,-0.25682100653648376,0.7667440176010132,0.5282909870147705,-0.49689099192619324,0.6884829998016357,0.5282909870147705,-0.49689099192619324,0.6884829998016357,0.5883430242538452,-0.25682100653648376,0.7667440176010132,0.7667440176010132,-0.25682100653648376,0.5883430242538452,0.6884829998016357,-0.49689099192619324,0.5282909870147705,0.7667440176010132,-0.25682100653648376,0.5883430242538452,0.6884829998016357,-0.49689099192619324,0.5282909870147705,0.6884829998016357,-0.49689099192619324,0.5282909870147705,0.7667440176010132,-0.25682100653648376,0.5883430242538452,0.8928920030593872,-0.25682100653648376,0.36984801292419434,0.8017550110816956,-0.49689099192619324,0.33209800720214844,0.8928920030593872,-0.25682100653648376,0.36984801292419434,0.8017550110816956,-0.49689099192619324,0.33209800720214844,0.8017550110816956,-0.49689099192619324,0.33209800720214844,0.8928920030593872,-0.25682100653648376,0.36984801292419434,0.9581909775733948,-0.25682100653648376,0.12614800035953522,0.860388994216919,-0.49689099192619324,0.11327199637889862,0.9581909775733948,-0.25682100653648376,0.12614800035953522,0.860388994216919,-0.49689099192619324,0.11327199637889862,0.860388994216919,-0.49689099192619324,0.11327199637889862,0.9581909775733948,-0.25682100653648376,0.12614800035953522,0.9581909775733948,-0.25682100653648376,-0.12614800035953522,0.860388994216919,-0.49689099192619324,-0.11327199637889862,0.9581909775733948,-0.25682100653648376,-0.12614800035953522,0.860388994216919,-0.49689099192619324,-0.11327199637889862,0.860388994216919,-0.49689099192619324,-0.11327199637889862,0.9581909775733948,-0.25682100653648376,-0.12614800035953522,0.8928920030593872,-0.25682100653648376,-0.36984801292419434,0.8017550110816956,-0.49689099192619324,-0.33209800720214844,0.8928920030593872,-0.25682100653648376,-0.36984801292419434,0.8017550110816956,-0.49689099192619324,-0.33209800720214844,0.8017550110816956,-0.49689099192619324,-0.33209800720214844,0.8928920030593872,-0.25682100653648376,-0.36984801292419434,0.7667440176010132,-0.25682100653648376,-0.5883430242538452,0.6884829998016357,-0.49689099192619324,-0.5282909870147705,0.7667440176010132,-0.25682100653648376,-0.5883430242538452,0.6884829998016357,-0.49689099192619324,-0.5282909870147705,0.6884829998016357,-0.49689099192619324,-0.5282909870147705,0.7667440176010132,-0.25682100653648376,-0.5883430242538452,0.5883430242538452,-0.25682100653648376,-0.7667440176010132,0.5282909870147705,-0.49689099192619324,-0.6884829998016357,0.5883430242538452,-0.25682100653648376,-0.7667440176010132,0.5282909870147705,-0.49689099192619324,-0.6884829998016357,0.5282909870147705,-0.49689099192619324,-0.6884829998016357,0.5883430242538452,-0.25682100653648376,-0.7667440176010132,0.36984801292419434,-0.25682100653648376,-0.8928920030593872,0.33209800720214844,-0.49689099192619324,-0.8017550110816956,0.36984801292419434,-0.25682100653648376,-0.8928920030593872,0.33209800720214844,-0.49689099192619324,-0.8017550110816956,0.33209800720214844,-0.49689099192619324,-0.8017550110816956,0.36984801292419434,-0.25682100653648376,-0.8928920030593872,0.12614800035953522,-0.25682100653648376,-0.9581909775733948,0.11327199637889862,-0.49689099192619324,-0.860388994216919,0.12614800035953522,-0.25682100653648376,-0.9581909775733948,0.11327199637889862,-0.49689099192619324,-0.860388994216919,0.11327199637889862,-0.49689099192619324,-0.860388994216919,0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.13052600622177124,-4.5082700239618134e-8,-0.991445004940033,-0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.13052600622177124,-4.5082700239618134e-8,-0.991445004940033,-0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.12614800035953522,-0.25682100653648376,-0.9581909775733948,-0.13052600622177124,-4.5082700239618134e-8,-0.991445004940033,-0.38268300890922546,-5.259650137645622e-8,-0.9238799810409546,-0.36984801292419434,-0.25682100653648376,-0.8928920030593872,-0.38268300890922546,-5.259650137645622e-8,-0.9238799810409546,-0.36984801292419434,-0.25682100653648376,-0.8928920030593872,-0.36984801292419434,-0.25682100653648376,-0.8928920030593872,-0.38268300890922546,-5.259650137645622e-8,-0.9238799810409546,-0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,-0.5883430242538452,-0.25682100653648376,-0.7667440176010132,-0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,-0.5883430242538452,-0.25682100653648376,-0.7667440176010132,-0.5883430242538452,-0.25682100653648376,-0.7667440176010132,-0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,-0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,-0.7667440176010132,-0.25682100653648376,-0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,-0.7667440176010132,-0.25682100653648376,-0.5883430242538452,-0.7667440176010132,-0.25682100653648376,-0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,-0.9238799810409546,-4.5082700239618134e-8,-0.38268300890922546,-0.8928920030593872,-0.25682100653648376,-0.36984801292419434,-0.9238799810409546,-4.5082700239618134e-8,-0.38268300890922546,-0.8928920030593872,-0.25682100653648376,-0.36984801292419434,-0.8928920030593872,-0.25682100653648376,-0.36984801292419434,-0.9238799810409546,-4.5082700239618134e-8,-0.38268300890922546,-0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,-0.9581909775733948,-0.25682100653648376,-0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,-0.9581909775733948,-0.25682100653648376,-0.12614800035953522,-0.9581909775733948,-0.25682100653648376,-0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,-0.991445004940033,-5.259650137645622e-8,0.13052600622177124,-0.9581909775733948,-0.25682100653648376,0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,0.13052600622177124,-0.9581909775733948,-0.25682100653648376,0.12614800035953522,-0.9581909775733948,-0.25682100653648376,0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,0.13052600622177124,-0.9238799810409546,-5.259650137645622e-8,0.38268300890922546,-0.8928920030593872,-0.25682100653648376,0.36984801292419434,-0.9238799810409546,-5.259650137645622e-8,0.38268300890922546,-0.8928920030593872,-0.25682100653648376,0.36984801292419434,-0.8928920030593872,-0.25682100653648376,0.36984801292419434,-0.9238799810409546,-5.259650137645622e-8,0.38268300890922546,-0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,-0.7667440176010132,-0.25682100653648376,0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,-0.7667440176010132,-0.25682100653648376,0.5883430242538452,-0.7667440176010132,-0.25682100653648376,0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,-0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,-0.5883430242538452,-0.25682100653648376,0.7667440176010132,-0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,-0.5883430242538452,-0.25682100653648376,0.7667440176010132,-0.5883430242538452,-0.25682100653648376,0.7667440176010132,-0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,-0.38268300890922546,-4.5082700239618134e-8,0.9238799810409546,-0.36984801292419434,-0.25682100653648376,0.8928920030593872,-0.38268300890922546,-4.5082700239618134e-8,0.9238799810409546,-0.36984801292419434,-0.25682100653648376,0.8928920030593872,-0.36984801292419434,-0.25682100653648376,0.8928920030593872,-0.38268300890922546,-4.5082700239618134e-8,0.9238799810409546,-0.13052600622177124,-5.259650137645622e-8,0.991445004940033,-0.12614800035953522,-0.25682100653648376,0.9581909775733948,-0.13052600622177124,-5.259650137645622e-8,0.991445004940033,-0.12614800035953522,-0.25682100653648376,0.9581909775733948,-0.12614800035953522,-0.25682100653648376,0.9581909775733948,-0.13052600622177124,-5.259650137645622e-8,0.991445004940033,0.13052600622177124,-4.5082700239618134e-8,0.991445004940033,0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.13052600622177124,-4.5082700239618134e-8,0.991445004940033,0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.12614800035953522,-0.25682100653648376,0.9581909775733948,0.13052600622177124,-4.5082700239618134e-8,0.991445004940033,0.38268300890922546,-5.259650137645622e-8,0.9238799810409546,0.36984801292419434,-0.25682100653648376,0.8928920030593872,0.38268300890922546,-5.259650137645622e-8,0.9238799810409546,0.36984801292419434,-0.25682100653648376,0.8928920030593872,0.36984801292419434,-0.25682100653648376,0.8928920030593872,0.38268300890922546,-5.259650137645622e-8,0.9238799810409546,0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,0.5883430242538452,-0.25682100653648376,0.7667440176010132,0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,0.5883430242538452,-0.25682100653648376,0.7667440176010132,0.5883430242538452,-0.25682100653648376,0.7667440176010132,0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,0.7667440176010132,-0.25682100653648376,0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,0.7667440176010132,-0.25682100653648376,0.5883430242538452,0.7667440176010132,-0.25682100653648376,0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,0.9238799810409546,-4.5082700239618134e-8,0.38268300890922546,0.8928920030593872,-0.25682100653648376,0.36984801292419434,0.9238799810409546,-4.5082700239618134e-8,0.38268300890922546,0.8928920030593872,-0.25682100653648376,0.36984801292419434,0.8928920030593872,-0.25682100653648376,0.36984801292419434,0.9238799810409546,-4.5082700239618134e-8,0.38268300890922546,0.991445004940033,-5.259650137645622e-8,0.13052600622177124,0.9581909775733948,-0.25682100653648376,0.12614800035953522,0.991445004940033,-5.259650137645622e-8,0.13052600622177124,0.9581909775733948,-0.25682100653648376,0.12614800035953522,0.9581909775733948,-0.25682100653648376,0.12614800035953522,0.991445004940033,-5.259650137645622e-8,0.13052600622177124,0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,0.9581909775733948,-0.25682100653648376,-0.12614800035953522,0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,0.9581909775733948,-0.25682100653648376,-0.12614800035953522,0.9581909775733948,-0.25682100653648376,-0.12614800035953522,0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,0.9238799810409546,-5.259650137645622e-8,-0.38268300890922546,0.8928920030593872,-0.25682100653648376,-0.36984801292419434,0.9238799810409546,-5.259650137645622e-8,-0.38268300890922546,0.8928920030593872,-0.25682100653648376,-0.36984801292419434,0.8928920030593872,-0.25682100653648376,-0.36984801292419434,0.9238799810409546,-5.259650137645622e-8,-0.38268300890922546,0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,0.7667440176010132,-0.25682100653648376,-0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,0.7667440176010132,-0.25682100653648376,-0.5883430242538452,0.7667440176010132,-0.25682100653648376,-0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,0.5883430242538452,-0.25682100653648376,-0.7667440176010132,0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,0.5883430242538452,-0.25682100653648376,-0.7667440176010132,0.5883430242538452,-0.25682100653648376,-0.7667440176010132,0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,0.38268300890922546,-4.5082700239618134e-8,-0.9238799810409546,0.36984801292419434,-0.25682100653648376,-0.8928920030593872,0.38268300890922546,-4.5082700239618134e-8,-0.9238799810409546,0.36984801292419434,-0.25682100653648376,-0.8928920030593872,0.36984801292419434,-0.25682100653648376,-0.8928920030593872,0.38268300890922546,-4.5082700239618134e-8,-0.9238799810409546,0.13052600622177124,-5.259650137645622e-8,-0.991445004940033,0.12614800035953522,-0.25682100653648376,-0.9581909775733948,0.13052600622177124,-5.259650137645622e-8,-0.991445004940033,0.12614800035953522,-0.25682100653648376,-0.9581909775733948,0.12614800035953522,-0.25682100653648376,-0.9581909775733948,0.13052600622177124,-5.259650137645622e-8,-0.991445004940033,-0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.13052600622177124,-4.5082700239618134e-8,-0.991445004940033,-0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.13052600622177124,-4.5082700239618134e-8,-0.991445004940033,-0.13052600622177124,-4.5082700239618134e-8,-0.991445004940033,-0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.36984801292419434,0.25682100653648376,-0.8928920030593872,-0.38268300890922546,-5.259650137645622e-8,-0.9238799810409546,-0.36984801292419434,0.25682100653648376,-0.8928920030593872,-0.38268300890922546,-5.259650137645622e-8,-0.9238799810409546,-0.38268300890922546,-5.259650137645622e-8,-0.9238799810409546,-0.36984801292419434,0.25682100653648376,-0.8928920030593872,-0.5883430242538452,0.25682100653648376,-0.7667440176010132,-0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,-0.5883430242538452,0.25682100653648376,-0.7667440176010132,-0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,-0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,-0.5883430242538452,0.25682100653648376,-0.7667440176010132,-0.766743004322052,0.25682100653648376,-0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,-0.766743004322052,0.25682100653648376,-0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,-0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,-0.766743004322052,0.25682100653648376,-0.5883430242538452,-0.8928920030593872,0.25682100653648376,-0.36984801292419434,-0.9238799810409546,-4.5082700239618134e-8,-0.38268300890922546,-0.8928920030593872,0.25682100653648376,-0.36984801292419434,-0.9238799810409546,-4.5082700239618134e-8,-0.38268300890922546,-0.9238799810409546,-4.5082700239618134e-8,-0.38268300890922546,-0.8928920030593872,0.25682100653648376,-0.36984801292419434,-0.9581909775733948,0.25682100653648376,-0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,-0.9581909775733948,0.25682100653648376,-0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,-0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,-0.9581909775733948,0.25682100653648376,-0.12614800035953522,-0.9581909775733948,0.25682100653648376,0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,0.13052600622177124,-0.9581909775733948,0.25682100653648376,0.12614800035953522,-0.991445004940033,-5.259650137645622e-8,0.13052600622177124,-0.991445004940033,-5.259650137645622e-8,0.13052600622177124,-0.9581909775733948,0.25682100653648376,0.12614800035953522,-0.8928920030593872,0.25682100653648376,0.36984801292419434,-0.9238799810409546,-5.259650137645622e-8,0.38268300890922546,-0.8928920030593872,0.25682100653648376,0.36984801292419434,-0.9238799810409546,-5.259650137645622e-8,0.38268300890922546,-0.9238799810409546,-5.259650137645622e-8,0.38268300890922546,-0.8928920030593872,0.25682100653648376,0.36984801292419434,-0.7667440176010132,0.25682100653648376,0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,-0.7667440176010132,0.25682100653648376,0.5883430242538452,-0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,-0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,-0.7667440176010132,0.25682100653648376,0.5883430242538452,-0.5883430242538452,0.25682100653648376,0.766743004322052,-0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,-0.5883430242538452,0.25682100653648376,0.766743004322052,-0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,-0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,-0.5883430242538452,0.25682100653648376,0.766743004322052,-0.36984801292419434,0.25682100653648376,0.8928920030593872,-0.38268300890922546,-4.5082700239618134e-8,0.9238799810409546,-0.36984801292419434,0.25682100653648376,0.8928920030593872,-0.38268300890922546,-4.5082700239618134e-8,0.9238799810409546,-0.38268300890922546,-4.5082700239618134e-8,0.9238799810409546,-0.36984801292419434,0.25682100653648376,0.8928920030593872,-0.12614800035953522,0.25682100653648376,0.9581909775733948,-0.13052600622177124,-5.259650137645622e-8,0.991445004940033,-0.12614800035953522,0.25682100653648376,0.9581909775733948,-0.13052600622177124,-5.259650137645622e-8,0.991445004940033,-0.13052600622177124,-5.259650137645622e-8,0.991445004940033,-0.12614800035953522,0.25682100653648376,0.9581909775733948,0.12614800035953522,0.25682100653648376,0.9581909775733948,0.13052600622177124,-4.5082700239618134e-8,0.991445004940033,0.12614800035953522,0.25682100653648376,0.9581909775733948,0.13052600622177124,-4.5082700239618134e-8,0.991445004940033,0.13052600622177124,-4.5082700239618134e-8,0.991445004940033,0.12614800035953522,0.25682100653648376,0.9581909775733948,0.36984801292419434,0.25682100653648376,0.8928920030593872,0.38268300890922546,-5.259650137645622e-8,0.9238799810409546,0.36984801292419434,0.25682100653648376,0.8928920030593872,0.38268300890922546,-5.259650137645622e-8,0.9238799810409546,0.38268300890922546,-5.259650137645622e-8,0.9238799810409546,0.36984801292419434,0.25682100653648376,0.8928920030593872,0.5883430242538452,0.25682100653648376,0.7667440176010132,0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,0.5883430242538452,0.25682100653648376,0.7667440176010132,0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,0.6087610125541687,-5.259650137645622e-8,0.7933530211448669,0.5883430242538452,0.25682100653648376,0.7667440176010132,0.766743004322052,0.25682100653648376,0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,0.766743004322052,0.25682100653648376,0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,0.7933530211448669,-5.259650137645622e-8,0.6087610125541687,0.766743004322052,0.25682100653648376,0.5883430242538452,0.8928920030593872,0.25682100653648376,0.36984801292419434,0.9238799810409546,-4.5082700239618134e-8,0.38268300890922546,0.8928920030593872,0.25682100653648376,0.36984801292419434,0.9238799810409546,-4.5082700239618134e-8,0.38268300890922546,0.9238799810409546,-4.5082700239618134e-8,0.38268300890922546,0.8928920030593872,0.25682100653648376,0.36984801292419434,0.9581909775733948,0.25682100653648376,0.12614800035953522,0.991445004940033,-5.259650137645622e-8,0.13052600622177124,0.9581909775733948,0.25682100653648376,0.12614800035953522,0.991445004940033,-5.259650137645622e-8,0.13052600622177124,0.991445004940033,-5.259650137645622e-8,0.13052600622177124,0.9581909775733948,0.25682100653648376,0.12614800035953522,0.9581909775733948,0.25682100653648376,-0.12614800035953522,0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,0.9581909775733948,0.25682100653648376,-0.12614800035953522,0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,0.991445004940033,-5.259650137645622e-8,-0.13052600622177124,0.9581909775733948,0.25682100653648376,-0.12614800035953522,0.8928920030593872,0.25682100653648376,-0.36984801292419434,0.9238799810409546,-5.259650137645622e-8,-0.38268300890922546,0.8928920030593872,0.25682100653648376,-0.36984801292419434,0.9238799810409546,-5.259650137645622e-8,-0.38268300890922546,0.9238799810409546,-5.259650137645622e-8,-0.38268300890922546,0.8928920030593872,0.25682100653648376,-0.36984801292419434,0.7667440176010132,0.25682100653648376,-0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,0.7667440176010132,0.25682100653648376,-0.5883430242538452,0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,0.7933530211448669,-5.259650137645622e-8,-0.6087610125541687,0.7667440176010132,0.25682100653648376,-0.5883430242538452,0.5883430242538452,0.25682100653648376,-0.766743004322052,0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,0.5883430242538452,0.25682100653648376,-0.766743004322052,0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,0.6087610125541687,-5.259650137645622e-8,-0.7933530211448669,0.5883430242538452,0.25682100653648376,-0.766743004322052,0.36984801292419434,0.25682100653648376,-0.8928920030593872,0.38268300890922546,-4.5082700239618134e-8,-0.9238799810409546,0.36984801292419434,0.25682100653648376,-0.8928920030593872,0.38268300890922546,-4.5082700239618134e-8,-0.9238799810409546,0.38268300890922546,-4.5082700239618134e-8,-0.9238799810409546,0.36984801292419434,0.25682100653648376,-0.8928920030593872,0.12614800035953522,0.25682100653648376,-0.9581909775733948,0.13052600622177124,-5.259650137645622e-8,-0.991445004940033,0.12614800035953522,0.25682100653648376,-0.9581909775733948,0.13052600622177124,-5.259650137645622e-8,-0.991445004940033,0.13052600622177124,-5.259650137645622e-8,-0.991445004940033,0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.12614800035953522,0.25682100653648376,-0.9581909775733948,-0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.33209800720214844,0.49689099192619324,-0.8017550110816956,-0.36984801292419434,0.25682100653648376,-0.8928920030593872,-0.33209800720214844,0.49689099192619324,-0.8017550110816956,-0.36984801292419434,0.25682100653648376,-0.8928920030593872,-0.36984801292419434,0.25682100653648376,-0.8928920030593872,-0.33209800720214844,0.49689099192619324,-0.8017550110816956,-0.5282909870147705,0.49689099192619324,-0.6884819865226746,-0.5883430242538452,0.25682100653648376,-0.7667440176010132,-0.5282909870147705,0.49689099192619324,-0.6884819865226746,-0.5883430242538452,0.25682100653648376,-0.7667440176010132,-0.5883430242538452,0.25682100653648376,-0.7667440176010132,-0.5282909870147705,0.49689099192619324,-0.6884819865226746,-0.6884819865226746,0.49689099192619324,-0.5282909870147705,-0.766743004322052,0.25682100653648376,-0.5883430242538452,-0.6884819865226746,0.49689099192619324,-0.5282909870147705,-0.766743004322052,0.25682100653648376,-0.5883430242538452,-0.766743004322052,0.25682100653648376,-0.5883430242538452,-0.6884819865226746,0.49689099192619324,-0.5282909870147705,-0.8017550110816956,0.49689099192619324,-0.33209800720214844,-0.8928920030593872,0.25682100653648376,-0.36984801292419434,-0.8017550110816956,0.49689099192619324,-0.33209800720214844,-0.8928920030593872,0.25682100653648376,-0.36984801292419434,-0.8928920030593872,0.25682100653648376,-0.36984801292419434,-0.8017550110816956,0.49689099192619324,-0.33209800720214844,-0.860388994216919,0.49689099192619324,-0.11327199637889862,-0.9581909775733948,0.25682100653648376,-0.12614800035953522,-0.860388994216919,0.49689099192619324,-0.11327199637889862,-0.9581909775733948,0.25682100653648376,-0.12614800035953522,-0.9581909775733948,0.25682100653648376,-0.12614800035953522,-0.860388994216919,0.49689099192619324,-0.11327199637889862,-0.860388994216919,0.49689099192619324,0.11327199637889862,-0.9581909775733948,0.25682100653648376,0.12614800035953522,-0.860388994216919,0.49689099192619324,0.11327199637889862,-0.9581909775733948,0.25682100653648376,0.12614800035953522,-0.9581909775733948,0.25682100653648376,0.12614800035953522,-0.860388994216919,0.49689099192619324,0.11327199637889862,-0.8017550110816956,0.49689099192619324,0.33209800720214844,-0.8928920030593872,0.25682100653648376,0.36984801292419434,-0.8017550110816956,0.49689099192619324,0.33209800720214844,-0.8928920030593872,0.25682100653648376,0.36984801292419434,-0.8928920030593872,0.25682100653648376,0.36984801292419434,-0.8017550110816956,0.49689099192619324,0.33209800720214844,-0.6884819865226746,0.49689099192619324,0.5282909870147705,-0.7667440176010132,0.25682100653648376,0.5883430242538452,-0.6884819865226746,0.49689099192619324,0.5282909870147705,-0.7667440176010132,0.25682100653648376,0.5883430242538452,-0.7667440176010132,0.25682100653648376,0.5883430242538452,-0.6884819865226746,0.49689099192619324,0.5282909870147705,-0.5282909870147705,0.49689099192619324,0.6884819865226746,-0.5883430242538452,0.25682100653648376,0.766743004322052,-0.5282909870147705,0.49689099192619324,0.6884819865226746,-0.5883430242538452,0.25682100653648376,0.766743004322052,-0.5883430242538452,0.25682100653648376,0.766743004322052,-0.5282909870147705,0.49689099192619324,0.6884819865226746,-0.33209800720214844,0.49689099192619324,0.8017550110816956,-0.36984801292419434,0.25682100653648376,0.8928920030593872,-0.33209800720214844,0.49689099192619324,0.8017550110816956,-0.36984801292419434,0.25682100653648376,0.8928920030593872,-0.36984801292419434,0.25682100653648376,0.8928920030593872,-0.33209800720214844,0.49689099192619324,0.8017550110816956,-0.11327199637889862,0.49689099192619324,0.860388994216919,-0.12614800035953522,0.25682100653648376,0.9581909775733948,-0.11327199637889862,0.49689099192619324,0.860388994216919,-0.12614800035953522,0.25682100653648376,0.9581909775733948,-0.12614800035953522,0.25682100653648376,0.9581909775733948,-0.11327199637889862,0.49689099192619324,0.860388994216919,0.11327199637889862,0.49689099192619324,0.860388994216919,0.12614800035953522,0.25682100653648376,0.9581909775733948,0.11327199637889862,0.49689099192619324,0.860388994216919,0.12614800035953522,0.25682100653648376,0.9581909775733948,0.12614800035953522,0.25682100653648376,0.9581909775733948,0.11327199637889862,0.49689099192619324,0.860388994216919,0.33209800720214844,0.49689099192619324,0.8017550110816956,0.36984801292419434,0.25682100653648376,0.8928920030593872,0.33209800720214844,0.49689099192619324,0.8017550110816956,0.36984801292419434,0.25682100653648376,0.8928920030593872,0.36984801292419434,0.25682100653648376,0.8928920030593872,0.33209800720214844,0.49689099192619324,0.8017550110816956,0.5282909870147705,0.49689099192619324,0.6884819865226746,0.5883430242538452,0.25682100653648376,0.7667440176010132,0.5282909870147705,0.49689099192619324,0.6884819865226746,0.5883430242538452,0.25682100653648376,0.7667440176010132,0.5883430242538452,0.25682100653648376,0.7667440176010132,0.5282909870147705,0.49689099192619324,0.6884819865226746,0.6884819865226746,0.49689099192619324,0.5282909870147705,0.766743004322052,0.25682100653648376,0.5883430242538452,0.6884819865226746,0.49689099192619324,0.5282909870147705,0.766743004322052,0.25682100653648376,0.5883430242538452,0.766743004322052,0.25682100653648376,0.5883430242538452,0.6884819865226746,0.49689099192619324,0.5282909870147705,0.8017550110816956,0.49689099192619324,0.33209800720214844,0.8928920030593872,0.25682100653648376,0.36984801292419434,0.8017550110816956,0.49689099192619324,0.33209800720214844,0.8928920030593872,0.25682100653648376,0.36984801292419434,0.8928920030593872,0.25682100653648376,0.36984801292419434,0.8017550110816956,0.49689099192619324,0.33209800720214844,0.860388994216919,0.49689099192619324,0.11327199637889862,0.9581909775733948,0.25682100653648376,0.12614800035953522,0.860388994216919,0.49689099192619324,0.11327199637889862,0.9581909775733948,0.25682100653648376,0.12614800035953522,0.9581909775733948,0.25682100653648376,0.12614800035953522,0.860388994216919,0.49689099192619324,0.11327199637889862,0.860388994216919,0.49689099192619324,-0.11327199637889862,0.9581909775733948,0.25682100653648376,-0.12614800035953522,0.860388994216919,0.49689099192619324,-0.11327199637889862,0.9581909775733948,0.25682100653648376,-0.12614800035953522,0.9581909775733948,0.25682100653648376,-0.12614800035953522,0.860388994216919,0.49689099192619324,-0.11327199637889862,0.8017550110816956,0.49689099192619324,-0.33209800720214844,0.8928920030593872,0.25682100653648376,-0.36984801292419434,0.8017550110816956,0.49689099192619324,-0.33209800720214844,0.8928920030593872,0.25682100653648376,-0.36984801292419434,0.8928920030593872,0.25682100653648376,-0.36984801292419434,0.8017550110816956,0.49689099192619324,-0.33209800720214844,0.6884819865226746,0.49689099192619324,-0.5282909870147705,0.7667440176010132,0.25682100653648376,-0.5883430242538452,0.6884819865226746,0.49689099192619324,-0.5282909870147705,0.7667440176010132,0.25682100653648376,-0.5883430242538452,0.7667440176010132,0.25682100653648376,-0.5883430242538452,0.6884819865226746,0.49689099192619324,-0.5282909870147705,0.5282909870147705,0.49689099192619324,-0.6884819865226746,0.5883430242538452,0.25682100653648376,-0.766743004322052,0.5282909870147705,0.49689099192619324,-0.6884819865226746,0.5883430242538452,0.25682100653648376,-0.766743004322052,0.5883430242538452,0.25682100653648376,-0.766743004322052,0.5282909870147705,0.49689099192619324,-0.6884819865226746,0.33209800720214844,0.49689099192619324,-0.8017550110816956,0.36984801292419434,0.25682100653648376,-0.8928920030593872,0.33209800720214844,0.49689099192619324,-0.8017550110816956,0.36984801292419434,0.25682100653648376,-0.8928920030593872,0.36984801292419434,0.25682100653648376,-0.8928920030593872,0.33209800720214844,0.49689099192619324,-0.8017550110816956,0.11327199637889862,0.49689099192619324,-0.860388994216919,0.12614800035953522,0.25682100653648376,-0.9581909775733948,0.11327199637889862,0.49689099192619324,-0.860388994216919,0.12614800035953522,0.25682100653648376,-0.9581909775733948,0.12614800035953522,0.25682100653648376,-0.9581909775733948,0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.11327199637889862,0.49689099192619324,-0.860388994216919,-0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.2717190086841583,0.7041670083999634,-0.655987024307251,-0.33209800720214844,0.49689099192619324,-0.8017550110816956,-0.2717190086841583,0.7041670083999634,-0.655987024307251,-0.33209800720214844,0.49689099192619324,-0.8017550110816956,-0.33209800720214844,0.49689099192619324,-0.8017550110816956,-0.2717190086841583,0.7041670083999634,-0.655987024307251,-0.4322420060634613,0.7041670083999634,-0.5633080005645752,-0.5282909870147705,0.49689099192619324,-0.6884819865226746,-0.4322420060634613,0.7041670083999634,-0.5633080005645752,-0.5282909870147705,0.49689099192619324,-0.6884819865226746,-0.5282909870147705,0.49689099192619324,-0.6884819865226746,-0.4322420060634613,0.7041670083999634,-0.5633080005645752,-0.5633080005645752,0.7041670083999634,-0.4322420060634613,-0.6884819865226746,0.49689099192619324,-0.5282909870147705,-0.5633080005645752,0.7041670083999634,-0.4322420060634613,-0.6884819865226746,0.49689099192619324,-0.5282909870147705,-0.6884819865226746,0.49689099192619324,-0.5282909870147705,-0.5633080005645752,0.7041670083999634,-0.4322420060634613,-0.6559860110282898,0.7041670083999634,-0.2717190086841583,-0.8017550110816956,0.49689099192619324,-0.33209800720214844,-0.6559860110282898,0.7041670083999634,-0.2717190086841583,-0.8017550110816956,0.49689099192619324,-0.33209800720214844,-0.8017550110816956,0.49689099192619324,-0.33209800720214844,-0.6559860110282898,0.7041670083999634,-0.2717190086841583,-0.7039600014686584,0.7041670083999634,-0.09267809987068176,-0.860388994216919,0.49689099192619324,-0.11327199637889862,-0.7039600014686584,0.7041670083999634,-0.09267809987068176,-0.860388994216919,0.49689099192619324,-0.11327199637889862,-0.860388994216919,0.49689099192619324,-0.11327199637889862,-0.7039600014686584,0.7041670083999634,-0.09267809987068176,-0.7039600014686584,0.7041670083999634,0.09267809987068176,-0.860388994216919,0.49689099192619324,0.11327199637889862,-0.7039600014686584,0.7041670083999634,0.09267809987068176,-0.860388994216919,0.49689099192619324,0.11327199637889862,-0.860388994216919,0.49689099192619324,0.11327199637889862,-0.7039600014686584,0.7041670083999634,0.09267809987068176,-0.655987024307251,0.7041670083999634,0.2717190086841583,-0.8017550110816956,0.49689099192619324,0.33209800720214844,-0.655987024307251,0.7041670083999634,0.2717190086841583,-0.8017550110816956,0.49689099192619324,0.33209800720214844,-0.8017550110816956,0.49689099192619324,0.33209800720214844,-0.655987024307251,0.7041670083999634,0.2717190086841583,-0.5633080005645752,0.7041670083999634,0.4322420060634613,-0.6884819865226746,0.49689099192619324,0.5282909870147705,-0.5633080005645752,0.7041670083999634,0.4322420060634613,-0.6884819865226746,0.49689099192619324,0.5282909870147705,-0.6884819865226746,0.49689099192619324,0.5282909870147705,-0.5633080005645752,0.7041670083999634,0.4322420060634613,-0.4322420060634613,0.7041670083999634,0.5633080005645752,-0.5282909870147705,0.49689099192619324,0.6884819865226746,-0.4322420060634613,0.7041670083999634,0.5633080005645752,-0.5282909870147705,0.49689099192619324,0.6884819865226746,-0.5282909870147705,0.49689099192619324,0.6884819865226746,-0.4322420060634613,0.7041670083999634,0.5633080005645752,-0.2717190086841583,0.7041670083999634,0.6559860110282898,-0.33209800720214844,0.49689099192619324,0.8017550110816956,-0.2717190086841583,0.7041670083999634,0.6559860110282898,-0.33209800720214844,0.49689099192619324,0.8017550110816956,-0.33209800720214844,0.49689099192619324,0.8017550110816956,-0.2717190086841583,0.7041670083999634,0.6559860110282898,-0.09267809987068176,0.7041670083999634,0.7039600014686584,-0.11327199637889862,0.49689099192619324,0.860388994216919,-0.09267809987068176,0.7041670083999634,0.7039600014686584,-0.11327199637889862,0.49689099192619324,0.860388994216919,-0.11327199637889862,0.49689099192619324,0.860388994216919,-0.09267809987068176,0.7041670083999634,0.7039600014686584,0.09267809987068176,0.7041670083999634,0.7039600014686584,0.11327199637889862,0.49689099192619324,0.860388994216919,0.09267809987068176,0.7041670083999634,0.7039600014686584,0.11327199637889862,0.49689099192619324,0.860388994216919,0.11327199637889862,0.49689099192619324,0.860388994216919,0.09267809987068176,0.7041670083999634,0.7039600014686584,0.2717190086841583,0.7041670083999634,0.655987024307251,0.33209800720214844,0.49689099192619324,0.8017550110816956,0.2717190086841583,0.7041670083999634,0.655987024307251,0.33209800720214844,0.49689099192619324,0.8017550110816956,0.33209800720214844,0.49689099192619324,0.8017550110816956,0.2717190086841583,0.7041670083999634,0.655987024307251,0.4322420060634613,0.7041670083999634,0.5633080005645752,0.5282909870147705,0.49689099192619324,0.6884819865226746,0.4322420060634613,0.7041670083999634,0.5633080005645752,0.5282909870147705,0.49689099192619324,0.6884819865226746,0.5282909870147705,0.49689099192619324,0.6884819865226746,0.4322420060634613,0.7041670083999634,0.5633080005645752,0.5633080005645752,0.7041670083999634,0.4322420060634613,0.6884819865226746,0.49689099192619324,0.5282909870147705,0.5633080005645752,0.7041670083999634,0.4322420060634613,0.6884819865226746,0.49689099192619324,0.5282909870147705,0.6884819865226746,0.49689099192619324,0.5282909870147705,0.5633080005645752,0.7041670083999634,0.4322420060634613,0.6559860110282898,0.7041670083999634,0.2717190086841583,0.8017550110816956,0.49689099192619324,0.33209800720214844,0.6559860110282898,0.7041670083999634,0.2717190086841583,0.8017550110816956,0.49689099192619324,0.33209800720214844,0.8017550110816956,0.49689099192619324,0.33209800720214844,0.6559860110282898,0.7041670083999634,0.2717190086841583,0.7039600014686584,0.7041670083999634,0.09267809987068176,0.860388994216919,0.49689099192619324,0.11327199637889862,0.7039600014686584,0.7041670083999634,0.09267809987068176,0.860388994216919,0.49689099192619324,0.11327199637889862,0.860388994216919,0.49689099192619324,0.11327199637889862,0.7039600014686584,0.7041670083999634,0.09267809987068176,0.7039600014686584,0.7041670083999634,-0.09267809987068176,0.860388994216919,0.49689099192619324,-0.11327199637889862,0.7039600014686584,0.7041670083999634,-0.09267809987068176,0.860388994216919,0.49689099192619324,-0.11327199637889862,0.860388994216919,0.49689099192619324,-0.11327199637889862,0.7039600014686584,0.7041670083999634,-0.09267809987068176,0.655987024307251,0.7041670083999634,-0.2717190086841583,0.8017550110816956,0.49689099192619324,-0.33209800720214844,0.655987024307251,0.7041670083999634,-0.2717190086841583,0.8017550110816956,0.49689099192619324,-0.33209800720214844,0.8017550110816956,0.49689099192619324,-0.33209800720214844,0.655987024307251,0.7041670083999634,-0.2717190086841583,0.5633080005645752,0.7041670083999634,-0.4322420060634613,0.6884819865226746,0.49689099192619324,-0.5282909870147705,0.5633080005645752,0.7041670083999634,-0.4322420060634613,0.6884819865226746,0.49689099192619324,-0.5282909870147705,0.6884819865226746,0.49689099192619324,-0.5282909870147705,0.5633080005645752,0.7041670083999634,-0.4322420060634613,0.4322420060634613,0.7041670083999634,-0.5633080005645752,0.5282909870147705,0.49689099192619324,-0.6884819865226746,0.4322420060634613,0.7041670083999634,-0.5633080005645752,0.5282909870147705,0.49689099192619324,-0.6884819865226746,0.5282909870147705,0.49689099192619324,-0.6884819865226746,0.4322420060634613,0.7041670083999634,-0.5633080005645752,0.2717190086841583,0.7041670083999634,-0.6559860110282898,0.33209800720214844,0.49689099192619324,-0.8017550110816956,0.2717190086841583,0.7041670083999634,-0.6559860110282898,0.33209800720214844,0.49689099192619324,-0.8017550110816956,0.33209800720214844,0.49689099192619324,-0.8017550110816956,0.2717190086841583,0.7041670083999634,-0.6559860110282898,0.09267809987068176,0.7041670083999634,-0.7039600014686584,0.11327199637889862,0.49689099192619324,-0.860388994216919,0.09267809987068176,0.7041670083999634,-0.7039600014686584,0.11327199637889862,0.49689099192619324,-0.860388994216919,0.11327199637889862,0.49689099192619324,-0.860388994216919,0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.09267809987068176,0.7041670083999634,-0.7039600014686584,-0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.19253399968147278,0.8642190098762512,-0.46481800079345703,-0.2717190086841583,0.7041670083999634,-0.655987024307251,-0.19253399968147278,0.8642190098762512,-0.46481800079345703,-0.2717190086841583,0.7041670083999634,-0.655987024307251,-0.2717190086841583,0.7041670083999634,-0.655987024307251,-0.19253399968147278,0.8642190098762512,-0.46481800079345703,-0.30627700686454773,0.8642190098762512,-0.39914798736572266,-0.4322420060634613,0.7041670083999634,-0.5633080005645752,-0.30627700686454773,0.8642190098762512,-0.39914798736572266,-0.4322420060634613,0.7041670083999634,-0.5633080005645752,-0.4322420060634613,0.7041670083999634,-0.5633080005645752,-0.30627700686454773,0.8642190098762512,-0.39914798736572266,-0.39914798736572266,0.8642190098762512,-0.30627700686454773,-0.5633080005645752,0.7041670083999634,-0.4322420060634613,-0.39914798736572266,0.8642190098762512,-0.30627700686454773,-0.5633080005645752,0.7041670083999634,-0.4322420060634613,-0.5633080005645752,0.7041670083999634,-0.4322420060634613,-0.39914798736572266,0.8642190098762512,-0.30627700686454773,-0.46481800079345703,0.8642190098762512,-0.19253399968147278,-0.6559860110282898,0.7041670083999634,-0.2717190086841583,-0.46481800079345703,0.8642190098762512,-0.19253399968147278,-0.6559860110282898,0.7041670083999634,-0.2717190086841583,-0.6559860110282898,0.7041670083999634,-0.2717190086841583,-0.46481800079345703,0.8642190098762512,-0.19253399968147278,-0.4988110065460205,0.8642190098762512,-0.06566960364580154,-0.7039600014686584,0.7041670083999634,-0.09267809987068176,-0.4988110065460205,0.8642190098762512,-0.06566960364580154,-0.7039600014686584,0.7041670083999634,-0.09267809987068176,-0.7039600014686584,0.7041670083999634,-0.09267809987068176,-0.4988110065460205,0.8642190098762512,-0.06566960364580154,-0.4988110065460205,0.8642190098762512,0.06566960364580154,-0.7039600014686584,0.7041670083999634,0.09267809987068176,-0.4988110065460205,0.8642190098762512,0.06566960364580154,-0.7039600014686584,0.7041670083999634,0.09267809987068176,-0.7039600014686584,0.7041670083999634,0.09267809987068176,-0.4988110065460205,0.8642190098762512,0.06566960364580154,-0.46481800079345703,0.8642190098762512,0.19253399968147278,-0.655987024307251,0.7041670083999634,0.2717190086841583,-0.46481800079345703,0.8642190098762512,0.19253399968147278,-0.655987024307251,0.7041670083999634,0.2717190086841583,-0.655987024307251,0.7041670083999634,0.2717190086841583,-0.46481800079345703,0.8642190098762512,0.19253399968147278,-0.39914798736572266,0.8642190098762512,0.30627700686454773,-0.5633080005645752,0.7041670083999634,0.4322420060634613,-0.39914798736572266,0.8642190098762512,0.30627700686454773,-0.5633080005645752,0.7041670083999634,0.4322420060634613,-0.5633080005645752,0.7041670083999634,0.4322420060634613,-0.39914798736572266,0.8642190098762512,0.30627700686454773,-0.30627700686454773,0.8642190098762512,0.39914798736572266,-0.4322420060634613,0.7041670083999634,0.5633080005645752,-0.30627700686454773,0.8642190098762512,0.39914798736572266,-0.4322420060634613,0.7041670083999634,0.5633080005645752,-0.4322420060634613,0.7041670083999634,0.5633080005645752,-0.30627700686454773,0.8642190098762512,0.39914798736572266,-0.19253399968147278,0.8642190098762512,0.46481800079345703,-0.2717190086841583,0.7041670083999634,0.6559860110282898,-0.19253399968147278,0.8642190098762512,0.46481800079345703,-0.2717190086841583,0.7041670083999634,0.6559860110282898,-0.2717190086841583,0.7041670083999634,0.6559860110282898,-0.19253399968147278,0.8642190098762512,0.46481800079345703,-0.06566960364580154,0.8642190098762512,0.4988110065460205,-0.09267809987068176,0.7041670083999634,0.7039600014686584,-0.06566960364580154,0.8642190098762512,0.4988110065460205,-0.09267809987068176,0.7041670083999634,0.7039600014686584,-0.09267809987068176,0.7041670083999634,0.7039600014686584,-0.06566960364580154,0.8642190098762512,0.4988110065460205,0.06566960364580154,0.8642190098762512,0.4988110065460205,0.09267809987068176,0.7041670083999634,0.7039600014686584,0.06566960364580154,0.8642190098762512,0.4988110065460205,0.09267809987068176,0.7041670083999634,0.7039600014686584,0.09267809987068176,0.7041670083999634,0.7039600014686584,0.06566960364580154,0.8642190098762512,0.4988110065460205,0.19253399968147278,0.8642190098762512,0.46481800079345703,0.2717190086841583,0.7041670083999634,0.655987024307251,0.19253399968147278,0.8642190098762512,0.46481800079345703,0.2717190086841583,0.7041670083999634,0.655987024307251,0.2717190086841583,0.7041670083999634,0.655987024307251,0.19253399968147278,0.8642190098762512,0.46481800079345703,0.30627700686454773,0.8642190098762512,0.39914798736572266,0.4322420060634613,0.7041670083999634,0.5633080005645752,0.30627700686454773,0.8642190098762512,0.39914798736572266,0.4322420060634613,0.7041670083999634,0.5633080005645752,0.4322420060634613,0.7041670083999634,0.5633080005645752,0.30627700686454773,0.8642190098762512,0.39914798736572266,0.39914798736572266,0.8642190098762512,0.30627700686454773,0.5633080005645752,0.7041670083999634,0.4322420060634613,0.39914798736572266,0.8642190098762512,0.30627700686454773,0.5633080005645752,0.7041670083999634,0.4322420060634613,0.5633080005645752,0.7041670083999634,0.4322420060634613,0.39914798736572266,0.8642190098762512,0.30627700686454773,0.46481800079345703,0.8642190098762512,0.19253399968147278,0.6559860110282898,0.7041670083999634,0.2717190086841583,0.46481800079345703,0.8642190098762512,0.19253399968147278,0.6559860110282898,0.7041670083999634,0.2717190086841583,0.6559860110282898,0.7041670083999634,0.2717190086841583,0.46481800079345703,0.8642190098762512,0.19253399968147278,0.4988110065460205,0.8642190098762512,0.06566960364580154,0.7039600014686584,0.7041670083999634,0.09267809987068176,0.4988110065460205,0.8642190098762512,0.06566960364580154,0.7039600014686584,0.7041670083999634,0.09267809987068176,0.7039600014686584,0.7041670083999634,0.09267809987068176,0.4988110065460205,0.8642190098762512,0.06566960364580154,0.4988110065460205,0.8642190098762512,-0.06566960364580154,0.7039600014686584,0.7041670083999634,-0.09267809987068176,0.4988110065460205,0.8642190098762512,-0.06566960364580154,0.7039600014686584,0.7041670083999634,-0.09267809987068176,0.7039600014686584,0.7041670083999634,-0.09267809987068176,0.4988110065460205,0.8642190098762512,-0.06566960364580154,0.46481800079345703,0.8642190098762512,-0.19253399968147278,0.655987024307251,0.7041670083999634,-0.2717190086841583,0.46481800079345703,0.8642190098762512,-0.19253399968147278,0.655987024307251,0.7041670083999634,-0.2717190086841583,0.655987024307251,0.7041670083999634,-0.2717190086841583,0.46481800079345703,0.8642190098762512,-0.19253399968147278,0.39914798736572266,0.8642190098762512,-0.30627700686454773,0.5633080005645752,0.7041670083999634,-0.4322420060634613,0.39914798736572266,0.8642190098762512,-0.30627700686454773,0.5633080005645752,0.7041670083999634,-0.4322420060634613,0.5633080005645752,0.7041670083999634,-0.4322420060634613,0.39914798736572266,0.8642190098762512,-0.30627700686454773,0.30627700686454773,0.8642190098762512,-0.39914798736572266,0.4322420060634613,0.7041670083999634,-0.5633080005645752,0.30627700686454773,0.8642190098762512,-0.39914798736572266,0.4322420060634613,0.7041670083999634,-0.5633080005645752,0.4322420060634613,0.7041670083999634,-0.5633080005645752,0.30627700686454773,0.8642190098762512,-0.39914798736572266,0.19253399968147278,0.8642190098762512,-0.46481800079345703,0.2717190086841583,0.7041670083999634,-0.6559860110282898,0.19253399968147278,0.8642190098762512,-0.46481800079345703,0.2717190086841583,0.7041670083999634,-0.6559860110282898,0.2717190086841583,0.7041670083999634,-0.6559860110282898,0.19253399968147278,0.8642190098762512,-0.46481800079345703,0.06566960364580154,0.8642190098762512,-0.4988110065460205,0.09267809987068176,0.7041670083999634,-0.7039600014686584,0.06566960364580154,0.8642190098762512,-0.4988110065460205,0.09267809987068176,0.7041670083999634,-0.7039600014686584,0.09267809987068176,0.7041670083999634,-0.7039600014686584,0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.03404499962925911,0.9653850197792053,-0.2585979998111725,-0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.03404499962925911,0.9653850197792053,-0.2585979998111725,-0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.06566960364580154,0.8642190098762512,-0.4988110065460205,-0.03404499962925911,0.9653850197792053,-0.2585979998111725,-0.09981510043144226,0.9653850197792053,-0.2409750074148178,-0.19253399968147278,0.8642190098762512,-0.46481800079345703,-0.09981510043144226,0.9653850197792053,-0.2409750074148178,-0.19253399968147278,0.8642190098762512,-0.46481800079345703,-0.19253399968147278,0.8642190098762512,-0.46481800079345703,-0.09981510043144226,0.9653850197792053,-0.2409750074148178,-0.15878300368785858,0.9653850197792053,-0.2069299966096878,-0.30627700686454773,0.8642190098762512,-0.39914798736572266,-0.15878300368785858,0.9653850197792053,-0.2069299966096878,-0.30627700686454773,0.8642190098762512,-0.39914798736572266,-0.30627700686454773,0.8642190098762512,-0.39914798736572266,-0.15878300368785858,0.9653850197792053,-0.2069299966096878,-0.2069299966096878,0.9653850197792053,-0.15878300368785858,-0.39914798736572266,0.8642190098762512,-0.30627700686454773,-0.2069299966096878,0.9653850197792053,-0.15878300368785858,-0.39914798736572266,0.8642190098762512,-0.30627700686454773,-0.39914798736572266,0.8642190098762512,-0.30627700686454773,-0.2069299966096878,0.9653850197792053,-0.15878300368785858,-0.2409750074148178,0.9653850197792053,-0.09981510043144226,-0.46481800079345703,0.8642190098762512,-0.19253399968147278,-0.2409750074148178,0.9653850197792053,-0.09981510043144226,-0.46481800079345703,0.8642190098762512,-0.19253399968147278,-0.46481800079345703,0.8642190098762512,-0.19253399968147278,-0.2409750074148178,0.9653850197792053,-0.09981510043144226,-0.2585979998111725,0.9653850197792053,-0.03404499962925911,-0.4988110065460205,0.8642190098762512,-0.06566960364580154,-0.2585979998111725,0.9653850197792053,-0.03404499962925911,-0.4988110065460205,0.8642190098762512,-0.06566960364580154,-0.4988110065460205,0.8642190098762512,-0.06566960364580154,-0.2585979998111725,0.9653850197792053,-0.03404499962925911,-0.2585979998111725,0.9653850197792053,0.03404499962925911,-0.4988110065460205,0.8642190098762512,0.06566960364580154,-0.2585979998111725,0.9653850197792053,0.03404499962925911,-0.4988110065460205,0.8642190098762512,0.06566960364580154,-0.4988110065460205,0.8642190098762512,0.06566960364580154,-0.2585979998111725,0.9653850197792053,0.03404499962925911,-0.2409750074148178,0.9653850197792053,0.09981510043144226,-0.46481800079345703,0.8642190098762512,0.19253399968147278,-0.2409750074148178,0.9653850197792053,0.09981510043144226,-0.46481800079345703,0.8642190098762512,0.19253399968147278,-0.46481800079345703,0.8642190098762512,0.19253399968147278,-0.2409750074148178,0.9653850197792053,0.09981510043144226,-0.2069299966096878,0.9653850197792053,0.15878300368785858,-0.39914798736572266,0.8642190098762512,0.30627700686454773,-0.2069299966096878,0.9653850197792053,0.15878300368785858,-0.39914798736572266,0.8642190098762512,0.30627700686454773,-0.39914798736572266,0.8642190098762512,0.30627700686454773,-0.2069299966096878,0.9653850197792053,0.15878300368785858,-0.15878300368785858,0.9653850197792053,0.2069299966096878,-0.30627700686454773,0.8642190098762512,0.39914798736572266,-0.15878300368785858,0.9653850197792053,0.2069299966096878,-0.30627700686454773,0.8642190098762512,0.39914798736572266,-0.30627700686454773,0.8642190098762512,0.39914798736572266,-0.15878300368785858,0.9653850197792053,0.2069299966096878,-0.09981510043144226,0.9653850197792053,0.2409750074148178,-0.19253399968147278,0.8642190098762512,0.46481800079345703,-0.09981510043144226,0.9653850197792053,0.2409750074148178,-0.19253399968147278,0.8642190098762512,0.46481800079345703,-0.19253399968147278,0.8642190098762512,0.46481800079345703,-0.09981510043144226,0.9653850197792053,0.2409750074148178,-0.03404499962925911,0.9653850197792053,0.2585979998111725,-0.06566960364580154,0.8642190098762512,0.4988110065460205,-0.03404499962925911,0.9653850197792053,0.2585979998111725,-0.06566960364580154,0.8642190098762512,0.4988110065460205,-0.06566960364580154,0.8642190098762512,0.4988110065460205,-0.03404499962925911,0.9653850197792053,0.2585979998111725,0.03404499962925911,0.9653850197792053,0.2585979998111725,0.06566960364580154,0.8642190098762512,0.4988110065460205,0.03404499962925911,0.9653850197792053,0.2585979998111725,0.06566960364580154,0.8642190098762512,0.4988110065460205,0.06566960364580154,0.8642190098762512,0.4988110065460205,0.03404499962925911,0.9653850197792053,0.2585979998111725,0.09981510043144226,0.9653850197792053,0.2409750074148178,0.19253399968147278,0.8642190098762512,0.46481800079345703,0.09981510043144226,0.9653850197792053,0.2409750074148178,0.19253399968147278,0.8642190098762512,0.46481800079345703,0.19253399968147278,0.8642190098762512,0.46481800079345703,0.09981510043144226,0.9653850197792053,0.2409750074148178,0.15878300368785858,0.9653850197792053,0.2069299966096878,0.30627700686454773,0.8642190098762512,0.39914798736572266,0.15878300368785858,0.9653850197792053,0.2069299966096878,0.30627700686454773,0.8642190098762512,0.39914798736572266,0.30627700686454773,0.8642190098762512,0.39914798736572266,0.15878300368785858,0.9653850197792053,0.2069299966096878,0.2069299966096878,0.9653850197792053,0.15878300368785858,0.39914798736572266,0.8642190098762512,0.30627700686454773,0.2069299966096878,0.9653850197792053,0.15878300368785858,0.39914798736572266,0.8642190098762512,0.30627700686454773,0.39914798736572266,0.8642190098762512,0.30627700686454773,0.2069299966096878,0.9653850197792053,0.15878300368785858,0.2409750074148178,0.9653850197792053,0.09981510043144226,0.46481800079345703,0.8642190098762512,0.19253399968147278,0.2409750074148178,0.9653850197792053,0.09981510043144226,0.46481800079345703,0.8642190098762512,0.19253399968147278,0.46481800079345703,0.8642190098762512,0.19253399968147278,0.2409750074148178,0.9653850197792053,0.09981510043144226,0.2585979998111725,0.9653850197792053,0.03404499962925911,0.4988110065460205,0.8642190098762512,0.06566960364580154,0.3821989893913269,0.9227089881896973,0.05031739920377731,0.4988110065460205,0.8642190098762512,0.06566960364580154,0.4988110065460205,0.8642190098762512,0.06566960364580154,0.3821989893913269,0.9227089881896973,0.05031739920377731,0.2585979998111725,0.9653850197792053,-0.03404499962925911,0.4988110065460205,0.8642190098762512,-0.06566960364580154,0.2585979998111725,0.9653850197792053,-0.03404499962925911,0.4988110065460205,0.8642190098762512,-0.06566960364580154,0.4988110065460205,0.8642190098762512,-0.06566960364580154,0.2585979998111725,0.9653850197792053,-0.03404499962925911,0.2409750074148178,0.9653850197792053,-0.09981510043144226,0.46481800079345703,0.8642190098762512,-0.19253399968147278,0.2409750074148178,0.9653850197792053,-0.09981510043144226,0.46481800079345703,0.8642190098762512,-0.19253399968147278,0.46481800079345703,0.8642190098762512,-0.19253399968147278,0.2409750074148178,0.9653850197792053,-0.09981510043144226,0.2069299966096878,0.9653850197792053,-0.15878300368785858,0.39914798736572266,0.8642190098762512,-0.30627700686454773,0.2069299966096878,0.9653850197792053,-0.15878300368785858,0.39914798736572266,0.8642190098762512,-0.30627700686454773,0.39914798736572266,0.8642190098762512,-0.30627700686454773,0.2069299966096878,0.9653850197792053,-0.15878300368785858,0.15878300368785858,0.9653850197792053,-0.2069299966096878,0.30627700686454773,0.8642190098762512,-0.39914798736572266,0.15878300368785858,0.9653850197792053,-0.2069299966096878,0.30627700686454773,0.8642190098762512,-0.39914798736572266,0.30627700686454773,0.8642190098762512,-0.39914798736572266,0.15878300368785858,0.9653850197792053,-0.2069299966096878,0.09981510043144226,0.9653850197792053,-0.2409750074148178,0.19253399968147278,0.8642190098762512,-0.46481800079345703,0.09981510043144226,0.9653850197792053,-0.2409750074148178,0.19253399968147278,0.8642190098762512,-0.46481800079345703,0.19253399968147278,0.8642190098762512,-0.46481800079345703,0.09981510043144226,0.9653850197792053,-0.2409750074148178,0.03404499962925911,0.9653850197792053,-0.2585979998111725,0.06566960364580154,0.8642190098762512,-0.4988110065460205,0.03404499962925911,0.9653850197792053,-0.2585979998111725,0.06566960364580154,0.8642190098762512,-0.4988110065460205,0.06566960364580154,0.8642190098762512,-0.4988110065460205,0.03404499962925911,0.9653850197792053,-0.2585979998111725,-0.03404499962925911,0.9653850197792053,-0.2585979998111725,-0.03404499962925911,0.9653850197792053,-0.2585979998111725,-0.017181500792503357,0.9912989735603333,-0.13050700724124908,-0.09981510043144226,0.9653850197792053,-0.2409750074148178,-0.09981510043144226,0.9653850197792053,-0.2409750074148178,-0.05037369951605797,0.9912989735603333,-0.12161300331354141,-0.15878300368785858,0.9653850197792053,-0.2069299966096878,-0.15878300368785858,0.9653850197792053,-0.2069299966096878,-0.08013299852609634,0.9912989735603333,-0.10443100333213806,-0.2069299966096878,0.9653850197792053,-0.15878300368785858,-0.2069299966096878,0.9653850197792053,-0.15878300368785858,-0.10443100333213806,0.9912989735603333,-0.08013299852609634,-0.2409750074148178,0.9653850197792053,-0.09981510043144226,-0.2409750074148178,0.9653850197792053,-0.09981510043144226,-0.12161300331354141,0.9912989735603333,-0.05037369951605797,-0.2585979998111725,0.9653850197792053,-0.03404499962925911,-0.2585979998111725,0.9653850197792053,-0.03404499962925911,-0.13050700724124908,0.9912989735603333,-0.017181500792503357,-0.2585979998111725,0.9653850197792053,0.03404499962925911,-0.2585979998111725,0.9653850197792053,0.03404499962925911,-0.13050700724124908,0.9912989735603333,0.017181500792503357,-0.2409750074148178,0.9653850197792053,0.09981510043144226,-0.2409750074148178,0.9653850197792053,0.09981510043144226,-0.12161300331354141,0.9912989735603333,0.05037369951605797,-0.2069299966096878,0.9653850197792053,0.15878300368785858,-0.2069299966096878,0.9653850197792053,0.15878300368785858,-0.10443100333213806,0.9912989735603333,0.08013299852609634,-0.15878300368785858,0.9653850197792053,0.2069299966096878,-0.15878300368785858,0.9653850197792053,0.2069299966096878,-0.08013299852609634,0.9912989735603333,0.10443100333213806,-0.09981510043144226,0.9653850197792053,0.2409750074148178,-0.09981510043144226,0.9653850197792053,0.2409750074148178,-0.05037369951605797,0.9912989735603333,0.12161300331354141,-0.03404499962925911,0.9653850197792053,0.2585979998111725,-0.03404499962925911,0.9653850197792053,0.2585979998111725,-0.017181500792503357,0.9912989735603333,0.13050700724124908,0.03404499962925911,0.9653850197792053,0.2585979998111725,0.03404499962925911,0.9653850197792053,0.2585979998111725,0.017181500792503357,0.9912989735603333,0.13050700724124908,0.09981510043144226,0.9653850197792053,0.2409750074148178,0.09981510043144226,0.9653850197792053,0.2409750074148178,0.05037369951605797,0.9912989735603333,0.12161300331354141,0.15878300368785858,0.9653850197792053,0.2069299966096878,0.15878300368785858,0.9653850197792053,0.2069299966096878,0.08013299852609634,0.9912989735603333,0.10443100333213806,0.2069299966096878,0.9653850197792053,0.15878300368785858,0.2069299966096878,0.9653850197792053,0.15878300368785858,0.10443100333213806,0.9912989735603333,0.08013299852609634,0.2409750074148178,0.9653850197792053,0.09981510043144226,0.2409750074148178,0.9653850197792053,0.09981510043144226,0.12161300331354141,0.9912989735603333,0.05037369951605797,0.2585979998111725,0.9653850197792053,0.03404499962925911,0.13050700724124908,0.9912989735603333,0.017181500792503357,0.13050700724124908,0.9912989735603333,0.017181500792503357,0.2585979998111725,0.9653850197792053,-0.03404499962925911,0.2585979998111725,0.9653850197792053,-0.03404499962925911,0.13050700724124908,0.9912989735603333,-0.017181500792503357,0.2409750074148178,0.9653850197792053,-0.09981510043144226,0.2409750074148178,0.9653850197792053,-0.09981510043144226,0.12161300331354141,0.9912989735603333,-0.05037369951605797,0.2069299966096878,0.9653850197792053,-0.15878300368785858,0.2069299966096878,0.9653850197792053,-0.15878300368785858,0.10443100333213806,0.9912989735603333,-0.08013299852609634,0.15878300368785858,0.9653850197792053,-0.2069299966096878,0.15878300368785858,0.9653850197792053,-0.2069299966096878,0.08013299852609634,0.9912989735603333,-0.10443100333213806,0.09981510043144226,0.9653850197792053,-0.2409750074148178,0.09981510043144226,0.9653850197792053,-0.2409750074148178,0.05037369951605797,0.9912989735603333,-0.12161300331354141,0.03404499962925911,0.9653850197792053,-0.2585979998111725,0.03404499962925911,0.9653850197792053,-0.2585979998111725,0.017181500792503357,0.9912989735603333,-0.13050700724124908,-0.045908600091934204,0.9978899955749512,0.045908600091934204,-0.045908600091934204,0.9978899955749512,0.045908600091934204,-0.06492459774017334,0.9978899955749512,0,-0.045908600091934204,0.9978899955749512,0.045908600091934204,-0.06492459774017334,0.9978899955749512,0,-0.06492459774017334,0.9978899955749512,0,-0.045908600091934204,0.9978899955749512,0.045908600091934204,0,0.9978899955749512,0.06492459774017334,-0.045908600091934204,0.9978899955749512,0.045908600091934204,0,0.9978899955749512,0.06492459774017334,0,0.9978899955749512,0.06492459774017334,-0.045908600091934204,0.9978899955749512,0.045908600091934204,0.045908600091934204,0.9978899955749512,0.045908600091934204,0.045908600091934204,0.9978899955749512,0.045908600091934204,0,0.9978899955749512,0.06492459774017334,0.045908600091934204,0.9978899955749512,0.045908600091934204,0,0.9978899955749512,0.06492459774017334,0,0.9978899955749512,0.06492459774017334,0.045908600091934204,0.9978899955749512,0.045908600091934204,0.06492459774017334,0.9978899955749512,0,0.045908600091934204,0.9978899955749512,0.045908600091934204,0.06492459774017334,0.9978899955749512,0,0.06492459774017334,0.9978899955749512,0,0.045908600091934204,0.9978899955749512,0.045908600091934204,0.045908600091934204,0.9978899955749512,-0.045908600091934204,0.045908600091934204,0.9978899955749512,-0.045908600091934204,0.06492459774017334,0.9978899955749512,0,0.045908600091934204,0.9978899955749512,-0.045908600091934204,0.06492459774017334,0.9978899955749512,0,0.06492459774017334,0.9978899955749512,0,0.045908600091934204,0.9978899955749512,-0.045908600091934204,0,0.9978899955749512,-0.06492459774017334,0.045908600091934204,0.9978899955749512,-0.045908600091934204,0,0.9978899955749512,-0.06492459774017334,0,0.9978899955749512,-0.06492459774017334,0.045908600091934204,0.9978899955749512,-0.045908600091934204,-0.045908600091934204,0.9978899955749512,-0.045908600091934204,-0.045908600091934204,0.9978899955749512,-0.045908600091934204,0,0.9978899955749512,-0.06492459774017334,-0.045908600091934204,0.9978899955749512,-0.045908600091934204,0,0.9978899955749512,-0.06492459774017334,0,0.9978899955749512,-0.06492459774017334,-0.045908600091934204,0.9978899955749512,-0.045908600091934204,-0.06492459774017334,0.9978899955749512,0,-0.045908600091934204,0.9978899955749512,-0.045908600091934204,-0.06492459774017334,0.9978899955749512,0,-0.06492459774017334,0.9978899955749512,0,-0.045908600091934204,0.9978899955749512,-0.045908600091934204,-0.9015290141105652,0.21862700581550598,0.37342599034309387,-0.9015290141105652,0.21862700581550598,0.37342599034309387,-0.9015290141105652,0.21862700581550598,0.37342599034309387,-0.9015290141105652,0.21862700581550598,0.37342599034309387,-0.9015290141105652,0.21862700581550598,0.37342599034309387,-0.9015290141105652,0.21862700581550598,0.37342599034309387,-0.37342599034309387,0.21862700581550598,0.9015290141105652,-0.37342599034309387,0.21862700581550598,0.9015290141105652,-0.37342599034309387,0.21862700581550598,0.9015290141105652,-0.37342599034309387,0.21862700581550598,0.9015290141105652,-0.37342599034309387,0.21862700581550598,0.9015290141105652,-0.37342599034309387,0.21862700581550598,0.9015290141105652,0.37342599034309387,0.21862700581550598,0.9015290141105652,0.37342599034309387,0.21862700581550598,0.9015290141105652,0.37342599034309387,0.21862700581550598,0.9015290141105652,0.37342599034309387,0.21862700581550598,0.9015290141105652,0.37342599034309387,0.21862700581550598,0.9015290141105652,0.37342599034309387,0.21862700581550598,0.9015290141105652,0.9015290141105652,0.21862700581550598,0.37342599034309387,0.9015290141105652,0.21862700581550598,0.37342599034309387,0.9015290141105652,0.21862700581550598,0.37342599034309387,0.9015290141105652,0.21862700581550598,0.37342599034309387,0.9015290141105652,0.21862700581550598,0.37342599034309387,0.9015290141105652,0.21862700581550598,0.37342599034309387,0.9015290141105652,0.21862700581550598,-0.37342599034309387,0.9015290141105652,0.21862700581550598,-0.37342599034309387,0.9015290141105652,0.21862700581550598,-0.37342599034309387,0.9015290141105652,0.21862700581550598,-0.37342599034309387,0.9015290141105652,0.21862700581550598,-0.37342599034309387,0.9015290141105652,0.21862700581550598,-0.37342599034309387,0.37342599034309387,0.21862700581550598,-0.9015290141105652,0.37342599034309387,0.21862700581550598,-0.9015290141105652,0.37342599034309387,0.21862700581550598,-0.9015290141105652,0.37342599034309387,0.21862700581550598,-0.9015290141105652,0.37342599034309387,0.21862700581550598,-0.9015290141105652,0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.37342599034309387,0.21862700581550598,-0.9015290141105652,-0.9015290141105652,0.21862700581550598,-0.37342599034309387,-0.9015290141105652,0.21862700581550598,-0.37342599034309387,-0.9015290141105652,0.21862700581550598,-0.37342599034309387,-0.9015290141105652,0.21862700581550598,-0.37342599034309387,-0.9015290141105652,0.21862700581550598,-0.37342599034309387,-0.9015290141105652,0.21862700581550598,-0.37342599034309387,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.38268399238586426,0,0.9238799810409546,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.9238799810409546,0,-0.38268399238586426,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,-0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.38268399238586426,0,-0.9238799810409546,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,-0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426,0.9238799810409546,0,0.38268399238586426],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"uv\": {\n\t\t\t\t\t\t\"itemSize\": 2,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.16666699945926666,0.33333298563957214,0.16666699945926666,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.16666699945926666,1,0.16666699945926666,0.6666669845581055,0.19444400072097778,1,0.16666699945926666,1,0.19444400072097778,0.6666669845581055,0.19444400072097778,0,0.19444400072097778,0.33333298563957214,0.19444400072097778,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.33333298563957214,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.19444400072097778,0.6666669845581055,0.19444400072097778,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.19444400072097778,1,0.19444400072097778,0.6666669845581055,0.2222220003604889,1,0.19444400072097778,1,0.2222220003604889,0.6666669845581055,0.2222220003604889,0,0.2222220003604889,0.33333298563957214,0.2222220003604889,0,0.25,0.33333298563957214,0.2222220003604889,0.33333298563957214,0.25,0,0.25,0.33333298563957214,0.2222220003604889,0.6666669845581055,0.2222220003604889,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,0.6666669845581055,0.25,0.33333298563957214,0.25,0.6666669845581055,0.2222220003604889,1,0.2222220003604889,0.6666669845581055,0.25,1,0.2222220003604889,1,0.25,0.6666669845581055,0.25,0,0.25,0.33333298563957214,0.25,0,0.2777779996395111,0.33333298563957214,0.25,0.33333298563957214,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.25,1,0.25,0.6666669845581055,0.2777779996395111,1,0.25,1,0.2777779996395111,0.6666669845581055,0.2777779996395111,0,0.2777779996395111,0.33333298563957214,0.2777779996395111,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.33333298563957214,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.2777779996395111,0.6666669845581055,0.2777779996395111,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.2777779996395111,1,0.2777779996395111,0.6666669845581055,0.3055559992790222,1,0.2777779996395111,1,0.3055559992790222,0.6666669845581055,0.3055559992790222,0,0.3055559992790222,0.33333298563957214,0.3055559992790222,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.33333298563957214,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.3055559992790222,0.6666669845581055,0.3055559992790222,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.3055559992790222,1,0.3055559992790222,0.6666669845581055,0.33333298563957214,1,0.3055559992790222,1,0.33333298563957214,0.6666669845581055,0.33333298563957214,0,0.33333298563957214,0.33333298563957214,0.33333298563957214,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.33333298563957214,1,0.33333298563957214,0.6666669845581055,0.36111098527908325,1,0.33333298563957214,1,0.36111098527908325,0.6666669845581055,0.36111098527908325,0,0.36111098527908325,0.33333298563957214,0.36111098527908325,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.33333298563957214,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.36111098527908325,0.6666669845581055,0.36111098527908325,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.36111098527908325,1,0.36111098527908325,0.6666669845581055,0.38888901472091675,1,0.36111098527908325,1,0.38888901472091675,0.6666669845581055,0.38888901472091675,0,0.38888901472091675,0.33333298563957214,0.38888901472091675,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.33333298563957214,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.38888901472091675,0.6666669845581055,0.38888901472091675,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.38888901472091675,1,0.38888901472091675,0.6666669845581055,0.41666701436042786,1,0.38888901472091675,1,0.41666701436042786,0.6666669845581055,0.41666701436042786,0,0.41666701436042786,0.33333298563957214,0.41666701436042786,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.41666701436042786,1,0.41666701436042786,0.6666669845581055,0.4444440007209778,1,0.41666701436042786,1,0.4444440007209778,0.6666669845581055,0.4444440007209778,0,0.4444440007209778,0.33333298563957214,0.4444440007209778,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.33333298563957214,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4444440007209778,0.6666669845581055,0.4444440007209778,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4444440007209778,1,0.4444440007209778,0.6666669845581055,0.4722220003604889,1,0.4444440007209778,1,0.4722220003604889,0.6666669845581055,0.4722220003604889,0,0.4722220003604889,0.33333298563957214,0.4722220003604889,0,0.5,0.33333298563957214,0.4722220003604889,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.4722220003604889,0.6666669845581055,0.4722220003604889,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,0.6666669845581055,0.5,0.33333298563957214,0.5,0.6666669845581055,0.4722220003604889,1,0.4722220003604889,0.6666669845581055,0.5,1,0.4722220003604889,1,0.5,0.6666669845581055,0.5,0.8725000023841858,0.9621760249137878,0.5049999952316284,0.75,0.8725000023841858,0.5378239750862122,0,0.5,0,0,0.125,0.5,0,0,0.125,0,0.125,0.5,0.125,0.5,0.125,0,0.25,0.5,0.125,0,0.25,0,0.25,0.5,0.25,0.5,0.25,0,0.375,0.5,0.25,0,0.375,0,0.375,0.5,0.375,0.5,0.375,0,0.5,0.5,0.375,0,0.5,0,0.5,0.5,0.5,0.5,0.5,0,0.625,0.5,0.5,0,0.625,0,0.625,0.5,0.625,0.5,0.625,0,0.75,0.5,0.625,0,0.75,0,0.75,0.5,0.75,0.5,0.75,0,0.875,0.5,0.75,0,0.875,0,0.875,0.5,0.875,0.5,0.875,0,1,0.5,0.875,0,1,0,1,0.5,0,0.08333329856395721,0.020833300426602364,0,0.041666701436042786,0.08333329856395721,0.041666701436042786,0.08333329856395721,0.0625,0,0.08333329856395721,0.08333329856395721,0.08333329856395721,0.08333329856395721,0.10416699945926666,0,0.125,0.08333329856395721,0.125,0.08333329856395721,0.14583300054073334,0,0.16666699945926666,0.08333329856395721,0.16666699945926666,0.08333329856395721,0.1875,0,0.20833300054073334,0.08333329856395721,0.20833300054073334,0.08333329856395721,0.22916699945926666,0,0.25,0.08333329856395721,0.25,0.08333329856395721,0.27083298563957214,0,0.29166701436042786,0.08333329856395721,0.29166701436042786,0.08333329856395721,0.3125,0,0.33333298563957214,0.08333329856395721,0.33333298563957214,0.08333329856395721,0.35416701436042786,0,0.375,0.08333329856395721,0.375,0.08333329856395721,0.39583298563957214,0,0.41666701436042786,0.08333329856395721,0.41666701436042786,0.08333329856395721,0.4375,0,0.45833298563957214,0.08333329856395721,0.45833298563957214,0.08333329856395721,0.47916701436042786,0,0.5,0.08333329856395721,0.5,0.08333329856395721,0.5208330154418945,0,0.5416669845581055,0.08333329856395721,0.5416669845581055,0.08333329856395721,0.5625,0,0.5833330154418945,0.08333329856395721,0.5833330154418945,0.08333329856395721,0.6041669845581055,0,0.625,0.08333329856395721,0.625,0.08333329856395721,0.6458330154418945,0,0.6666669845581055,0.08333329856395721,0.6666669845581055,0.08333329856395721,0.6875,0,0.7083330154418945,0.08333329856395721,0.7083330154418945,0.08333329856395721,0.7291669845581055,0,0.75,0.08333329856395721,0.75,0.08333329856395721,0.7708330154418945,0,0.7916669845581055,0.08333329856395721,0.7916669845581055,0.08333329856395721,0.8125,0,0.8333330154418945,0.08333329856395721,0.8333330154418945,0.08333329856395721,0.8541669845581055,0,0.875,0.08333329856395721,0.875,0.08333329856395721,0.8958330154418945,0,0.9166669845581055,0.08333329856395721,0.9166669845581055,0.08333329856395721,0.9375,0,0.9583330154418945,0.08333329856395721,0.9583330154418945,0.08333329856395721,0.9791669845581055,0,1,0.08333329856395721,0,0.16666699945926666,0,0.08333329856395721,0.041666701436042786,0.16666699945926666,0,0.08333329856395721,0.041666701436042786,0.08333329856395721,0.041666701436042786,0.16666699945926666,0.041666701436042786,0.16666699945926666,0.041666701436042786,0.08333329856395721,0.08333329856395721,0.16666699945926666,0.041666701436042786,0.08333329856395721,0.08333329856395721,0.08333329856395721,0.08333329856395721,0.16666699945926666,0.08333329856395721,0.16666699945926666,0.08333329856395721,0.08333329856395721,0.125,0.16666699945926666,0.08333329856395721,0.08333329856395721,0.125,0.08333329856395721,0.125,0.16666699945926666,0.125,0.16666699945926666,0.125,0.08333329856395721,0.16666699945926666,0.16666699945926666,0.125,0.08333329856395721,0.16666699945926666,0.08333329856395721,0.16666699945926666,0.16666699945926666,0.16666699945926666,0.16666699945926666,0.16666699945926666,0.08333329856395721,0.20833300054073334,0.16666699945926666,0.16666699945926666,0.08333329856395721,0.20833300054073334,0.08333329856395721,0.20833300054073334,0.16666699945926666,0.20833300054073334,0.16666699945926666,0.20833300054073334,0.08333329856395721,0.25,0.16666699945926666,0.20833300054073334,0.08333329856395721,0.25,0.08333329856395721,0.25,0.16666699945926666,0.25,0.16666699945926666,0.25,0.08333329856395721,0.29166701436042786,0.16666699945926666,0.25,0.08333329856395721,0.29166701436042786,0.08333329856395721,0.29166701436042786,0.16666699945926666,0.29166701436042786,0.16666699945926666,0.29166701436042786,0.08333329856395721,0.33333298563957214,0.16666699945926666,0.29166701436042786,0.08333329856395721,0.33333298563957214,0.08333329856395721,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.08333329856395721,0.375,0.16666699945926666,0.33333298563957214,0.08333329856395721,0.375,0.08333329856395721,0.375,0.16666699945926666,0.375,0.16666699945926666,0.375,0.08333329856395721,0.41666701436042786,0.16666699945926666,0.375,0.08333329856395721,0.41666701436042786,0.08333329856395721,0.41666701436042786,0.16666699945926666,0.41666701436042786,0.16666699945926666,0.41666701436042786,0.08333329856395721,0.45833298563957214,0.16666699945926666,0.41666701436042786,0.08333329856395721,0.45833298563957214,0.08333329856395721,0.45833298563957214,0.16666699945926666,0.45833298563957214,0.16666699945926666,0.45833298563957214,0.08333329856395721,0.5,0.16666699945926666,0.45833298563957214,0.08333329856395721,0.5,0.08333329856395721,0.5,0.16666699945926666,0.5,0.16666699945926666,0.5,0.08333329856395721,0.5416669845581055,0.16666699945926666,0.5,0.08333329856395721,0.5416669845581055,0.08333329856395721,0.5416669845581055,0.16666699945926666,0.5416669845581055,0.16666699945926666,0.5416669845581055,0.08333329856395721,0.5833330154418945,0.16666699945926666,0.5416669845581055,0.08333329856395721,0.5833330154418945,0.08333329856395721,0.5833330154418945,0.16666699945926666,0.5833330154418945,0.16666699945926666,0.5833330154418945,0.08333329856395721,0.625,0.16666699945926666,0.5833330154418945,0.08333329856395721,0.625,0.08333329856395721,0.625,0.16666699945926666,0.625,0.16666699945926666,0.625,0.08333329856395721,0.6666669845581055,0.16666699945926666,0.625,0.08333329856395721,0.6666669845581055,0.08333329856395721,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.08333329856395721,0.7083330154418945,0.16666699945926666,0.6666669845581055,0.08333329856395721,0.7083330154418945,0.08333329856395721,0.7083330154418945,0.16666699945926666,0.7083330154418945,0.16666699945926666,0.7083330154418945,0.08333329856395721,0.75,0.16666699945926666,0.7083330154418945,0.08333329856395721,0.75,0.08333329856395721,0.75,0.16666699945926666,0.75,0.16666699945926666,0.75,0.08333329856395721,0.7916669845581055,0.16666699945926666,0.75,0.08333329856395721,0.7916669845581055,0.08333329856395721,0.7916669845581055,0.16666699945926666,0.7916669845581055,0.16666699945926666,0.7916669845581055,0.08333329856395721,0.8333330154418945,0.16666699945926666,0.7916669845581055,0.08333329856395721,0.8333330154418945,0.08333329856395721,0.8333330154418945,0.16666699945926666,0.8333330154418945,0.16666699945926666,0.8333330154418945,0.08333329856395721,0.875,0.16666699945926666,0.8333330154418945,0.08333329856395721,0.875,0.08333329856395721,0.875,0.16666699945926666,0.875,0.16666699945926666,0.875,0.08333329856395721,0.9166669845581055,0.16666699945926666,0.875,0.08333329856395721,0.9166669845581055,0.08333329856395721,0.9166669845581055,0.16666699945926666,0.9166669845581055,0.16666699945926666,0.9166669845581055,0.08333329856395721,0.9583330154418945,0.16666699945926666,0.9166669845581055,0.08333329856395721,0.9583330154418945,0.08333329856395721,0.9583330154418945,0.16666699945926666,0.9583330154418945,0.16666699945926666,0.9583330154418945,0.08333329856395721,1,0.16666699945926666,0.9583330154418945,0.08333329856395721,1,0.08333329856395721,1,0.16666699945926666,0,0.25,0,0.16666699945926666,0.041666701436042786,0.25,0,0.16666699945926666,0.041666701436042786,0.16666699945926666,0.041666701436042786,0.25,0.041666701436042786,0.25,0.041666701436042786,0.16666699945926666,0.08333329856395721,0.25,0.041666701436042786,0.16666699945926666,0.08333329856395721,0.16666699945926666,0.08333329856395721,0.25,0.08333329856395721,0.25,0.08333329856395721,0.16666699945926666,0.125,0.25,0.08333329856395721,0.16666699945926666,0.125,0.16666699945926666,0.125,0.25,0.125,0.25,0.125,0.16666699945926666,0.16666699945926666,0.25,0.125,0.16666699945926666,0.16666699945926666,0.16666699945926666,0.16666699945926666,0.25,0.16666699945926666,0.25,0.16666699945926666,0.16666699945926666,0.20833300054073334,0.25,0.16666699945926666,0.16666699945926666,0.20833300054073334,0.16666699945926666,0.20833300054073334,0.25,0.20833300054073334,0.25,0.20833300054073334,0.16666699945926666,0.25,0.25,0.20833300054073334,0.16666699945926666,0.25,0.16666699945926666,0.25,0.25,0.25,0.25,0.25,0.16666699945926666,0.29166701436042786,0.25,0.25,0.16666699945926666,0.29166701436042786,0.16666699945926666,0.29166701436042786,0.25,0.29166701436042786,0.25,0.29166701436042786,0.16666699945926666,0.33333298563957214,0.25,0.29166701436042786,0.16666699945926666,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.25,0.33333298563957214,0.25,0.33333298563957214,0.16666699945926666,0.375,0.25,0.33333298563957214,0.16666699945926666,0.375,0.16666699945926666,0.375,0.25,0.375,0.25,0.375,0.16666699945926666,0.41666701436042786,0.25,0.375,0.16666699945926666,0.41666701436042786,0.16666699945926666,0.41666701436042786,0.25,0.41666701436042786,0.25,0.41666701436042786,0.16666699945926666,0.45833298563957214,0.25,0.41666701436042786,0.16666699945926666,0.45833298563957214,0.16666699945926666,0.45833298563957214,0.25,0.45833298563957214,0.25,0.45833298563957214,0.16666699945926666,0.5,0.25,0.45833298563957214,0.16666699945926666,0.5,0.16666699945926666,0.5,0.25,0.5,0.25,0.5,0.16666699945926666,0.5416669845581055,0.25,0.5,0.16666699945926666,0.5416669845581055,0.16666699945926666,0.5416669845581055,0.25,0.5416669845581055,0.25,0.5416669845581055,0.16666699945926666,0.5833330154418945,0.25,0.5416669845581055,0.16666699945926666,0.5833330154418945,0.16666699945926666,0.5833330154418945,0.25,0.5833330154418945,0.25,0.5833330154418945,0.16666699945926666,0.625,0.25,0.5833330154418945,0.16666699945926666,0.625,0.16666699945926666,0.625,0.25,0.625,0.25,0.625,0.16666699945926666,0.6666669845581055,0.25,0.625,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.25,0.6666669845581055,0.25,0.6666669845581055,0.16666699945926666,0.7083330154418945,0.25,0.6666669845581055,0.16666699945926666,0.7083330154418945,0.16666699945926666,0.7083330154418945,0.25,0.7083330154418945,0.25,0.7083330154418945,0.16666699945926666,0.75,0.25,0.7083330154418945,0.16666699945926666,0.75,0.16666699945926666,0.75,0.25,0.75,0.25,0.75,0.16666699945926666,0.7916669845581055,0.25,0.75,0.16666699945926666,0.7916669845581055,0.16666699945926666,0.7916669845581055,0.25,0.7916669845581055,0.25,0.7916669845581055,0.16666699945926666,0.8333330154418945,0.25,0.7916669845581055,0.16666699945926666,0.8333330154418945,0.16666699945926666,0.8333330154418945,0.25,0.8333330154418945,0.25,0.8333330154418945,0.16666699945926666,0.875,0.25,0.8333330154418945,0.16666699945926666,0.875,0.16666699945926666,0.875,0.25,0.875,0.25,0.875,0.16666699945926666,0.9166669845581055,0.25,0.875,0.16666699945926666,0.9166669845581055,0.16666699945926666,0.9166669845581055,0.25,0.9166669845581055,0.25,0.9166669845581055,0.16666699945926666,0.9583330154418945,0.25,0.9166669845581055,0.16666699945926666,0.9583330154418945,0.16666699945926666,0.9583330154418945,0.25,0.9583330154418945,0.25,0.9583330154418945,0.16666699945926666,1,0.25,0.9583330154418945,0.16666699945926666,1,0.16666699945926666,1,0.25,0,0.33333298563957214,0,0.25,0.041666701436042786,0.33333298563957214,0,0.25,0.041666701436042786,0.25,0.041666701436042786,0.33333298563957214,0.041666701436042786,0.33333298563957214,0.041666701436042786,0.25,0.08333329856395721,0.33333298563957214,0.041666701436042786,0.25,0.08333329856395721,0.25,0.08333329856395721,0.33333298563957214,0.08333329856395721,0.33333298563957214,0.08333329856395721,0.25,0.125,0.33333298563957214,0.08333329856395721,0.25,0.125,0.25,0.125,0.33333298563957214,0.125,0.33333298563957214,0.125,0.25,0.16666699945926666,0.33333298563957214,0.125,0.25,0.16666699945926666,0.25,0.16666699945926666,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.16666699945926666,0.25,0.20833300054073334,0.33333298563957214,0.16666699945926666,0.25,0.20833300054073334,0.25,0.20833300054073334,0.33333298563957214,0.20833300054073334,0.33333298563957214,0.20833300054073334,0.25,0.25,0.33333298563957214,0.20833300054073334,0.25,0.25,0.25,0.25,0.33333298563957214,0.25,0.33333298563957214,0.25,0.25,0.29166701436042786,0.33333298563957214,0.25,0.25,0.29166701436042786,0.25,0.29166701436042786,0.33333298563957214,0.29166701436042786,0.33333298563957214,0.29166701436042786,0.25,0.33333298563957214,0.33333298563957214,0.29166701436042786,0.25,0.33333298563957214,0.25,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.25,0.375,0.33333298563957214,0.33333298563957214,0.25,0.375,0.25,0.375,0.33333298563957214,0.375,0.33333298563957214,0.375,0.25,0.41666701436042786,0.33333298563957214,0.375,0.25,0.41666701436042786,0.25,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.25,0.45833298563957214,0.33333298563957214,0.41666701436042786,0.25,0.45833298563957214,0.25,0.45833298563957214,0.33333298563957214,0.45833298563957214,0.33333298563957214,0.45833298563957214,0.25,0.5,0.33333298563957214,0.45833298563957214,0.25,0.5,0.25,0.5,0.33333298563957214,0.5,0.33333298563957214,0.5,0.25,0.5416669845581055,0.33333298563957214,0.5,0.25,0.5416669845581055,0.25,0.5416669845581055,0.33333298563957214,0.5416669845581055,0.33333298563957214,0.5416669845581055,0.25,0.5833330154418945,0.33333298563957214,0.5416669845581055,0.25,0.5833330154418945,0.25,0.5833330154418945,0.33333298563957214,0.5833330154418945,0.33333298563957214,0.5833330154418945,0.25,0.625,0.33333298563957214,0.5833330154418945,0.25,0.625,0.25,0.625,0.33333298563957214,0.625,0.33333298563957214,0.625,0.25,0.6666669845581055,0.33333298563957214,0.625,0.25,0.6666669845581055,0.25,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.25,0.7083330154418945,0.33333298563957214,0.6666669845581055,0.25,0.7083330154418945,0.25,0.7083330154418945,0.33333298563957214,0.7083330154418945,0.33333298563957214,0.7083330154418945,0.25,0.75,0.33333298563957214,0.7083330154418945,0.25,0.75,0.25,0.75,0.33333298563957214,0.75,0.33333298563957214,0.75,0.25,0.7916669845581055,0.33333298563957214,0.75,0.25,0.7916669845581055,0.25,0.7916669845581055,0.33333298563957214,0.7916669845581055,0.33333298563957214,0.7916669845581055,0.25,0.8333330154418945,0.33333298563957214,0.7916669845581055,0.25,0.8333330154418945,0.25,0.8333330154418945,0.33333298563957214,0.8333330154418945,0.33333298563957214,0.8333330154418945,0.25,0.875,0.33333298563957214,0.8333330154418945,0.25,0.875,0.25,0.875,0.33333298563957214,0.875,0.33333298563957214,0.875,0.25,0.9166669845581055,0.33333298563957214,0.875,0.25,0.9166669845581055,0.25,0.9166669845581055,0.33333298563957214,0.9166669845581055,0.33333298563957214,0.9166669845581055,0.25,0.9583330154418945,0.33333298563957214,0.9166669845581055,0.25,0.9583330154418945,0.25,0.9583330154418945,0.33333298563957214,0.9583330154418945,0.33333298563957214,0.9583330154418945,0.25,1,0.33333298563957214,0.9583330154418945,0.25,1,0.25,1,0.33333298563957214,0,0.41666701436042786,0,0.33333298563957214,0.041666701436042786,0.41666701436042786,0,0.33333298563957214,0.041666701436042786,0.33333298563957214,0.041666701436042786,0.41666701436042786,0.041666701436042786,0.41666701436042786,0.041666701436042786,0.33333298563957214,0.08333329856395721,0.41666701436042786,0.041666701436042786,0.33333298563957214,0.08333329856395721,0.33333298563957214,0.08333329856395721,0.41666701436042786,0.08333329856395721,0.41666701436042786,0.08333329856395721,0.33333298563957214,0.125,0.41666701436042786,0.08333329856395721,0.33333298563957214,0.125,0.33333298563957214,0.125,0.41666701436042786,0.125,0.41666701436042786,0.125,0.33333298563957214,0.16666699945926666,0.41666701436042786,0.125,0.33333298563957214,0.16666699945926666,0.33333298563957214,0.16666699945926666,0.41666701436042786,0.16666699945926666,0.41666701436042786,0.16666699945926666,0.33333298563957214,0.20833300054073334,0.41666701436042786,0.16666699945926666,0.33333298563957214,0.20833300054073334,0.33333298563957214,0.20833300054073334,0.41666701436042786,0.20833300054073334,0.41666701436042786,0.20833300054073334,0.33333298563957214,0.25,0.41666701436042786,0.20833300054073334,0.33333298563957214,0.25,0.33333298563957214,0.25,0.41666701436042786,0.25,0.41666701436042786,0.25,0.33333298563957214,0.29166701436042786,0.41666701436042786,0.25,0.33333298563957214,0.29166701436042786,0.33333298563957214,0.29166701436042786,0.41666701436042786,0.29166701436042786,0.41666701436042786,0.29166701436042786,0.33333298563957214,0.33333298563957214,0.41666701436042786,0.29166701436042786,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.33333298563957214,0.375,0.41666701436042786,0.33333298563957214,0.33333298563957214,0.375,0.33333298563957214,0.375,0.41666701436042786,0.375,0.41666701436042786,0.375,0.33333298563957214,0.41666701436042786,0.41666701436042786,0.375,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.41666701436042786,0.41666701436042786,0.41666701436042786,0.41666701436042786,0.33333298563957214,0.45833298563957214,0.41666701436042786,0.41666701436042786,0.33333298563957214,0.45833298563957214,0.33333298563957214,0.45833298563957214,0.41666701436042786,0.45833298563957214,0.41666701436042786,0.45833298563957214,0.33333298563957214,0.5,0.41666701436042786,0.45833298563957214,0.33333298563957214,0.5,0.33333298563957214,0.5,0.41666701436042786,0.5,0.41666701436042786,0.5,0.33333298563957214,0.5416669845581055,0.41666701436042786,0.5,0.33333298563957214,0.5416669845581055,0.33333298563957214,0.5416669845581055,0.41666701436042786,0.5416669845581055,0.41666701436042786,0.5416669845581055,0.33333298563957214,0.5833330154418945,0.41666701436042786,0.5416669845581055,0.33333298563957214,0.5833330154418945,0.33333298563957214,0.5833330154418945,0.41666701436042786,0.5833330154418945,0.41666701436042786,0.5833330154418945,0.33333298563957214,0.625,0.41666701436042786,0.5833330154418945,0.33333298563957214,0.625,0.33333298563957214,0.625,0.41666701436042786,0.625,0.41666701436042786,0.625,0.33333298563957214,0.6666669845581055,0.41666701436042786,0.625,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.33333298563957214,0.7083330154418945,0.41666701436042786,0.6666669845581055,0.33333298563957214,0.7083330154418945,0.33333298563957214,0.7083330154418945,0.41666701436042786,0.7083330154418945,0.41666701436042786,0.7083330154418945,0.33333298563957214,0.75,0.41666701436042786,0.7083330154418945,0.33333298563957214,0.75,0.33333298563957214,0.75,0.41666701436042786,0.75,0.41666701436042786,0.75,0.33333298563957214,0.7916669845581055,0.41666701436042786,0.75,0.33333298563957214,0.7916669845581055,0.33333298563957214,0.7916669845581055,0.41666701436042786,0.7916669845581055,0.41666701436042786,0.7916669845581055,0.33333298563957214,0.8333330154418945,0.41666701436042786,0.7916669845581055,0.33333298563957214,0.8333330154418945,0.33333298563957214,0.8333330154418945,0.41666701436042786,0.8333330154418945,0.41666701436042786,0.8333330154418945,0.33333298563957214,0.875,0.41666701436042786,0.8333330154418945,0.33333298563957214,0.875,0.33333298563957214,0.875,0.41666701436042786,0.875,0.41666701436042786,0.875,0.33333298563957214,0.9166669845581055,0.41666701436042786,0.875,0.33333298563957214,0.9166669845581055,0.33333298563957214,0.9166669845581055,0.41666701436042786,0.9166669845581055,0.41666701436042786,0.9166669845581055,0.33333298563957214,0.9583330154418945,0.41666701436042786,0.9166669845581055,0.33333298563957214,0.9583330154418945,0.33333298563957214,0.9583330154418945,0.41666701436042786,0.9583330154418945,0.41666701436042786,0.9583330154418945,0.33333298563957214,1,0.41666701436042786,0.9583330154418945,0.33333298563957214,1,0.33333298563957214,1,0.41666701436042786,0,0.5,0,0.41666701436042786,0.041666701436042786,0.5,0,0.41666701436042786,0.041666701436042786,0.41666701436042786,0.041666701436042786,0.5,0.041666701436042786,0.5,0.041666701436042786,0.41666701436042786,0.08333329856395721,0.5,0.041666701436042786,0.41666701436042786,0.08333329856395721,0.41666701436042786,0.08333329856395721,0.5,0.08333329856395721,0.5,0.08333329856395721,0.41666701436042786,0.125,0.5,0.08333329856395721,0.41666701436042786,0.125,0.41666701436042786,0.125,0.5,0.125,0.5,0.125,0.41666701436042786,0.16666699945926666,0.5,0.125,0.41666701436042786,0.16666699945926666,0.41666701436042786,0.16666699945926666,0.5,0.16666699945926666,0.5,0.16666699945926666,0.41666701436042786,0.20833300054073334,0.5,0.16666699945926666,0.41666701436042786,0.20833300054073334,0.41666701436042786,0.20833300054073334,0.5,0.20833300054073334,0.5,0.20833300054073334,0.41666701436042786,0.25,0.5,0.20833300054073334,0.41666701436042786,0.25,0.41666701436042786,0.25,0.5,0.25,0.5,0.25,0.41666701436042786,0.29166701436042786,0.5,0.25,0.41666701436042786,0.29166701436042786,0.41666701436042786,0.29166701436042786,0.5,0.29166701436042786,0.5,0.29166701436042786,0.41666701436042786,0.33333298563957214,0.5,0.29166701436042786,0.41666701436042786,0.33333298563957214,0.41666701436042786,0.33333298563957214,0.5,0.33333298563957214,0.5,0.33333298563957214,0.41666701436042786,0.375,0.5,0.33333298563957214,0.41666701436042786,0.375,0.41666701436042786,0.375,0.5,0.375,0.5,0.375,0.41666701436042786,0.41666701436042786,0.5,0.375,0.41666701436042786,0.41666701436042786,0.41666701436042786,0.41666701436042786,0.5,0.41666701436042786,0.5,0.41666701436042786,0.41666701436042786,0.45833298563957214,0.5,0.41666701436042786,0.41666701436042786,0.45833298563957214,0.41666701436042786,0.45833298563957214,0.5,0.45833298563957214,0.5,0.45833298563957214,0.41666701436042786,0.5,0.5,0.45833298563957214,0.41666701436042786,0.5,0.41666701436042786,0.5,0.5,0.5,0.5,0.5,0.41666701436042786,0.5416669845581055,0.5,0.5,0.41666701436042786,0.5416669845581055,0.41666701436042786,0.5416669845581055,0.5,0.5416669845581055,0.5,0.5416669845581055,0.41666701436042786,0.5833330154418945,0.5,0.5416669845581055,0.41666701436042786,0.5833330154418945,0.41666701436042786,0.5833330154418945,0.5,0.5833330154418945,0.5,0.5833330154418945,0.41666701436042786,0.625,0.5,0.5833330154418945,0.41666701436042786,0.625,0.41666701436042786,0.625,0.5,0.625,0.5,0.625,0.41666701436042786,0.6666669845581055,0.5,0.625,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.5,0.6666669845581055,0.5,0.6666669845581055,0.41666701436042786,0.7083330154418945,0.5,0.6666669845581055,0.41666701436042786,0.7083330154418945,0.41666701436042786,0.7083330154418945,0.5,0.7083330154418945,0.5,0.7083330154418945,0.41666701436042786,0.75,0.5,0.7083330154418945,0.41666701436042786,0.75,0.41666701436042786,0.75,0.5,0.75,0.5,0.75,0.41666701436042786,0.7916669845581055,0.5,0.75,0.41666701436042786,0.7916669845581055,0.41666701436042786,0.7916669845581055,0.5,0.7916669845581055,0.5,0.7916669845581055,0.41666701436042786,0.8333330154418945,0.5,0.7916669845581055,0.41666701436042786,0.8333330154418945,0.41666701436042786,0.8333330154418945,0.5,0.8333330154418945,0.5,0.8333330154418945,0.41666701436042786,0.875,0.5,0.8333330154418945,0.41666701436042786,0.875,0.41666701436042786,0.875,0.5,0.875,0.5,0.875,0.41666701436042786,0.9166669845581055,0.5,0.875,0.41666701436042786,0.9166669845581055,0.41666701436042786,0.9166669845581055,0.5,0.9166669845581055,0.5,0.9166669845581055,0.41666701436042786,0.9583330154418945,0.5,0.9166669845581055,0.41666701436042786,0.9583330154418945,0.41666701436042786,0.9583330154418945,0.5,0.9583330154418945,0.5,0.9583330154418945,0.41666701436042786,1,0.5,0.9583330154418945,0.41666701436042786,1,0.41666701436042786,1,0.5,0,0.5833330154418945,0,0.5,0.041666701436042786,0.5833330154418945,0,0.5,0.041666701436042786,0.5,0.041666701436042786,0.5833330154418945,0.041666701436042786,0.5833330154418945,0.041666701436042786,0.5,0.08333329856395721,0.5833330154418945,0.041666701436042786,0.5,0.08333329856395721,0.5,0.08333329856395721,0.5833330154418945,0.08333329856395721,0.5833330154418945,0.08333329856395721,0.5,0.125,0.5833330154418945,0.08333329856395721,0.5,0.125,0.5,0.125,0.5833330154418945,0.125,0.5833330154418945,0.125,0.5,0.16666699945926666,0.5833330154418945,0.125,0.5,0.16666699945926666,0.5,0.16666699945926666,0.5833330154418945,0.16666699945926666,0.5833330154418945,0.16666699945926666,0.5,0.20833300054073334,0.5833330154418945,0.16666699945926666,0.5,0.20833300054073334,0.5,0.20833300054073334,0.5833330154418945,0.20833300054073334,0.5833330154418945,0.20833300054073334,0.5,0.25,0.5833330154418945,0.20833300054073334,0.5,0.25,0.5,0.25,0.5833330154418945,0.25,0.5833330154418945,0.25,0.5,0.29166701436042786,0.5833330154418945,0.25,0.5,0.29166701436042786,0.5,0.29166701436042786,0.5833330154418945,0.29166701436042786,0.5833330154418945,0.29166701436042786,0.5,0.33333298563957214,0.5833330154418945,0.29166701436042786,0.5,0.33333298563957214,0.5,0.33333298563957214,0.5833330154418945,0.33333298563957214,0.5833330154418945,0.33333298563957214,0.5,0.375,0.5833330154418945,0.33333298563957214,0.5,0.375,0.5,0.375,0.5833330154418945,0.375,0.5833330154418945,0.375,0.5,0.41666701436042786,0.5833330154418945,0.375,0.5,0.41666701436042786,0.5,0.41666701436042786,0.5833330154418945,0.41666701436042786,0.5833330154418945,0.41666701436042786,0.5,0.45833298563957214,0.5833330154418945,0.41666701436042786,0.5,0.45833298563957214,0.5,0.45833298563957214,0.5833330154418945,0.45833298563957214,0.5833330154418945,0.45833298563957214,0.5,0.5,0.5833330154418945,0.45833298563957214,0.5,0.5,0.5,0.5,0.5833330154418945,0.5,0.5833330154418945,0.5,0.5,0.5416669845581055,0.5833330154418945,0.5,0.5,0.5416669845581055,0.5,0.5416669845581055,0.5833330154418945,0.5416669845581055,0.5833330154418945,0.5416669845581055,0.5,0.5833330154418945,0.5833330154418945,0.5416669845581055,0.5,0.5833330154418945,0.5,0.5833330154418945,0.5833330154418945,0.5833330154418945,0.5833330154418945,0.5833330154418945,0.5,0.625,0.5833330154418945,0.5833330154418945,0.5,0.625,0.5,0.625,0.5833330154418945,0.625,0.5833330154418945,0.625,0.5,0.6666669845581055,0.5833330154418945,0.625,0.5,0.6666669845581055,0.5,0.6666669845581055,0.5833330154418945,0.6666669845581055,0.5833330154418945,0.6666669845581055,0.5,0.7083330154418945,0.5833330154418945,0.6666669845581055,0.5,0.7083330154418945,0.5,0.7083330154418945,0.5833330154418945,0.7083330154418945,0.5833330154418945,0.7083330154418945,0.5,0.75,0.5833330154418945,0.7083330154418945,0.5,0.75,0.5,0.75,0.5833330154418945,0.75,0.5833330154418945,0.75,0.5,0.7916669845581055,0.5833330154418945,0.75,0.5,0.7916669845581055,0.5,0.7916669845581055,0.5833330154418945,0.7916669845581055,0.5833330154418945,0.7916669845581055,0.5,0.8333330154418945,0.5833330154418945,0.7916669845581055,0.5,0.8333330154418945,0.5,0.8333330154418945,0.5833330154418945,0.8333330154418945,0.5833330154418945,0.8333330154418945,0.5,0.875,0.5833330154418945,0.8333330154418945,0.5,0.875,0.5,0.875,0.5833330154418945,0.875,0.5833330154418945,0.875,0.5,0.9166669845581055,0.5833330154418945,0.875,0.5,0.9166669845581055,0.5,0.9166669845581055,0.5833330154418945,0.9166669845581055,0.5833330154418945,0.9166669845581055,0.5,0.9583330154418945,0.5833330154418945,0.9166669845581055,0.5,0.9583330154418945,0.5,0.9583330154418945,0.5833330154418945,0.9583330154418945,0.5833330154418945,0.9583330154418945,0.5,1,0.5833330154418945,0.9583330154418945,0.5,1,0.5,1,0.5833330154418945,0,0.6666669845581055,0,0.5833330154418945,0.041666701436042786,0.6666669845581055,0,0.5833330154418945,0.041666701436042786,0.5833330154418945,0.041666701436042786,0.6666669845581055,0.041666701436042786,0.6666669845581055,0.041666701436042786,0.5833330154418945,0.08333329856395721,0.6666669845581055,0.041666701436042786,0.5833330154418945,0.08333329856395721,0.5833330154418945,0.08333329856395721,0.6666669845581055,0.08333329856395721,0.6666669845581055,0.08333329856395721,0.5833330154418945,0.125,0.6666669845581055,0.08333329856395721,0.5833330154418945,0.125,0.5833330154418945,0.125,0.6666669845581055,0.125,0.6666669845581055,0.125,0.5833330154418945,0.16666699945926666,0.6666669845581055,0.125,0.5833330154418945,0.16666699945926666,0.5833330154418945,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.5833330154418945,0.20833300054073334,0.6666669845581055,0.16666699945926666,0.5833330154418945,0.20833300054073334,0.5833330154418945,0.20833300054073334,0.6666669845581055,0.20833300054073334,0.6666669845581055,0.20833300054073334,0.5833330154418945,0.25,0.6666669845581055,0.20833300054073334,0.5833330154418945,0.25,0.5833330154418945,0.25,0.6666669845581055,0.25,0.6666669845581055,0.25,0.5833330154418945,0.29166701436042786,0.6666669845581055,0.25,0.5833330154418945,0.29166701436042786,0.5833330154418945,0.29166701436042786,0.6666669845581055,0.29166701436042786,0.6666669845581055,0.29166701436042786,0.5833330154418945,0.33333298563957214,0.6666669845581055,0.29166701436042786,0.5833330154418945,0.33333298563957214,0.5833330154418945,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.5833330154418945,0.375,0.6666669845581055,0.33333298563957214,0.5833330154418945,0.375,0.5833330154418945,0.375,0.6666669845581055,0.375,0.6666669845581055,0.375,0.5833330154418945,0.41666701436042786,0.6666669845581055,0.375,0.5833330154418945,0.41666701436042786,0.5833330154418945,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.5833330154418945,0.45833298563957214,0.6666669845581055,0.41666701436042786,0.5833330154418945,0.45833298563957214,0.5833330154418945,0.45833298563957214,0.6666669845581055,0.45833298563957214,0.6666669845581055,0.45833298563957214,0.5833330154418945,0.5,0.6666669845581055,0.45833298563957214,0.5833330154418945,0.5,0.5833330154418945,0.5,0.6666669845581055,0.5,0.6666669845581055,0.5,0.5833330154418945,0.5416669845581055,0.6666669845581055,0.5,0.5833330154418945,0.5416669845581055,0.5833330154418945,0.5416669845581055,0.6666669845581055,0.5416669845581055,0.6666669845581055,0.5416669845581055,0.5833330154418945,0.5833330154418945,0.6666669845581055,0.5416669845581055,0.5833330154418945,0.5833330154418945,0.5833330154418945,0.5833330154418945,0.6666669845581055,0.5833330154418945,0.6666669845581055,0.5833330154418945,0.5833330154418945,0.625,0.6666669845581055,0.5833330154418945,0.5833330154418945,0.625,0.5833330154418945,0.625,0.6666669845581055,0.625,0.6666669845581055,0.625,0.5833330154418945,0.6666669845581055,0.6666669845581055,0.625,0.5833330154418945,0.6666669845581055,0.5833330154418945,0.6666669845581055,0.6666669845581055,0.6666669845581055,0.6666669845581055,0.6666669845581055,0.5833330154418945,0.7083330154418945,0.6666669845581055,0.6666669845581055,0.5833330154418945,0.7083330154418945,0.5833330154418945,0.7083330154418945,0.6666669845581055,0.7083330154418945,0.6666669845581055,0.7083330154418945,0.5833330154418945,0.75,0.6666669845581055,0.7083330154418945,0.5833330154418945,0.75,0.5833330154418945,0.75,0.6666669845581055,0.75,0.6666669845581055,0.75,0.5833330154418945,0.7916669845581055,0.6666669845581055,0.75,0.5833330154418945,0.7916669845581055,0.5833330154418945,0.7916669845581055,0.6666669845581055,0.7916669845581055,0.6666669845581055,0.7916669845581055,0.5833330154418945,0.8333330154418945,0.6666669845581055,0.7916669845581055,0.5833330154418945,0.8333330154418945,0.5833330154418945,0.8333330154418945,0.6666669845581055,0.8333330154418945,0.6666669845581055,0.8333330154418945,0.5833330154418945,0.875,0.6666669845581055,0.8333330154418945,0.5833330154418945,0.875,0.5833330154418945,0.875,0.6666669845581055,0.875,0.6666669845581055,0.875,0.5833330154418945,0.9166669845581055,0.6666669845581055,0.875,0.5833330154418945,0.9166669845581055,0.5833330154418945,0.9166669845581055,0.6666669845581055,0.9166669845581055,0.6666669845581055,0.9166669845581055,0.5833330154418945,0.9583330154418945,0.6666669845581055,0.9166669845581055,0.5833330154418945,0.9583330154418945,0.5833330154418945,0.9583330154418945,0.6666669845581055,0.9583330154418945,0.6666669845581055,0.9583330154418945,0.5833330154418945,1,0.6666669845581055,0.9583330154418945,0.5833330154418945,1,0.5833330154418945,1,0.6666669845581055,0,0.75,0,0.6666669845581055,0.041666701436042786,0.75,0,0.6666669845581055,0.041666701436042786,0.6666669845581055,0.041666701436042786,0.75,0.041666701436042786,0.75,0.041666701436042786,0.6666669845581055,0.08333329856395721,0.75,0.041666701436042786,0.6666669845581055,0.08333329856395721,0.6666669845581055,0.08333329856395721,0.75,0.08333329856395721,0.75,0.08333329856395721,0.6666669845581055,0.125,0.75,0.08333329856395721,0.6666669845581055,0.125,0.6666669845581055,0.125,0.75,0.125,0.75,0.125,0.6666669845581055,0.16666699945926666,0.75,0.125,0.6666669845581055,0.16666699945926666,0.6666669845581055,0.16666699945926666,0.75,0.16666699945926666,0.75,0.16666699945926666,0.6666669845581055,0.20833300054073334,0.75,0.16666699945926666,0.6666669845581055,0.20833300054073334,0.6666669845581055,0.20833300054073334,0.75,0.20833300054073334,0.75,0.20833300054073334,0.6666669845581055,0.25,0.75,0.20833300054073334,0.6666669845581055,0.25,0.6666669845581055,0.25,0.75,0.25,0.75,0.25,0.6666669845581055,0.29166701436042786,0.75,0.25,0.6666669845581055,0.29166701436042786,0.6666669845581055,0.29166701436042786,0.75,0.29166701436042786,0.75,0.29166701436042786,0.6666669845581055,0.33333298563957214,0.75,0.29166701436042786,0.6666669845581055,0.33333298563957214,0.6666669845581055,0.33333298563957214,0.75,0.33333298563957214,0.75,0.33333298563957214,0.6666669845581055,0.375,0.75,0.33333298563957214,0.6666669845581055,0.375,0.6666669845581055,0.375,0.75,0.375,0.75,0.375,0.6666669845581055,0.41666701436042786,0.75,0.375,0.6666669845581055,0.41666701436042786,0.6666669845581055,0.41666701436042786,0.75,0.41666701436042786,0.75,0.41666701436042786,0.6666669845581055,0.45833298563957214,0.75,0.41666701436042786,0.6666669845581055,0.45833298563957214,0.6666669845581055,0.45833298563957214,0.75,0.45833298563957214,0.75,0.45833298563957214,0.6666669845581055,0.5,0.75,0.45833298563957214,0.6666669845581055,0.5,0.6666669845581055,0.5,0.75,0.5,0.75,0.5,0.6666669845581055,0.5416669845581055,0.75,0.5,0.6666669845581055,0.5416669845581055,0.6666669845581055,0.5416669845581055,0.75,0.5416669845581055,0.75,0.5416669845581055,0.6666669845581055,0.5833330154418945,0.75,0.5416669845581055,0.6666669845581055,0.5833330154418945,0.6666669845581055,0.5833330154418945,0.75,0.5833330154418945,0.75,0.5833330154418945,0.6666669845581055,0.625,0.75,0.5833330154418945,0.6666669845581055,0.625,0.6666669845581055,0.625,0.75,0.625,0.75,0.625,0.6666669845581055,0.6666669845581055,0.75,0.625,0.6666669845581055,0.6666669845581055,0.6666669845581055,0.6666669845581055,0.75,0.6666669845581055,0.75,0.6666669845581055,0.6666669845581055,0.7083330154418945,0.75,0.6666669845581055,0.6666669845581055,0.7083330154418945,0.6666669845581055,0.7083330154418945,0.75,0.7083330154418945,0.75,0.7083330154418945,0.6666669845581055,0.75,0.75,0.7083330154418945,0.6666669845581055,0.75,0.6666669845581055,0.75,0.75,0.75,0.75,0.75,0.6666669845581055,0.7916669845581055,0.75,0.75,0.6666669845581055,0.7916669845581055,0.6666669845581055,0.7916669845581055,0.75,0.7916669845581055,0.75,0.7916669845581055,0.6666669845581055,0.8333330154418945,0.75,0.7916669845581055,0.6666669845581055,0.8333330154418945,0.6666669845581055,0.8333330154418945,0.75,0.8333330154418945,0.75,0.8333330154418945,0.6666669845581055,0.875,0.75,0.8333330154418945,0.6666669845581055,0.875,0.6666669845581055,0.875,0.75,0.875,0.75,0.875,0.6666669845581055,0.9166669845581055,0.75,0.875,0.6666669845581055,0.9166669845581055,0.6666669845581055,0.9166669845581055,0.75,0.9166669845581055,0.75,0.9166669845581055,0.6666669845581055,0.9583330154418945,0.75,0.9166669845581055,0.6666669845581055,0.9583330154418945,0.6666669845581055,0.9583330154418945,0.75,0.9583330154418945,0.75,0.9583330154418945,0.6666669845581055,1,0.75,0.9583330154418945,0.6666669845581055,1,0.6666669845581055,1,0.75,0,0.8333330154418945,0,0.75,0.041666701436042786,0.8333330154418945,0,0.75,0.041666701436042786,0.75,0.041666701436042786,0.8333330154418945,0.041666701436042786,0.8333330154418945,0.041666701436042786,0.75,0.08333329856395721,0.8333330154418945,0.041666701436042786,0.75,0.08333329856395721,0.75,0.08333329856395721,0.8333330154418945,0.08333329856395721,0.8333330154418945,0.08333329856395721,0.75,0.125,0.8333330154418945,0.08333329856395721,0.75,0.125,0.75,0.125,0.8333330154418945,0.125,0.8333330154418945,0.125,0.75,0.16666699945926666,0.8333330154418945,0.125,0.75,0.16666699945926666,0.75,0.16666699945926666,0.8333330154418945,0.16666699945926666,0.8333330154418945,0.16666699945926666,0.75,0.20833300054073334,0.8333330154418945,0.16666699945926666,0.75,0.20833300054073334,0.75,0.20833300054073334,0.8333330154418945,0.20833300054073334,0.8333330154418945,0.20833300054073334,0.75,0.25,0.8333330154418945,0.20833300054073334,0.75,0.25,0.75,0.25,0.8333330154418945,0.25,0.8333330154418945,0.25,0.75,0.29166701436042786,0.8333330154418945,0.25,0.75,0.29166701436042786,0.75,0.29166701436042786,0.8333330154418945,0.29166701436042786,0.8333330154418945,0.29166701436042786,0.75,0.33333298563957214,0.8333330154418945,0.29166701436042786,0.75,0.33333298563957214,0.75,0.33333298563957214,0.8333330154418945,0.33333298563957214,0.8333330154418945,0.33333298563957214,0.75,0.375,0.8333330154418945,0.33333298563957214,0.75,0.375,0.75,0.375,0.8333330154418945,0.375,0.8333330154418945,0.375,0.75,0.41666701436042786,0.8333330154418945,0.375,0.75,0.41666701436042786,0.75,0.41666701436042786,0.8333330154418945,0.41666701436042786,0.8333330154418945,0.41666701436042786,0.75,0.45833298563957214,0.8333330154418945,0.41666701436042786,0.75,0.45833298563957214,0.75,0.45833298563957214,0.8333330154418945,0.45833298563957214,0.8333330154418945,0.45833298563957214,0.75,0.5,0.8333330154418945,0.45833298563957214,0.75,0.5,0.75,0.5,0.8333330154418945,0.5,0.8333330154418945,0.5,0.75,0.5416669845581055,0.8333330154418945,0.5,0.75,0.5416669845581055,0.75,0.5416669845581055,0.8333330154418945,0.5416669845581055,0.8333330154418945,0.5416669845581055,0.75,0.5833330154418945,0.8333330154418945,0.5416669845581055,0.75,0.5833330154418945,0.75,0.5833330154418945,0.8333330154418945,0.5833330154418945,0.8333330154418945,0.5833330154418945,0.75,0.625,0.8333330154418945,0.5833330154418945,0.75,0.625,0.75,0.625,0.8333330154418945,0.625,0.8333330154418945,0.625,0.75,0.6666669845581055,0.8333330154418945,0.625,0.75,0.6666669845581055,0.75,0.6666669845581055,0.8333330154418945,0.6666669845581055,0.8333330154418945,0.6666669845581055,0.75,0.7083330154418945,0.8333330154418945,0.6666669845581055,0.75,0.7083330154418945,0.75,0.7083330154418945,0.8333330154418945,0.7083330154418945,0.8333330154418945,0.7083330154418945,0.75,0.75,0.8333330154418945,0.7083330154418945,0.75,0.75,0.75,0.75,0.8333330154418945,0.75,0.8333330154418945,0.75,0.75,0.7916669845581055,0.8333330154418945,0.75,0.75,0.7916669845581055,0.75,0.7916669845581055,0.8333330154418945,0.7916669845581055,0.8333330154418945,0.7916669845581055,0.75,0.8333330154418945,0.8333330154418945,0.7916669845581055,0.75,0.8333330154418945,0.75,0.8333330154418945,0.8333330154418945,0.8333330154418945,0.8333330154418945,0.8333330154418945,0.75,0.875,0.8333330154418945,0.8333330154418945,0.75,0.875,0.75,0.875,0.8333330154418945,0.875,0.8333330154418945,0.875,0.75,0.9166669845581055,0.8333330154418945,0.875,0.75,0.9166669845581055,0.75,0.9166669845581055,0.8333330154418945,0.9166669845581055,0.8333330154418945,0.9166669845581055,0.75,0.9583330154418945,0.8333330154418945,0.9166669845581055,0.75,0.9583330154418945,0.75,0.9583330154418945,0.8333330154418945,0.9583330154418945,0.8333330154418945,0.9583330154418945,0.75,1,0.8333330154418945,0.9583330154418945,0.75,1,0.75,1,0.8333330154418945,0,0.9166669845581055,0,0.8333330154418945,0.041666701436042786,0.9166669845581055,0,0.8333330154418945,0.041666701436042786,0.8333330154418945,0.041666701436042786,0.9166669845581055,0.041666701436042786,0.9166669845581055,0.041666701436042786,0.8333330154418945,0.08333329856395721,0.9166669845581055,0.041666701436042786,0.8333330154418945,0.08333329856395721,0.8333330154418945,0.08333329856395721,0.9166669845581055,0.08333329856395721,0.9166669845581055,0.08333329856395721,0.8333330154418945,0.125,0.9166669845581055,0.08333329856395721,0.8333330154418945,0.125,0.8333330154418945,0.125,0.9166669845581055,0.125,0.9166669845581055,0.125,0.8333330154418945,0.16666699945926666,0.9166669845581055,0.125,0.8333330154418945,0.16666699945926666,0.8333330154418945,0.16666699945926666,0.9166669845581055,0.16666699945926666,0.9166669845581055,0.16666699945926666,0.8333330154418945,0.20833300054073334,0.9166669845581055,0.16666699945926666,0.8333330154418945,0.20833300054073334,0.8333330154418945,0.20833300054073334,0.9166669845581055,0.20833300054073334,0.9166669845581055,0.20833300054073334,0.8333330154418945,0.25,0.9166669845581055,0.20833300054073334,0.8333330154418945,0.25,0.8333330154418945,0.25,0.9166669845581055,0.25,0.9166669845581055,0.25,0.8333330154418945,0.29166701436042786,0.9166669845581055,0.25,0.8333330154418945,0.29166701436042786,0.8333330154418945,0.29166701436042786,0.9166669845581055,0.29166701436042786,0.9166669845581055,0.29166701436042786,0.8333330154418945,0.33333298563957214,0.9166669845581055,0.29166701436042786,0.8333330154418945,0.33333298563957214,0.8333330154418945,0.33333298563957214,0.9166669845581055,0.33333298563957214,0.9166669845581055,0.33333298563957214,0.8333330154418945,0.375,0.9166669845581055,0.33333298563957214,0.8333330154418945,0.375,0.8333330154418945,0.375,0.9166669845581055,0.375,0.9166669845581055,0.375,0.8333330154418945,0.41666701436042786,0.9166669845581055,0.375,0.8333330154418945,0.41666701436042786,0.8333330154418945,0.41666701436042786,0.9166669845581055,0.41666701436042786,0.9166669845581055,0.41666701436042786,0.8333330154418945,0.45833298563957214,0.9166669845581055,0.41666701436042786,0.8333330154418945,0.45833298563957214,0.8333330154418945,0.45833298563957214,0.9166669845581055,0.45833298563957214,0.9166669845581055,0.45833298563957214,0.8333330154418945,0.5,0.9166669845581055,0.45833298563957214,0.8333330154418945,0.5,0.8333330154418945,0.5,0.9166669845581055,0.5,0.9166669845581055,0.5,0.8333330154418945,0.5416669845581055,0.9166669845581055,0.5,0.8333330154418945,0.5416669845581055,0.8333330154418945,0.5416669845581055,0.9166669845581055,0.5416669845581055,0.9166669845581055,0.5416669845581055,0.8333330154418945,0.5833330154418945,0.9166669845581055,0.5416669845581055,0.8333330154418945,0.5833330154418945,0.8333330154418945,0.5833330154418945,0.9166669845581055,0.5833330154418945,0.9166669845581055,0.5833330154418945,0.8333330154418945,0.625,0.9166669845581055,0.5833330154418945,0.8333330154418945,0.625,0.8333330154418945,0.625,0.9166669845581055,0.625,0.9166669845581055,0.625,0.8333330154418945,0.6666669845581055,0.9166669845581055,0.625,0.8333330154418945,0.6666669845581055,0.8333330154418945,0.6666669845581055,0.9166669845581055,0.6666669845581055,0.9166669845581055,0.6666669845581055,0.8333330154418945,0.7083330154418945,0.9166669845581055,0.6666669845581055,0.8333330154418945,0.7083330154418945,0.8333330154418945,0.7083330154418945,0.9166669845581055,0.7083330154418945,0.9166669845581055,0.7083330154418945,0.8333330154418945,0.75,0.9166669845581055,0.7083330154418945,0.8333330154418945,0.75,0.8333330154418945,0.75,0.9166669845581055,0.75,0.9166669845581055,0.75,0.8333330154418945,0.7916669845581055,0.9166669845581055,0.75,0.8333330154418945,0.7916669845581055,0.8333330154418945,0.7916669845581055,0.9166669845581055,0.7916669845581055,0.9166669845581055,0.7916669845581055,0.8333330154418945,0.8333330154418945,0.9166669845581055,0.7916669845581055,0.8333330154418945,0.8333330154418945,0.8333330154418945,0.8333330154418945,0.9166669845581055,0.8333330154418945,0.9166669845581055,0.8333330154418945,0.8333330154418945,0.875,0.9166669845581055,0.8333330154418945,0.8333330154418945,0.875,0.8333330154418945,0.875,0.9166669845581055,0.875,0.9166669845581055,0.875,0.8333330154418945,0.9166669845581055,0.9166669845581055,0.875,0.8333330154418945,0.9166669845581055,0.8333330154418945,0.9166669845581055,0.9166669845581055,0.9166669845581055,0.9166669845581055,0.9166669845581055,0.8333330154418945,0.9583330154418945,0.9166669845581055,0.9166669845581055,0.8333330154418945,0.9583330154418945,0.8333330154418945,0.9583330154418945,0.9166669845581055,0.9583330154418945,0.9166669845581055,0.9583330154418945,0.8333330154418945,1,0.9166669845581055,0.9583330154418945,0.8333330154418945,1,0.8333330154418945,1,0.9166669845581055,0,0.9166669845581055,0.041666701436042786,0.9166669845581055,0.020833300426602364,1,0.041666701436042786,0.9166669845581055,0.08333329856395721,0.9166669845581055,0.0625,1,0.08333329856395721,0.9166669845581055,0.125,0.9166669845581055,0.10416699945926666,1,0.125,0.9166669845581055,0.16666699945926666,0.9166669845581055,0.14583300054073334,1,0.16666699945926666,0.9166669845581055,0.20833300054073334,0.9166669845581055,0.1875,1,0.20833300054073334,0.9166669845581055,0.25,0.9166669845581055,0.22916699945926666,1,0.25,0.9166669845581055,0.29166701436042786,0.9166669845581055,0.27083298563957214,1,0.29166701436042786,0.9166669845581055,0.33333298563957214,0.9166669845581055,0.3125,1,0.33333298563957214,0.9166669845581055,0.375,0.9166669845581055,0.35416701436042786,1,0.375,0.9166669845581055,0.41666701436042786,0.9166669845581055,0.39583298563957214,1,0.41666701436042786,0.9166669845581055,0.45833298563957214,0.9166669845581055,0.4375,1,0.45833298563957214,0.9166669845581055,0.5,0.9166669845581055,0.47916701436042786,1,0.5,0.9166669845581055,0.5416669845581055,0.9166669845581055,0.5208330154418945,1,0.5416669845581055,0.9166669845581055,0.5833330154418945,0.9166669845581055,0.5625,1,0.5833330154418945,0.9166669845581055,0.625,0.9166669845581055,0.6041669845581055,1,0.625,0.9166669845581055,0.6666669845581055,0.9166669845581055,0.6458330154418945,1,0.6666669845581055,0.9166669845581055,0.7083330154418945,0.9166669845581055,0.6875,1,0.7083330154418945,0.9166669845581055,0.75,0.9166669845581055,0.7291669845581055,1,0.75,0.9166669845581055,0.7916669845581055,0.9166669845581055,0.7708330154418945,1,0.7916669845581055,0.9166669845581055,0.8333330154418945,0.9166669845581055,0.8125,1,0.8333330154418945,0.9166669845581055,0.875,0.9166669845581055,0.8541669845581055,1,0.875,0.9166669845581055,0.9166669845581055,0.9166669845581055,0.8958330154418945,1,0.9166669845581055,0.9166669845581055,0.9583330154418945,0.9166669845581055,0.9375,1,0.9583330154418945,0.9166669845581055,1,0.9166669845581055,0.9791669845581055,1,0.019030099734663963,0.8456709980964661,0.04089530184864998,0.8366140127182007,0.15432900190353394,0.980970025062561,0.04089530184864998,0.8366140127182007,0.1633860021829605,0.9591050148010254,0.15432900190353394,0.980970025062561,0.019030099734663963,0.8456709980964661,0.019030099734663963,0.6543290019035339,0.04089530184864998,0.8366140127182007,0.019030099734663963,0.6543290019035339,0.04089530184864998,0.6633859872817993,0.04089530184864998,0.8366140127182007,0.15432900190353394,0.519029974937439,0.1633860021829605,0.5408949851989746,0.019030099734663963,0.6543290019035339,0.1633860021829605,0.5408949851989746,0.04089530184864998,0.6633859872817993,0.019030099734663963,0.6543290019035339,0.15432900190353394,0.519029974937439,0.34567099809646606,0.519029974937439,0.1633860021829605,0.5408949851989746,0.34567099809646606,0.519029974937439,0.3366140127182007,0.5408949851989746,0.1633860021829605,0.5408949851989746,0.48096999526023865,0.6543290019035339,0.4591050148010254,0.6633859872817993,0.34567099809646606,0.519029974937439,0.4591050148010254,0.6633859872817993,0.3366140127182007,0.5408949851989746,0.34567099809646606,0.519029974937439,0.48096999526023865,0.6543290019035339,0.48096999526023865,0.8456709980964661,0.4591050148010254,0.6633859872817993,0.48096999526023865,0.8456709980964661,0.4591050148010254,0.8366140127182007,0.4591050148010254,0.6633859872817993,0.34567099809646606,0.980970025062561,0.3366140127182007,0.9591050148010254,0.48096999526023865,0.8456709980964661,0.3366140127182007,0.9591050148010254,0.4591050148010254,0.8366140127182007,0.48096999526023865,0.8456709980964661,0.34567099809646606,0.980970025062561,0.15432900190353394,0.980970025062561,0.3366140127182007,0.9591050148010254,0.15432900190353394,0.980970025062561,0.1633860021829605,0.9591050148010254,0.3366140127182007,0.9591050148010254,0.3366140127182007,0.5408949851989746,0.4591050148010254,0.6633859872817993,0.3366140127182007,0.5408949851989746,0.4591050148010254,0.6633859872817993,0.4591050148010254,0.6633859872817993,0.3366140127182007,0.5408949851989746,0.4591050148010254,0.6633859872817993,0.4591050148010254,0.8366140127182007,0.4591050148010254,0.6633859872817993,0.4591050148010254,0.8366140127182007,0.4591050148010254,0.8366140127182007,0.4591050148010254,0.6633859872817993,0.4591050148010254,0.8366140127182007,0.3366140127182007,0.9591050148010254,0.4591050148010254,0.8366140127182007,0.3366140127182007,0.9591050148010254,0.3366140127182007,0.9591050148010254,0.4591050148010254,0.8366140127182007,0.3366140127182007,0.9591050148010254,0.1633860021829605,0.9591050148010254,0.3366140127182007,0.9591050148010254,0.1633860021829605,0.9591050148010254,0.1633860021829605,0.9591050148010254,0.3366140127182007,0.9591050148010254,0.1633860021829605,0.9591050148010254,0.04089530184864998,0.8366140127182007,0.1633860021829605,0.9591050148010254,0.04089530184864998,0.8366140127182007,0.04089530184864998,0.8366140127182007,0.1633860021829605,0.9591050148010254,0.04089530184864998,0.8366140127182007,0.04089530184864998,0.6633859872817993,0.04089530184864998,0.8366140127182007,0.04089530184864998,0.6633859872817993,0.04089530184864998,0.6633859872817993,0.04089530184864998,0.8366140127182007,0.04089530184864998,0.6633859872817993,0.1633860021829605,0.5408949851989746,0.04089530184864998,0.6633859872817993,0.1633860021829605,0.5408949851989746,0.1633860021829605,0.5408949851989746,0.04089530184864998,0.6633859872817993,0.1633860021829605,0.5408949851989746,0.3366140127182007,0.5408949851989746,0.1633860021829605,0.5408949851989746,0.3366140127182007,0.5408949851989746,0.3366140127182007,0.5408949851989746,0.1633860021829605,0.5408949851989746,0.25,0,0.5,0,0.25,0.33333298563957214,0.5,0,0.5,0.33333298563957214,0.25,0.33333298563957214,1,0.6666669845581055,0.75,0.6666669845581055,1,0.33333298563957214,0.75,0.6666669845581055,0.75,0.33333298563957214,1,0.33333298563957214,0.75,0.6666669845581055,0.5,0.6666669845581055,0.75,0.33333298563957214,0.5,0.6666669845581055,0.5,0.33333298563957214,0.75,0.33333298563957214,0.5,0.6666669845581055,0.25,0.6666669845581055,0.5,0.33333298563957214,0.25,0.6666669845581055,0.25,0.33333298563957214,0.5,0.33333298563957214,0.25,0.6666669845581055,0,0.6666669845581055,0.25,0.33333298563957214,0,0.6666669845581055,0,0.33333298563957214,0.25,0.33333298563957214,0.25,1,0.25,0.6666669845581055,0.5,1,0.25,0.6666669845581055,0.5,0.6666669845581055,0.5,1,0,0.5,0,0,0.125,0.5,0,0,0.125,0,0.125,0.5,0.125,0.5,0.125,0,0.25,0.5,0.125,0,0.25,0,0.25,0.5,0.25,0.5,0.25,0,0.375,0.5,0.25,0,0.375,0,0.375,0.5,0.375,0.5,0.375,0,0.5,0.5,0.375,0,0.5,0,0.5,0.5,0.5,0.5,0.5,0,0.625,0.5,0.5,0,0.625,0,0.625,0.5,0.625,0.5,0.625,0,0.75,0.5,0.625,0,0.75,0,0.75,0.5,0.75,0.5,0.75,0,0.875,0.5,0.75,0,0.875,0,0.875,0.5,0.875,0.5,0.875,0,1,0.5,0.875,0,1,0,1,0.5,0.980970025062561,0.6543290019035339,0.980970025062561,0.8456709980964661,0.9205080270767212,0.679373025894165,0.980970025062561,0.8456709980964661,0.9205080270767212,0.820626974105835,0.9205080270767212,0.679373025894165,0.980970025062561,0.8456709980964661,0.8456709980964661,0.980970025062561,0.9205080270767212,0.820626974105835,0.8456709980964661,0.980970025062561,0.820626974105835,0.9205080270767212,0.9205080270767212,0.820626974105835,0.8456709980964661,0.980970025062561,0.6543290019035339,0.980970025062561,0.820626974105835,0.9205080270767212,0.6543290019035339,0.980970025062561,0.679373025894165,0.9205080270767212,0.820626974105835,0.9205080270767212,0.6543290019035339,0.980970025062561,0.519029974937439,0.8456709980964661,0.679373025894165,0.9205080270767212,0.519029974937439,0.8456709980964661,0.5794919729232788,0.820626974105835,0.679373025894165,0.9205080270767212,0.519029974937439,0.8456709980964661,0.519029974937439,0.6543290019035339,0.5794919729232788,0.820626974105835,0.519029974937439,0.6543290019035339,0.5794919729232788,0.679373025894165,0.5794919729232788,0.820626974105835,0.519029974937439,0.6543290019035339,0.6543290019035339,0.519029974937439,0.5794919729232788,0.679373025894165,0.6543290019035339,0.519029974937439,0.679373025894165,0.5794919729232788,0.5794919729232788,0.679373025894165,0.6543290019035339,0.519029974937439,0.8456709980964661,0.519029974937439,0.679373025894165,0.5794919729232788,0.8456709980964661,0.519029974937439,0.820626974105835,0.5794919729232788,0.679373025894165,0.5794919729232788,0.8456709980964661,0.519029974937439,0.980970025062561,0.6543290019035339,0.820626974105835,0.5794919729232788,0.980970025062561,0.6543290019035339,0.9205080270767212,0.679373025894165,0.820626974105835,0.5794919729232788,0.019030099734663963,0.8456709980964661,0.019030099734663963,0.6543290019035339,0.07949209958314896,0.820626974105835,0.019030099734663963,0.6543290019035339,0.07949209958314896,0.679373025894165,0.07949209958314896,0.820626974105835,0.019030099734663963,0.6543290019035339,0.15432900190353394,0.519029974937439,0.07949209958314896,0.679373025894165,0.15432900190353394,0.519029974937439,0.17937299609184265,0.5794919729232788,0.07949209958314896,0.679373025894165,0.15432900190353394,0.519029974937439,0.34567099809646606,0.519029974937439,0.17937299609184265,0.5794919729232788,0.34567099809646606,0.519029974937439,0.32062700390815735,0.5794919729232788,0.17937299609184265,0.5794919729232788,0.34567099809646606,0.519029974937439,0.48096999526023865,0.6543290019035339,0.32062700390815735,0.5794919729232788,0.48096999526023865,0.6543290019035339,0.4205079972743988,0.679373025894165,0.32062700390815735,0.5794919729232788,0.48096999526023865,0.6543290019035339,0.48096999526023865,0.8456709980964661,0.4205079972743988,0.679373025894165,0.48096999526023865,0.8456709980964661,0.4205079972743988,0.820626974105835,0.4205079972743988,0.679373025894165,0.48096999526023865,0.8456709980964661,0.34567099809646606,0.980970025062561,0.4205079972743988,0.820626974105835,0.34567099809646606,0.980970025062561,0.32062700390815735,0.9205080270767212,0.4205079972743988,0.820626974105835,0.34567099809646606,0.980970025062561,0.15432900190353394,0.980970025062561,0.32062700390815735,0.9205080270767212,0.15432900190353394,0.980970025062561,0.17937299609184265,0.9205080270767212,0.32062700390815735,0.9205080270767212,0.15432900190353394,0.980970025062561,0.019030099734663963,0.8456709980964661,0.17937299609184265,0.9205080270767212,0.019030099734663963,0.8456709980964661,0.07949209958314896,0.820626974105835,0.17937299609184265,0.9205080270767212,0.4205079972743988,0.820626974105835,0.32062700390815735,0.9205080270767212,0.9205080270767212,0.679373025894165,0.32062700390815735,0.9205080270767212,0.820626974105835,0.5794919729232788,0.9205080270767212,0.679373025894165,0.4205079972743988,0.679373025894165,0.4205079972743988,0.820626974105835,0.9205080270767212,0.820626974105835,0.4205079972743988,0.820626974105835,0.9205080270767212,0.679373025894165,0.9205080270767212,0.820626974105835,0.32062700390815735,0.5794919729232788,0.4205079972743988,0.679373025894165,0.820626974105835,0.9205080270767212,0.4205079972743988,0.679373025894165,0.9205080270767212,0.820626974105835,0.820626974105835,0.9205080270767212,0.17937299609184265,0.5794919729232788,0.32062700390815735,0.5794919729232788,0.679373025894165,0.9205080270767212,0.32062700390815735,0.5794919729232788,0.820626974105835,0.9205080270767212,0.679373025894165,0.9205080270767212,0.07949209958314896,0.679373025894165,0.17937299609184265,0.5794919729232788,0.5794919729232788,0.820626974105835,0.17937299609184265,0.5794919729232788,0.679373025894165,0.9205080270767212,0.5794919729232788,0.820626974105835,0.07949209958314896,0.820626974105835,0.07949209958314896,0.679373025894165,0.5794919729232788,0.679373025894165,0.07949209958314896,0.679373025894165,0.5794919729232788,0.820626974105835,0.5794919729232788,0.679373025894165,0.17937299609184265,0.9205080270767212,0.07949209958314896,0.820626974105835,0.679373025894165,0.5794919729232788,0.07949209958314896,0.820626974105835,0.5794919729232788,0.679373025894165,0.679373025894165,0.5794919729232788,0.32062700390815735,0.9205080270767212,0.17937299609184265,0.9205080270767212,0.820626974105835,0.5794919729232788,0.17937299609184265,0.9205080270767212,0.679373025894165,0.5794919729232788,0.820626974105835,0.5794919729232788],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"color\": {\n\t\t\t\t\t\t\"itemSize\": 4,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.44679999351501465,0.36379000544548035,0.237963005900383,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.5868059992790222,0.47773298621177673,0.31264498829841614,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.3449999988079071,0.24856799840927124,0.10366799682378769,1,0.375,0.2700650095939636,0.11261200159788132,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.6399999856948853,0.27000001072883606,0.25,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.7799999713897705,0.7799999713897705,0.7799999713897705,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.375,0.2700650095939636,0.11261200159788132,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.20499999821186066,0.14765499532222748,0.06155470013618469,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1,0.4099999964237213,0.4099999964237213,0.47999998927116394,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [0,9.601699829101562,0],\n\t\t\t\t\t\"radius\": 12.660858768312979\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"B5F7DC20-A998-47F9-9E31-530957F1DF2D\",\n\t\t\t\"type\": \"MeshPhongMaterial\",\n\t\t\t\"color\": 16777215,\n\t\t\t\"emissive\": 0,\n\t\t\t\"specular\": 4737097,\n\t\t\t\"shininess\": 27.72,\n\t\t\t\"vertexColors\": 2,\n\t\t\t\"depthFunc\": 3,\n\t\t\t\"depthTest\": true,\n\t\t\t\"depthWrite\": true,\n\t\t\t\"skinning\": false,\n\t\t\t\"morphTargets\": false\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"F073560A-6C69-4124-B976-0EA12FC70951\",\n\t\t\"type\": \"Mesh\",\n\t\t\"name\": \"balloon\",\n\t\t\"matrix\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n\t\t\"geometry\": \"3BE36DB9-F30E-4785-99E0-7072F36C5141\",\n\t\t\"material\": \"B5F7DC20-A998-47F9-9E31-530957F1DF2D\"\n\t}\n}"
  },
  {
    "path": "public/static/meshes/boat01.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"3D6BFD6B-69E5-4A25-918B-28821075FCCF\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"boat\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.31446799635887146,0.2524440884590149,1.1083400249481201,-0.31446799635887146,0.2524440884590149,1.1083400249481201,-0.5071189999580383,-0.2941809892654419,1.3437299728393555,0.43662750720977783,0.25243690609931946,-1.2554199695587158,0.31446799635887146,0.2524440884590149,1.1083400249481201,0.5071189999580383,-0.2941809892654419,1.3437299728393555,-0.3361271023750305,0.25243690609931946,-1.2554199695587158,0.43662750720977783,0.25243690609931946,-1.2554199695587158,0.5071189999580383,-0.2941809892654419,-1.3437299728393555,-0.31446799635887146,0.2524440884590149,1.1083400249481201,-0.3361271023750305,0.25243690609931946,-1.2554199695587158,-0.5071189999580383,-0.2941809892654419,-1.3437299728393555,0.43662750720977783,0.25243690609931946,-1.2554199695587158,-0.3361271023750305,0.25243690609931946,-1.2554199695587158,-0.31446799635887146,0.2524440884590149,1.1083400249481201,0.5071189999580383,-0.2941809892654419,1.3437299728393555,-0.5071189999580383,-0.2941809892654419,1.3437299728393555,-0.5071189999580383,-0.2941809892654419,-1.3437299728393555,0.4133929908275604,3.4240400791168213,-0.5281000137329102,0,5.6391401290893555,-0.5579310059547424,0.5315529704093933,3.471820116043091,-1.7266600131988525,0,0.8233299851417542,-0.5284370183944702,0.5426759719848633,2.513350009918213,-2.3292300701141357,0,0.1405480057001114,-4.039209842681885,0.38776400685310364,2.4354500770568848,-0.523052990436554,0.5315529704093933,3.471820116043091,-1.7266600131988525,0.5426759719848633,2.513350009918213,-2.3292300701141357,0,2.838710069656372,-0.47393500804901123,0,3.192960023880005,1.2599200010299683,0,5.632900238037109,-0.5098389983177185,0,1.1776800155639648,3.171099901199341,0,2.838710069656372,-0.47393500804901123,0,0.8704760074615479,-0.4486429989337921,-0.034480981528759,0.9390590190887451,-0.5183699727058411,0.0689619705080986,0.8795539736747742,-0.5132709741592407,0,0.8795539736747742,-0.5132709741592407,-0.018395600840449333,1.2386300563812256,3.1953799724578857,0.05287659168243408,1.1976300477981567,3.198889970779419,0.0689619705080986,0.8795539736747742,-0.5132709741592407,0.0689619705080986,0.8795539736747742,-0.5132709741592407,-0.034480981528759,0.820048987865448,-0.5081719756126404,0,0.8795539736747742,-0.5132709741592407,-0.034480981528759,0.820048987865448,-0.5081719756126404,-0.034480981528759,0.9390590190887451,-0.5183699727058411,0,0.8795539736747742,-0.5132709741592407,-0.018395600840449333,1.156630039215088,3.2024099826812744,-0.018395600840449333,1.2386300563812256,3.1953799724578857,-0.034480981528759,0.9390590190887451,-0.5183699727058411,0.05287659168243408,1.1976300477981567,3.198889970779419,-0.018395600840449333,1.156630039215088,3.2024099826812744,-0.034480981528759,0.820048987865448,-0.5081719756126404,-0.04999994859099388,-0.7622820138931274,-0.6059510111808777,0.10000000149011612,-0.7622820138931274,-0.5193480253219604,0,-0.7622820138931274,-0.5193480253219604,-0.018649989739060402,5.643549919128418,-0.5697510242462158,0.06864999979734421,5.643549919128418,-0.5193480253219604,0.10000000149011612,-0.7622820138931274,-0.5193480253219604,0.10000000149011612,-0.7622820138931274,-0.5193480253219604,-0.04999994859099388,-0.7622820138931274,-0.4327459931373596,0,-0.7622820138931274,-0.5193480253219604,-0.04999994859099388,-0.7622820138931274,-0.4327459931373596,-0.04999994859099388,-0.7622820138931274,-0.6059510111808777,0,-0.7622820138931274,-0.5193480253219604,-0.018649989739060402,5.643549919128418,-0.46894600987434387,-0.018649989739060402,5.643549919128418,-0.5697510242462158,-0.04999994859099388,-0.7622820138931274,-0.6059510111808777,0.06864999979734421,5.643549919128418,-0.5193480253219604,-0.018649989739060402,5.643549919128418,-0.46894600987434387,-0.04999994859099388,-0.7622820138931274,-0.4327459931373596,0,0.1982010006904602,3.0446300506591797,-0.10692699998617172,0.1982010006904602,3.0446300506591797,-0.10692699998617172,-0.11533600091934204,3.0446300506591797,1.0062700510025024,0.1982010006904602,1.2289799451828003,0.10692699998617172,0.1982010006904602,3.0446300506591797,0.10692699998617172,-0.11533600091934204,3.0446300506591797,-0.10692699998617172,-0.11533600091934204,-4.083320140838623,-0.10692699998617172,0.1982010006904602,-4.083320140838623,0,0.1982010006904602,-4.083320140838623,-0.10692699998617172,-0.11533600091934204,3.0446300506591797,-0.10692699998617172,0.1982010006904602,3.0446300506591797,-1.0062700510025024,0.1982010006904602,1.2289799451828003,0,-0.19021989405155182,1.0471500158309937,-0.8215168118476868,-0.19021989405155182,1.0321199893951416,-0.06244217976927757,-0.19021989405155182,2.6202099323272705,0,-0.11533600091934204,3.0446300506591797,-0.10692699998617172,-0.11533600091934204,3.0446300506591797,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,0.10692699998617172,-0.11533600091934204,-4.083320140838623,0.10692699998617172,0.1982010006904602,-4.083320140838623,1.0062700510025024,0.1982010006904602,-2.019479990005493,-0.6588820219039917,-0.5675250291824341,-2.019479990005493,-0.10692699998617172,-0.11533600091934204,-4.083320140838623,0,-0.11533600091934204,-4.083320140838623,-0.10692699998617172,0.1982010006904602,-4.083320140838623,-0.10692699998617172,-0.11533600091934204,-4.083320140838623,-0.6588820219039917,-0.5675250291824341,-2.019479990005493,0,-0.19021989405155182,-3.658910036087036,-0.06059110164642334,-0.19021989405155182,-3.658910036087036,-0.8150833249092102,-0.19021989405155182,-1.8497899770736694,0.7624880075454712,-0.6603869795799255,-0.39373400807380676,1.1644999980926514,0.1982010006904602,-0.39373400807380676,1.0062700510025024,0.1982010006904602,1.2289799451828003,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,-0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0,-0.8745309710502625,-0.39373400807380676,-1.1644999980926514,0.1982010006904602,-0.39373400807380676,-0.7624880075454712,-0.6603869795799255,-0.39373400807380676,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,0,-0.19021989405155182,-0.40679800510406494,-0.955525279045105,-0.19021989405155182,-0.40679800510406494,-0.8215168118476868,-0.19021989405155182,1.0321199893951416,0.6588820219039917,-0.5675250291824341,-2.019479990005493,1.0062700510025024,0.1982010006904602,-2.019479990005493,1.1644999980926514,0.1982010006904602,-0.39373400807380676,-0.7624880075454712,-0.6603869795799255,-0.39373400807380676,-0.6588820219039917,-0.5675250291824341,-2.019479990005493,0,-0.7816680073738098,-2.019479990005493,-1.0062700510025024,0.1982010006904602,-2.019479990005493,-0.6588820219039917,-0.5675250291824341,-2.019479990005493,-0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0,-0.19021989405155182,-1.8634699583053589,-0.8150833249092102,-0.19021989405155182,-1.8497899770736694,-0.955525279045105,-0.19021989405155182,-0.40679800510406494,0.6588820219039917,-0.5675250291824341,1.2289799451828003,0.10692699998617172,-0.11533600091934204,3.0446300506591797,0,-0.11533600091934204,3.0446300506591797,0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0.6588820219039917,-0.5675250291824341,1.2289799451828003,0,-0.7816680073738098,1.2289799451828003,0.6588820219039917,-0.5675250291824341,-2.019479990005493,0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0,-0.8745309710502625,-0.39373400807380676,0.10692699998617172,-0.11533600091934204,-4.083320140838623,0.6588820219039917,-0.5675250291824341,-2.019479990005493,0,-0.7816680073738098,-2.019479990005493,0.10692699998617172,0.1982010006904602,-4.083320140838623,0.10692699998617172,-0.11533600091934204,-4.083320140838623,0,-0.11533600091934204,-4.083320140838623,0.7870237231254578,-0.19021989405155182,-1.8497899770736694,0.06059110164642334,-0.19021989405155182,-3.658910036087036,0,-0.19021989405155182,-3.658910036087036,0.9274656772613525,-0.19021989405155182,-0.40679800510406494,0.7870237231254578,-0.19021989405155182,-1.8497899770736694,0,-0.19021989405155182,-1.8634699583053589,0.7871567010879517,-0.19021989405155182,1.0321199893951416,0.9274656772613525,-0.19021989405155182,-0.40679800510406494,0,-0.19021989405155182,-0.40679800510406494,0.06244217976927757,-0.19021989405155182,2.6202099323272705,0.7871567010879517,-0.19021989405155182,1.0321199893951416,0,-0.19021989405155182,1.0471500158309937,0.10692699998617172,-0.11533600091934204,3.0446300506591797,0.10692699998617172,0.1982010006904602,3.0446300506591797,0,0.1982010006904602,3.0446300506591797,-0.06968998163938522,0.18604299426078796,2.9846301078796387,-0.9476220011711121,0.18604299426078796,1.2122000455856323,-1.0062700510025024,0.1982010006904602,1.2289799451828003,0,0.18604299426078796,2.9846301078796387,-0.06968998163938522,0.18604299426078796,2.9846301078796387,-0.10692699998617172,0.1982010006904602,3.0446300506591797,-0.9474729895591736,0.18604299426078796,-2.0042200088500977,-0.06762397289276123,0.18604299426078796,-4.023320198059082,-0.10692699998617172,0.1982010006904602,-4.083320140838623,-0.06762397289276123,0.18604299426078796,-4.023320198059082,0,0.18604299426078796,-4.023320198059082,0,0.1982010006904602,-4.083320140838623,-0.9476220011711121,0.18604299426078796,1.2122000455856323,-1.1042200326919556,0.18604299426078796,-0.39373400807380676,-1.1644999980926514,0.1982010006904602,-0.39373400807380676,-1.1042200326919556,0.18604299426078796,-0.39373400807380676,-0.9474729895591736,0.18604299426078796,-2.0042200088500977,-1.0062700510025024,0.1982010006904602,-2.019479990005493,0,0.18604299426078796,-4.023320198059082,0.06762397289276123,0.18604299426078796,-4.023320198059082,0.10692699998617172,0.1982010006904602,-4.083320140838623,0.06762397289276123,0.18604299426078796,-4.023320198059082,0.9474729895591736,0.18604299426078796,-2.0042200088500977,1.0062700510025024,0.1982010006904602,-2.019479990005493,0.9474729895591736,0.18604299426078796,-2.0042200088500977,1.1042200326919556,0.18604299426078796,-0.39373400807380676,1.1644999980926514,0.1982010006904602,-0.39373400807380676,1.1042200326919556,0.18604299426078796,-0.39373400807380676,0.9476220011711121,0.18604299426078796,1.2122000455856323,1.0062700510025024,0.1982010006904602,1.2289799451828003,0.9476220011711121,0.18604299426078796,1.2122000455856323,0.06968998163938522,0.18604299426078796,2.9846301078796387,0.10692699998617172,0.1982010006904602,3.0446300506591797,0.06968998163938522,0.18604299426078796,2.9846301078796387,0,0.18604299426078796,2.9846301078796387,0,0.1982010006904602,3.0446300506591797,0,-0.19021989405155182,2.6202099323272705,-0.06244217976927757,-0.19021989405155182,2.6202099323272705,-0.06968998163938522,0.18604299426078796,2.9846301078796387,-0.06244217976927757,-0.19021989405155182,2.6202099323272705,-0.8215168118476868,-0.19021989405155182,1.0321199893951416,-0.9476220011711121,0.18604299426078796,1.2122000455856323,-0.06059110164642334,-0.19021989405155182,-3.658910036087036,0,-0.19021989405155182,-3.658910036087036,0,0.18604299426078796,-4.023320198059082,-0.8150833249092102,-0.19021989405155182,-1.8497899770736694,-0.06059110164642334,-0.19021989405155182,-3.658910036087036,-0.06762397289276123,0.18604299426078796,-4.023320198059082,-0.8215168118476868,-0.19021989405155182,1.0321199893951416,-0.955525279045105,-0.19021989405155182,-0.40679800510406494,-1.1042200326919556,0.18604299426078796,-0.39373400807380676,-0.955525279045105,-0.19021989405155182,-0.40679800510406494,-0.8150833249092102,-0.19021989405155182,-1.8497899770736694,-0.9474729895591736,0.18604299426078796,-2.0042200088500977,0.06059110164642334,-0.19021989405155182,-3.658910036087036,0.7870237231254578,-0.19021989405155182,-1.8497899770736694,0.9474729895591736,0.18604299426078796,-2.0042200088500977,0,-0.19021989405155182,-3.658910036087036,0.06059110164642334,-0.19021989405155182,-3.658910036087036,0.06762397289276123,0.18604299426078796,-4.023320198059082,0.7870237231254578,-0.19021989405155182,-1.8497899770736694,0.9274656772613525,-0.19021989405155182,-0.40679800510406494,1.1042200326919556,0.18604299426078796,-0.39373400807380676,0.9274656772613525,-0.19021989405155182,-0.40679800510406494,0.7871567010879517,-0.19021989405155182,1.0321199893951416,0.9476220011711121,0.18604299426078796,1.2122000455856323,0.06244217976927757,-0.19021989405155182,2.6202099323272705,0,-0.19021989405155182,2.6202099323272705,0,0.18604299426078796,2.9846301078796387,0.7871567010879517,-0.19021989405155182,1.0321199893951416,0.06244217976927757,-0.19021989405155182,2.6202099323272705,0.06968998163938522,0.18604299426078796,2.9846301078796387,0.5071189999580383,-0.2941809892654419,1.3437299728393555,0.31446799635887146,0.2524440884590149,1.1083400249481201,-0.5071189999580383,-0.2941809892654419,1.3437299728393555,0.5071189999580383,-0.2941809892654419,-1.3437299728393555,0.43662750720977783,0.25243690609931946,-1.2554199695587158,0.5071189999580383,-0.2941809892654419,1.3437299728393555,-0.5071189999580383,-0.2941809892654419,-1.3437299728393555,-0.3361271023750305,0.25243690609931946,-1.2554199695587158,0.5071189999580383,-0.2941809892654419,-1.3437299728393555,-0.5071189999580383,-0.2941809892654419,1.3437299728393555,-0.31446799635887146,0.2524440884590149,1.1083400249481201,-0.5071189999580383,-0.2941809892654419,-1.3437299728393555,0.31446799635887146,0.2524440884590149,1.1083400249481201,0.43662750720977783,0.25243690609931946,-1.2554199695587158,-0.31446799635887146,0.2524440884590149,1.1083400249481201,0.5071189999580383,-0.2941809892654419,-1.3437299728393555,0.5071189999580383,-0.2941809892654419,1.3437299728393555,-0.5071189999580383,-0.2941809892654419,-1.3437299728393555,0.38776400685310364,2.4354500770568848,-0.523052990436554,0.5426759719848633,2.513350009918213,-2.3292300701141357,0,0.8233299851417542,-0.5284370183944702,0.4133929908275604,3.4240400791168213,-0.5281000137329102,0.5315529704093933,3.471820116043091,-1.7266600131988525,0.38776400685310364,2.4354500770568848,-0.523052990436554,0,3.192960023880005,1.2599200010299683,0,2.838710069656372,-0.47393500804901123,0,1.1776800155639648,3.171099901199341,-0.034480981528759,0.9390590190887451,-0.5183699727058411,-0.018395600840449333,1.2386300563812256,3.1953799724578857,0.0689619705080986,0.8795539736747742,-0.5132709741592407,-0.034480981528759,0.820048987865448,-0.5081719756126404,-0.018395600840449333,1.156630039215088,3.2024099826812744,-0.034480981528759,0.9390590190887451,-0.5183699727058411,0.0689619705080986,0.8795539736747742,-0.5132709741592407,0.05287659168243408,1.1976300477981567,3.198889970779419,-0.034480981528759,0.820048987865448,-0.5081719756126404,-0.04999994859099388,-0.7622820138931274,-0.6059510111808777,-0.018649989739060402,5.643549919128418,-0.5697510242462158,0.10000000149011612,-0.7622820138931274,-0.5193480253219604,-0.04999994859099388,-0.7622820138931274,-0.4327459931373596,-0.018649989739060402,5.643549919128418,-0.46894600987434387,-0.04999994859099388,-0.7622820138931274,-0.6059510111808777,0.10000000149011612,-0.7622820138931274,-0.5193480253219604,0.06864999979734421,5.643549919128418,-0.5193480253219604,-0.04999994859099388,-0.7622820138931274,-0.4327459931373596,0,-0.11533600091934204,3.0446300506591797,0,0.1982010006904602,3.0446300506591797,-0.10692699998617172,-0.11533600091934204,3.0446300506591797,0.6588820219039917,-0.5675250291824341,1.2289799451828003,1.0062700510025024,0.1982010006904602,1.2289799451828003,0.10692699998617172,-0.11533600091934204,3.0446300506591797,0,-0.11533600091934204,-4.083320140838623,-0.10692699998617172,-0.11533600091934204,-4.083320140838623,0,0.1982010006904602,-4.083320140838623,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,-0.10692699998617172,-0.11533600091934204,3.0446300506591797,-1.0062700510025024,0.1982010006904602,1.2289799451828003,0,-0.19021989405155182,2.6202099323272705,0,-0.19021989405155182,1.0471500158309937,-0.06244217976927757,-0.19021989405155182,2.6202099323272705,0,-0.7816680073738098,1.2289799451828003,0,-0.11533600091934204,3.0446300506591797,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,0.6588820219039917,-0.5675250291824341,-2.019479990005493,0.10692699998617172,-0.11533600091934204,-4.083320140838623,1.0062700510025024,0.1982010006904602,-2.019479990005493,0,-0.7816680073738098,-2.019479990005493,-0.6588820219039917,-0.5675250291824341,-2.019479990005493,0,-0.11533600091934204,-4.083320140838623,-1.0062700510025024,0.1982010006904602,-2.019479990005493,-0.10692699998617172,0.1982010006904602,-4.083320140838623,-0.6588820219039917,-0.5675250291824341,-2.019479990005493,0,-0.19021989405155182,-1.8634699583053589,0,-0.19021989405155182,-3.658910036087036,-0.8150833249092102,-0.19021989405155182,-1.8497899770736694,0.6588820219039917,-0.5675250291824341,1.2289799451828003,0.7624880075454712,-0.6603869795799255,-0.39373400807380676,1.0062700510025024,0.1982010006904602,1.2289799451828003,0,-0.7816680073738098,1.2289799451828003,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,0,-0.8745309710502625,-0.39373400807380676,-1.0062700510025024,0.1982010006904602,1.2289799451828003,-1.1644999980926514,0.1982010006904602,-0.39373400807380676,-0.6588820219039917,-0.5675250291824341,1.2289799451828003,0,-0.19021989405155182,1.0471500158309937,0,-0.19021989405155182,-0.40679800510406494,-0.8215168118476868,-0.19021989405155182,1.0321199893951416,0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0.6588820219039917,-0.5675250291824341,-2.019479990005493,1.1644999980926514,0.1982010006904602,-0.39373400807380676,0,-0.8745309710502625,-0.39373400807380676,-0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0,-0.7816680073738098,-2.019479990005493,-1.1644999980926514,0.1982010006904602,-0.39373400807380676,-1.0062700510025024,0.1982010006904602,-2.019479990005493,-0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0,-0.19021989405155182,-0.40679800510406494,0,-0.19021989405155182,-1.8634699583053589,-0.955525279045105,-0.19021989405155182,-0.40679800510406494,0,-0.7816680073738098,1.2289799451828003,0.6588820219039917,-0.5675250291824341,1.2289799451828003,0,-0.11533600091934204,3.0446300506591797,0,-0.8745309710502625,-0.39373400807380676,0.7624880075454712,-0.6603869795799255,-0.39373400807380676,0,-0.7816680073738098,1.2289799451828003,0,-0.7816680073738098,-2.019479990005493,0.6588820219039917,-0.5675250291824341,-2.019479990005493,0,-0.8745309710502625,-0.39373400807380676,0,-0.11533600091934204,-4.083320140838623,0.10692699998617172,-0.11533600091934204,-4.083320140838623,0,-0.7816680073738098,-2.019479990005493,0,0.1982010006904602,-4.083320140838623,0.10692699998617172,0.1982010006904602,-4.083320140838623,0,-0.11533600091934204,-4.083320140838623,0,-0.19021989405155182,-1.8634699583053589,0.7870237231254578,-0.19021989405155182,-1.8497899770736694,0,-0.19021989405155182,-3.658910036087036,0,-0.19021989405155182,-0.40679800510406494,0.9274656772613525,-0.19021989405155182,-0.40679800510406494,0,-0.19021989405155182,-1.8634699583053589,0,-0.19021989405155182,1.0471500158309937,0.7871567010879517,-0.19021989405155182,1.0321199893951416,0,-0.19021989405155182,-0.40679800510406494,0,-0.19021989405155182,2.6202099323272705,0.06244217976927757,-0.19021989405155182,2.6202099323272705,0,-0.19021989405155182,1.0471500158309937,0,-0.11533600091934204,3.0446300506591797,0.10692699998617172,-0.11533600091934204,3.0446300506591797,0,0.1982010006904602,3.0446300506591797,-0.10692699998617172,0.1982010006904602,3.0446300506591797,-0.06968998163938522,0.18604299426078796,2.9846301078796387,-1.0062700510025024,0.1982010006904602,1.2289799451828003,0,0.1982010006904602,3.0446300506591797,0,0.18604299426078796,2.9846301078796387,-0.10692699998617172,0.1982010006904602,3.0446300506591797,-1.0062700510025024,0.1982010006904602,-2.019479990005493,-0.9474729895591736,0.18604299426078796,-2.0042200088500977,-0.10692699998617172,0.1982010006904602,-4.083320140838623,-0.10692699998617172,0.1982010006904602,-4.083320140838623,-0.06762397289276123,0.18604299426078796,-4.023320198059082,0,0.1982010006904602,-4.083320140838623,-1.0062700510025024,0.1982010006904602,1.2289799451828003,-0.9476220011711121,0.18604299426078796,1.2122000455856323,-1.1644999980926514,0.1982010006904602,-0.39373400807380676,-1.1644999980926514,0.1982010006904602,-0.39373400807380676,-1.1042200326919556,0.18604299426078796,-0.39373400807380676,-1.0062700510025024,0.1982010006904602,-2.019479990005493,0,0.1982010006904602,-4.083320140838623,0,0.18604299426078796,-4.023320198059082,0.10692699998617172,0.1982010006904602,-4.083320140838623,0.10692699998617172,0.1982010006904602,-4.083320140838623,0.06762397289276123,0.18604299426078796,-4.023320198059082,1.0062700510025024,0.1982010006904602,-2.019479990005493,1.0062700510025024,0.1982010006904602,-2.019479990005493,0.9474729895591736,0.18604299426078796,-2.0042200088500977,1.1644999980926514,0.1982010006904602,-0.39373400807380676,1.1644999980926514,0.1982010006904602,-0.39373400807380676,1.1042200326919556,0.18604299426078796,-0.39373400807380676,1.0062700510025024,0.1982010006904602,1.2289799451828003,1.0062700510025024,0.1982010006904602,1.2289799451828003,0.9476220011711121,0.18604299426078796,1.2122000455856323,0.10692699998617172,0.1982010006904602,3.0446300506591797,0.10692699998617172,0.1982010006904602,3.0446300506591797,0.06968998163938522,0.18604299426078796,2.9846301078796387,0,0.1982010006904602,3.0446300506591797,0,0.18604299426078796,2.9846301078796387,0,-0.19021989405155182,2.6202099323272705,-0.06968998163938522,0.18604299426078796,2.9846301078796387,-0.06968998163938522,0.18604299426078796,2.9846301078796387,-0.06244217976927757,-0.19021989405155182,2.6202099323272705,-0.9476220011711121,0.18604299426078796,1.2122000455856323,-0.06762397289276123,0.18604299426078796,-4.023320198059082,-0.06059110164642334,-0.19021989405155182,-3.658910036087036,0,0.18604299426078796,-4.023320198059082,-0.9474729895591736,0.18604299426078796,-2.0042200088500977,-0.8150833249092102,-0.19021989405155182,-1.8497899770736694,-0.06762397289276123,0.18604299426078796,-4.023320198059082,-0.9476220011711121,0.18604299426078796,1.2122000455856323,-0.8215168118476868,-0.19021989405155182,1.0321199893951416,-1.1042200326919556,0.18604299426078796,-0.39373400807380676,-1.1042200326919556,0.18604299426078796,-0.39373400807380676,-0.955525279045105,-0.19021989405155182,-0.40679800510406494,-0.9474729895591736,0.18604299426078796,-2.0042200088500977,0.06762397289276123,0.18604299426078796,-4.023320198059082,0.06059110164642334,-0.19021989405155182,-3.658910036087036,0.9474729895591736,0.18604299426078796,-2.0042200088500977,0,0.18604299426078796,-4.023320198059082,0,-0.19021989405155182,-3.658910036087036,0.06762397289276123,0.18604299426078796,-4.023320198059082,0.9474729895591736,0.18604299426078796,-2.0042200088500977,0.7870237231254578,-0.19021989405155182,-1.8497899770736694,1.1042200326919556,0.18604299426078796,-0.39373400807380676,1.1042200326919556,0.18604299426078796,-0.39373400807380676,0.9274656772613525,-0.19021989405155182,-0.40679800510406494,0.9476220011711121,0.18604299426078796,1.2122000455856323,0.06968998163938522,0.18604299426078796,2.9846301078796387,0.06244217976927757,-0.19021989405155182,2.6202099323272705,0,0.18604299426078796,2.9846301078796387,0.9476220011711121,0.18604299426078796,1.2122000455856323,0.7871567010879517,-0.19021989405155182,1.0321199893951416,0.06968998163938522,0.18604299426078796,2.9846301078796387,0.4352833032608032,3.4230079650878906,-0.5269715189933777,0.5534433126449585,3.47078800201416,-1.725530982017517,0.02189028076827526,5.638107776641846,-0.55680251121521,0.02189028076827526,0.8222975730895996,-0.5273085236549377,0.02189028076827526,0.13951559364795685,-4.038081169128418,0.5645663142204285,2.5123178958892822,-2.3281021118164062,0.40965428948402405,2.434417963027954,-0.5219244956970215,0.5645663142204285,2.5123178958892822,-2.3281021118164062,0.5534433126449585,3.47078800201416,-1.725530982017517,0.02189028076827526,2.8376779556274414,-0.47280651330947876,0.02189028076827526,5.6318678855896,-0.508710503578186,0.02189028076827526,3.191927909851074,1.2610490322113037,0.02189028076827526,1.1766480207443237,3.1722280979156494,0.02189028076827526,0.8694437146186829,-0.44751450419425964,0.02189028076827526,2.8376779556274414,-0.47280651330947876,0.40965428948402405,2.434417963027954,-0.5219244956970215,0.02189028076827526,0.8222975730895996,-0.5273085236549377,0.5645663142204285,2.5123178958892822,-2.3281021118164062,0.4352833032608032,3.4230079650878906,-0.5269715189933777,0.40965428948402405,2.434417963027954,-0.5219244956970215,0.5534433126449585,3.47078800201416,-1.725530982017517,0.02189028076827526,3.191927909851074,1.2610490322113037,0.02189028076827526,1.1766480207443237,3.1722280979156494,0.02189028076827526,2.8376779556274414,-0.47280651330947876,0,2.838710069656372,-0.47393500804901123,0.02189028076827526,5.6318678855896,-0.508710503578186,0.02189028076827526,2.8376779556274414,-0.47280651330947876,0,3.192960023880005,1.2599200010299683,0.02189028076827526,5.6318678855896,-0.508710503578186,0,5.632900238037109,-0.5098389983177185,0.38776400685310364,2.4354500770568848,-0.523052990436554,0.4352833032608032,3.4230079650878906,-0.5269715189933777,0.4133929908275604,3.4240400791168213,-0.5281000137329102,0,1.1776800155639648,3.171099901199341,0.02189028076827526,3.191927909851074,1.2610490322113037,0,3.192960023880005,1.2599200010299683,0.5426759719848633,2.513350009918213,-2.3292300701141357,0.02189028076827526,0.13951559364795685,-4.038081169128418,0,0.1405480057001114,-4.039209842681885,0.5426759719848633,2.513350009918213,-2.3292300701141357,0.5534433126449585,3.47078800201416,-1.725530982017517,0.5645663142204285,2.5123178958892822,-2.3281021118164062,0.38776400685310364,2.4354500770568848,-0.523052990436554,0.02189028076827526,0.8222975730895996,-0.5273085236549377,0.40965428948402405,2.434417963027954,-0.5219244956970215,0,0.8233299851417542,-0.5284370183944702,0.02189028076827526,0.13951559364795685,-4.038081169128418,0.02189028076827526,0.8222975730895996,-0.5273085236549377,0.5315529704093933,3.471820116043091,-1.7266600131988525,0.02189028076827526,5.638107776641846,-0.55680251121521,0.5534433126449585,3.47078800201416,-1.725530982017517,0,1.1776800155639648,3.171099901199341,0.02189028076827526,0.8694437146186829,-0.44751450419425964,0.02189028076827526,1.1766480207443237,3.1722280979156494,0.4133929908275604,3.4240400791168213,-0.5281000137329102,0.02189028076827526,5.638107776641846,-0.55680251121521,0,5.6391401290893555,-0.5579310059547424,0,0.8704760074615479,-0.4486429989337921,0.02189028076827526,2.8376779556274414,-0.47280651330947876,0.02189028076827526,0.8694437146186829,-0.44751450419425964,0,2.838710069656372,-0.47393500804901123,0,5.632900238037109,-0.5098389983177185,0.02189028076827526,5.6318678855896,-0.508710503578186,0,3.192960023880005,1.2599200010299683,0.02189028076827526,3.191927909851074,1.2610490322113037,0.02189028076827526,5.6318678855896,-0.508710503578186,0.38776400685310364,2.4354500770568848,-0.523052990436554,0.40965428948402405,2.434417963027954,-0.5219244956970215,0.4352833032608032,3.4230079650878906,-0.5269715189933777,0,1.1776800155639648,3.171099901199341,0.02189028076827526,1.1766480207443237,3.1722280979156494,0.02189028076827526,3.191927909851074,1.2610490322113037,0.5426759719848633,2.513350009918213,-2.3292300701141357,0.5645663142204285,2.5123178958892822,-2.3281021118164062,0.02189028076827526,0.13951559364795685,-4.038081169128418,0.5426759719848633,2.513350009918213,-2.3292300701141357,0.5315529704093933,3.471820116043091,-1.7266600131988525,0.5534433126449585,3.47078800201416,-1.725530982017517,0.38776400685310364,2.4354500770568848,-0.523052990436554,0,0.8233299851417542,-0.5284370183944702,0.02189028076827526,0.8222975730895996,-0.5273085236549377,0,0.8233299851417542,-0.5284370183944702,0,0.1405480057001114,-4.039209842681885,0.02189028076827526,0.13951559364795685,-4.038081169128418,0.5315529704093933,3.471820116043091,-1.7266600131988525,0,5.6391401290893555,-0.5579310059547424,0.02189028076827526,5.638107776641846,-0.55680251121521,0,1.1776800155639648,3.171099901199341,0,0.8704760074615479,-0.4486429989337921,0.02189028076827526,0.8694437146186829,-0.44751450419425964,0.4133929908275604,3.4240400791168213,-0.5281000137329102,0.4352833032608032,3.4230079650878906,-0.5269715189933777,0.02189028076827526,5.638107776641846,-0.55680251121521,0,0.8704760074615479,-0.4486429989337921,0,2.838710069656372,-0.47393500804901123,0.02189028076827526,2.8376779556274414,-0.47280651330947876],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,0.3955115079879761,0.9184612035751343,0,0.3955115079879761,0.9184612035751343,0,0.3955115079879761,0.9184612035751343,0.9353296160697937,0.35045990347862244,0.04833685979247093,0.9353296160697937,0.35045990347862244,0.04833685979247093,0.9353296160697937,0.35045990347862244,0.04833685979247093,0,0.15948909521102905,-0.9871997833251953,0,0.15948909521102905,-0.9871997833251953,0,0.15948909521102905,-0.9871997833251953,-0.954758882522583,0.29725250601768494,0.008747518062591553,-0.954758882522583,0.29725250601768494,0.008747518062591553,-0.954758882522583,0.29725250601768494,0.008747518062591553,0,1,-0.0000030321700705826515,0,1,-0.0000030321700705826515,0,1,-0.0000030321700705826515,0.6282994151115417,-0.3925077021121979,0.6716976761817932,-0.6404429078102112,-0.38936251401901245,0.6619893908500671,-0.6550025939941406,-0.45488840341567993,-0.6033642292022705,-0.7338674068450928,-0.05017368867993355,0.6774371862411499,-0.626856803894043,0.7631232738494873,0.15714150667190552,-0.6380419731140137,0.3414834141731262,-0.6901388168334961,-0.6918119192123413,-0.4209223985671997,0.5867033004760742,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,-0.5846825838088989,-0.39894410967826843,-0.7063922882080078,-0.7226049900054932,0.10077469795942307,0.6838759779930115,-0.6380419731140137,0.3414834141731262,-0.6901388168334961,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,-0.6888872981071472,-0.009308457374572754,-0.7248088121414185,-0.7255392074584961,0.4382289946079254,0.5306113958358765,-0.5209239721298218,0.8048092126846313,-0.2844649851322174,-0.573306679725647,-0.27943548560142517,0.7702177166938782,-0.6888872981071472,-0.009308457374572754,-0.7248088121414185,-0.5728141069412231,-0.5889587998390198,-0.5700979232788086,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,-0.4994179904460907,0.8637269735336304,-0.06750869005918503,0.9999908208847046,0.0003357109962962568,0.0042726388201117516,0.9999908208847046,0.00036623000050894916,0.0042726388201117516,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,0,-0.0853613018989563,-0.996350109577179,-0.499393105506897,-0.862637996673584,0.08038871735334396,-0.4994179904460907,0.8637269735336304,-0.06750869005918503,-0.5005797147750854,0.8630589842796326,-0.06744790077209473,0.9999908208847046,0.0003357109962962568,0.0042726388201117516,-0.499393105506897,-0.862637996673584,0.08038871735334396,-0.500576376914978,-0.8619546890258789,0.080357126891613,0,-1,0,0,-1,0,0,-1,0,-0.49929070472717285,0.007324515841901302,-0.8664035797119141,0.9999880790710449,0.004883049987256527,0,0.9999880790710449,0.004883049987256527,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-0.49929070472717285,0.007324515841901302,0.8664035797119141,-0.49929070472717285,0.007324515841901302,-0.8664035797119141,-0.5006642937660217,0.007324515841901302,-0.8656105995178223,0.9999880790710449,0.004883049987256527,0,-0.49929070472717285,0.007324515841901302,0.8664035797119141,-0.5006642937660217,0.007324515841901302,0.8656105995178223,0,0.7741516828536987,0.6330000758171082,-0.398985892534256,0.6538267135620117,0.6429005265235901,-0.4298974871635437,-0.5188924074172974,0.7388768196105957,0.7898315787315369,0.5852934122085571,0.18329699337482452,0.398985892534256,0.6538267135620117,0.6429005265235901,0.4298974871635437,-0.5188924074172974,0.7388768196105957,-0.4962101876735687,-0.5149794220924377,-0.6989790797233582,-0.4637626111507416,0.6384518146514893,-0.6142504215240479,0,0.7741516828536987,-0.6330000758171082,-0.4298974871635437,-0.5188924074172974,0.7388768196105957,-0.398985892534256,0.6538267135620117,0.6429005265235901,-0.7886508107185364,0.5861243009567261,0.18571029603481293,0,1,0,0,1,0,0,1,0,0,-0.6063972115516663,0.7951620221138,-0.4298974871635437,-0.5188924074172974,0.7388768196105957,-0.64877849817276,-0.7287085056304932,0.21925030648708344,0.4550701081752777,-0.4953857958316803,-0.7399352788925171,0.416711688041687,0.6493610143661499,-0.6361461281776428,0.7886521220207214,0.5910390019416809,-0.16941319406032562,-0.6575973033905029,-0.7217181921005249,-0.21607589721679688,-0.4962101876735687,-0.5149794220924377,-0.6989790797233582,-0.01870834082365036,-0.603794276714325,-0.7969205975532532,-0.4637626111507416,0.6384518146514893,-0.6142504215240479,-0.4962101876735687,-0.5149794220924377,-0.6989790797233582,-0.6575973033905029,-0.7217181921005249,-0.21607589721679688,0,1,0,0,1,0,0,1,0,0.6516115069389343,-0.7585499882698059,-0.002105772029608488,0.80521160364151,0.5929830074310303,0.0023804299999028444,0.7898315787315369,0.5852934122085571,0.18329699337482452,-0.64877849817276,-0.7287085056304932,0.21925030648708344,-0.6516112089157104,-0.7585498094558716,0.002258359920233488,0,-1,0.00003051940075238235,-0.8052117824554443,0.5929831266403198,-0.002258359920233488,-0.6516112089157104,-0.7585498094558716,0.002258359920233488,-0.64877849817276,-0.7287085056304932,0.21925030648708344,0,1,0,0,1,0,0,1,0,0.6532105207443237,-0.7310659885406494,-0.1971258968114853,0.7886521220207214,0.5910390019416809,-0.16941319406032562,0.80521160364151,0.5929830074310303,0.0023804299999028444,-0.6516112089157104,-0.7585498094558716,0.002258359920233488,-0.6575973033905029,-0.7217181921005249,-0.21607589721679688,0.0010070799617096782,-0.9837666749954224,-0.17944930493831635,-0.7876980900764465,0.5855395793914795,-0.19150729477405548,-0.6575973033905029,-0.7217181921005249,-0.21607589721679688,-0.6516112089157104,-0.7585498094558716,0.002258359920233488,0,1,0,0,1,0,0,1,0,0.6515898704528809,-0.7254163026809692,0.22181519865989685,0.4298974871635437,-0.5188924074172974,0.7388768196105957,0,-0.6063972115516663,0.7951620221138,0.6516115069389343,-0.7585499882698059,-0.002105772029608488,0.6515898704528809,-0.7254163026809692,0.22181519865989685,-0.003112911945208907,-0.9795680046081543,0.20108960568904877,0.6532105207443237,-0.7310659885406494,-0.1971258968114853,0.6516115069389343,-0.7585499882698059,-0.002105772029608488,0,-1,0.00003051940075238235,0.4550701081752777,-0.4953857958316803,-0.7399352788925171,0.6532105207443237,-0.7310659885406494,-0.1971258968114853,0.0010070799617096782,-0.9837666749954224,-0.17944930493831635,0.416711688041687,0.6493610143661499,-0.6361461281776428,0.4550701081752777,-0.4953857958316803,-0.7399352788925171,-0.01870834082365036,-0.603794276714325,-0.7969205975532532,0,1,-1.529309940906387e-7,0,1,-1.529309940906387e-7,0,1,-1.529309940906387e-7,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.4298974871635437,-0.5188924074172974,0.7388768196105957,0.398985892534256,0.6538267135620117,0.6429005265235901,0,0.7741516828536987,0.6330000758171082,0.18366220593452454,0.9208748936653137,-0.3438861072063446,0.5594785809516907,0.8104687929153442,-0.17356279492378235,-0.7886508107185364,0.5861243009567261,0.18571029603481293,0,0.8772674202919006,-0.48000219464302063,0.18366220593452454,0.9208748936653137,-0.3438861072063446,-0.398985892534256,0.6538267135620117,0.6429005265235901,0.5708643794059753,0.8051307797431946,0.16086749732494354,0.18839649856090546,0.9235184788703918,0.33409640192985535,-0.4637626111507416,0.6384518146514893,-0.6142504215240479,0.18839649856090546,0.9235184788703918,0.33409640192985535,0,0.8772674202919006,0.48000219464302063,0,0.7741516828536987,-0.6330000758171082,0.5594785809516907,0.8104687929153442,-0.17356279492378235,0.6242073774337769,0.7812587022781372,-0.0001220760022988543,-0.8052117824554443,0.5929831266403198,-0.002258359920233488,0.6242073774337769,0.7812587022781372,-0.0001220760022988543,0.5708643794059753,0.8051307797431946,0.16086749732494354,-0.7876980900764465,0.5855395793914795,-0.19150729477405548,0,0.8772674202919006,0.48000219464302063,-0.18796870112419128,0.9229971170425415,0.3357740044593811,0.416711688041687,0.6493610143661499,-0.6361461281776428,-0.18796870112419128,0.9229971170425415,0.3357740044593811,-0.5561596155166626,0.8176214098930359,0.14893589913845062,0.7886521220207214,0.5910390019416809,-0.16941319406032562,-0.5561596155166626,0.8176214098930359,0.14893589913845062,-0.5995162725448608,0.800362229347229,-0.0009460910223424435,0.80521160364151,0.5929830074310303,0.0023804299999028444,-0.5995162725448608,0.800362229347229,-0.0009460910223424435,-0.5315539836883545,0.8305512070655823,-0.16623839735984802,0.7898315787315369,0.5852934122085571,0.18329699337482452,-0.5315539836883545,0.8305512070655823,-0.16623839735984802,-0.1846098005771637,0.921920120716095,-0.3405623137950897,0.398985892534256,0.6538267135620117,0.6429005265235901,-0.1846098005771637,0.921920120716095,-0.3405623137950897,0,0.8772674202919006,-0.48000219464302063,0,0.7741516828536987,0.6330000758171082,0,0.920799195766449,-0.3900372087955475,0.37456390261650085,0.8277760744094849,-0.41771820187568665,0.18366220593452454,0.9208748936653137,-0.3438861072063446,0.37456390261650085,0.8277760744094849,-0.41771820187568665,0.5716853737831116,0.8092162013053894,-0.13544410467147827,0.5594785809516907,0.8104687929153442,-0.17356279492378235,0.4080091118812561,0.816262423992157,0.4089551866054535,0,0.9207882285118103,0.3900631070137024,0,0.8772674202919006,0.48000219464302063,0.5699474215507507,0.8113548159599304,0.12985950708389282,0.4080091118812561,0.816262423992157,0.4089551866054535,0.18839649856090546,0.9235184788703918,0.33409640192985535,0.5716853737831116,0.8092162013053894,-0.13544410467147827,0.5847733020782471,0.8111932277679443,0.0024109480436891317,0.6242073774337769,0.7812587022781372,-0.0001220760022988543,0.5847733020782471,0.8111932277679443,0.0024109480436891317,0.5699474215507507,0.8113548159599304,0.12985950708389282,0.5708643794059753,0.8051307797431946,0.16086749732494354,-0.40031829476356506,0.8193141222000122,0.41045060753822327,-0.5444023013114929,0.8303980231285095,0.11859779804944992,-0.5561596155166626,0.8176214098930359,0.14893589913845062,0,0.9207882285118103,0.3900631070137024,-0.40031829476356506,0.8193141222000122,0.41045060753822327,-0.18796870112419128,0.9229971170425415,0.3357740044593811,-0.5444023013114929,0.8303980231285095,0.11859779804944992,-0.5589184165000916,0.8292220234870911,0.0010681150015443563,-0.5995162725448608,0.800362229347229,-0.0009460910223424435,-0.5589184165000916,0.8292220234870911,0.0010681150015443563,-0.5412638783454895,0.8303449749946594,-0.1325158029794693,-0.5315539836883545,0.8305512070655823,-0.16623839735984802,-0.39055630564689636,0.8222832083702087,-0.4139035940170288,0,0.920799195766449,-0.3900372087955475,0,0.8772674202919006,-0.48000219464302063,-0.5412638783454895,0.8303449749946594,-0.1325158029794693,-0.39055630564689636,0.8222832083702087,-0.4139035940170288,-0.1846098005771637,0.921920120716095,-0.3405623137950897,0,0.3955115079879761,0.9184610247612,0,0.3955115079879761,0.9184610247612,0,0.3955115079879761,0.9184610247612,0.9917870759963989,0.12790030241012573,0,0.9917870759963989,0.12790030241012573,0,0.9917870759963989,0.12790030241012573,0,0,0.15948909521102905,-0.9871997833251953,0,0.15948909521102905,-0.9871997833251953,0,0.15948909521102905,-0.9871997833251953,-0.943139374256134,0.3323974013328552,0,-0.943139374256134,0.3323974013328552,0,-0.943139374256134,0.3323974013328552,0,0,1,-0.0000030671299100504257,0,1,-0.0000030671299100504257,0,1,-0.0000030671299100504257,0.6060569882392883,-0.5019853711128235,-0.6170135140419006,0.6282994151115417,-0.3925077021121979,0.6716976761817932,-0.6550025939941406,-0.45488840341567993,-0.6033642292022705,-0.7226049900054932,0.10077469795942307,0.6838759779930115,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,-0.6918119192123413,-0.4209223985671997,0.5867033004760742,-0.7338674068450928,-0.05017368867993355,0.6774371862411499,-0.6380419731140137,0.3414834141731262,-0.6901388168334961,-0.7226049900054932,0.10077469795942307,0.6838759779930115,-0.7255392074584961,0.4382289946079254,0.5306113958358765,-0.6888872981071472,-0.009308457374572754,-0.7248088121414185,-0.573306679725647,-0.27943548560142517,0.7702177166938782,-0.5005797147750854,0.8630589842796326,-0.06744790077209473,-0.4994179904460907,0.8637269735336304,-0.06750869005918503,0.9999908208847046,0.00036623000050894916,0.0042726388201117516,-0.500576376914978,-0.8619546890258789,0.080357126891613,-0.499393105506897,-0.862637996673584,0.08038871735334396,-0.5005797147750854,0.8630589842796326,-0.06744790077209473,0.9999908208847046,0.00036623000050894916,0.0042726388201117516,0.9999908208847046,0.0003357109962962568,0.0042726388201117516,-0.500576376914978,-0.8619546890258789,0.080357126891613,-0.5006642937660217,0.007324515841901302,-0.8656105995178223,-0.49929070472717285,0.007324515841901302,-0.8664035797119141,0.9999880790710449,0.004883049987256527,0,-0.5006642937660217,0.007324515841901302,0.8656105995178223,-0.49929070472717285,0.007324515841901302,0.8664035797119141,-0.5006642937660217,0.007324515841901302,-0.8656105995178223,0.9999880790710449,0.004883049987256527,0,0.9999880790710449,0.004883049987256527,0,-0.5006642937660217,0.007324515841901302,0.8656105995178223,0,-0.6063972115516663,0.7951620221138,0,0.7741516828536987,0.6330000758171082,-0.4298974871635437,-0.5188924074172974,0.7388768196105957,0.6515898704528809,-0.7254163026809692,0.22181519865989685,0.7898315787315369,0.5852934122085571,0.18329699337482452,0.4298974871635437,-0.5188924074172974,0.7388768196105957,-0.01870834082365036,-0.603794276714325,-0.7969205975532532,-0.4962101876735687,-0.5149794220924377,-0.6989790797233582,0,0.7741516828536987,-0.6330000758171082,-0.64877849817276,-0.7287085056304932,0.21925030648708344,-0.4298974871635437,-0.5188924074172974,0.7388768196105957,-0.7886508107185364,0.5861243009567261,0.18571029603481293,0,1,0,0,1,0,0,1,0,-0.003112911945208907,-0.9795680046081543,0.20108960568904877,0,-0.6063972115516663,0.7951620221138,-0.64877849817276,-0.7287085056304932,0.21925030648708344,0.6532105207443237,-0.7310659885406494,-0.1971258968114853,0.4550701081752777,-0.4953857958316803,-0.7399352788925171,0.7886521220207214,0.5910390019416809,-0.16941319406032562,0.0010070799617096782,-0.9837666749954224,-0.17944930493831635,-0.6575973033905029,-0.7217181921005249,-0.21607589721679688,-0.01870834082365036,-0.603794276714325,-0.7969205975532532,-0.7876980900764465,0.5855395793914795,-0.19150729477405548,-0.4637626111507416,0.6384518146514893,-0.6142504215240479,-0.6575973033905029,-0.7217181921005249,-0.21607589721679688,0,1,0,0,1,0,0,1,0,0.6515898704528809,-0.7254163026809692,0.22181519865989685,0.6516115069389343,-0.7585499882698059,-0.002105772029608488,0.7898315787315369,0.5852934122085571,0.18329699337482452,-0.003112911945208907,-0.9795680046081543,0.20108960568904877,-0.64877849817276,-0.7287085056304932,0.21925030648708344,0,-1,0.00003051940075238235,-0.7886508107185364,0.5861243009567261,0.18571029603481293,-0.8052117824554443,0.5929831266403198,-0.002258359920233488,-0.64877849817276,-0.7287085056304932,0.21925030648708344,0,1,0,0,1,0,0.5716853737831116,0.8092162013053894,-0.13544410467147827,0.6516115069389343,-0.7585499882698059,-0.002105772029608488,0.6532105207443237,-0.7310659885406494,-0.1971258968114853,0.80521160364151,0.5929830074310303,0.0023804299999028444,0,-1,0.00003051940075238235,-0.6516112089157104,-0.7585498094558716,0.002258359920233488,0.0010070799617096782,-0.9837666749954224,-0.17944930493831635,-0.8052117824554443,0.5929831266403198,-0.002258359920233488,-0.7876980900764465,0.5855395793914795,-0.19150729477405548,-0.6516112089157104,-0.7585498094558716,0.002258359920233488,0,1,0,0,1,0,0,1,0,-0.003112911945208907,-0.9795680046081543,0.20108960568904877,0.6515898704528809,-0.7254163026809692,0.22181519865989685,0,-0.6063972115516663,0.7951620221138,0,-1,0.00003051940075238235,0.6516115069389343,-0.7585499882698059,-0.002105772029608488,-0.003112911945208907,-0.9795680046081543,0.20108960568904877,0.0010070799617096782,-0.9837666749954224,-0.17944930493831635,0.6532105207443237,-0.7310659885406494,-0.1971258968114853,0,-1,0.00003051940075238235,-0.01870834082365036,-0.603794276714325,-0.7969205975532532,0.4550701081752777,-0.4953857958316803,-0.7399352788925171,0.0010070799617096782,-0.9837666749954224,-0.17944930493831635,0,0.7741516828536987,-0.6330000758171082,0.416711688041687,0.6493610143661499,-0.6361461281776428,-0.01870834082365036,-0.603794276714325,-0.7969205975532532,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-0.6063972115516663,0.7951620221138,0.4298974871635437,-0.5188924074172974,0.7388768196105957,0,0.7741516828536987,0.6330000758171082,-0.398985892534256,0.6538267135620117,0.6429005265235901,0.18366220593452454,0.9208748936653137,-0.3438861072063446,-0.7886508107185364,0.5861243009567261,0.18571029603481293,0,0.7741516828536987,0.6330000758171082,0,0.8772674202919006,-0.48000219464302063,-0.398985892534256,0.6538267135620117,0.6429005265235901,-0.7876980900764465,0.5855395793914795,-0.19150729477405548,0.5708643794059753,0.8051307797431946,0.16086749732494354,-0.4637626111507416,0.6384518146514893,-0.6142504215240479,-0.4637626111507416,0.6384518146514893,-0.6142504215240479,0.18839649856090546,0.9235184788703918,0.33409640192985535,0,0.7741516828536987,-0.6330000758171082,-0.7886508107185364,0.5861243009567261,0.18571029603481293,0.5594785809516907,0.8104687929153442,-0.17356279492378235,-0.8052117824554443,0.5929831266403198,-0.002258359920233488,-0.8052117824554443,0.5929831266403198,-0.002258359920233488,0.6242073774337769,0.7812587022781372,-0.0001220760022988543,-0.7876980900764465,0.5855395793914795,-0.19150729477405548,0,0.7741516828536987,-0.6330000758171082,0,0.8772674202919006,0.48000219464302063,0.416711688041687,0.6493610143661499,-0.6361461281776428,0.416711688041687,0.6493610143661499,-0.6361461281776428,-0.18796870112419128,0.9229971170425415,0.3357740044593811,0.7886521220207214,0.5910390019416809,-0.16941319406032562,0.7886521220207214,0.5910390019416809,-0.16941319406032562,-0.5561596155166626,0.8176214098930359,0.14893589913845062,0.80521160364151,0.5929830074310303,0.0023804299999028444,0.80521160364151,0.5929830074310303,0.0023804299999028444,-0.5995162725448608,0.800362229347229,-0.0009460910223424435,0.7898315787315369,0.5852934122085571,0.18329699337482452,0.7898315787315369,0.5852934122085571,0.18329699337482452,-0.5315539836883545,0.8305512070655823,-0.16623839735984802,0.398985892534256,0.6538267135620117,0.6429005265235901,0.398985892534256,0.6538267135620117,0.6429005265235901,-0.1846098005771637,0.921920120716095,-0.3405623137950897,0,0.7741516828536987,0.6330000758171082,0,0.8772674202919006,-0.48000219464302063,0,0.920799195766449,-0.3900372087955475,0.18366220593452454,0.9208748936653137,-0.3438861072063446,0.18366220593452454,0.9208748936653137,-0.3438861072063446,0.37456390261650085,0.8277760744094849,-0.41771820187568665,0.5594785809516907,0.8104687929153442,-0.17356279492378235,0.18839649856090546,0.9235184788703918,0.33409640192985535,0.4080091118812561,0.816262423992157,0.4089551866054535,0,0.8772674202919006,0.48000219464302063,0.5708643794059753,0.8051307797431946,0.16086749732494354,0.5699474215507507,0.8113548159599304,0.12985950708389282,0.18839649856090546,0.9235184788703918,0.33409640192985535,0.5594785809516907,0.8104687929153442,-0.17356279492378235,0.5716853737831116,0.8092162013053894,-0.13544410467147827,0.6242073774337769,0.7812587022781372,-0.0001220760022988543,0.6242073774337769,0.7812587022781372,-0.0001220760022988543,0.5847733020782471,0.8111932277679443,0.0024109480436891317,0.5708643794059753,0.8051307797431946,0.16086749732494354,-0.18796870112419128,0.9229971170425415,0.3357740044593811,-0.40031829476356506,0.8193141222000122,0.41045060753822327,-0.5561596155166626,0.8176214098930359,0.14893589913845062,0,0.8772674202919006,0.48000219464302063,0,0.9207882285118103,0.3900631070137024,-0.18796870112419128,0.9229971170425415,0.3357740044593811,-0.5561596155166626,0.8176214098930359,0.14893589913845062,-0.5444023013114929,0.8303980231285095,0.11859779804944992,-0.5995162725448608,0.800362229347229,-0.0009460910223424435,-0.5995162725448608,0.800362229347229,-0.0009460910223424435,-0.5589184165000916,0.8292220234870911,0.0010681150015443563,-0.5315539836883545,0.8305512070655823,-0.16623839735984802,-0.1846098005771637,0.921920120716095,-0.3405623137950897,-0.39055630564689636,0.8222832083702087,-0.4139035940170288,0,0.8772674202919006,-0.48000219464302063,-0.5315539836883545,0.8305512070655823,-0.16623839735984802,-0.5412638783454895,0.8303449749946594,-0.1325158029794693,-0.1846098005771637,0.921920120716095,-0.3405623137950897,0.6731597781181335,0.05838298052549362,0.7371888160705566,0.7742664217948914,0.3747119903564453,-0.510002613067627,0.45397019386291504,0.8553562164306641,0.24955390393733978,0.46807920932769775,-0.5872277021408081,0.6603527069091797,0.5032888054847717,-0.5052419900894165,-0.7010213732719421,0.8005555272102356,0.2549288868904114,-0.5423305034637451,0.6757258176803589,-0.09341924637556076,0.7312096953392029,0.8005555272102356,0.2549288868904114,-0.5423305034637451,0.7742664217948914,0.3747119903564453,-0.510002613067627,0.7248712182044983,-0.008850634098052979,-0.6888275742530823,0.5646960139274597,0.7888286709785461,-0.24262729287147522,0.7189680933952332,0.4456698000431061,0.5333511233329773,0.5263078808784485,-0.31349581480026245,0.7903926968574524,0.5726078152656555,-0.6248267292976379,-0.5307654738426208,0.7248712182044983,-0.008850634098052979,-0.6888275742530823,0.6757258176803589,-0.09341924637556076,0.7312096953392029,0.46807920932769775,-0.5872277021408081,0.6603527069091797,0.8005555272102356,0.2549288868904114,-0.5423305034637451,0.6731597781181335,0.05838298052549362,0.7371888160705566,0.6757258176803589,-0.09341924637556076,0.7312096953392029,0.7742664217948914,0.3747119903564453,-0.510002613067627,0.7189680933952332,0.4456698000431061,0.5333511233329773,0.5263078808784485,-0.31349581480026245,0.7903926968574524,0.7248712182044983,-0.008850634098052979,-0.6888275742530823,-0.6888872981071472,-0.009308457374572754,-0.7248088121414185,0.5646960139274597,0.7888286709785461,-0.24262729287147522,0.7248712182044983,-0.008850634098052979,-0.6888275742530823,-0.7255392074584961,0.4382289946079254,0.5306113958358765,0.5646960139274597,0.7888286709785461,-0.24262729287147522,-0.5209239721298218,0.8048092126846313,-0.2844649851322174,-0.7226049900054932,0.10077469795942307,0.6838759779930115,0.6731597781181335,0.05838298052549362,0.7371888160705566,-0.7338674068450928,-0.05017368867993355,0.6774371862411499,-0.573306679725647,-0.27943548560142517,0.7702177166938782,0.7189680933952332,0.4456698000431061,0.5333511233329773,-0.7255392074584961,0.4382289946079254,0.5306113958358765,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,0.5032888054847717,-0.5052419900894165,-0.7010213732719421,-0.5846825838088989,-0.39894410967826843,-0.7063922882080078,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,0.7742664217948914,0.3747119903564453,-0.510002613067627,0.8005555272102356,0.2549288868904114,-0.5423305034637451,-0.7226049900054932,0.10077469795942307,0.6838759779930115,0.46807920932769775,-0.5872277021408081,0.6603527069091797,0.6757258176803589,-0.09341924637556076,0.7312096953392029,-0.6918119192123413,-0.4209223985671997,0.5867033004760742,0.5032888054847717,-0.5052419900894165,-0.7010213732719421,0.46807920932769775,-0.5872277021408081,0.6603527069091797,-0.6380419731140137,0.3414834141731262,-0.6901388168334961,0.45397019386291504,0.8553562164306641,0.24955390393733978,0.7742664217948914,0.3747119903564453,-0.510002613067627,-0.573306679725647,-0.27943548560142517,0.7702177166938782,0.5726078152656555,-0.6248267292976379,-0.5307654738426208,0.5263078808784485,-0.31349581480026245,0.7903926968574524,-0.7338674068450928,-0.05017368867993355,0.6774371862411499,0.45397019386291504,0.8553562164306641,0.24955390393733978,-0.626856803894043,0.7631232738494873,0.15714150667190552,-0.5728141069412231,-0.5889587998390198,-0.5700979232788086,0.7248712182044983,-0.008850634098052979,-0.6888275742530823,0.5726078152656555,-0.6248267292976379,-0.5307654738426208,-0.6888872981071472,-0.009308457374572754,-0.7248088121414185,-0.5209239721298218,0.8048092126846313,-0.2844649851322174,0.5646960139274597,0.7888286709785461,-0.24262729287147522,-0.7255392074584961,0.4382289946079254,0.5306113958358765,0.7189680933952332,0.4456698000431061,0.5333511233329773,0.5646960139274597,0.7888286709785461,-0.24262729287147522,-0.7226049900054932,0.10077469795942307,0.6838759779930115,0.6757258176803589,-0.09341924637556076,0.7312096953392029,0.6731597781181335,0.05838298052549362,0.7371888160705566,-0.573306679725647,-0.27943548560142517,0.7702177166938782,0.5263078808784485,-0.31349581480026245,0.7903926968574524,0.7189680933952332,0.4456698000431061,0.5333511233329773,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,0.8005555272102356,0.2549288868904114,-0.5423305034637451,0.5032888054847717,-0.5052419900894165,-0.7010213732719421,-0.5987511873245239,0.5045086145401001,-0.6220675706863403,-0.6380419731140137,0.3414834141731262,-0.6901388168334961,0.7742664217948914,0.3747119903564453,-0.510002613067627,-0.7226049900054932,0.10077469795942307,0.6838759779930115,-0.6918119192123413,-0.4209223985671997,0.5867033004760742,0.46807920932769775,-0.5872277021408081,0.6603527069091797,-0.6918119192123413,-0.4209223985671997,0.5867033004760742,-0.5846825838088989,-0.39894410967826843,-0.7063922882080078,0.5032888054847717,-0.5052419900894165,-0.7010213732719421,-0.6380419731140137,0.3414834141731262,-0.6901388168334961,-0.626856803894043,0.7631232738494873,0.15714150667190552,0.45397019386291504,0.8553562164306641,0.24955390393733978,-0.573306679725647,-0.27943548560142517,0.7702177166938782,-0.5728141069412231,-0.5889587998390198,-0.5700979232788086,0.5726078152656555,-0.6248267292976379,-0.5307654738426208,-0.7338674068450928,-0.05017368867993355,0.6774371862411499,0.6731597781181335,0.05838298052549362,0.7371888160705566,0.45397019386291504,0.8553562164306641,0.24955390393733978,-0.5728141069412231,-0.5889587998390198,-0.5700979232788086,-0.6888872981071472,-0.009308457374572754,-0.7248088121414185,0.7248712182044983,-0.008850634098052979,-0.6888275742530823],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"uv\": {\n\t\t\t\t\t\t\"itemSize\": 2,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0.47432398796081543,0,0,0,0,0.8168449997901917,1,0,0.16606299579143524,1,1,1,0.6787139773368835,0,0,0.8168449997901917,0.16606299579143524,1,0.5867149829864502,1,0,0,0,1,1,0,0.5867149829864502,1,1,1,0.75,0.9330130219459534,0,0.5,0.5,0.5,0.33333298563957214,1,0,1,0,0,0,0.5,0.75,0.06698726862668991,0.5,0.5,0.75,0.06698726862668991,0.75,0.9330130219459534,0.5,0.5,0.6666669845581055,1,0.33333298563957214,1,0.33333298563957214,0,1,1,0.6666669845581055,1,0.6666669845581055,0,0.75,0.9330130219459534,0,0.5,0.5,0.5,0.33333298563957214,1,0,1,0,0,0,0.5,0.75,0.06698726862668991,0.5,0.5,0.75,0.06698726862668991,0.75,0.9330130219459534,0.5,0.5,0.6666669845581055,1,0.33333298563957214,1,0.33333298563957214,0,1,1,0.6666669845581055,1,0.6666669845581055,0,0.5,1,0,1,0,0,0.2547230124473572,1,0,1,0,0,1,0,1,1,0.5,1,1,0,1,1,0.7452769875526428,1,0.5,0.2547230124473572,0,0.2547230124473572,0.014085290022194386,0.007175623904913664,0.5,1,0,1,0,0.7452769875526428,1,0,1,1,0.710457980632782,1,0,0.28954198956489563,0,0,0.5,0,0,1,0,0,0.28954198956489563,0,0.5,0.9915819764137268,0.0126069700345397,0.9926999807357788,0,0.710457980632782,0.48237699270248413,0,0.48237699270248413,1,0.2547230124473572,1,0,0.7452769875526428,0,0.5176230072975159,0.5,0.5176230072975159,0.5176230072975159,1,0.5176230072975159,0,0.7452769875526428,0,0.5,0.48237699270248413,0.02588408999145031,0.48237699270248413,0,0.2547230124473572,0.710457980632782,0,0.710457980632782,1,0.48237699270248413,1,0,0.5176230072975159,0,0.28954198956489563,0.5,0.28954198956489563,0.28954198956489563,1,0.28954198956489563,0,0.5176230072975159,0,0.5,0.710457980632782,0,0.710457980632782,0.02588408999145031,0.48237699270248413,1,0.7452769875526428,1,1,0.5,1,1,0.5176230072975159,1,0.7452769875526428,0.5,0.7452769875526428,1,0.28954198956489563,1,0.5176230072975159,0.5,0.5176230072975159,1,0,1,0.28954198956489563,0.5,0.28954198956489563,0,1,0,0,0.5,0,1,0.710457980632782,0.9873930215835571,0.9926999807357788,0.5,0.9915819764137268,0.9741160273551941,0.48237699270248413,1,0.710457980632782,0.5,0.710457980632782,1,0.2547230124473572,0.9741160273551941,0.48237699270248413,0.5,0.48237699270248413,0.9859150052070618,0.007175623904913664,1,0.2547230124473572,0.5,0.2547230124473572,1,0,1,1,0.5,1,0.014085290022194386,0.007175623904913664,0,0.2547230124473572,0,0.2547230124473572,0.5,0.008417606353759766,0.014085290022194386,0.007175623904913664,0,0,0,0.710457980632782,0.0126069700345397,0.9926999807357788,0,1,0.0126069700345397,0.9926999807357788,0.5,0.9915819764137268,0.5,1,0,0.2547230124473572,0.02588408999145031,0.48237699270248413,0,0.48237699270248413,0.02588408999145031,0.48237699270248413,0,0.710457980632782,0,0.710457980632782,0.5,0.9915819764137268,0.9873930215835571,0.9926999807357788,1,1,0.9873930215835571,0.9926999807357788,1,0.710457980632782,1,0.710457980632782,1,0.710457980632782,0.9741160273551941,0.48237699270248413,1,0.48237699270248413,0.9741160273551941,0.48237699270248413,1,0.2547230124473572,1,0.2547230124473572,1,0.2547230124473572,0.9859150052070618,0.007175623904913664,1,0,0.9859150052070618,0.007175623904913664,0.5,0.008417606353759766,0.5,0,0.5,0.008417606353759766,0.014085290022194386,0.007175623904913664,0.014085290022194386,0.007175623904913664,0.014085290022194386,0.007175623904913664,0,0.2547230124473572,0,0.2547230124473572,0.0126069700345397,0.9926999807357788,0.5,0.9915819764137268,0.5,0.9915819764137268,0,0.710457980632782,0.0126069700345397,0.9926999807357788,0.0126069700345397,0.9926999807357788,0,0.2547230124473572,0.02588408999145031,0.48237699270248413,0.02588408999145031,0.48237699270248413,0.02588408999145031,0.48237699270248413,0,0.710457980632782,0,0.710457980632782,0.9873930215835571,0.9926999807357788,1,0.710457980632782,1,0.710457980632782,0.5,0.9915819764137268,0.9873930215835571,0.9926999807357788,0.9873930215835571,0.9926999807357788,1,0.710457980632782,0.9741160273551941,0.48237699270248413,0.9741160273551941,0.48237699270248413,0.9741160273551941,0.48237699270248413,1,0.2547230124473572,1,0.2547230124473572,0.9859150052070618,0.007175623904913664,0.5,0.008417606353759766,0.5,0.008417606353759766,1,0.2547230124473572,0.9859150052070618,0.007175623904913664,0.9859150052070618,0.007175623904913664,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,0,0,0.6787139773368835,0,0.16606299579143524,1,1,0,0.47432398796081543,0,0,0.8168449997901917,0.6787139773368835,0,0,0,0.5867149829864502,1,1,0,0.33333298563957214,0,0.33333298563957214,1,0,0,0.6666669845581055,0,0.6666669845581055,1,0.33333298563957214,0,1,0,1,1,0.6666669845581055,0,0.33333298563957214,0,0.33333298563957214,1,0,0,0.6666669845581055,0,0.6666669845581055,1,0.33333298563957214,0,1,0,1,1,0.6666669845581055,0,0.5,0,0.5,1,0,0,0.2547230124473572,0,0.2547230124473572,1,0,0,0.5,0,1,0,0.5,1,0.7452769875526428,0,1,0,0.7452769875526428,1,0.5,0.008417606353759766,0.5,0.2547230124473572,0.014085290022194386,0.007175623904913664,0.5,0.7452769875526428,0.5,1,0,0.7452769875526428,0.710457980632782,0,1,0,0.710457980632782,1,0.5,0.28954198956489563,0,0.28954198956489563,0.5,0,0.28954198956489563,1,0,1,0.28954198956489563,0,0.5,0.710457980632782,0.5,0.9915819764137268,0,0.710457980632782,0.2547230124473572,0,0.48237699270248413,0,0.2547230124473572,1,0.5,0.7452769875526428,0,0.7452769875526428,0.5,0.5176230072975159,0.7452769875526428,1,0.5176230072975159,1,0.7452769875526428,0,0.5,0.2547230124473572,0.5,0.48237699270248413,0,0.2547230124473572,0.48237699270248413,0,0.710457980632782,0,0.48237699270248413,1,0.5,0.5176230072975159,0,0.5176230072975159,0.5,0.28954198956489563,0.5176230072975159,1,0.28954198956489563,1,0.5176230072975159,0,0.5,0.48237699270248413,0.5,0.710457980632782,0.02588408999145031,0.48237699270248413,0.5,0.7452769875526428,1,0.7452769875526428,0.5,1,0.5,0.5176230072975159,1,0.5176230072975159,0.5,0.7452769875526428,0.5,0.28954198956489563,1,0.28954198956489563,0.5,0.5176230072975159,0.5,0,1,0,0.5,0.28954198956489563,0.5,1,0,1,0.5,0,0.5,0.710457980632782,1,0.710457980632782,0.5,0.9915819764137268,0.5,0.48237699270248413,0.9741160273551941,0.48237699270248413,0.5,0.710457980632782,0.5,0.2547230124473572,1,0.2547230124473572,0.5,0.48237699270248413,0.5,0.008417606353759766,0.9859150052070618,0.007175623904913664,0.5,0.2547230124473572,0.5,0,1,0,0.5,1,0,0,0.014085290022194386,0.007175623904913664,0,0.2547230124473572,0.5,0,0.5,0.008417606353759766,0,0,0,0.710457980632782,0,0.710457980632782,0,1,0,1,0.0126069700345397,0.9926999807357788,0.5,1,0,0.2547230124473572,0,0.2547230124473572,0,0.48237699270248413,0,0.48237699270248413,0.02588408999145031,0.48237699270248413,0,0.710457980632782,0.5,1,0.5,0.9915819764137268,1,1,1,1,0.9873930215835571,0.9926999807357788,1,0.710457980632782,1,0.710457980632782,1,0.710457980632782,1,0.48237699270248413,1,0.48237699270248413,0.9741160273551941,0.48237699270248413,1,0.2547230124473572,1,0.2547230124473572,1,0.2547230124473572,1,0,1,0,0.9859150052070618,0.007175623904913664,0.5,0,0.5,0.008417606353759766,0.5,0.008417606353759766,0.014085290022194386,0.007175623904913664,0.014085290022194386,0.007175623904913664,0.014085290022194386,0.007175623904913664,0,0.2547230124473572,0.0126069700345397,0.9926999807357788,0.0126069700345397,0.9926999807357788,0.5,0.9915819764137268,0,0.710457980632782,0,0.710457980632782,0.0126069700345397,0.9926999807357788,0,0.2547230124473572,0,0.2547230124473572,0.02588408999145031,0.48237699270248413,0.02588408999145031,0.48237699270248413,0.02588408999145031,0.48237699270248413,0,0.710457980632782,0.9873930215835571,0.9926999807357788,0.9873930215835571,0.9926999807357788,1,0.710457980632782,0.5,0.9915819764137268,0.5,0.9915819764137268,0.9873930215835571,0.9926999807357788,1,0.710457980632782,1,0.710457980632782,0.9741160273551941,0.48237699270248413,0.9741160273551941,0.48237699270248413,0.9741160273551941,0.48237699270248413,1,0.2547230124473572,0.9859150052070618,0.007175623904913664,0.9859150052070618,0.007175623904913664,0.5,0.008417606353759766,1,0.2547230124473572,1,0.2547230124473572,0.9859150052070618,0.007175623904913664,0.47432398796081543,0,0,0.8168449997901917,0,0,1,0,1,1,0.16606299579143524,1,0.6787139773368835,0,0.16606299579143524,1,0,0.8168449997901917,0.5867149829864502,1,0,1,0,0,1,0,1,1,0.5867149829864502,1,0.6787139773368835,0,1,0,0.16606299579143524,1,0.47432398796081543,0,0.6787139773368835,0,0,0.8168449997901917,0,0,1,0,0.5867149829864502,1,0.5867149829864502,1,0,1,0.5867149829864502,1,0,0,0,1,0,1,0.6787139773368835,0,0.47432398796081543,0,0.47432398796081543,0,1,0,0,0,0,0,0.16606299579143524,1,1,1,1,1,0.16606299579143524,1,0,0.8168449997901917,0.16606299579143524,1,0.6787139773368835,0,1,0,0.6787139773368835,0,1,0,1,1,1,0,0,0.8168449997901917,0,0,0,0.8168449997901917,1,0,1,1,1,0,0.47432398796081543,0,0,0,0,0,1,1,0.5867149829864502,1,1,1,0.5867149829864502,1,0,1,0,1,0,0,0,0,0,1,0.6787139773368835,0,0.6787139773368835,0,0.47432398796081543,0,1,0,1,0,0,0,0.16606299579143524,1,0.16606299579143524,1,1,1,0.16606299579143524,1,0,0.8168449997901917,0,0.8168449997901917,0.6787139773368835,0,1,0,1,0,1,0,1,1,1,1,0,0.8168449997901917,0,0,0,0,1,0,1,1,1,1,0.47432398796081543,0,0.47432398796081543,0,0,0,1,1,0.5867149829864502,1,0.5867149829864502,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"color\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.6588236093521118,0.6352940797805786,0.6000000238418579,0.6588236093521118,0.6352940797805786,0.6000000238418579,0.6588236093521118,0.6352940797805786,0.6000000238418579,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,1,1,1,1,1,1,1,1,1,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.6588236093521118,0.6352940797805786,0.6000000238418579,0.6588236093521118,0.6352940797805786,0.6000000238418579,0.6588236093521118,0.6352940797805786,0.6000000238418579,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.5647059082984924,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,0.8117647171020508,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [0,2.3845094740390778,-0.4404550790786743],\n\t\t\t\t\t\"radius\": 4.419403425824287\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"E5FBFDAA-581D-4A00-B9D2-C7671118051D\",\n\t\t\t\"type\": \"MeshBasicMaterial\",\n\t\t\t\"color\": 16777215,\n\t\t\t\"vertexColors\": 2,\n\t\t\t\"depthFunc\": 3,\n\t\t\t\"depthTest\": true,\n\t\t\t\"depthWrite\": true,\n\t\t\t\"skinning\": false,\n\t\t\t\"morphTargets\": false\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"A429724B-6076-40BC-A1AB-46B3BDA8E9AC\",\n\t\t\"type\": \"Mesh\",\n\t\t\"name\": \"boat\",\n\t\t\"matrix\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0.6603962779045105,0.5193479061126709,1],\n\t\t\"geometry\": \"3D6BFD6B-69E5-4A25-918B-28821075FCCF\",\n\t\t\"material\": \"E5FBFDAA-581D-4A00-B9D2-C7671118051D\"\n\t}\n}"
  },
  {
    "path": "public/static/meshes/church01.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"1241138A-3037-4803-BE0C-B8A22772A673\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"church\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,218.9980010986328,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,208.79299926757812,-275.1369934082031,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,208.79299926757812,-381.0870056152344,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,208.79299926757812,-171.04100036621094,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,100.07599639892578,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-59.08219909667969,0,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-3.382430076599121,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,-52.242000579833984,63.03010177612305,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-448.5899963378906,0,-48.504600524902344,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,220.59300231933594,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,-45.041099548339844,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,100.07599639892578,-240.48300170898438,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,100.07599639892578,-346.4339904785156,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,100.07599639892578,-136.38800048828125,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,63.03010177612305,-59.08219909667969,100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,63.03010177612305,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-448.5899963378906,0,-48.504600524902344,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,-48.504600524902344,-448.5899963378906,0,-45.041099548339844,-59.08219909667969,0,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,63.03010177612305,-448.5899963378906,100,-43.45479965209961,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-59.08219909667969,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,220.59300231933594,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,220.59300231933594,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,-0.7071068286895752,0.7071068286895752,0,0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,0.7071068286895752,0,0.7071068286895752,-0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,0,0,1,0,0,1,0,0,1,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,0,-1,0,0,-1,0,0,-1,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,0,1,0,0,1,0,0,1,0,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,-0.7071068286895752,-0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,0.7071068286895752,0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"uv\": {\n\t\t\t\t\t\t\"itemSize\": 2,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"color\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [-22.18450164794922,-224.2949981689453,0],\n\t\t\t\t\t\"radius\": 345.3247205691946\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"6C6D57ED-C061-47A5-B273-58DEF6CAB5F0\",\n\t\t\t\"type\": \"MeshBasicMaterial\",\n\t\t\t\"color\": 16777215,\n\t\t\t\"vertexColors\": 2,\n\t\t\t\"depthFunc\": 3,\n\t\t\t\"depthTest\": true,\n\t\t\t\"depthWrite\": true,\n\t\t\t\"skinning\": false,\n\t\t\t\"morphTargets\": false\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"1AD267C0-5A30-4CB0-A601-1F47F83E25D2\",\n\t\t\"type\": \"Mesh\",\n\t\t\"name\": \"church\",\n\t\t\"matrix\": [0,-0.009999999776482582,6.617444752512802e-26,0,0.009999999776482582,0,4.3711401165325015e-10,0,-4.3711398389767453e-10,0,0.009999998845160007,0,0,2.0225484371185303,0,1],\n\t\t\"geometry\": \"1241138A-3037-4803-BE0C-B8A22772A673\",\n\t\t\"material\": \"6C6D57ED-C061-47A5-B273-58DEF6CAB5F0\"\n\t}\n}"
  },
  {
    "path": "public/static/meshes/model.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"1241138A-3037-4803-BE0C-B8A22772A673\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"church\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,218.9980010986328,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,208.79299926757812,-275.1369934082031,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,208.79299926757812,-381.0870056152344,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,208.79299926757812,-171.04100036621094,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,100.07599639892578,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-59.08219909667969,0,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-3.382430076599121,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,-52.242000579833984,63.03010177612305,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-448.5899963378906,0,-48.504600524902344,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,220.59300231933594,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,-45.041099548339844,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,100.07599639892578,-240.48300170898438,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,100.07599639892578,-346.4339904785156,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,100.07599639892578,-136.38800048828125,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,63.03010177612305,-59.08219909667969,100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,63.03010177612305,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-448.5899963378906,0,-48.504600524902344,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,-48.504600524902344,-448.5899963378906,0,-45.041099548339844,-59.08219909667969,0,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,63.03010177612305,-448.5899963378906,100,-43.45479965209961,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-59.08219909667969,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,220.59300231933594,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,220.59300231933594,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,-0.7071068286895752,0.7071068286895752,0,0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,0.7071068286895752,0,0.7071068286895752,-0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,0,0,1,0,0,1,0,0,1,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,0,-1,0,0,-1,0,0,-1,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,0,1,0,0,1,0,0,1,0,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,-0.7071068286895752,-0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,0.7071068286895752,0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"uv\": {\n\t\t\t\t\t\t\"itemSize\": 2,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"color\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [-22.18450164794922,-224.2949981689453,0],\n\t\t\t\t\t\"radius\": 345.3247205691946\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"6C6D57ED-C061-47A5-B273-58DEF6CAB5F0\",\n\t\t\t\"type\": \"MeshBasicMaterial\",\n\t\t\t\"color\": 16777215,\n\t\t\t\"vertexColors\": 2,\n\t\t\t\"depthFunc\": 3,\n\t\t\t\"depthTest\": true,\n\t\t\t\"depthWrite\": true,\n\t\t\t\"skinning\": false,\n\t\t\t\"morphTargets\": false\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"D2B6E3A9-0F63-434C-9B70-E144E71B197F\",\n\t\t\"type\": \"Group\",\n\t\t\"name\": \"church\",\n\t\t\"matrix\": [1,0,0,0,0,2.220446049250313e-16,-1,0,0,1,2.220446049250313e-16,0,0,0,0,1],\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"uuid\": \"1AD267C0-5A30-4CB0-A601-1F47F83E25D2\",\n\t\t\t\t\"type\": \"Mesh\",\n\t\t\t\t\"name\": \"church\",\n\t\t\t\t\"matrix\": [1.947069838692528e-9,-6.05071566949556e-17,-0.009999999776482582,0,0.009999999776482582,-4.371141226755526e-10,1.947069838692528e-9,0,-4.3711398389767453e-10,-0.009999998845160007,-1.6431298329232593e-16,0,2.538360118865967,-9.616069718276776e-8,2.199899911880493,1],\n\t\t\t\t\"geometry\": \"1241138A-3037-4803-BE0C-B8A22772A673\",\n\t\t\t\t\"material\": \"6C6D57ED-C061-47A5-B273-58DEF6CAB5F0\"\n\t\t\t}]\n\t}\n}"
  },
  {
    "path": "public/static/meshes/pier01.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"5272C7F2-4EFF-4E3D-A6B1-797E9F002ABA\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"pier\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [-1,1.4042580127716064,0.5907561779022217,-1,-1.3810540437698364,-1,-1,-1.3810540437698364,0.5907561779022217,1,1.4042580127716064,0.5907561779022217,-0.03044945001602173,1.4042580127716064,-1,-0.03044945001602173,1.4042580127716064,1.4777319431304932,1,-1.3810540437698364,0.5907561779022217,1,1.4042580127716064,-1,1,1.4042580127716064,0.5907561779022217,-1,-1.3810540437698364,0.5907561779022217,-0.03044945001602173,-1.3810540437698364,-1,-0.03044945001602173,-1.3810540437698364,1.4777319431304932,-0.03044945001602173,1.4042580127716064,-1,1,-1.3810540437698364,-1,-0.03044945001602173,-1.3810540437698364,-1,-0.04000169038772583,-0.8839958906173706,1.9943050146102905,0.5961644053459167,-0.8839958906173706,1.3487019538879395,-0.04045705869793892,-0.8839958906173706,2.0183849334716797,-0.6262062788009644,-0.8839958906173706,1.3305790424346924,-0.6266617178916931,0.014458590187132359,1.3487019538879395,-0.6262062788009644,0.014458590187132359,1.3305790424346924,-1,1.4042580127716064,-1,-0.03044945001602173,-1.3810540437698364,-1,-1,-1.3810540437698364,-1,1,-1.3810540437698364,0.5907561779022217,-0.03044945001602173,-1.3810540437698364,-1,1,-1.3810540437698364,-1,-1,1.4042580127716064,0.5907561779022217,-0.03044945001602173,1.4042580127716064,-1,-1,1.4042580127716064,-1,-0.6166539788246155,0.014458590187132359,0.950401782989502,-1,-1.3810540437698364,0.5980882048606873,-0.6166539788246155,-0.8839958906173706,0.950401782989502,0.6061720252037048,0.014458590187132359,0.9386444091796875,-0.03044945001602173,1.4042580127716064,1.489151954650879,-0.03044945001602173,0.014458590187132359,1.489151954650879,0.6061720252037048,0.014458590187132359,0.9386444091796875,1,-1.3810540437698364,0.5980882048606873,1,1.4042580127716064,0.5980882048606873,-0.6166539788246155,-0.8839958906173706,0.950401782989502,-0.03044945001602173,-1.3810540437698364,1.489151954650879,-0.03044945001602173,-0.8839958906173706,1.489151954650879,-0.6166539788246155,0.014458590187132359,0.950401782989502,-0.03044945001602173,1.4042580127716064,1.489151954650879,-1,1.4042580127716064,0.5980882048606873,0.6061720252037048,-0.8839958906173706,0.938644289970398,-0.03044945001602173,-1.3810540437698364,1.489151954650879,1,-1.3810540437698364,0.5980882048606873,-0.04045705869793892,0.014458590187132359,2.0183849334716797,-0.6266617178916931,-0.8839958906173706,1.3487019538879395,-0.04045705869793892,-0.8839958906173706,2.0183849334716797,0.5961644053459167,0.014458590187132359,1.3487019538879395,-0.04045705869793892,-0.8839958906173706,2.0183849334716797,0.5961644053459167,-0.8839958906173706,1.3487019538879395,-0.04000169038772583,-0.8839958906173706,1.9943050146102905,-0.6266617178916931,-0.8839958906173706,1.3487019538879395,-0.6262062788009644,-0.8839958906173706,1.3305790424346924,-0.04000169038772583,0.014458590187132359,1.9943050146102905,0.5961644053459167,0.014458590187132359,1.3487019538879395,0.596619725227356,0.014458590187132359,1.3300449848175049,-0.04000169038772583,0.014458590187132359,1.9943050146102905,-0.6266617178916931,0.014458590187132359,1.3487019538879395,-0.04045705869793892,0.014458590187132359,2.0183849334716797,0.596619725227356,0.014458590187132359,1.3300449848175049,0.5961644053459167,-0.8839958906173706,1.3487019538879395,0.596619725227356,-0.8839958906173706,1.3300449848175049,-0.9201492071151733,0.6962503790855408,-0.7250885963439941,-4.773769855499268,-0.6730465888977051,-0.7250887155532837,-0.9201492071151733,-0.6730465888977051,-0.7250885963439941,-1.0978679656982422,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.3071279525756836,-1.866773009300232,-1.0978679656982422,1.3071279525756836,0.5451117157936096,-0.8978675007820129,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.5071280002593994,-1.866773009300232,-1.0978679656982422,1.5071280002593994,0.5451117157936096,-0.8978675007820129,1.3071279525756836,0.5451117157936096,-0.8978675007820129,1.5071280002593994,-1.866773009300232,-0.8978675007820129,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.3071279525756836,0.5451117157936096,-0.8978675007820129,1.3071279525756836,-1.866773009300232,-0.8978675007820129,1.3071279525756836,0.5451117157936096,-1.0978679656982422,1.5071280002593994,-1.866773009300232,-0.8978675007820129,1.3071279525756836,-1.866773009300232,-1.0978679656982422,1.3071279525756836,-1.866773009300232,-0.8978675007820129,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.3071279525756836,0.5451117157936096,-0.8978675007820129,1.3071279525756836,0.5451117157936096,-1.0955109596252441,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.4833920001983643,-1.866773009300232,-1.0955109596252441,-1.4833920001983643,0.5451117157936096,-0.8955106735229492,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.283390998840332,-1.866773009300232,-1.0955109596252441,-1.283390998840332,0.5451117157936096,-0.8955106735229492,-1.4833920001983643,0.5451117157936096,-0.8955106735229492,-1.283390998840332,-1.866773009300232,-0.8955106735229492,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.4833920001983643,0.5451117157936096,-0.8955106735229492,-1.4833920001983643,-1.866773009300232,-0.8955106735229492,-1.4833920001983643,0.5451117157936096,-1.0955109596252441,-1.283390998840332,-1.866773009300232,-0.8955106735229492,-1.4833920001983643,-1.866773009300232,-1.0955109596252441,-1.4833920001983643,-1.866773009300232,-0.8955106735229492,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.4833920001983643,0.5451117157936096,-0.8955106735229492,-1.4833920001983643,0.5451117157936096,-4.798904895782471,-0.6317669153213501,-1.866773009300232,-4.737718105316162,-0.7311500906944275,-1.866773009300232,-4.798904895782471,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.6317669153213501,-1.866773009300232,-4.798904895782471,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.7311500906944275,-1.866773009300232,-4.798904895782471,-0.7311500906944275,-0.5965046286582947,-4.737718105316162,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.7311500906944275,-0.5965046286582947,-4.737718105316162,-0.7311500906944275,-0.5965046286582947,-4.798904895782471,-0.7311500906944275,-0.5965046286582947,-4.737718105316162,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.7311500906944275,-0.5965046286582947,-4.737718105316162,-0.7311500906944275,-0.5965046286582947,-4.737718105316162,-0.6317669153213501,-1.866773009300232,-4.737718105316162,-0.6317669153213501,-0.5965046286582947,-4.799625873565674,0.7548863887786865,-1.866773009300232,-4.738439083099365,0.6555032134056091,-1.866773009300232,-4.799625873565674,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.7548863887786865,-1.866773009300232,-4.799625873565674,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.6555032134056091,-1.866773009300232,-4.799625873565674,0.6555032134056091,-0.5965046286582947,-4.738439083099365,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.6555032134056091,-0.5965046286582947,-4.738439083099365,0.6555032134056091,-0.5965046286582947,-4.799625873565674,0.6555032134056091,-0.5965046286582947,-4.738439083099365,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.6555032134056091,-0.5965046286582947,-4.738439083099365,0.6555032134056091,-0.5965046286582947,-4.738439083099365,0.7548863887786865,-1.866773009300232,-4.738439083099365,0.7548863887786865,-0.5965046286582947,-3.6561620235443115,-0.6317669153213501,-1.866773009300232,-3.594974994659424,-0.7311500906944275,-1.866773009300232,-3.6561620235443115,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.6317669153213501,-1.866773009300232,-3.6561620235443115,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.7311500906944275,-1.866773009300232,-3.6561620235443115,-0.7311500906944275,-0.5965046286582947,-3.594974994659424,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.7311500906944275,-0.5965046286582947,-3.594974994659424,-0.7311500906944275,-0.5965046286582947,-3.6561620235443115,-0.7311500906944275,-0.5965046286582947,-3.594974994659424,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.7311500906944275,-0.5965046286582947,-3.594974994659424,-0.7311500906944275,-0.5965046286582947,-3.594974994659424,-0.6317669153213501,-1.866773009300232,-3.594974994659424,-0.6317669153213501,-0.5965046286582947,-3.6568830013275146,0.7548863887786865,-1.866773009300232,-3.595695972442627,0.6555032134056091,-1.866773009300232,-3.6568830013275146,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.7548863887786865,-1.866773009300232,-3.6568830013275146,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.6555032134056091,-1.866773009300232,-3.6568830013275146,0.6555032134056091,-0.5965046286582947,-3.595695972442627,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.6555032134056091,-0.5965046286582947,-3.595695972442627,0.6555032134056091,-0.5965046286582947,-3.6568830013275146,0.6555032134056091,-0.5965046286582947,-3.595695972442627,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.6555032134056091,-0.5965046286582947,-3.595695972442627,0.6555032134056091,-0.5965046286582947,-3.595695972442627,0.7548863887786865,-1.866773009300232,-3.595695972442627,0.7548863887786865,-0.5965046286582947,-2.4531760215759277,-0.6317669153213501,-1.866773009300232,-2.3919880390167236,-0.7311500906944275,-1.866773009300232,-2.4531760215759277,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.6317669153213501,-1.866773009300232,-2.4531760215759277,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.7311500906944275,-1.866773009300232,-2.4531760215759277,-0.7311500906944275,-0.5965046286582947,-2.3919880390167236,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.7311500906944275,-0.5965046286582947,-2.3919880390167236,-0.7311500906944275,-0.5965046286582947,-2.4531760215759277,-0.7311500906944275,-0.5965046286582947,-2.3919880390167236,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.7311500906944275,-0.5965046286582947,-2.3919880390167236,-0.7311500906944275,-0.5965046286582947,-2.3919880390167236,-0.6317669153213501,-1.866773009300232,-2.3919880390167236,-0.6317669153213501,-0.5965046286582947,-2.453896999359131,0.7548863887786865,-1.866773009300232,-2.3927090167999268,0.6555032134056091,-1.866773009300232,-2.453896999359131,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.7548863887786865,-1.866773009300232,-2.453896999359131,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.6555032134056091,-1.866773009300232,-2.453896999359131,0.6555032134056091,-0.5965046286582947,-2.3927090167999268,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.6555032134056091,-0.5965046286582947,-2.3927090167999268,0.6555032134056091,-0.5965046286582947,-2.453896999359131,0.6555032134056091,-0.5965046286582947,-2.3927090167999268,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.6555032134056091,-0.5965046286582947,-2.3927090167999268,0.6555032134056091,-0.5965046286582947,-2.3927090167999268,0.7548863887786865,-1.866773009300232,-2.3927090167999268,0.7548863887786865,-0.5965046286582947,-1,1.4042580127716064,0.5980882048606873,-0.03044945001602173,1.4042580127716064,1.4777319431304932,-1,1.4042580127716064,0.5907561779022217,1,-1.3810540437698364,0.5980882048606873,-0.03044945001602173,-1.3810540437698364,1.4777319431304932,1,-1.3810540437698364,0.5907561779022217,-1,-1.3810540437698364,0.5980882048606873,-0.03044945001602173,-1.3810540437698364,1.4777319431304932,-0.03044945001602173,-1.3810540437698364,1.489151954650879,1,-1.3810540437698364,0.5980882048606873,1,1.4042580127716064,0.5907561779022217,1,1.4042580127716064,0.5980882048606873,1,1.4042580127716064,0.5980882048606873,-0.03044945001602173,1.4042580127716064,1.4777319431304932,-0.03044945001602173,1.4042580127716064,1.489151954650879,-1,1.4042580127716064,0.5980882048606873,-1,-1.3810540437698364,0.5907561779022217,-1,-1.3810540437698364,0.5980882048606873,0.6061720252037048,0.014458590187132359,0.9386444091796875,0.596619725227356,-0.8839958906173706,1.3300449848175049,0.6061720252037048,-0.8839958906173706,0.938644289970398,-0.03044945001602173,0.014458590187132359,1.489151954650879,-0.6262062788009644,0.014458590187132359,1.3305790424346924,-0.04000169038772583,0.014458590187132359,1.9943050146102905,-0.03044945001602173,0.014458590187132359,1.489151954650879,0.596619725227356,0.014458590187132359,1.3300449848175049,0.6061720252037048,0.014458590187132359,0.9386444091796875,-0.03044945001602173,-0.8839958906173706,1.489151954650879,-0.6262062788009644,-0.8839958906173706,1.3305790424346924,-0.6166539788246155,-0.8839958906173706,0.950401782989502,-0.6166539788246155,-0.8839958906173706,0.950401782989502,-0.6262062788009644,0.014458590187132359,1.3305790424346924,-0.6166539788246155,0.014458590187132359,0.950401782989502,-0.03044945001602173,-0.8839958906173706,1.489151954650879,0.596619725227356,-0.8839958906173706,1.3300449848175049,-0.04000169038772583,-0.8839958906173706,1.9943050146102905,-1,1.4042580127716064,0.5907561779022217,-1,1.4042580127716064,-1,-1,-1.3810540437698364,-1,1,1.4042580127716064,0.5907561779022217,1,1.4042580127716064,-1,-0.03044945001602173,1.4042580127716064,-1,1,-1.3810540437698364,0.5907561779022217,1,-1.3810540437698364,-1,1,1.4042580127716064,-1,-1,-1.3810540437698364,0.5907561779022217,-1,-1.3810540437698364,-1,-0.03044945001602173,-1.3810540437698364,-1,-0.03044945001602173,1.4042580127716064,-1,1,1.4042580127716064,-1,1,-1.3810540437698364,-1,-0.04000169038772583,-0.8839958906173706,1.9943050146102905,0.596619725227356,-0.8839958906173706,1.3300449848175049,0.5961644053459167,-0.8839958906173706,1.3487019538879395,-0.6262062788009644,-0.8839958906173706,1.3305790424346924,-0.6266617178916931,-0.8839958906173706,1.3487019538879395,-0.6266617178916931,0.014458590187132359,1.3487019538879395,-1,1.4042580127716064,-1,-0.03044945001602173,1.4042580127716064,-1,-0.03044945001602173,-1.3810540437698364,-1,1,-1.3810540437698364,0.5907561779022217,-0.03044945001602173,-1.3810540437698364,1.4777319431304932,-0.03044945001602173,-1.3810540437698364,-1,-1,1.4042580127716064,0.5907561779022217,-0.03044945001602173,1.4042580127716064,1.4777319431304932,-0.03044945001602173,1.4042580127716064,-1,-0.6166539788246155,0.014458590187132359,0.950401782989502,-1,1.4042580127716064,0.5980882048606873,-1,-1.3810540437698364,0.5980882048606873,0.6061720252037048,0.014458590187132359,0.9386444091796875,1,1.4042580127716064,0.5980882048606873,-0.03044945001602173,1.4042580127716064,1.489151954650879,0.6061720252037048,0.014458590187132359,0.9386444091796875,0.6061720252037048,-0.8839958906173706,0.938644289970398,1,-1.3810540437698364,0.5980882048606873,-0.6166539788246155,-0.8839958906173706,0.950401782989502,-1,-1.3810540437698364,0.5980882048606873,-0.03044945001602173,-1.3810540437698364,1.489151954650879,-0.6166539788246155,0.014458590187132359,0.950401782989502,-0.03044945001602173,0.014458590187132359,1.489151954650879,-0.03044945001602173,1.4042580127716064,1.489151954650879,0.6061720252037048,-0.8839958906173706,0.938644289970398,-0.03044945001602173,-0.8839958906173706,1.489151954650879,-0.03044945001602173,-1.3810540437698364,1.489151954650879,-0.04045705869793892,0.014458590187132359,2.0183849334716797,-0.6266617178916931,0.014458590187132359,1.3487019538879395,-0.6266617178916931,-0.8839958906173706,1.3487019538879395,0.5961644053459167,0.014458590187132359,1.3487019538879395,-0.04045705869793892,0.014458590187132359,2.0183849334716797,-0.04045705869793892,-0.8839958906173706,2.0183849334716797,-0.04000169038772583,-0.8839958906173706,1.9943050146102905,-0.04045705869793892,-0.8839958906173706,2.0183849334716797,-0.6266617178916931,-0.8839958906173706,1.3487019538879395,-0.04000169038772583,0.014458590187132359,1.9943050146102905,-0.04045705869793892,0.014458590187132359,2.0183849334716797,0.5961644053459167,0.014458590187132359,1.3487019538879395,-0.04000169038772583,0.014458590187132359,1.9943050146102905,-0.6262062788009644,0.014458590187132359,1.3305790424346924,-0.6266617178916931,0.014458590187132359,1.3487019538879395,0.596619725227356,0.014458590187132359,1.3300449848175049,0.5961644053459167,0.014458590187132359,1.3487019538879395,0.5961644053459167,-0.8839958906173706,1.3487019538879395,-0.9201492071151733,0.6962503790855408,-0.7250885963439941,-4.773769855499268,0.6962503790855408,-0.7250887155532837,-4.773769855499268,-0.6730465888977051,-0.7250887155532837,-1.0978679656982422,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.5071280002593994,-1.866773009300232,-1.0978679656982422,1.3071279525756836,-1.866773009300232,-0.8978675007820129,1.5071280002593994,0.5451117157936096,-0.8978675007820129,1.5071280002593994,-1.866773009300232,-1.0978679656982422,1.5071280002593994,-1.866773009300232,-0.8978675007820129,1.3071279525756836,0.5451117157936096,-0.8978675007820129,1.3071279525756836,-1.866773009300232,-0.8978675007820129,1.5071280002593994,-1.866773009300232,-1.0978679656982422,1.3071279525756836,0.5451117157936096,-1.0978679656982422,1.3071279525756836,-1.866773009300232,-0.8978675007820129,1.3071279525756836,-1.866773009300232,-1.0978679656982422,1.5071280002593994,-1.866773009300232,-0.8978675007820129,1.5071280002593994,-1.866773009300232,-0.8978675007820129,1.3071279525756836,-1.866773009300232,-0.8978675007820129,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.5071280002593994,0.5451117157936096,-1.0978679656982422,1.3071279525756836,0.5451117157936096,-1.0955109596252441,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.283390998840332,-1.866773009300232,-1.0955109596252441,-1.4833920001983643,-1.866773009300232,-0.8955106735229492,-1.283390998840332,0.5451117157936096,-0.8955106735229492,-1.283390998840332,-1.866773009300232,-1.0955109596252441,-1.283390998840332,-1.866773009300232,-0.8955106735229492,-1.4833920001983643,0.5451117157936096,-0.8955106735229492,-1.4833920001983643,-1.866773009300232,-0.8955106735229492,-1.283390998840332,-1.866773009300232,-1.0955109596252441,-1.4833920001983643,0.5451117157936096,-1.0955109596252441,-1.4833920001983643,-1.866773009300232,-0.8955106735229492,-1.4833920001983643,-1.866773009300232,-1.0955109596252441,-1.283390998840332,-1.866773009300232,-0.8955106735229492,-1.283390998840332,-1.866773009300232,-0.8955106735229492,-1.4833920001983643,-1.866773009300232,-0.8955106735229492,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.283390998840332,0.5451117157936096,-1.0955109596252441,-1.4833920001983643,0.5451117157936096,-4.798904895782471,-0.6317669153213501,-1.866773009300232,-4.737718105316162,-0.6317669153213501,-1.866773009300232,-4.737718105316162,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.6317669153213501,-0.5965046286582947,-4.737718105316162,-0.6317669153213501,-1.866773009300232,-4.798904895782471,-0.6317669153213501,-1.866773009300232,-4.798904895782471,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.6317669153213501,-1.866773009300232,-4.798904895782471,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.6317669153213501,-0.5965046286582947,-4.798904895782471,-0.7311500906944275,-0.5965046286582947,-4.798904895782471,-0.7311500906944275,-0.5965046286582947,-4.798904895782471,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.7311500906944275,-0.5965046286582947,-4.737718105316162,-0.7311500906944275,-1.866773009300232,-4.737718105316162,-0.6317669153213501,-1.866773009300232,-4.799625873565674,0.7548863887786865,-1.866773009300232,-4.738439083099365,0.7548863887786865,-1.866773009300232,-4.738439083099365,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.7548863887786865,-0.5965046286582947,-4.738439083099365,0.7548863887786865,-1.866773009300232,-4.799625873565674,0.7548863887786865,-1.866773009300232,-4.799625873565674,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.7548863887786865,-1.866773009300232,-4.799625873565674,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.7548863887786865,-0.5965046286582947,-4.799625873565674,0.6555032134056091,-0.5965046286582947,-4.799625873565674,0.6555032134056091,-0.5965046286582947,-4.799625873565674,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.6555032134056091,-0.5965046286582947,-4.738439083099365,0.6555032134056091,-1.866773009300232,-4.738439083099365,0.7548863887786865,-1.866773009300232,-3.6561620235443115,-0.6317669153213501,-1.866773009300232,-3.594974994659424,-0.6317669153213501,-1.866773009300232,-3.594974994659424,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.6317669153213501,-0.5965046286582947,-3.594974994659424,-0.6317669153213501,-1.866773009300232,-3.6561620235443115,-0.6317669153213501,-1.866773009300232,-3.6561620235443115,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.6317669153213501,-1.866773009300232,-3.6561620235443115,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.6317669153213501,-0.5965046286582947,-3.6561620235443115,-0.7311500906944275,-0.5965046286582947,-3.6561620235443115,-0.7311500906944275,-0.5965046286582947,-3.6561620235443115,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.7311500906944275,-0.5965046286582947,-3.594974994659424,-0.7311500906944275,-1.866773009300232,-3.594974994659424,-0.6317669153213501,-1.866773009300232,-3.6568830013275146,0.7548863887786865,-1.866773009300232,-3.595695972442627,0.7548863887786865,-1.866773009300232,-3.595695972442627,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.7548863887786865,-0.5965046286582947,-3.595695972442627,0.7548863887786865,-1.866773009300232,-3.6568830013275146,0.7548863887786865,-1.866773009300232,-3.6568830013275146,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.7548863887786865,-1.866773009300232,-3.6568830013275146,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.7548863887786865,-0.5965046286582947,-3.6568830013275146,0.6555032134056091,-0.5965046286582947,-3.6568830013275146,0.6555032134056091,-0.5965046286582947,-3.6568830013275146,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.6555032134056091,-0.5965046286582947,-3.595695972442627,0.6555032134056091,-1.866773009300232,-3.595695972442627,0.7548863887786865,-1.866773009300232,-2.4531760215759277,-0.6317669153213501,-1.866773009300232,-2.3919880390167236,-0.6317669153213501,-1.866773009300232,-2.3919880390167236,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.6317669153213501,-0.5965046286582947,-2.3919880390167236,-0.6317669153213501,-1.866773009300232,-2.4531760215759277,-0.6317669153213501,-1.866773009300232,-2.4531760215759277,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.6317669153213501,-1.866773009300232,-2.4531760215759277,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.6317669153213501,-0.5965046286582947,-2.4531760215759277,-0.7311500906944275,-0.5965046286582947,-2.4531760215759277,-0.7311500906944275,-0.5965046286582947,-2.4531760215759277,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.7311500906944275,-0.5965046286582947,-2.3919880390167236,-0.7311500906944275,-1.866773009300232,-2.3919880390167236,-0.6317669153213501,-1.866773009300232,-2.453896999359131,0.7548863887786865,-1.866773009300232,-2.3927090167999268,0.7548863887786865,-1.866773009300232,-2.3927090167999268,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.7548863887786865,-0.5965046286582947,-2.3927090167999268,0.7548863887786865,-1.866773009300232,-2.453896999359131,0.7548863887786865,-1.866773009300232,-2.453896999359131,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.7548863887786865,-1.866773009300232,-2.453896999359131,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.7548863887786865,-0.5965046286582947,-2.453896999359131,0.6555032134056091,-0.5965046286582947,-2.453896999359131,0.6555032134056091,-0.5965046286582947,-2.453896999359131,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.6555032134056091,-0.5965046286582947,-2.3927090167999268,0.6555032134056091,-1.866773009300232,-2.3927090167999268,0.7548863887786865,-1.866773009300232,-1,1.4042580127716064,0.5980882048606873,-0.03044945001602173,1.4042580127716064,1.489151954650879,-0.03044945001602173,1.4042580127716064,1.4777319431304932,1,-1.3810540437698364,0.5980882048606873,-0.03044945001602173,-1.3810540437698364,1.489151954650879,-0.03044945001602173,-1.3810540437698364,1.4777319431304932,-1,-1.3810540437698364,0.5980882048606873,-1,-1.3810540437698364,0.5907561779022217,-0.03044945001602173,-1.3810540437698364,1.4777319431304932,1,-1.3810540437698364,0.5980882048606873,1,-1.3810540437698364,0.5907561779022217,1,1.4042580127716064,0.5907561779022217,1,1.4042580127716064,0.5980882048606873,1,1.4042580127716064,0.5907561779022217,-0.03044945001602173,1.4042580127716064,1.4777319431304932,-1,1.4042580127716064,0.5980882048606873,-1,1.4042580127716064,0.5907561779022217,-1,-1.3810540437698364,0.5907561779022217,0.6061720252037048,0.014458590187132359,0.9386444091796875,0.596619725227356,0.014458590187132359,1.3300449848175049,0.596619725227356,-0.8839958906173706,1.3300449848175049,-0.03044945001602173,0.014458590187132359,1.489151954650879,-0.6166539788246155,0.014458590187132359,0.950401782989502,-0.6262062788009644,0.014458590187132359,1.3305790424346924,-0.03044945001602173,0.014458590187132359,1.489151954650879,-0.04000169038772583,0.014458590187132359,1.9943050146102905,0.596619725227356,0.014458590187132359,1.3300449848175049,-0.03044945001602173,-0.8839958906173706,1.489151954650879,-0.04000169038772583,-0.8839958906173706,1.9943050146102905,-0.6262062788009644,-0.8839958906173706,1.3305790424346924,-0.6166539788246155,-0.8839958906173706,0.950401782989502,-0.6262062788009644,-0.8839958906173706,1.3305790424346924,-0.6262062788009644,0.014458590187132359,1.3305790424346924,-0.03044945001602173,-0.8839958906173706,1.489151954650879,0.6061720252037048,-0.8839958906173706,0.938644289970398,0.596619725227356,-0.8839958906173706,1.3300449848175049],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.9996845722198486,0,-0.02511649951338768,-0.9996845722198486,0,-0.02511649951338768,-0.9996845722198486,0,-0.02511649951338768,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,-0.6766772270202637,0,0.7362799048423767,-0.6766772270202637,0,0.7362799048423767,-0.6766772270202637,0,0.7362799048423767,0.6540951728820801,0,0.7564123272895813,0.6540951728820801,0,0.7564123272895813,0.6540951728820801,0,0.7564123272895813,0.6540948152542114,0,0.7564126253128052,0.6540948152542114,0,0.7564126253128052,0.6540948152542114,0,0.7564126253128052,-0.6766769289970398,0,0.7362802028656006,-0.6766769289970398,0,0.7362802028656006,-0.6766769289970398,0,0.7362802028656006,-0.6766772270202637,0,0.7362799048423767,-0.6766772270202637,0,0.7362799048423767,-0.6766772270202637,0,0.7362799048423767,0.6540951132774353,1.7604999413833866e-7,0.7564123868942261,0.6540951132774353,1.7604999413833866e-7,0.7564123868942261,0.6540951132774353,1.7604999413833866e-7,0.7564123868942261,-0.7524474859237671,0,0.6586523056030273,-0.7524474859237671,0,0.6586523056030273,-0.7524474859237671,0,0.6586523056030273,0.7247710824012756,0,0.6889898180961609,0.7247710824012756,0,0.6889898180961609,0.7247710824012756,0,0.6889898180961609,0,-1,-0.0000016941800140557461,0,-1,-0.0000016941800140557461,0,-1,-0.0000016941800140557461,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.9997023940086365,0,0.024397069588303566,0.9997023940086365,0,0.024397069588303566,0.9997023940086365,0,0.024397069588303566,0,0,1,0,0,1,0,0,1,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0.9997023940086365,0,0.0243983194231987,0.9997023940086365,0,0.0243983194231987,0.9997023940086365,0,0.0243983194231987,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,-0.9996845126152039,0,-0.02511793002486229,-0.9996845126152039,0,-0.02511793002486229,-0.9996845126152039,0,-0.02511793002486229,0,-1,-3.781470070407522e-7,0,-1,-3.781470070407522e-7,0,-1,-3.781470070407522e-7,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0.0000015991099644452333,0,-1,0.0000015991099644452333,0,-1,0.0000015991099644452333,-0.9996845126152039,0,-0.02511686086654663,-0.9996845126152039,0,-0.02511686086654663,-0.9996845126152039,0,-0.02511686086654663,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,-0.6766769886016846,0,0.7362800240516663,-0.6766769886016846,0,0.7362800240516663,-0.6766769886016846,0,0.7362800240516663,0.6540951132774353,0,0.7564123868942261,0.6540951132774353,0,0.7564123868942261,0.6540951132774353,0,0.7564123868942261,0.6540951728820801,0,0.7564123868942261,0.6540951728820801,0,0.7564123868942261,0.6540951728820801,0,0.7564123868942261,-0.6766772866249084,0,0.7362797260284424,-0.6766772866249084,0,0.7362797260284424,-0.6766772866249084,0,0.7362797260284424,-0.6766769289970398,0,0.7362800240516663,-0.6766769289970398,0,0.7362800240516663,-0.6766769289970398,0,0.7362800240516663,0.6540951728820801,0,0.7564123272895813,0.6540951728820801,0,0.7564123272895813,0.6540951728820801,0,0.7564123272895813,-0.7524477243423462,0,0.6586521863937378,-0.7524477243423462,0,0.6586521863937378,-0.7524477243423462,0,0.6586521863937378,0.7247710227966309,0,0.6889898777008057,0.7247710227966309,0,0.6889898777008057,0.7247710227966309,0,0.6889898777008057,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0.9997023940086365,0,0.024397069588303566,0.9997023940086365,0,0.024397069588303566,0.9997023940086365,0,0.024397069588303566,0,0,1,0,0,1,0,0,1,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,0.9997023940086365,0,0.024398140609264374,0.9997023940086365,0,0.024398140609264374,0.9997023940086365,0,0.024398140609264374,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,3.941279942409892e-7,0,-1,3.941279942409892e-7,0,-1,3.941279942409892e-7,-0.9996845126152039,0,-0.02511793002486229,-0.9996845126152039,0,-0.02511793002486229,-0.9996845126152039,0,-0.02511793002486229,0,-1,0,0,-1,0,0,-1,0],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"color\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,1,1,1,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,0.5764706134796143,0.1882352977991104,0.15294119715690613,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.996078372001648,0.996078372001648,0.996078372001648,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [-1.899812936782837,0.011868000030517578,0.07580596208572388],\n\t\t\t\t\t\"radius\": 3.568557755511594\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"637EABC4-3959-471C-9180-04D7E4DE8659\",\n\t\t\t\"type\": \"MeshBasicMaterial\",\n\t\t\t\"color\": 16777215,\n\t\t\t\"vertexColors\": 2,\n\t\t\t\"depthFunc\": 3,\n\t\t\t\"depthTest\": true,\n\t\t\t\"depthWrite\": true,\n\t\t\t\"skinning\": false,\n\t\t\t\"morphTargets\": false\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"FED62E6A-EE5E-4190-A4F2-43C5690E1C29\",\n\t\t\"type\": \"Mesh\",\n\t\t\"name\": \"pier\",\n\t\t\"matrix\": [1,0,0,0,0,2.220446049250313e-16,-1,0,0,1,2.220446049250313e-16,0,0,0,0,1],\n\t\t\"geometry\": \"5272C7F2-4EFF-4E3D-A6B1-797E9F002ABA\",\n\t\t\"material\": \"637EABC4-3959-471C-9180-04D7E4DE8659\"\n\t}\n}"
  },
  {
    "path": "public/static/meshes/plane.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"B5BC84E9-7BF3-493D-A90D-9AB3D369624A\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"plane\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [2.4134299755096436,-1.9532400369644165,-4.404439926147461,2.197129964828491,-1.643839955329895,-6.675000190734863,2.899209976196289,-0.005059939809143543,-4.404439926147461,2.197129964828491,-1.643839955329895,-6.675000190734863,2.3598198890686035,-0.10411900281906128,-6.675000190734863,2.899209976196289,-0.005059939809143543,-4.404439926147461,2.2107601165771484,-2.034709930419922,2.923190116882324,2.4134299755096436,-1.9532400369644165,-4.404439926147461,3.1807799339294434,-0.005551369860768318,2.923190116882324,2.4134299755096436,-1.9532400369644165,-4.404439926147461,2.899209976196289,-0.005059939809143543,-4.404439926147461,3.1807799339294434,-0.005551369860768318,2.923190116882324,2.188810110092163,-1.5779399871826172,7.074999809265137,2.2107601165771484,-2.034709930419922,2.923190116882324,2.457940101623535,-1.1806299686431885,9.165340423583984,2.2107601165771484,-2.034709930419922,2.923190116882324,3.1807799339294434,-0.005551369860768318,2.923190116882324,2.457940101623535,-1.1806299686431885,9.165340423583984,13.542699813842773,1.5163700580596924,-1.203070044517517,25.48550033569336,2.485069990158081,1.8818700313568115,13.542699813842773,1.5163700580596924,3.1718199253082275,25.48550033569336,2.485069990158081,1.8818700313568115,25.48550033569336,2.485069990158081,3.8868799209594727,13.542699813842773,1.5163700580596924,3.1718199253082275,13.601099967956543,2.23826003074646,3.1718199253082275,25.174800872802734,2.7160699367523193,3.8868799209594727,13.601099967956543,2.23826003074646,-1.203070044517517,25.174800872802734,2.7160699367523193,3.8868799209594727,25.174800872802734,2.7160699367523193,1.8818700313568115,13.601099967956543,2.23826003074646,-1.203070044517517,25.48550033569336,2.485069990158081,1.8818700313568115,25.678699493408203,5.198500156402588,1.8818700313568115,25.48550033569336,2.485069990158081,3.8868799209594727,25.678699493408203,5.198500156402588,1.8818700313568115,25.678699493408203,5.198500156402588,3.8868799209594727,25.48550033569336,2.485069990158081,3.8868799209594727,25.174800872802734,2.7160699367523193,3.8868799209594727,25.519100189208984,5.195469856262207,3.8868799209594727,25.174800872802734,2.7160699367523193,1.8818700313568115,25.519100189208984,5.195469856262207,3.8868799209594727,25.519100189208984,5.195469856262207,1.8818700313568115,25.174800872802734,2.7160699367523193,1.8818700313568115,2.3598198890686035,-0.10411900281906128,-6.675000190734863,2.197129964828491,-1.643839955329895,-6.675000190734863,1.6206599473953247,0.37717199325561523,-12.651100158691406,2.197129964828491,-1.643839955329895,-6.675000190734863,1.342810034751892,-0.7693449854850769,-12.651100158691406,1.6206599473953247,0.37717199325561523,-12.651100158691406,1.6206599473953247,0.37717199325561523,-12.651100158691406,1.342810034751892,-0.7693449854850769,-12.651100158691406,0.7538890242576599,0.9171460270881653,-17.72920036315918,1.342810034751892,-0.7693449854850769,-12.651100158691406,0.5202540159225464,0.14524300396442413,-17.90999984741211,0.7538890242576599,0.9171460270881653,-17.72920036315918,3.3280301094055176,0.5741919875144958,-4.226840019226074,3.593980073928833,0.5737280249595642,2.9369800090789795,2.899209976196289,-0.005059939809143543,-4.404439926147461,3.593980073928833,0.5737280249595642,2.9369800090789795,3.1807799339294434,-0.005551369860768318,2.923190116882324,2.899209976196289,-0.005059939809143543,-4.404439926147461,3.260540008544922,1.8501700162887573,2.9369800090789795,2.9946000576019287,1.8506300449371338,-4.226840019226074,2.6531898975372314,1.827370047569275,2.923190116882324,2.9946000576019287,1.8506300449371338,-4.226840019226074,2.371299982070923,1.6378599405288696,-4.404439926147461,2.6531898975372314,1.827370047569275,2.923190116882324,4.305220127105713,0.7724869847297668,-3.8439300060272217,4.537489891052246,0.7720819711685181,2.9667201042175293,3.3280301094055176,0.5741919875144958,-4.226840019226074,4.537489891052246,0.7720819711685181,2.9667201042175293,3.593980073928833,0.5737280249595642,2.9369800090789795,3.3280301094055176,0.5741919875144958,-4.226840019226074,4.537489891052246,0.7720819711685181,2.9667201042175293,4.305220127105713,0.7724869847297668,-3.8439300060272217,13.542699813842773,1.5163700580596924,3.1718199253082275,4.305220127105713,0.7724869847297668,-3.8439300060272217,13.542699813842773,1.5163700580596924,-1.203070044517517,13.542699813842773,1.5163700580596924,3.1718199253082275,4.569990158081055,1.8993099927902222,2.9667201042175293,4.337719917297363,1.8997199535369873,-3.8439300060272217,3.260540008544922,1.8501700162887573,2.9369800090789795,4.337719917297363,1.8997199535369873,-3.8439300060272217,2.9946000576019287,1.8506300449371338,-4.226840019226074,3.260540008544922,1.8501700162887573,2.9369800090789795,4.337719917297363,1.8997199535369873,-3.8439300060272217,4.569990158081055,1.8993099927902222,2.9667201042175293,13.601099967956543,2.23826003074646,-1.203070044517517,4.569990158081055,1.8993099927902222,2.9667201042175293,13.601099967956543,2.23826003074646,3.1718199253082275,13.601099967956543,2.23826003074646,-1.203070044517517,0.7538890242576599,0.9171460270881653,-17.72920036315918,0.5202540159225464,0.14524300396442413,-17.90999984741211,0.7544869780540466,1.2593599557876587,-18.488300323486328,0.5202540159225464,0.14524300396442413,-17.90999984741211,0.5214260220527649,0.8167579770088196,-20.116100311279297,0.7544869780540466,1.2593599557876587,-18.488300323486328,0.7544869780540466,1.2593599557876587,-18.488300323486328,0.5214260220527649,0.8167579770088196,-20.116100311279297,0.7553279995918274,1.741420030593872,-19.12299919128418,0.5214260220527649,0.8167579770088196,-20.116100311279297,0.5230110287666321,1.7245899438858032,-20.484500885009766,0.7553279995918274,1.741420030593872,-19.12299919128418,1.2674800157546997,-2.2022199630737305,-6.675000190734863,1.4557000398635864,-2.4625399112701416,-4.404439926147461,-0.0038397200405597687,-2.200000047683716,-6.675000190734863,1.4557000398635864,-2.4625399112701416,-4.404439926147461,-0.004593700170516968,-2.631999969482422,-4.404439926147461,-0.0038397200405597687,-2.200000047683716,-6.675000190734863,1.4557000398635864,-2.4625399112701416,-4.404439926147461,1.2674800157546997,-2.2022199630737305,-6.675000190734863,2.4134299755096436,-1.9532400369644165,-4.404439926147461,1.2674800157546997,-2.2022199630737305,-6.675000190734863,2.197129964828491,-1.643839955329895,-6.675000190734863,2.4134299755096436,-1.9532400369644165,-4.404439926147461,1.4787100553512573,1.8294199705123901,-4.404439926147461,1.2737599611282349,1.397779941558838,-6.675000190734863,0.0031974399462342262,1.8320000171661377,-4.404439926147461,1.2737599611282349,1.397779941558838,-6.675000190734863,0.002443460049107671,1.399999976158142,-6.675000190734863,0.0031974399462342262,1.8320000171661377,-4.404439926147461,1.2737599611282349,1.397779941558838,-6.675000190734863,1.4787100553512573,1.8294199705123901,-4.404439926147461,2.0427699089050293,1.2064399719238281,-6.675000190734863,1.4787100553512573,1.8294199705123901,-4.404439926147461,2.371299982070923,1.6378599405288696,-4.404439926147461,2.0427699089050293,1.2064399719238281,-6.675000190734863,1.4557000398635864,-2.4625399112701416,-4.404439926147461,1.7477099895477295,-2.220860004425049,2.923190116882324,-0.004593700170516968,-2.631999969482422,-4.404439926147461,1.7477099895477295,-2.220860004425049,2.923190116882324,-0.004593700170516968,-2.631999969482422,2.923190116882324,-0.004593700170516968,-2.631999969482422,-4.404439926147461,1.7477099895477295,-2.220860004425049,2.923190116882324,1.4557000398635864,-2.4625399112701416,-4.404439926147461,2.2107601165771484,-2.034709930419922,2.923190116882324,1.4557000398635864,-2.4625399112701416,-4.404439926147461,2.4134299755096436,-1.9532400369644165,-4.404439926147461,2.2107601165771484,-2.034709930419922,2.923190116882324,1.7477099895477295,-2.220860004425049,2.923190116882324,1.5865800380706787,-1.820039987564087,7.074999809265137,-0.004593700170516968,-2.631999969482422,2.923190116882324,1.5865800380706787,-1.820039987564087,7.074999809265137,-0.0038397200405597687,-2.200000047683716,7.074999809265137,-0.004593700170516968,-2.631999969482422,2.923190116882324,1.5865800380706787,-1.820039987564087,7.074999809265137,1.7477099895477295,-2.220860004425049,2.923190116882324,2.188810110092163,-1.5779399871826172,7.074999809265137,1.7477099895477295,-2.220860004425049,2.923190116882324,2.2107601165771484,-2.034709930419922,2.923190116882324,2.188810110092163,-1.5779399871826172,7.074999809265137,1.6542999744415283,1.92808997631073,2.940000057220459,1.4787100553512573,1.8294199705123901,-4.404439926147461,0.005007389932870865,2.8690199851989746,2.940000057220459,1.4787100553512573,1.8294199705123901,-4.404439926147461,0.0031974399462342262,1.8320000171661377,-4.404439926147461,0.005007389932870865,2.8690199851989746,2.940000057220459,1.4787100553512573,1.8294199705123901,-4.404439926147461,1.6542999744415283,1.92808997631073,2.940000057220459,2.371299982070923,1.6378599405288696,-4.404439926147461,1.6542999744415283,1.92808997631073,2.940000057220459,2.6531898975372314,1.827370047569275,2.923190116882324,2.371299982070923,1.6378599405288696,-4.404439926147461,1.6517499685287476,0.4653419852256775,9.421950340270996,1.6542999744415283,1.92808997631073,2.940000057220459,0.0012851499486714602,0.7363330125808716,9.901650428771973,1.6542999744415283,1.92808997631073,2.940000057220459,0.005007389932870865,2.8690199851989746,2.940000057220459,0.0012851499486714602,0.7363330125808716,9.901650428771973,1.6542999744415283,1.92808997631073,2.940000057220459,1.6517499685287476,0.4653419852256775,9.421950340270996,2.6531898975372314,1.827370047569275,2.923190116882324,1.6517499685287476,0.4653419852256775,9.421950340270996,2.400209903717041,0.11947699636220932,9.1316499710083,2.6531898975372314,1.827370047569275,2.923190116882324,1.5865800380706787,-1.820039987564087,7.074999809265137,1.6492400169372559,-0.9684609770774841,9.455639839172363,-0.0038397200405597687,-2.200000047683716,7.074999809265137,1.6492400169372559,-0.9684609770774841,9.455639839172363,-0.001379749970510602,-0.7905399799346924,9.93533992767334,-0.0038397200405597687,-2.200000047683716,7.074999809265137,1.6492400169372559,-0.9684609770774841,9.455639839172363,1.5865800380706787,-1.820039987564087,7.074999809265137,2.457940101623535,-1.1806299686431885,9.165340423583984,1.5865800380706787,-1.820039987564087,7.074999809265137,2.188810110092163,-1.5779399871826172,7.074999809265137,2.457940101623535,-1.1806299686431885,9.165340423583984,0.8360540270805359,-0.7684599757194519,-12.651100158691406,1.2674800157546997,-2.2022199630737305,-6.675000190734863,-0.0013386700302362442,-0.7669990062713623,-12.651100158691406,1.2674800157546997,-2.2022199630737305,-6.675000190734863,-0.0038397200405597687,-2.200000047683716,-6.675000190734863,-0.0013386700302362442,-0.7669990062713623,-12.651100158691406,1.2674800157546997,-2.2022199630737305,-6.675000190734863,0.8360540270805359,-0.7684599757194519,-12.651100158691406,2.197129964828491,-1.643839955329895,-6.675000190734863,0.8360540270805359,-0.7684599757194519,-12.651100158691406,1.342810034751892,-0.7693449854850769,-12.651100158691406,2.197129964828491,-1.643839955329895,-6.675000190734863,1.2737599611282349,1.397779941558838,-6.675000190734863,0.8396040201187134,1.2655400037765503,-12.651100158691406,0.002443460049107671,1.399999976158142,-6.675000190734863,0.8396040201187134,1.2655400037765503,-12.651100158691406,0.0022113299928605556,1.2669999599456787,-12.651100158691406,0.002443460049107671,1.399999976158142,-6.675000190734863,0.8396040201187134,1.2655400037765503,-12.651100158691406,1.2737599611282349,1.397779941558838,-6.675000190734863,1.3459899425506592,1.0546499490737915,-12.651100158691406,1.2737599611282349,1.397779941558838,-6.675000190734863,2.0427699089050293,1.2064399719238281,-6.675000190734863,1.3459899425506592,1.0546499490737915,-12.651100158691406,0.32417601346969604,0.12586699426174164,-17.90999984741211,0.8360540270805359,-0.7684599757194519,-12.651100158691406,0.00016379900625906885,0.09384970366954803,-17.90999984741211,0.8360540270805359,-0.7684599757194519,-12.651100158691406,-0.0013386700302362442,-0.7669990062713623,-12.651100158691406,0.00016379900625906885,0.09384970366954803,-17.90999984741211,0.8360540270805359,-0.7684599757194519,-12.651100158691406,0.32417601346969604,0.12586699426174164,-17.90999984741211,1.342810034751892,-0.7693449854850769,-12.651100158691406,0.32417601346969604,0.12586699426174164,-17.90999984741211,0.5202540159225464,0.14524300396442413,-17.90999984741211,1.342810034751892,-0.7693449854850769,-12.651100158691406,0.8396040201187134,1.2655400037765503,-12.651100158691406,0.28936100006103516,1.5949699878692627,-17.302400588989258,0.0022113299928605556,1.2669999599456787,-12.651100158691406,0.28936100006103516,1.5949699878692627,-17.302400588989258,0.0027545099146664143,1.5782099962234497,-17.23740005493164,0.0022113299928605556,1.2669999599456787,-12.651100158691406,0.28936100006103516,1.5949699878692627,-17.302400588989258,0.8396040201187134,1.2655400037765503,-12.651100158691406,0.5627220273017883,1.5590200424194336,-17.489999771118164,0.8396040201187134,1.2655400037765503,-12.651100158691406,1.3459899425506592,1.0546499490737915,-12.651100158691406,0.5627220273017883,1.5590200424194336,-17.489999771118164,0.3253600001335144,0.8037790060043335,-20.13409996032715,0.32417601346969604,0.12586699426174164,-17.90999984741211,0.0013654299546033144,0.7823320031166077,-20.16390037536621,0.32417601346969604,0.12586699426174164,-17.90999984741211,0.00016379900625906885,0.09384970366954803,-17.90999984741211,0.0013654299546033144,0.7823320031166077,-20.16390037536621,0.32417601346969604,0.12586699426174164,-17.90999984741211,0.3253600001335144,0.8037790060043335,-20.13409996032715,0.5202540159225464,0.14524300396442413,-17.90999984741211,0.3253600001335144,0.8037790060043335,-20.13409996032715,0.5214260220527649,0.8167579770088196,-20.116100311279297,0.5202540159225464,0.14524300396442413,-17.90999984741211,0.28936100006103516,1.5949699878692627,-17.302400588989258,0.28968000411987305,1.7778700590133667,-17.613000869750977,0.0027545099146664143,1.5782099962234497,-17.23740005493164,0.28968000411987305,1.7778700590133667,-17.613000869750977,0.0030834900680929422,1.7667100429534912,-17.563800811767578,0.0027545099146664143,1.5782099962234497,-17.23740005493164,0.28968000411987305,1.7778700590133667,-17.613000869750977,0.28936100006103516,1.5949699878692627,-17.302400588989258,0.48311498761177063,1.7845900058746338,-17.798500061035156,0.28936100006103516,1.5949699878692627,-17.302400588989258,0.5627220273017883,1.5590200424194336,-17.489999771118164,0.48311498761177063,1.7845900058746338,-17.798500061035156,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.3253600001335144,0.8037790060043335,-20.13409996032715,0.003009180072695017,1.7241300344467163,-20.592599868774414,0.3253600001335144,0.8037790060043335,-20.13409996032715,0.0013654299546033144,0.7823320031166077,-20.16390037536621,0.003009180072695017,1.7241300344467163,-20.592599868774414,0.3253600001335144,0.8037790060043335,-20.13409996032715,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.5214260220527649,0.8167579770088196,-20.116100311279297,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.5230110287666321,1.7245899438858032,-20.484500885009766,0.5214260220527649,0.8167579770088196,-20.116100311279297,0.28968000411987305,1.7778700590133667,-17.613000869750977,0.2899650037288666,1.9410099983215332,-17.68079948425293,0.0030834900680929422,1.7667100429534912,-17.563800811767578,0.2899650037288666,1.9410099983215332,-17.68079948425293,0.0033877799287438393,1.941059947013855,-17.651399612426758,0.0030834900680929422,1.7667100429534912,-17.563800811767578,0.2899650037288666,1.9410099983215332,-17.68079948425293,0.28968000411987305,1.7778700590133667,-17.613000869750977,0.46338799595832825,1.9409799575805664,-17.85420036315918,0.28968000411987305,1.7778700590133667,-17.613000869750977,0.48311498761177063,1.7845900058746338,-17.798500061035156,0.46338799595832825,1.9409799575805664,-17.85420036315918,0.2899650037288666,1.9410099983215332,-17.68079948425293,0.05434909835457802,5.3176398277282715,-18.661800384521484,0.0033877799287438393,1.941059947013855,-17.651399612426758,0.05434909835457802,5.3176398277282715,-18.661800384521484,0.009280390106141567,5.317269802093506,-18.637500762939453,0.0033877799287438393,1.941059947013855,-17.651399612426758,0.05434909835457802,5.3176398277282715,-18.661800384521484,0.2899650037288666,1.9410099983215332,-17.68079948425293,0.08162269741296768,5.317860126495361,-18.685199737548828,0.2899650037288666,1.9410099983215332,-17.68079948425293,0.46338799595832825,1.9409799575805664,-17.85420036315918,0.08162269741296768,5.317860126495361,-18.685199737548828,2.614799976348877,0.8800640106201172,-4.404439926147461,2.18900990486145,0.6019420027732849,-6.675000190734863,2.371299982070923,1.6378599405288696,-4.404439926147461,2.18900990486145,0.6019420027732849,-6.675000190734863,2.0427699089050293,1.2064399719238281,-6.675000190734863,2.371299982070923,1.6378599405288696,-4.404439926147461,2.18900990486145,0.6019420027732849,-6.675000190734863,2.614799976348877,0.8800640106201172,-4.404439926147461,2.3598198890686035,-0.10411900281906128,-6.675000190734863,2.614799976348877,0.8800640106201172,-4.404439926147461,2.899209976196289,-0.005059939809143543,-4.404439926147461,2.3598198890686035,-0.10411900281906128,-6.675000190734863,2.6491599082946777,-0.48380300402641296,9.308500289916992,2.8965399265289307,0.9819350242614746,2.923190116882324,2.400209903717041,0.11947699636220932,9.1316499710083,2.8965399265289307,0.9819350242614746,2.923190116882324,2.6531898975372314,1.827370047569275,2.923190116882324,2.400209903717041,0.11947699636220932,9.1316499710083,2.8965399265289307,0.9819350242614746,2.923190116882324,2.6491599082946777,-0.48380300402641296,9.308500289916992,3.1807799339294434,-0.005551369860768318,2.923190116882324,2.6491599082946777,-0.48380300402641296,9.308500289916992,2.457940101623535,-1.1806299686431885,9.165340423583984,3.1807799339294434,-0.005551369860768318,2.923190116882324,13.57409954071045,1.9052900075912476,3.1718199253082275,25.318099975585938,2.6095199584960938,3.8868799209594727,13.601099967956543,2.23826003074646,3.1718199253082275,25.318099975585938,2.6095199584960938,3.8868799209594727,25.174800872802734,2.7160699367523193,3.8868799209594727,13.601099967956543,2.23826003074646,3.1718199253082275,25.318099975585938,2.6095199584960938,3.8868799209594727,13.57409954071045,1.9052900075912476,3.1718199253082275,25.48550033569336,2.485069990158081,3.8868799209594727,13.57409954071045,1.9052900075912476,3.1718199253082275,13.542699813842773,1.5163700580596924,3.1718199253082275,25.48550033569336,2.485069990158081,3.8868799209594727,25.318099975585938,2.6095199584960938,1.8818700313568115,13.57409954071045,1.9052900075912476,-1.203070044517517,25.174800872802734,2.7160699367523193,1.8818700313568115,13.57409954071045,1.9052900075912476,-1.203070044517517,13.601099967956543,2.23826003074646,-1.203070044517517,25.174800872802734,2.7160699367523193,1.8818700313568115,13.57409954071045,1.9052900075912476,-1.203070044517517,25.318099975585938,2.6095199584960938,1.8818700313568115,13.542699813842773,1.5163700580596924,-1.203070044517517,25.318099975585938,2.6095199584960938,1.8818700313568115,25.48550033569336,2.485069990158081,1.8818700313568115,13.542699813842773,1.5163700580596924,-1.203070044517517,25.318099975585938,2.6095199584960938,3.8868799209594727,25.59269905090332,5.196869850158691,3.8868799209594727,25.174800872802734,2.7160699367523193,3.8868799209594727,25.59269905090332,5.196869850158691,3.8868799209594727,25.519100189208984,5.195469856262207,3.8868799209594727,25.174800872802734,2.7160699367523193,3.8868799209594727,25.59269905090332,5.196869850158691,3.8868799209594727,25.318099975585938,2.6095199584960938,3.8868799209594727,25.678699493408203,5.198500156402588,3.8868799209594727,25.318099975585938,2.6095199584960938,3.8868799209594727,25.48550033569336,2.485069990158081,3.8868799209594727,25.678699493408203,5.198500156402588,3.8868799209594727,25.59269905090332,5.196869850158691,1.8818700313568115,25.318099975585938,2.6095199584960938,1.8818700313568115,25.519100189208984,5.195469856262207,1.8818700313568115,25.318099975585938,2.6095199584960938,1.8818700313568115,25.174800872802734,2.7160699367523193,1.8818700313568115,25.519100189208984,5.195469856262207,1.8818700313568115,25.318099975585938,2.6095199584960938,1.8818700313568115,25.59269905090332,5.196869850158691,1.8818700313568115,25.48550033569336,2.485069990158081,1.8818700313568115,25.59269905090332,5.196869850158691,1.8818700313568115,25.678699493408203,5.198500156402588,1.8818700313568115,25.48550033569336,2.485069990158081,1.8818700313568115,25.59269905090332,5.196869850158691,3.8868799209594727,25.59269905090332,5.196869850158691,1.8818700313568115,25.519100189208984,5.195469856262207,3.8868799209594727,25.59269905090332,5.196869850158691,1.8818700313568115,25.519100189208984,5.195469856262207,1.8818700313568115,25.519100189208984,5.195469856262207,3.8868799209594727,25.59269905090332,5.196869850158691,1.8818700313568115,25.59269905090332,5.196869850158691,3.8868799209594727,25.678699493408203,5.198500156402588,1.8818700313568115,25.59269905090332,5.196869850158691,3.8868799209594727,25.678699493408203,5.198500156402588,3.8868799209594727,25.678699493408203,5.198500156402588,1.8818700313568115,2.18900990486145,0.6019420027732849,-6.675000190734863,1.4726799726486206,0.7421640157699585,-12.651100158691406,2.0427699089050293,1.2064399719238281,-6.675000190734863,1.4726799726486206,0.7421640157699585,-12.651100158691406,1.3459899425506592,1.0546499490737915,-12.651100158691406,2.0427699089050293,1.2064399719238281,-6.675000190734863,1.4726799726486206,0.7421640157699585,-12.651100158691406,2.18900990486145,0.6019420027732849,-6.675000190734863,1.6206599473953247,0.37717199325561523,-12.651100158691406,2.18900990486145,0.6019420027732849,-6.675000190734863,2.3598198890686035,-0.10411900281906128,-6.675000190734863,1.6206599473953247,0.37717199325561523,-12.651100158691406,1.4726799726486206,0.7421640157699585,-12.651100158691406,0.6507850289344788,1.1983100175857544,-17.604299545288086,1.3459899425506592,1.0546499490737915,-12.651100158691406,0.6507850289344788,1.1983100175857544,-17.604299545288086,0.5627220273017883,1.5590200424194336,-17.489999771118164,1.3459899425506592,1.0546499490737915,-12.651100158691406,0.6507850289344788,1.1983100175857544,-17.604299545288086,1.4726799726486206,0.7421640157699585,-12.651100158691406,0.7538890242576599,0.9171460270881653,-17.72920036315918,1.4726799726486206,0.7421640157699585,-12.651100158691406,1.6206599473953247,0.37717199325561523,-12.651100158691406,0.7538890242576599,0.9171460270881653,-17.72920036315918,3.148400068283081,1.26187002658844,-4.226840019226074,2.614799976348877,0.8800640106201172,-4.404439926147461,2.9946000576019287,1.8506300449371338,-4.226840019226074,2.614799976348877,0.8800640106201172,-4.404439926147461,2.371299982070923,1.6378599405288696,-4.404439926147461,2.9946000576019287,1.8506300449371338,-4.226840019226074,2.614799976348877,0.8800640106201172,-4.404439926147461,3.148400068283081,1.26187002658844,-4.226840019226074,2.899209976196289,-0.005059939809143543,-4.404439926147461,3.148400068283081,1.26187002658844,-4.226840019226074,3.3280301094055176,0.5741919875144958,-4.226840019226074,2.899209976196289,-0.005059939809143543,-4.404439926147461,2.8965399265289307,0.9819350242614746,2.923190116882324,3.414340019226074,1.2614099979400635,2.9369800090789795,2.6531898975372314,1.827370047569275,2.923190116882324,3.414340019226074,1.2614099979400635,2.9369800090789795,3.260540008544922,1.8501700162887573,2.9369800090789795,2.6531898975372314,1.827370047569275,2.923190116882324,3.414340019226074,1.2614099979400635,2.9369800090789795,2.8965399265289307,0.9819350242614746,2.923190116882324,3.593980073928833,0.5737280249595642,2.9369800090789795,2.8965399265289307,0.9819350242614746,2.923190116882324,3.1807799339294434,-0.005551369860768318,2.923190116882324,3.593980073928833,0.5737280249595642,2.9369800090789795,4.32273006439209,1.3797800540924072,-3.8439300060272217,3.148400068283081,1.26187002658844,-4.226840019226074,4.337719917297363,1.8997199535369873,-3.8439300060272217,3.148400068283081,1.26187002658844,-4.226840019226074,2.9946000576019287,1.8506300449371338,-4.226840019226074,4.337719917297363,1.8997199535369873,-3.8439300060272217,3.148400068283081,1.26187002658844,-4.226840019226074,4.32273006439209,1.3797800540924072,-3.8439300060272217,3.3280301094055176,0.5741919875144958,-4.226840019226074,4.32273006439209,1.3797800540924072,-3.8439300060272217,4.305220127105713,0.7724869847297668,-3.8439300060272217,3.3280301094055176,0.5741919875144958,-4.226840019226074,13.57409954071045,1.9052900075912476,-1.203070044517517,4.32273006439209,1.3797800540924072,-3.8439300060272217,13.601099967956543,2.23826003074646,-1.203070044517517,4.32273006439209,1.3797800540924072,-3.8439300060272217,4.337719917297363,1.8997199535369873,-3.8439300060272217,13.601099967956543,2.23826003074646,-1.203070044517517,4.32273006439209,1.3797800540924072,-3.8439300060272217,13.57409954071045,1.9052900075912476,-1.203070044517517,4.305220127105713,0.7724869847297668,-3.8439300060272217,13.57409954071045,1.9052900075912476,-1.203070044517517,13.542699813842773,1.5163700580596924,-1.203070044517517,4.305220127105713,0.7724869847297668,-3.8439300060272217,3.414340019226074,1.2614099979400635,2.9369800090789795,4.554999828338623,1.3793799877166748,2.9667201042175293,3.260540008544922,1.8501700162887573,2.9369800090789795,4.554999828338623,1.3793799877166748,2.9667201042175293,4.569990158081055,1.8993099927902222,2.9667201042175293,3.260540008544922,1.8501700162887573,2.9369800090789795,4.554999828338623,1.3793799877166748,2.9667201042175293,3.414340019226074,1.2614099979400635,2.9369800090789795,4.537489891052246,0.7720819711685181,2.9667201042175293,3.414340019226074,1.2614099979400635,2.9369800090789795,3.593980073928833,0.5737280249595642,2.9369800090789795,4.537489891052246,0.7720819711685181,2.9667201042175293,4.554999828338623,1.3793799877166748,2.9667201042175293,13.57409954071045,1.9052900075912476,3.1718199253082275,4.569990158081055,1.8993099927902222,2.9667201042175293,13.57409954071045,1.9052900075912476,3.1718199253082275,13.601099967956543,2.23826003074646,3.1718199253082275,4.569990158081055,1.8993099927902222,2.9667201042175293,13.57409954071045,1.9052900075912476,3.1718199253082275,4.554999828338623,1.3793799877166748,2.9667201042175293,13.542699813842773,1.5163700580596924,3.1718199253082275,4.554999828338623,1.3793799877166748,2.9667201042175293,4.537489891052246,0.7720819711685181,2.9667201042175293,13.542699813842773,1.5163700580596924,3.1718199253082275,0.6507850289344788,1.1983100175857544,-17.604299545288086,0.5975109934806824,1.5423400402069092,-18.116600036621094,0.5627220273017883,1.5590200424194336,-17.489999771118164,0.5975109934806824,1.5423400402069092,-18.116600036621094,0.48311498761177063,1.7845900058746338,-17.798500061035156,0.5627220273017883,1.5590200424194336,-17.489999771118164,0.5975109934806824,1.5423400402069092,-18.116600036621094,0.6507850289344788,1.1983100175857544,-17.604299545288086,0.7544869780540466,1.2593599557876587,-18.488300323486328,0.6507850289344788,1.1983100175857544,-17.604299545288086,0.7538890242576599,0.9171460270881653,-17.72920036315918,0.7544869780540466,1.2593599557876587,-18.488300323486328,0.5975109934806824,1.5423400402069092,-18.116600036621094,0.5980460047721863,1.84893000125885,-18.43939971923828,0.48311498761177063,1.7845900058746338,-17.798500061035156,0.5980460047721863,1.84893000125885,-18.43939971923828,0.46338799595832825,1.9409799575805664,-17.85420036315918,0.48311498761177063,1.7845900058746338,-17.798500061035156,0.5980460047721863,1.84893000125885,-18.43939971923828,0.5975109934806824,1.5423400402069092,-18.116600036621094,0.7553279995918274,1.741420030593872,-19.12299919128418,0.5975109934806824,1.5423400402069092,-18.116600036621094,0.7544869780540466,1.2593599557876587,-18.488300323486328,0.7553279995918274,1.741420030593872,-19.12299919128418,0.5980460047721863,1.84893000125885,-18.43939971923828,0.15004000067710876,5.5095601081848145,-19.1835994720459,0.46338799595832825,1.9409799575805664,-17.85420036315918,0.15004000067710876,5.5095601081848145,-19.1835994720459,0.08162269741296768,5.317860126495361,-18.685199737548828,0.46338799595832825,1.9409799575805664,-17.85420036315918,0.15004000067710876,5.5095601081848145,-19.1835994720459,0.5980460047721863,1.84893000125885,-18.43939971923828,0.2294519990682602,5.445980072021484,-20.027099609375,0.5980460047721863,1.84893000125885,-18.43939971923828,0.7553279995918274,1.741420030593872,-19.12299919128418,0.2294519990682602,5.445980072021484,-20.027099609375,0.000002239800096504041,0.0012833100045099854,10.308300018310547,1.6506099700927734,-0.18512099981307983,9.82863998413086,0.0012851499486714602,0.7363330125808716,9.901650428771973,1.6506099700927734,-0.18512099981307983,9.82863998413086,1.6517499685287476,0.4653419852256775,9.421950340270996,0.0012851499486714602,0.7363330125808716,9.901650428771973,1.6506099700927734,-0.18512099981307983,9.82863998413086,0.000002239800096504041,0.0012833100045099854,10.308300018310547,1.6492400169372559,-0.9684609770774841,9.455639839172363,0.000002239800096504041,0.0012833100045099854,10.308300018310547,-0.001379749970510602,-0.7905399799346924,9.93533992767334,1.6492400169372559,-0.9684609770774841,9.455639839172363,1.6506099700927734,-0.18512099981307983,9.82863998413086,2.6491599082946777,-0.48380300402641296,9.308500289916992,1.6517499685287476,0.4653419852256775,9.421950340270996,2.6491599082946777,-0.48380300402641296,9.308500289916992,2.400209903717041,0.11947699636220932,9.1316499710083,1.6517499685287476,0.4653419852256775,9.421950340270996,2.6491599082946777,-0.48380300402641296,9.308500289916992,1.6506099700927734,-0.18512099981307983,9.82863998413086,2.457940101623535,-1.1806299686431885,9.165340423583984,1.6506099700927734,-0.18512099981307983,9.82863998413086,1.6492400169372559,-0.9684609770774841,9.455639839172363,2.457940101623535,-1.1806299686431885,9.165340423583984,0.08162269741296768,5.317860126495361,-18.685199737548828,0.15004000067710876,5.5095601081848145,-19.1835994720459,0.05453240126371384,5.422639846801758,-18.7268009185791,0.15004000067710876,5.5095601081848145,-19.1835994720459,0.07522369921207428,5.614689826965332,-19.1835994720459,0.05453240126371384,5.422639846801758,-18.7268009185791,0.15004000067710876,5.5095601081848145,-19.1835994720459,0.2294519990682602,5.445980072021484,-20.027099609375,0.07522369921207428,5.614689826965332,-19.1835994720459,0.2294519990682602,5.445980072021484,-20.027099609375,0.08965790271759033,5.533480167388916,-20.032899856567383,0.07522369921207428,5.614689826965332,-19.1835994720459,0.07522369921207428,5.614689826965332,-19.1835994720459,0.08965790271759033,5.533480167388916,-20.032899856567383,0.00979968998581171,5.614799976348877,-19.1835994720459,0.08965790271759033,5.533480167388916,-20.032899856567383,0.00965799018740654,5.5336198806762695,-20.032899856567383,0.00979968998581171,5.614799976348877,-19.1835994720459,0.08965790271759033,5.533480167388916,-20.032899856567383,0.0730770006775856,5.232369899749756,-20.86669921875,0.00965799018740654,5.5336198806762695,-20.032899856567383,0.0730770006775856,5.232369899749756,-20.86669921875,0.009130929596722126,5.231629848480225,-20.934099197387695,0.00965799018740654,5.5336198806762695,-20.032899856567383,0.05453240126371384,5.422639846801758,-18.7268009185791,0.07522369921207428,5.614689826965332,-19.1835994720459,0.009463650174438953,5.422269821166992,-18.762500762939453,0.07522369921207428,5.614689826965332,-19.1835994720459,0.00979968998581171,5.614799976348877,-19.1835994720459,0.009463650174438953,5.422269821166992,-18.762500762939453,0.7553279995918274,1.741420030593872,-19.12299919128418,0.5230110287666321,1.7245899438858032,-20.484500885009766,0.2294519990682602,5.445980072021484,-20.027099609375,0.5230110287666321,1.7245899438858032,-20.484500885009766,0.11159099638462067,5.127820014953613,-20.825899124145508,0.2294519990682602,5.445980072021484,-20.027099609375,0.003009180072695017,1.7241300344467163,-20.592599868774414,0.008962290361523628,5.135009765625,-20.91860008239746,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.008962290361523628,5.135009765625,-20.91860008239746,0.07894910126924515,5.127379894256592,-20.848100662231445,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.07894910126924515,5.127379894256592,-20.848100662231445,0.008962290361523628,5.135009765625,-20.91860008239746,0.0730770006775856,5.232369899749756,-20.86669921875,0.008962290361523628,5.135009765625,-20.91860008239746,0.009130929596722126,5.231629848480225,-20.934099197387695,0.0730770006775856,5.232369899749756,-20.86669921875,0.5230110287666321,1.7245899438858032,-20.484500885009766,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.11159099638462067,5.127820014953613,-20.825899124145508,0.32696598768234253,1.7244199514389038,-20.525299072265625,0.07894910126924515,5.127379894256592,-20.848100662231445,0.11159099638462067,5.127820014953613,-20.825899124145508,0.07894910126924515,5.127379894256592,-20.848100662231445,0.0730770006775856,5.232369899749756,-20.86669921875,0.11159099638462067,5.127820014953613,-20.825899124145508,0.08965790271759033,5.533480167388916,-20.032899856567383,0.2294519990682602,5.445980072021484,-20.027099609375,0.0730770006775856,5.232369899749756,-20.86669921875,0.2294519990682602,5.445980072021484,-20.027099609375,0.11159099638462067,5.127820014953613,-20.825899124145508,0.0730770006775856,5.232369899749756,-20.86669921875,0.009280390106141567,5.317269802093506,-18.637500762939453,0.05434909835457802,5.3176398277282715,-18.661800384521484,0.009362169541418552,5.364120006561279,-18.673999786376953,0.05434909835457802,5.3176398277282715,-18.661800384521484,0.08162269741296768,5.317860126495361,-18.685199737548828,0.009362169541418552,5.364120006561279,-18.673999786376953,0.009362169541418552,5.364120006561279,-18.673999786376953,0.08162269741296768,5.317860126495361,-18.685199737548828,0.009463650174438953,5.422269821166992,-18.762500762939453,0.08162269741296768,5.317860126495361,-18.685199737548828,0.05453240126371384,5.422639846801758,-18.7268009185791,0.009463650174438953,5.422269821166992,-18.762500762939453,-2.4202399253845215,-1.9448000192642212,-4.404439926147461,-2.899209976196289,0.005060229916125536,-4.404439926147461,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-2.899209976196289,0.005060229916125536,-4.404439926147461,-2.3601698875427246,-0.0958809033036232,-6.675000190734863,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-2.2178499698638916,-2.026979923248291,2.923190116882324,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-2.4202399253845215,-1.9448000192642212,-4.404439926147461,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-2.899209976196289,0.005060229916125536,-4.404439926147461,-2.4202399253845215,-1.9448000192642212,-4.404439926147461,-2.1942999362945557,-1.570289969444275,7.074999809265137,-2.462049961090088,-1.1720399856567383,9.165340423583984,-2.2178499698638916,-2.026979923248291,2.923190116882324,-2.462049961090088,-1.1720399856567383,9.165340423583984,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-2.2178499698638916,-2.026979923248291,2.923190116882324,-13.537300109863281,1.5636299848556519,-1.203070044517517,-13.537300109863281,1.5636299848556519,3.1718199253082275,-25.476699829101562,2.5740199089050293,1.8818700313568115,-13.537300109863281,1.5636299848556519,3.1718199253082275,-25.476699829101562,2.5740199089050293,3.8868799209594727,-25.476699829101562,2.5740199089050293,1.8818700313568115,-13.593199729919434,2.2857298851013184,3.1718199253082275,-13.593199729919434,2.2857298851013184,-1.203070044517517,-25.16510009765625,2.8039300441741943,3.8868799209594727,-13.593199729919434,2.2857298851013184,-1.203070044517517,-25.16510009765625,2.8039300441741943,1.8818700313568115,-25.16510009765625,2.8039300441741943,3.8868799209594727,-25.476699829101562,2.5740199089050293,1.8818700313568115,-25.476699829101562,2.5740199089050293,3.8868799209594727,-25.660400390625,5.288099765777588,1.8818700313568115,-25.476699829101562,2.5740199089050293,3.8868799209594727,-25.660400390625,5.288099765777588,3.8868799209594727,-25.660400390625,5.288099765777588,1.8818700313568115,-25.16510009765625,2.8039300441741943,3.8868799209594727,-25.16510009765625,2.8039300441741943,1.8818700313568115,-25.50079917907715,5.284510135650635,3.8868799209594727,-25.16510009765625,2.8039300441741943,1.8818700313568115,-25.50079917907715,5.284510135650635,1.8818700313568115,-25.50079917907715,5.284510135650635,3.8868799209594727,-2.3601698875427246,-0.0958809033036232,-6.675000190734863,-1.6193300485610962,0.3828270137310028,-12.651100158691406,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-1.6193300485610962,0.3828270137310028,-12.651100158691406,-1.345479965209961,-0.7646530270576477,-12.651100158691406,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-1.6193300485610962,0.3828270137310028,-12.651100158691406,-0.7506830096244812,0.9197720289230347,-17.72920036315918,-1.345479965209961,-0.7646530270576477,-12.651100158691406,-0.7506830096244812,0.9197720289230347,-17.72920036315918,-0.5197439789772034,0.14705799520015717,-17.90999984741211,-1.345479965209961,-0.7646530270576477,-12.651100158691406,-3.32600998878479,0.5858060121536255,-4.226840019226074,-2.899209976196289,0.005060229916125536,-4.404439926147461,-3.5919599533081055,0.5862699747085571,2.9369800090789795,-2.899209976196289,0.005060229916125536,-4.404439926147461,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-3.5919599533081055,0.5862699747085571,2.9369800090789795,-3.2540600299835205,1.8615399599075317,2.9369800090789795,-2.6468000411987305,1.8366199731826782,2.923190116882324,-2.9881200790405273,1.8610700368881226,-4.226840019226074,-2.6468000411987305,1.8366199731826782,2.923190116882324,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-2.9881200790405273,1.8610700368881226,-4.226840019226074,-4.302499771118164,0.7875109910964966,-3.8439300060272217,-3.32600998878479,0.5858060121536255,-4.226840019226074,-4.5347700119018555,0.7879160046577454,2.9667201042175293,-3.32600998878479,0.5858060121536255,-4.226840019226074,-3.5919599533081055,0.5862699747085571,2.9369800090789795,-4.5347700119018555,0.7879160046577454,2.9667201042175293,-4.5347700119018555,0.7879160046577454,2.9667201042175293,-13.537300109863281,1.5636299848556519,3.1718199253082275,-4.302499771118164,0.7875109910964966,-3.8439300060272217,-13.537300109863281,1.5636299848556519,3.1718199253082275,-13.537300109863281,1.5636299848556519,-1.203070044517517,-4.302499771118164,0.7875109910964966,-3.8439300060272217,-4.563330173492432,1.9152499437332153,2.9667201042175293,-3.2540600299835205,1.8615399599075317,2.9369800090789795,-4.3310699462890625,1.9148499965667725,-3.8439300060272217,-3.2540600299835205,1.8615399599075317,2.9369800090789795,-2.9881200790405273,1.8610700368881226,-4.226840019226074,-4.3310699462890625,1.9148499965667725,-3.8439300060272217,-4.3310699462890625,1.9148499965667725,-3.8439300060272217,-13.593199729919434,2.2857298851013184,-1.203070044517517,-4.563330173492432,1.9152499437332153,2.9667201042175293,-13.593199729919434,2.2857298851013184,-1.203070044517517,-13.593199729919434,2.2857298851013184,3.1718199253082275,-4.563330173492432,1.9152499437332153,2.9667201042175293,-0.7506830096244812,0.9197720289230347,-17.72920036315918,-0.7500860095024109,1.2619800567626953,-18.488300323486328,-0.5197439789772034,0.14705799520015717,-17.90999984741211,-0.7500860095024109,1.2619800567626953,-18.488300323486328,-0.5185719728469849,0.818572998046875,-20.116100311279297,-0.5197439789772034,0.14705799520015717,-17.90999984741211,-0.7500860095024109,1.2619800567626953,-18.488300323486328,-0.7492449879646301,1.7440500259399414,-19.12299919128418,-0.5185719728469849,0.818572998046875,-20.116100311279297,-0.7492449879646301,1.7440500259399414,-19.12299919128418,-0.5169879794120789,1.7264100313186646,-20.484500885009766,-0.5185719728469849,0.818572998046875,-20.116100311279297,-1.2751599550247192,-2.197779893875122,-6.675000190734863,-0.0038397200405597687,-2.200000047683716,-6.675000190734863,-1.4642900228500366,-2.4574499130249023,-4.404439926147461,-0.0038397200405597687,-2.200000047683716,-6.675000190734863,-0.004593700170516968,-2.631999969482422,-4.404439926147461,-1.4642900228500366,-2.4574499130249023,-4.404439926147461,-1.4642900228500366,-2.4574499130249023,-4.404439926147461,-2.4202399253845215,-1.9448000192642212,-4.404439926147461,-1.2751599550247192,-2.197779893875122,-6.675000190734863,-2.4202399253845215,-1.9448000192642212,-4.404439926147461,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-1.2751599550247192,-2.197779893875122,-6.675000190734863,-1.4723199605941772,1.834570050239563,-4.404439926147461,0.0031974399462342262,1.8320000171661377,-4.404439926147461,-1.2688699960708618,1.4022200107574463,-6.675000190734863,0.0031974399462342262,1.8320000171661377,-4.404439926147461,0.002443460049107671,1.399999976158142,-6.675000190734863,-1.2688699960708618,1.4022200107574463,-6.675000190734863,-1.2688699960708618,1.4022200107574463,-6.675000190734863,-2.0385499000549316,1.2135599851608276,-6.675000190734863,-1.4723199605941772,1.834570050239563,-4.404439926147461,-2.0385499000549316,1.2135599851608276,-6.675000190734863,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-1.4723199605941772,1.834570050239563,-4.404439926147461,-1.4642900228500366,-2.4574499130249023,-4.404439926147461,-0.004593700170516968,-2.631999969482422,-4.404439926147461,-1.7554500102996826,-2.214750051498413,2.923190116882324,-0.004593700170516968,-2.631999969482422,-4.404439926147461,-0.004593700170516968,-2.631999969482422,2.923190116882324,-1.7554500102996826,-2.214750051498413,2.923190116882324,-1.7554500102996826,-2.214750051498413,2.923190116882324,-2.2178499698638916,-2.026979923248291,2.923190116882324,-1.4642900228500366,-2.4574499130249023,-4.404439926147461,-2.2178499698638916,-2.026979923248291,2.923190116882324,-2.4202399253845215,-1.9448000192642212,-4.404439926147461,-1.4642900228500366,-2.4574499130249023,-4.404439926147461,-1.7554500102996826,-2.214750051498413,2.923190116882324,-0.004593700170516968,-2.631999969482422,2.923190116882324,-1.592919945716858,-1.8144899606704712,7.074999809265137,-0.004593700170516968,-2.631999969482422,2.923190116882324,-0.0038397200405597687,-2.200000047683716,7.074999809265137,-1.592919945716858,-1.8144899606704712,7.074999809265137,-1.592919945716858,-1.8144899606704712,7.074999809265137,-2.1942999362945557,-1.570289969444275,7.074999809265137,-1.7554500102996826,-2.214750051498413,2.923190116882324,-2.1942999362945557,-1.570289969444275,7.074999809265137,-2.2178499698638916,-2.026979923248291,2.923190116882324,-1.7554500102996826,-2.214750051498413,2.923190116882324,-1.6475600004196167,1.9338500499725342,2.940000057220459,0.005007389932870865,2.8690199851989746,2.940000057220459,-1.4723199605941772,1.834570050239563,-4.404439926147461,0.005007389932870865,2.8690199851989746,2.940000057220459,0.0031974399462342262,1.8320000171661377,-4.404439926147461,-1.4723199605941772,1.834570050239563,-4.404439926147461,-1.4723199605941772,1.834570050239563,-4.404439926147461,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-1.6475600004196167,1.9338500499725342,2.940000057220459,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-2.6468000411987305,1.8366199731826782,2.923190116882324,-1.6475600004196167,1.9338500499725342,2.940000057220459,-1.6501100063323975,0.47110500931739807,9.421950340270996,0.0012851499486714602,0.7363330125808716,9.901650428771973,-1.6475600004196167,1.9338500499725342,2.940000057220459,0.0012851499486714602,0.7363330125808716,9.901650428771973,0.005007389932870865,2.8690199851989746,2.940000057220459,-1.6475600004196167,1.9338500499725342,2.940000057220459,-1.6475600004196167,1.9338500499725342,2.940000057220459,-2.6468000411987305,1.8366199731826782,2.923190116882324,-1.6501100063323975,0.47110500931739807,9.421950340270996,-2.6468000411987305,1.8366199731826782,2.923190116882324,-2.399780035018921,0.12785400450229645,9.1316499710083,-1.6501100063323975,0.47110500931739807,9.421950340270996,-1.592919945716858,-1.8144899606704712,7.074999809265137,-0.0038397200405597687,-2.200000047683716,7.074999809265137,-1.652609944343567,-0.9626979827880859,9.455639839172363,-0.0038397200405597687,-2.200000047683716,7.074999809265137,-0.001379749970510602,-0.7905399799346924,9.93533992767334,-1.652609944343567,-0.9626979827880859,9.455639839172363,-1.652609944343567,-0.9626979827880859,9.455639839172363,-2.462049961090088,-1.1720399856567383,9.165340423583984,-1.592919945716858,-1.8144899606704712,7.074999809265137,-2.462049961090088,-1.1720399856567383,9.165340423583984,-2.1942999362945557,-1.570289969444275,7.074999809265137,-1.592919945716858,-1.8144899606704712,7.074999809265137,-0.8387309908866882,-0.7655370235443115,-12.651100158691406,-0.0013386700302362442,-0.7669990062713623,-12.651100158691406,-1.2751599550247192,-2.197779893875122,-6.675000190734863,-0.0013386700302362442,-0.7669990062713623,-12.651100158691406,-0.0038397200405597687,-2.200000047683716,-6.675000190734863,-1.2751599550247192,-2.197779893875122,-6.675000190734863,-1.2751599550247192,-2.197779893875122,-6.675000190734863,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-0.8387309908866882,-0.7655370235443115,-12.651100158691406,-2.202860116958618,-1.6361600160598755,-6.675000190734863,-1.345479965209961,-0.7646530270576477,-12.651100158691406,-0.8387309908866882,-0.7655370235443115,-12.651100158691406,-1.2688699960708618,1.4022200107574463,-6.675000190734863,0.002443460049107671,1.399999976158142,-6.675000190734863,-0.8351809978485107,1.2684600353240967,-12.651100158691406,0.002443460049107671,1.399999976158142,-6.675000190734863,0.0022113299928605556,1.2669999599456787,-12.651100158691406,-0.8351809978485107,1.2684600353240967,-12.651100158691406,-0.8351809978485107,1.2684600353240967,-12.651100158691406,-1.3423000574111938,1.059340000152588,-12.651100158691406,-1.2688699960708618,1.4022200107574463,-6.675000190734863,-1.3423000574111938,1.059340000152588,-12.651100158691406,-2.0385499000549316,1.2135599851608276,-6.675000190734863,-1.2688699960708618,1.4022200107574463,-6.675000190734863,-0.32373499870300293,0.12699800729751587,-17.90999984741211,0.00016379900625906885,0.09384970366954803,-17.90999984741211,-0.8387309908866882,-0.7655370235443115,-12.651100158691406,0.00016379900625906885,0.09384970366954803,-17.90999984741211,-0.0013386700302362442,-0.7669990062713623,-12.651100158691406,-0.8387309908866882,-0.7655370235443115,-12.651100158691406,-0.8387309908866882,-0.7655370235443115,-12.651100158691406,-1.345479965209961,-0.7646530270576477,-12.651100158691406,-0.32373499870300293,0.12699800729751587,-17.90999984741211,-1.345479965209961,-0.7646530270576477,-12.651100158691406,-0.5197439789772034,0.14705799520015717,-17.90999984741211,-0.32373499870300293,0.12699800729751587,-17.90999984741211,-0.8351809978485107,1.2684600353240967,-12.651100158691406,0.0022113299928605556,1.2669999599456787,-12.651100158691406,-0.28379198908805847,1.5959700345993042,-17.302400588989258,0.0022113299928605556,1.2669999599456787,-12.651100158691406,0.0027545099146664143,1.5782099962234497,-17.23740005493164,-0.28379198908805847,1.5959700345993042,-17.302400588989258,-0.28379198908805847,1.5959700345993042,-17.302400588989258,-0.5572760105133057,1.560979962348938,-17.489999771118164,-0.8351809978485107,1.2684600353240967,-12.651100158691406,-0.5572760105133057,1.560979962348938,-17.489999771118164,-1.3423000574111938,1.059340000152588,-12.651100158691406,-0.8351809978485107,1.2684600353240967,-12.651100158691406,-0.32255199551582336,0.8049100041389465,-20.13409996032715,0.0013654299546033144,0.7823320031166077,-20.16390037536621,-0.32373499870300293,0.12699800729751587,-17.90999984741211,0.0013654299546033144,0.7823320031166077,-20.16390037536621,0.00016379900625906885,0.09384970366954803,-17.90999984741211,-0.32373499870300293,0.12699800729751587,-17.90999984741211,-0.32373499870300293,0.12699800729751587,-17.90999984741211,-0.5197439789772034,0.14705799520015717,-17.90999984741211,-0.32255199551582336,0.8049100041389465,-20.13409996032715,-0.5197439789772034,0.14705799520015717,-17.90999984741211,-0.5185719728469849,0.818572998046875,-20.116100311279297,-0.32255199551582336,0.8049100041389465,-20.13409996032715,-0.28379198908805847,1.5959700345993042,-17.302400588989258,0.0027545099146664143,1.5782099962234497,-17.23740005493164,-0.2834720015525818,1.7788699865341187,-17.613000869750977,0.0027545099146664143,1.5782099962234497,-17.23740005493164,0.0030834900680929422,1.7667100429534912,-17.563800811767578,-0.2834720015525818,1.7788699865341187,-17.613000869750977,-0.2834720015525818,1.7788699865341187,-17.613000869750977,-0.4768829941749573,1.7862600088119507,-17.798500061035156,-0.28379198908805847,1.5959700345993042,-17.302400588989258,-0.4768829941749573,1.7862600088119507,-17.798500061035156,-0.5572760105133057,1.560979962348938,-17.489999771118164,-0.28379198908805847,1.5959700345993042,-17.302400588989258,-0.32094499468803406,1.7255500555038452,-20.525299072265625,0.003009180072695017,1.7241300344467163,-20.592599868774414,-0.32255199551582336,0.8049100041389465,-20.13409996032715,0.003009180072695017,1.7241300344467163,-20.592599868774414,0.0013654299546033144,0.7823320031166077,-20.16390037536621,-0.32255199551582336,0.8049100041389465,-20.13409996032715,-0.32255199551582336,0.8049100041389465,-20.13409996032715,-0.5185719728469849,0.818572998046875,-20.116100311279297,-0.32094499468803406,1.7255500555038452,-20.525299072265625,-0.5185719728469849,0.818572998046875,-20.116100311279297,-0.5169879794120789,1.7264100313186646,-20.484500885009766,-0.32094499468803406,1.7255500555038452,-20.525299072265625,-0.2834720015525818,1.7788699865341187,-17.613000869750977,0.0030834900680929422,1.7667100429534912,-17.563800811767578,-0.28318798542022705,1.9420100450515747,-17.68079948425293,0.0030834900680929422,1.7667100429534912,-17.563800811767578,0.0033877799287438393,1.941059947013855,-17.651399612426758,-0.28318798542022705,1.9420100450515747,-17.68079948425293,-0.28318798542022705,1.9420100450515747,-17.68079948425293,-0.4566099941730499,1.942579984664917,-17.85420036315918,-0.2834720015525818,1.7788699865341187,-17.613000869750977,-0.4566099941730499,1.942579984664917,-17.85420036315918,-0.4768829941749573,1.7862600088119507,-17.798500061035156,-0.2834720015525818,1.7788699865341187,-17.613000869750977,-0.28318798542022705,1.9420100450515747,-17.68079948425293,0.0033877799287438393,1.941059947013855,-17.651399612426758,-0.03578680008649826,5.317800045013428,-18.661800384521484,0.0033877799287438393,1.941059947013855,-17.651399612426758,0.009280390106141567,5.317269802093506,-18.637500762939453,-0.03578680008649826,5.317800045013428,-18.661800384521484,-0.03578680008649826,5.317800045013428,-18.661800384521484,-0.06305939704179764,5.318120002746582,-18.685199737548828,-0.28318798542022705,1.9420100450515747,-17.68079948425293,-0.06305939704179764,5.318120002746582,-18.685199737548828,-0.4566099941730499,1.942579984664917,-17.85420036315918,-0.28318798542022705,1.9420100450515747,-17.68079948425293,-2.6117100715637207,0.8891860246658325,-4.404439926147461,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-2.1868999004364014,0.6095799803733826,-6.675000190734863,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-2.0385499000549316,1.2135599851608276,-6.675000190734863,-2.1868999004364014,0.6095799803733826,-6.675000190734863,-2.1868999004364014,0.6095799803733826,-6.675000190734863,-2.3601698875427246,-0.0958809033036232,-6.675000190734863,-2.6117100715637207,0.8891860246658325,-4.404439926147461,-2.3601698875427246,-0.0958809033036232,-6.675000190734863,-2.899209976196289,0.005060229916125536,-4.404439926147461,-2.6117100715637207,0.8891860246658325,-4.404439926147461,-2.650830030441284,-0.4745529890060425,9.308500289916992,-2.399780035018921,0.12785400450229645,9.1316499710083,-2.8931000232696533,0.9920399785041809,2.923190116882324,-2.399780035018921,0.12785400450229645,9.1316499710083,-2.6468000411987305,1.8366199731826782,2.923190116882324,-2.8931000232696533,0.9920399785041809,2.923190116882324,-2.8931000232696533,0.9920399785041809,2.923190116882324,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-2.650830030441284,-0.4745529890060425,9.308500289916992,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-2.462049961090088,-1.1720399856567383,9.165340423583984,-2.650830030441284,-0.4745529890060425,9.308500289916992,-13.567399978637695,1.9526599645614624,3.1718199253082275,-13.593199729919434,2.2857298851013184,3.1718199253082275,-25.308900833129883,2.6978800296783447,3.8868799209594727,-13.593199729919434,2.2857298851013184,3.1718199253082275,-25.16510009765625,2.8039300441741943,3.8868799209594727,-25.308900833129883,2.6978800296783447,3.8868799209594727,-25.308900833129883,2.6978800296783447,3.8868799209594727,-25.476699829101562,2.5740199089050293,3.8868799209594727,-13.567399978637695,1.9526599645614624,3.1718199253082275,-25.476699829101562,2.5740199089050293,3.8868799209594727,-13.537300109863281,1.5636299848556519,3.1718199253082275,-13.567399978637695,1.9526599645614624,3.1718199253082275,-25.308900833129883,2.6978800296783447,1.8818700313568115,-25.16510009765625,2.8039300441741943,1.8818700313568115,-13.567399978637695,1.9526599645614624,-1.203070044517517,-25.16510009765625,2.8039300441741943,1.8818700313568115,-13.593199729919434,2.2857298851013184,-1.203070044517517,-13.567399978637695,1.9526599645614624,-1.203070044517517,-13.567399978637695,1.9526599645614624,-1.203070044517517,-13.537300109863281,1.5636299848556519,-1.203070044517517,-25.308900833129883,2.6978800296783447,1.8818700313568115,-13.537300109863281,1.5636299848556519,-1.203070044517517,-25.476699829101562,2.5740199089050293,1.8818700313568115,-25.308900833129883,2.6978800296783447,1.8818700313568115,-25.308900833129883,2.6978800296783447,3.8868799209594727,-25.16510009765625,2.8039300441741943,3.8868799209594727,-25.574399948120117,5.28617000579834,3.8868799209594727,-25.16510009765625,2.8039300441741943,3.8868799209594727,-25.50079917907715,5.284510135650635,3.8868799209594727,-25.574399948120117,5.28617000579834,3.8868799209594727,-25.574399948120117,5.28617000579834,3.8868799209594727,-25.660400390625,5.288099765777588,3.8868799209594727,-25.308900833129883,2.6978800296783447,3.8868799209594727,-25.660400390625,5.288099765777588,3.8868799209594727,-25.476699829101562,2.5740199089050293,3.8868799209594727,-25.308900833129883,2.6978800296783447,3.8868799209594727,-25.574399948120117,5.28617000579834,1.8818700313568115,-25.50079917907715,5.284510135650635,1.8818700313568115,-25.308900833129883,2.6978800296783447,1.8818700313568115,-25.50079917907715,5.284510135650635,1.8818700313568115,-25.16510009765625,2.8039300441741943,1.8818700313568115,-25.308900833129883,2.6978800296783447,1.8818700313568115,-25.308900833129883,2.6978800296783447,1.8818700313568115,-25.476699829101562,2.5740199089050293,1.8818700313568115,-25.574399948120117,5.28617000579834,1.8818700313568115,-25.476699829101562,2.5740199089050293,1.8818700313568115,-25.660400390625,5.288099765777588,1.8818700313568115,-25.574399948120117,5.28617000579834,1.8818700313568115,-25.574399948120117,5.28617000579834,3.8868799209594727,-25.50079917907715,5.284510135650635,3.8868799209594727,-25.574399948120117,5.28617000579834,1.8818700313568115,-25.50079917907715,5.284510135650635,3.8868799209594727,-25.50079917907715,5.284510135650635,1.8818700313568115,-25.574399948120117,5.28617000579834,1.8818700313568115,-25.574399948120117,5.28617000579834,1.8818700313568115,-25.660400390625,5.288099765777588,1.8818700313568115,-25.574399948120117,5.28617000579834,3.8868799209594727,-25.660400390625,5.288099765777588,1.8818700313568115,-25.660400390625,5.288099765777588,3.8868799209594727,-25.574399948120117,5.28617000579834,3.8868799209594727,-2.1868999004364014,0.6095799803733826,-6.675000190734863,-2.0385499000549316,1.2135599851608276,-6.675000190734863,-1.470080018043518,0.7473000288009644,-12.651100158691406,-2.0385499000549316,1.2135599851608276,-6.675000190734863,-1.3423000574111938,1.059340000152588,-12.651100158691406,-1.470080018043518,0.7473000288009644,-12.651100158691406,-1.470080018043518,0.7473000288009644,-12.651100158691406,-1.6193300485610962,0.3828270137310028,-12.651100158691406,-2.1868999004364014,0.6095799803733826,-6.675000190734863,-1.6193300485610962,0.3828270137310028,-12.651100158691406,-2.3601698875427246,-0.0958809033036232,-6.675000190734863,-2.1868999004364014,0.6095799803733826,-6.675000190734863,-1.470080018043518,0.7473000288009644,-12.651100158691406,-1.3423000574111938,1.059340000152588,-12.651100158691406,-0.6465979814529419,1.200569987297058,-17.604299545288086,-1.3423000574111938,1.059340000152588,-12.651100158691406,-0.5572760105133057,1.560979962348938,-17.489999771118164,-0.6465979814529419,1.200569987297058,-17.604299545288086,-0.6465979814529419,1.200569987297058,-17.604299545288086,-0.7506830096244812,0.9197720289230347,-17.72920036315918,-1.470080018043518,0.7473000288009644,-12.651100158691406,-0.7506830096244812,0.9197720289230347,-17.72920036315918,-1.6193300485610962,0.3828270137310028,-12.651100158691406,-1.470080018043518,0.7473000288009644,-12.651100158691406,-3.143970012664795,1.272860050201416,-4.226840019226074,-2.9881200790405273,1.8610700368881226,-4.226840019226074,-2.6117100715637207,0.8891860246658325,-4.404439926147461,-2.9881200790405273,1.8610700368881226,-4.226840019226074,-2.3655600547790527,1.6461299657821655,-4.404439926147461,-2.6117100715637207,0.8891860246658325,-4.404439926147461,-2.6117100715637207,0.8891860246658325,-4.404439926147461,-2.899209976196289,0.005060229916125536,-4.404439926147461,-3.143970012664795,1.272860050201416,-4.226840019226074,-2.899209976196289,0.005060229916125536,-4.404439926147461,-3.32600998878479,0.5858060121536255,-4.226840019226074,-3.143970012664795,1.272860050201416,-4.226840019226074,-2.8931000232696533,0.9920399785041809,2.923190116882324,-2.6468000411987305,1.8366199731826782,2.923190116882324,-3.4099199771881104,1.273319959640503,2.9369800090789795,-2.6468000411987305,1.8366199731826782,2.923190116882324,-3.2540600299835205,1.8615399599075317,2.9369800090789795,-3.4099199771881104,1.273319959640503,2.9369800090789795,-3.4099199771881104,1.273319959640503,2.9369800090789795,-3.5919599533081055,0.5862699747085571,2.9369800090789795,-2.8931000232696533,0.9920399785041809,2.923190116882324,-3.5919599533081055,0.5862699747085571,2.9369800090789795,-3.1807799339294434,0.0055516501888632774,2.923190116882324,-2.8931000232696533,0.9920399785041809,2.923190116882324,-4.317890167236328,1.394860029220581,-3.8439300060272217,-4.3310699462890625,1.9148499965667725,-3.8439300060272217,-3.143970012664795,1.272860050201416,-4.226840019226074,-4.3310699462890625,1.9148499965667725,-3.8439300060272217,-2.9881200790405273,1.8610700368881226,-4.226840019226074,-3.143970012664795,1.272860050201416,-4.226840019226074,-3.143970012664795,1.272860050201416,-4.226840019226074,-3.32600998878479,0.5858060121536255,-4.226840019226074,-4.317890167236328,1.394860029220581,-3.8439300060272217,-3.32600998878479,0.5858060121536255,-4.226840019226074,-4.302499771118164,0.7875109910964966,-3.8439300060272217,-4.317890167236328,1.394860029220581,-3.8439300060272217,-13.567399978637695,1.9526599645614624,-1.203070044517517,-13.593199729919434,2.2857298851013184,-1.203070044517517,-4.317890167236328,1.394860029220581,-3.8439300060272217,-13.593199729919434,2.2857298851013184,-1.203070044517517,-4.3310699462890625,1.9148499965667725,-3.8439300060272217,-4.317890167236328,1.394860029220581,-3.8439300060272217,-4.317890167236328,1.394860029220581,-3.8439300060272217,-4.302499771118164,0.7875109910964966,-3.8439300060272217,-13.567399978637695,1.9526599645614624,-1.203070044517517,-4.302499771118164,0.7875109910964966,-3.8439300060272217,-13.537300109863281,1.5636299848556519,-1.203070044517517,-13.567399978637695,1.9526599645614624,-1.203070044517517,-3.4099199771881104,1.273319959640503,2.9369800090789795,-3.2540600299835205,1.8615399599075317,2.9369800090789795,-4.550159931182861,1.3952699899673462,2.9667201042175293,-3.2540600299835205,1.8615399599075317,2.9369800090789795,-4.563330173492432,1.9152499437332153,2.9667201042175293,-4.550159931182861,1.3952699899673462,2.9667201042175293,-4.550159931182861,1.3952699899673462,2.9667201042175293,-4.5347700119018555,0.7879160046577454,2.9667201042175293,-3.4099199771881104,1.273319959640503,2.9369800090789795,-4.5347700119018555,0.7879160046577454,2.9667201042175293,-3.5919599533081055,0.5862699747085571,2.9369800090789795,-3.4099199771881104,1.273319959640503,2.9369800090789795,-4.550159931182861,1.3952699899673462,2.9667201042175293,-4.563330173492432,1.9152499437332153,2.9667201042175293,-13.567399978637695,1.9526599645614624,3.1718199253082275,-4.563330173492432,1.9152499437332153,2.9667201042175293,-13.593199729919434,2.2857298851013184,3.1718199253082275,-13.567399978637695,1.9526599645614624,3.1718199253082275,-13.567399978637695,1.9526599645614624,3.1718199253082275,-13.537300109863281,1.5636299848556519,3.1718199253082275,-4.550159931182861,1.3952699899673462,2.9667201042175293,-13.537300109863281,1.5636299848556519,3.1718199253082275,-4.5347700119018555,0.7879160046577454,2.9667201042175293,-4.550159931182861,1.3952699899673462,2.9667201042175293,-0.6465979814529419,1.200569987297058,-17.604299545288086,-0.5572760105133057,1.560979962348938,-17.489999771118164,-0.5921229720115662,1.5444200038909912,-18.116600036621094,-0.5572760105133057,1.560979962348938,-17.489999771118164,-0.4768829941749573,1.7862600088119507,-17.798500061035156,-0.5921229720115662,1.5444200038909912,-18.116600036621094,-0.5921229720115662,1.5444200038909912,-18.116600036621094,-0.7500860095024109,1.2619800567626953,-18.488300323486328,-0.6465979814529419,1.200569987297058,-17.604299545288086,-0.7500860095024109,1.2619800567626953,-18.488300323486328,-0.7506830096244812,0.9197720289230347,-17.72920036315918,-0.6465979814529419,1.200569987297058,-17.604299545288086,-0.5921229720115662,1.5444200038909912,-18.116600036621094,-0.4768829941749573,1.7862600088119507,-17.798500061035156,-0.591588020324707,1.8510099649429321,-18.43939971923828,-0.4768829941749573,1.7862600088119507,-17.798500061035156,-0.4566099941730499,1.942579984664917,-17.85420036315918,-0.591588020324707,1.8510099649429321,-18.43939971923828,-0.591588020324707,1.8510099649429321,-18.43939971923828,-0.7492449879646301,1.7440500259399414,-19.12299919128418,-0.5921229720115662,1.5444200038909912,-18.116600036621094,-0.7492449879646301,1.7440500259399414,-19.12299919128418,-0.7500860095024109,1.2619800567626953,-18.488300323486328,-0.5921229720115662,1.5444200038909912,-18.116600036621094,-0.591588020324707,1.8510099649429321,-18.43939971923828,-0.4566099941730499,1.942579984664917,-17.85420036315918,-0.13080699741840363,5.510049819946289,-19.1835994720459,-0.4566099941730499,1.942579984664917,-17.85420036315918,-0.06305939704179764,5.318120002746582,-18.685199737548828,-0.13080699741840363,5.510049819946289,-19.1835994720459,-0.13080699741840363,5.510049819946289,-19.1835994720459,-0.210439994931221,5.446750164031982,-20.027099609375,-0.591588020324707,1.8510099649429321,-18.43939971923828,-0.210439994931221,5.446750164031982,-20.027099609375,-0.7492449879646301,1.7440500259399414,-19.12299919128418,-0.591588020324707,1.8510099649429321,-18.43939971923828,0.000002239800096504041,0.0012833100045099854,10.308300018310547,0.0012851499486714602,0.7363330125808716,9.901650428771973,-1.6512500047683716,-0.17935800552368164,9.82863998413086,0.0012851499486714602,0.7363330125808716,9.901650428771973,-1.6501100063323975,0.47110500931739807,9.421950340270996,-1.6512500047683716,-0.17935800552368164,9.82863998413086,-1.6512500047683716,-0.17935800552368164,9.82863998413086,-1.652609944343567,-0.9626979827880859,9.455639839172363,0.000002239800096504041,0.0012833100045099854,10.308300018310547,-1.652609944343567,-0.9626979827880859,9.455639839172363,-0.001379749970510602,-0.7905399799346924,9.93533992767334,0.000002239800096504041,0.0012833100045099854,10.308300018310547,-1.6512500047683716,-0.17935800552368164,9.82863998413086,-1.6501100063323975,0.47110500931739807,9.421950340270996,-2.650830030441284,-0.4745529890060425,9.308500289916992,-1.6501100063323975,0.47110500931739807,9.421950340270996,-2.399780035018921,0.12785400450229645,9.1316499710083,-2.650830030441284,-0.4745529890060425,9.308500289916992,-2.650830030441284,-0.4745529890060425,9.308500289916992,-2.462049961090088,-1.1720399856567383,9.165340423583984,-1.6512500047683716,-0.17935800552368164,9.82863998413086,-2.462049961090088,-1.1720399856567383,9.165340423583984,-1.652609944343567,-0.9626979827880859,9.455639839172363,-1.6512500047683716,-0.17935800552368164,9.82863998413086,-0.06305939704179764,5.318120002746582,-18.685199737548828,-0.03560350090265274,5.422800064086914,-18.7268009185791,-0.13080699741840363,5.510049819946289,-19.1835994720459,-0.03560350090265274,5.422800064086914,-18.7268009185791,-0.05562429875135422,5.614920139312744,-19.1835994720459,-0.13080699741840363,5.510049819946289,-19.1835994720459,-0.13080699741840363,5.510049819946289,-19.1835994720459,-0.05562429875135422,5.614920139312744,-19.1835994720459,-0.210439994931221,5.446750164031982,-20.027099609375,-0.05562429875135422,5.614920139312744,-19.1835994720459,-0.07034189999103546,5.533750057220459,-20.032899856567383,-0.210439994931221,5.446750164031982,-20.027099609375,-0.05562429875135422,5.614920139312744,-19.1835994720459,0.00979968998581171,5.614799976348877,-19.1835994720459,-0.07034189999103546,5.533750057220459,-20.032899856567383,0.00979968998581171,5.614799976348877,-19.1835994720459,0.00965799018740654,5.5336198806762695,-20.032899856567383,-0.07034189999103546,5.533750057220459,-20.032899856567383,-0.07034189999103546,5.533750057220459,-20.032899856567383,0.00965799018740654,5.5336198806762695,-20.032899856567383,-0.054812200367450714,5.232600212097168,-20.86669921875,0.00965799018740654,5.5336198806762695,-20.032899856567383,0.009130929596722126,5.231629848480225,-20.934099197387695,-0.054812200367450714,5.232600212097168,-20.86669921875,-0.03560350090265274,5.422800064086914,-18.7268009185791,0.009463650174438953,5.422269821166992,-18.762500762939453,-0.05562429875135422,5.614920139312744,-19.1835994720459,0.009463650174438953,5.422269821166992,-18.762500762939453,0.00979968998581171,5.614799976348877,-19.1835994720459,-0.05562429875135422,5.614920139312744,-19.1835994720459,-0.7492449879646301,1.7440500259399414,-19.12299919128418,-0.210439994931221,5.446750164031982,-20.027099609375,-0.5169879794120789,1.7264100313186646,-20.484500885009766,-0.210439994931221,5.446750164031982,-20.027099609375,-0.0936909019947052,5.128180027008057,-20.825899124145508,-0.5169879794120789,1.7264100313186646,-20.484500885009766,0.003009180072695017,1.7241300344467163,-20.592599868774414,-0.32094499468803406,1.7255500555038452,-20.525299072265625,0.008962290361523628,5.135009765625,-20.91860008239746,-0.32094499468803406,1.7255500555038452,-20.525299072265625,-0.06105069816112518,5.127620220184326,-20.848100662231445,0.008962290361523628,5.135009765625,-20.91860008239746,-0.06105069816112518,5.127620220184326,-20.848100662231445,-0.054812200367450714,5.232600212097168,-20.86669921875,0.008962290361523628,5.135009765625,-20.91860008239746,-0.054812200367450714,5.232600212097168,-20.86669921875,0.009130929596722126,5.231629848480225,-20.934099197387695,0.008962290361523628,5.135009765625,-20.91860008239746,-0.5169879794120789,1.7264100313186646,-20.484500885009766,-0.0936909019947052,5.128180027008057,-20.825899124145508,-0.32094499468803406,1.7255500555038452,-20.525299072265625,-0.0936909019947052,5.128180027008057,-20.825899124145508,-0.06105069816112518,5.127620220184326,-20.848100662231445,-0.32094499468803406,1.7255500555038452,-20.525299072265625,-0.06105069816112518,5.127620220184326,-20.848100662231445,-0.0936909019947052,5.128180027008057,-20.825899124145508,-0.054812200367450714,5.232600212097168,-20.86669921875,-0.07034189999103546,5.533750057220459,-20.032899856567383,-0.054812200367450714,5.232600212097168,-20.86669921875,-0.210439994931221,5.446750164031982,-20.027099609375,-0.054812200367450714,5.232600212097168,-20.86669921875,-0.0936909019947052,5.128180027008057,-20.825899124145508,-0.210439994931221,5.446750164031982,-20.027099609375,0.009280390106141567,5.317269802093506,-18.637500762939453,0.009362169541418552,5.364120006561279,-18.673999786376953,-0.03578680008649826,5.317800045013428,-18.661800384521484,0.009362169541418552,5.364120006561279,-18.673999786376953,-0.06305939704179764,5.318120002746582,-18.685199737548828,-0.03578680008649826,5.317800045013428,-18.661800384521484,0.009362169541418552,5.364120006561279,-18.673999786376953,0.009463650174438953,5.422269821166992,-18.762500762939453,-0.06305939704179764,5.318120002746582,-18.685199737548828,0.009463650174438953,5.422269821166992,-18.762500762939453,-0.03560350090265274,5.422800064086914,-18.7268009185791,-0.06305939704179764,5.318120002746582,-18.685199737548828],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.9395970106124878,-0.3382270038127899,-0.05253919959068298,0.9766929745674133,-0.17253200709819794,-0.12768900394439697,0.9579839706420898,-0.27230098843574524,-0.09010419994592667,0.9766929745674133,-0.17253200709819794,-0.12768900394439697,0.9870949983596802,0.06705249845981598,-0.1454239934682846,0.9579839706420898,-0.27230098843574524,-0.09010419994592667,0.7381070256233215,-0.6719139814376831,0.06107340008020401,0.8301600217819214,-0.5507569909095764,-0.08661250025033951,0.7637370228767395,-0.6448360085487366,0.029873700812458992,0.8301600217819214,-0.5507569909095764,-0.08661250025033951,0.9035760164260864,-0.4260149896144867,-0.04540549963712692,0.7637370228767395,-0.6448360085487366,0.029873700812458992,0.26436400413513184,-0.9460170269012451,0.18751999735832214,0.5654600262641907,-0.8224490284919739,0.06191229820251465,0.20560500025749207,-0.9510369896888733,0.230772003531456,0.5654600262641907,-0.8224490284919739,0.06191229820251465,0.7637370228767395,-0.6448360085487366,0.029873700812458992,0.20560500025749207,-0.9510369896888733,0.230772003531456,0.08164039999246597,-0.9966610074043274,-0.0014353200094774365,0.08084619790315628,-0.9967269897460938,0,0.08164039999246597,-0.9966610074043274,-0.0014353200094774365,0.08084619790315628,-0.9967269897460938,0,0.08084619790315628,-0.9967269897460938,0,0.08164039999246597,-0.9966610074043274,-0.0014353200094774365,-0.039073098450899124,0.999235987663269,0.0006589110125787556,-0.041248198598623276,0.9991490244865417,0,-0.039073098450899124,0.999235987663269,0.0006589110125787556,-0.041248198598623276,0.9991490244865417,0,-0.041248198598623276,0.9991490244865417,0,-0.039073098450899124,0.999235987663269,0.0006589110125787556,0.9974750280380249,-0.0710207000374794,0,0.9974750280380249,-0.0710207000374794,0,0.9974750280380249,-0.0710207000374794,0,0.9974750280380249,-0.0710207000374794,0,0.9974750280380249,-0.0710207000374794,0,0.9974750280380249,-0.0710207000374794,0,-0.9904940128326416,0.13755600154399872,0,-0.9904940128326416,0.13755600154399872,0,-0.9904940128326416,0.13755600154399872,0,-0.9904940128326416,0.13755600154399872,0,-0.9904940128326416,0.13755600154399872,0,-0.9904940128326416,0.13755600154399872,0,0.9870949983596802,0.06705249845981598,-0.1454239934682846,0.9766929745674133,-0.17253200709819794,-0.12768900394439697,0.9839950203895569,0.11078599840402603,-0.13956999778747559,0.9766929745674133,-0.17253200709819794,-0.12768900394439697,0.9727889895439148,-0.1681949943304062,-0.15934999287128448,0.9839950203895569,0.11078599840402603,-0.13956999778747559,0.9839950203895569,0.11078599840402603,-0.13956999778747559,0.9727889895439148,-0.1681949943304062,-0.15934999287128448,0.9951320290565491,0.06225559860467911,-0.07639600336551666,0.9727889895439148,-0.1681949943304062,-0.15934999287128448,0.9569069743156433,-0.24703900516033173,-0.152647003531456,0.9951320290565491,0.06225559860467911,-0.07639600336551666,0.807744026184082,-0.5887690186500549,-0.030024399980902672,0.807744026184082,-0.5887690186500549,-0.030024399980902672,0.9035760164260864,-0.4260149896144867,-0.04540549963712692,0.807744026184082,-0.5887690186500549,-0.030024399980902672,0.7637370228767395,-0.6448360085487366,0.029873700812458992,0.9035760164260864,-0.4260149896144867,-0.04540549963712692,-0.037536900490522385,0.9992939829826355,0.0013989399885758758,-0.037536900490522385,0.9992939829826355,0.0013989399885758758,0.09228380024433136,0.9933940172195435,0.06819920241832733,-0.037536900490522385,0.9992939829826355,0.0013989399885758758,0.13791200518608093,0.9876919984817505,-0.07379549741744995,0.09228380024433136,0.9933940172195435,0.06819920241832733,0.14221200346946716,-0.9898239970207214,-0.004908860195428133,0.14221200346946716,-0.9898239970207214,-0.004908860195428133,0.20147299766540527,-0.9794690012931824,-0.006929299794137478,0.14221200346946716,-0.9898239970207214,-0.004908860195428133,0.20147299766540527,-0.9794690012931824,-0.006929299794137478,0.20147299766540527,-0.9794690012931824,-0.006929299794137478,0.14221200346946716,-0.9898239970207214,-0.004908860195428133,0.14221200346946716,-0.9898239970207214,-0.004908860195428133,0.08164039999246597,-0.9966610074043274,-0.0014353200094774365,0.14221200346946716,-0.9898239970207214,-0.004908860195428133,0.08164039999246597,-0.9966610074043274,-0.0014353200094774365,0.08164039999246597,-0.9966610074043274,-0.0014353200094774365,-0.03721670061349869,0.9993060231208801,0.0013286999892443419,-0.03721670061349869,0.9993060231208801,0.0013286999892443419,-0.037536900490522385,0.9992939829826355,0.0013989399885758758,-0.03721670061349869,0.9993060231208801,0.0013286999892443419,-0.037536900490522385,0.9992939829826355,0.0013989399885758758,-0.037536900490522385,0.9992939829826355,0.0013989399885758758,-0.03721670061349869,0.9993060231208801,0.0013286999892443419,-0.03721670061349869,0.9993060231208801,0.0013286999892443419,-0.039073098450899124,0.999235987663269,0.0006589110125787556,-0.03721670061349869,0.9993060231208801,0.0013286999892443419,-0.039073098450899124,0.999235987663269,0.0006589110125787556,-0.039073098450899124,0.999235987663269,0.0006589110125787556,0.9951320290565491,0.06225559860467911,-0.07639600336551666,0.9569069743156433,-0.24703900516033173,-0.152647003531456,0.9989849925041199,0.036414798349142075,0.026506900787353516,0.9569069743156433,-0.24703900516033173,-0.152647003531456,0.9733949899673462,-0.20059600472450256,-0.1107420027256012,0.9989849925041199,0.036414798349142075,0.026506900787353516,0.9989849925041199,0.036414798349142075,0.026506900787353516,0.9733949899673462,-0.20059600472450256,-0.1107420027256012,0.9971519708633423,0.07541809976100922,0.00012982099724467844,0.9733949899673462,-0.20059600472450256,-0.1107420027256012,0.9903579950332642,-0.020109400153160095,-0.1370680034160614,0.9971519708633423,0.07541809976100922,0.00012982099724467844,0.24886099994182587,-0.9503700137138367,-0.1867240071296692,0.24321700632572174,-0.968504011631012,-0.053343601524829865,-0.0017188299680128694,-0.98478102684021,-0.1737920045852661,0.24321700632572174,-0.968504011631012,-0.053343601524829865,0.056984301656484604,-0.9974489808082581,-0.042985700070858,-0.0017188299680128694,-0.98478102684021,-0.1737920045852661,0.24321700632572174,-0.968504011631012,-0.053343601524829865,0.24886099994182587,-0.9503700137138367,-0.1867240071296692,0.6141809821128845,-0.788329005241394,-0.03632429987192154,0.24886099994182587,-0.9503700137138367,-0.1867240071296692,0.4834139943122864,-0.8550360202789307,-0.18768000602722168,0.6141809821128845,-0.788329005241394,-0.03632429987192154,0.24075700342655182,0.9643449783325195,-0.1098880022764206,0.15869200229644775,0.9803869724273682,-0.11686500161886215,0.2578589916229248,0.9599980115890503,-0.10914699733257294,0.15869200229644775,0.9803869724273682,-0.11686500161886215,0.0017356900498270988,0.9944769740104675,-0.10493899881839752,0.2578589916229248,0.9599980115890503,-0.10914699733257294,0.15869200229644775,0.9803869724273682,-0.11686500161886215,0.24075700342655182,0.9643449783325195,-0.1098880022764206,0.3120430111885071,0.941690981388092,-0.12589000165462494,0.24075700342655182,0.9643449783325195,-0.1098880022764206,0.13791200518608093,0.9876919984817505,-0.07379549741744995,0.3120430111885071,0.941690981388092,-0.12589000165462494,0.24321700632572174,-0.968504011631012,-0.053343601524829865,0.27353399991989136,-0.9598050117492676,0.06287190318107605,0.056984301656484604,-0.9974489808082581,-0.042985700070858,0.27353399991989136,-0.9598050117492676,0.06287190318107605,0.17162199318408966,-0.982990026473999,0.06538920104503632,0.056984301656484604,-0.9974489808082581,-0.042985700070858,0.27353399991989136,-0.9598050117492676,0.06287190318107605,0.24321700632572174,-0.968504011631012,-0.053343601524829865,0.4195539951324463,-0.9048519730567932,0.07223179936408997,0.24321700632572174,-0.968504011631012,-0.053343601524829865,0.42081499099731445,-0.9050390124320984,-0.061802200973033905,0.4195539951324463,-0.9048519730567932,0.07223179936408997,0.27353399991989136,-0.9598050117492676,0.06287190318107605,0.17773599922657013,-0.9587579965591431,0.221794992685318,0.17162199318408966,-0.982990026473999,0.06538920104503632,0.17773599922657013,-0.9587579965591431,0.221794992685318,0.22499699890613556,-0.9505119919776917,0.21424999833106995,0.17162199318408966,-0.982990026473999,0.06538920104503632,0.17773599922657013,-0.9587579965591431,0.221794992685318,0.27353399991989136,-0.9598050117492676,0.06287190318107605,0.26436400413513184,-0.9460170269012451,0.18751999735832214,0.27353399991989136,-0.9598050117492676,0.06287190318107605,0.4195539951324463,-0.9048519730567932,0.07223179936408997,0.26436400413513184,-0.9460170269012451,0.18751999735832214,0.2612740099430084,0.9600769877433777,0.09994029998779297,0.24075700342655182,0.9643449783325195,-0.1098880022764206,0.3634999990463257,0.9264870285987854,0.09740979969501495,0.24075700342655182,0.9643449783325195,-0.1098880022764206,0.2578589916229248,0.9599980115890503,-0.10914699733257294,0.3634999990463257,0.9264870285987854,0.09740979969501495,0.24075700342655182,0.9643449783325195,-0.1098880022764206,0.2612740099430084,0.9600769877433777,0.09994029998779297,0.13791200518608093,0.9876919984817505,-0.07379549741744995,0.2612740099430084,0.9600769877433777,0.09994029998779297,0.09228380024433136,0.9933940172195435,0.06819920241832733,0.13791200518608093,0.9876919984817505,-0.07379549741744995,0.16041900217533112,0.9628239870071411,0.21733899414539337,0.2612740099430084,0.9600769877433777,0.09994029998779297,0.21873700618743896,0.9518300294876099,0.21488100290298462,0.2612740099430084,0.9600769877433777,0.09994029998779297,0.3634999990463257,0.9264870285987854,0.09740979969501495,0.21873700618743896,0.9518300294876099,0.21488100290298462,0.2612740099430084,0.9600769877433777,0.09994029998779297,0.16041900217533112,0.9628239870071411,0.21733899414539337,0.09228380024433136,0.9933940172195435,0.06819920241832733,0.16041900217533112,0.9628239870071411,0.21733899414539337,0.10153599828481674,0.9704210162162781,0.2190299928188324,0.09228380024433136,0.9933940172195435,0.06819920241832733,0.17773599922657013,-0.9587579965591431,0.221794992685318,0.04874579980969429,-0.9408599734306335,0.3352710008621216,0.22499699890613556,-0.9505119919776917,0.21424999833106995,0.04874579980969429,-0.9408599734306335,0.3352710008621216,0.21987800300121307,-0.9203510284423828,0.32343000173568726,0.22499699890613556,-0.9505119919776917,0.21424999833106995,0.04874579980969429,-0.9408599734306335,0.3352710008621216,0.17773599922657013,-0.9587579965591431,0.221794992685318,0.20560500025749207,-0.9510369896888733,0.230772003531456,0.17773599922657013,-0.9587579965591431,0.221794992685318,0.26436400413513184,-0.9460170269012451,0.18751999735832214,0.20560500025749207,-0.9510369896888733,0.230772003531456,0.15212400257587433,-0.9661800265312195,-0.20821699500083923,0.24886099994182587,-0.9503700137138367,-0.1867240071296692,0.0476296991109848,-0.9776170253753662,-0.20493100583553314,0.24886099994182587,-0.9503700137138367,-0.1867240071296692,-0.0017188299680128694,-0.98478102684021,-0.1737920045852661,0.0476296991109848,-0.9776170253753662,-0.20493100583553314,0.24886099994182587,-0.9503700137138367,-0.1867240071296692,0.15212400257587433,-0.9661800265312195,-0.20821699500083923,0.4834139943122864,-0.8550360202789307,-0.18768000602722168,0.15212400257587433,-0.9661800265312195,-0.20821699500083923,0.25853198766708374,-0.9430800080299377,-0.20919300615787506,0.4834139943122864,-0.8550360202789307,-0.18768000602722168,0.15869200229644775,0.9803869724273682,-0.11686500161886215,0.13987499475479126,0.9900869727134705,0.012742700055241585,0.0017356900498270988,0.9944769740104675,-0.10493899881839752,0.13987499475479126,0.9900869727134705,0.012742700055241585,0.0017448000144213438,0.9997069835662842,0.02412310056388378,0.0017356900498270988,0.9944769740104675,-0.10493899881839752,0.13987499475479126,0.9900869727134705,0.012742700055241585,0.15869200229644775,0.9803869724273682,-0.11686500161886215,0.27621200680732727,0.9610959887504578,0.001036889967508614,0.15869200229644775,0.9803869724273682,-0.11686500161886215,0.3120430111885071,0.941690981388092,-0.12589000165462494,0.27621200680732727,0.9610959887504578,0.001036889967508614,0.0699198991060257,-0.9702839851379395,-0.23164799809455872,0.15212400257587433,-0.9661800265312195,-0.20821699500083923,0.0934273973107338,-0.9678390026092529,-0.23357999324798584,0.15212400257587433,-0.9661800265312195,-0.20821699500083923,0.0476296991109848,-0.9776170253753662,-0.20493100583553314,0.0934273973107338,-0.9678390026092529,-0.23357999324798584,0.15212400257587433,-0.9661800265312195,-0.20821699500083923,0.0699198991060257,-0.9702839851379395,-0.23164799809455872,0.25853198766708374,-0.9430800080299377,-0.20919300615787506,0.0699198991060257,-0.9702839851379395,-0.23164799809455872,0.04633890092372894,-0.9721850156784058,-0.22958199679851532,0.25853198766708374,-0.9430800080299377,-0.20919300615787506,0.13987499475479126,0.9900869727134705,0.012742700055241585,0.16819199919700623,0.944100022315979,0.2835260033607483,0.0017448000144213438,0.9997069835662842,0.02412310056388378,0.16819199919700623,0.944100022315979,0.2835260033607483,0.034074101597070694,0.9544540047645569,0.29640400409698486,0.0017448000144213438,0.9997069835662842,0.02412310056388378,0.16819199919700623,0.944100022315979,0.2835260033607483,0.13987499475479126,0.9900869727134705,0.012742700055241585,0.30028098821640015,0.9162120223045349,0.26530298590660095,0.13987499475479126,0.9900869727134705,0.012742700055241585,0.27621200680732727,0.9610959887504578,0.001036889967508614,0.30028098821640015,0.9162120223045349,0.26530298590660095,0.0919170007109642,-0.9525179862976074,-0.29027798771858215,0.0699198991060257,-0.9702839851379395,-0.23164799809455872,0.08972950279712677,-0.9527080059051514,-0.2903369963169098,0.0699198991060257,-0.9702839851379395,-0.23164799809455872,0.0934273973107338,-0.9678390026092529,-0.23357999324798584,0.08972950279712677,-0.9527080059051514,-0.2903369963169098,0.0699198991060257,-0.9702839851379395,-0.23164799809455872,0.0919170007109642,-0.9525179862976074,-0.29027798771858215,0.04633890092372894,-0.9721850156784058,-0.22958199679851532,0.0919170007109642,-0.9525179862976074,-0.29027798771858215,0.0941040962934494,-0.9523230195045471,-0.29021701216697693,0.04633890092372894,-0.9721850156784058,-0.22958199679851532,0.16819199919700623,0.944100022315979,0.2835260033607483,0.21974700689315796,0.7141950130462646,0.6645579934120178,0.034074101597070694,0.9544540047645569,0.29640400409698486,0.21974700689315796,0.7141950130462646,0.6645579934120178,0.10907699912786484,0.6534929871559143,0.7490320205688477,0.034074101597070694,0.9544540047645569,0.29640400409698486,0.35334599018096924,0.6256219744682312,0.6955170035362244,0.16819199919700623,0.944100022315979,0.2835260033607483,0.5742570161819458,0.5585569739341736,0.5985339879989624,0.16819199919700623,0.944100022315979,0.2835260033607483,0.30028098821640015,0.9162120223045349,0.26530298590660095,0.5742570161819458,0.5585569739341736,0.5985339879989624,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.14913800358772278,-0.3868829905986786,-0.9099889993667603,0.19777899980545044,-0.24163900315761566,-0.9499970078468323,0.14913800358772278,-0.3868829905986786,-0.9099889993667603,0.18829700350761414,-0.3843199908733368,-0.90379399061203,0.19777899980545044,-0.24163900315761566,-0.9499970078468323,0.14913800358772278,-0.3868829905986786,-0.9099889993667603,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.10974299907684326,-0.38883599638938904,-0.9147469997406006,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.1586730033159256,-0.23442399501800537,-0.9590979814529419,0.10974299907684326,-0.38883599638938904,-0.9147469997406006,0.35334599018096924,0.6256219744682312,0.6955170035362244,0.40477100014686584,0.31439200043678284,0.858672022819519,0.10907699912786484,0.6534929871559143,0.7490320205688477,0.40477100014686584,0.31439200043678284,0.858672022819519,0.12015599757432938,0.3322399854660034,0.935509979724884,0.10907699912786484,0.6534929871559143,0.7490320205688477,0.40477100014686584,0.31439200043678284,0.858672022819519,0.44175198674201965,0.5157960057258606,0.7340369820594788,0.8488919734954834,0.23550400137901306,0.4732019901275635,0.44175198674201965,0.5157960057258606,0.7340369820594788,0.7453699707984924,0.4589569866657257,0.48350998759269714,0.8488919734954834,0.23550400137901306,0.4732019901275635,0.40477100014686584,0.31439200043678284,0.858672022819519,0.38652101159095764,0.38413000106811523,0.8384780287742615,0.12015599757432938,0.3322399854660034,0.935509979724884,0.38652101159095764,0.38413000106811523,0.8384780287742615,0.24959099292755127,0.43669000267982483,0.8642950057983398,0.12015599757432938,0.3322399854660034,0.935509979724884,0.38652101159095764,0.38413000106811523,0.8384780287742615,0.40477100014686584,0.31439200043678284,0.858672022819519,0.7379209995269775,0.4375370144844055,0.513841986656189,0.40477100014686584,0.31439200043678284,0.858672022819519,0.8488919734954834,0.23550400137901306,0.4732019901275635,0.7379209995269775,0.4375370144844055,0.513841986656189,0.9414129853248596,0.26471900939941406,-0.20896300673484802,0.9454110264778137,0.2850539982318878,-0.15793099999427795,0.9305940270423889,0.2990249991416931,-0.21113699674606323,0.9454110264778137,0.2850539982318878,-0.15793099999427795,0.9501780271530151,0.26688700914382935,-0.16103999316692352,0.9305940270423889,0.2990249991416931,-0.21113699674606323,0.9454110264778137,0.2850539982318878,-0.15793099999427795,0.9414129853248596,0.26471900939941406,-0.20896300673484802,0.9870949983596802,0.06705249845981598,-0.1454239934682846,0.9414129853248596,0.26471900939941406,-0.20896300673484802,0.9853619933128357,-0.00514564011245966,-0.17039799690246582,0.9870949983596802,0.06705249845981598,-0.1454239934682846,0.9319940209388733,0.3437420129776001,0.1150130033493042,0.9319940209388733,0.3437420129776001,0.1150130033493042,0.9027190208435059,0.4103800058364868,0.12917600572109222,0.9319940209388733,0.3437420129776001,0.1150130033493042,0.9027190208435059,0.4103800058364868,0.12917600572109222,0.9027190208435059,0.4103800058364868,0.12917600572109222,0.9319940209388733,0.3437420129776001,0.1150130033493042,0.9319940209388733,0.3437420129776001,0.1150130033493042,0.9561449885368347,0.2752149999141693,0.1002189964056015,0.9319940209388733,0.3437420129776001,0.1150130033493042,0.9561449885368347,0.2752149999141693,0.1002189964056015,0.9561449885368347,0.2752149999141693,0.1002189964056015,-0.040724098682403564,-0.017016399651765823,0.9990260004997253,-0.02931929938495159,-0.017647599801421165,0.9994140267372131,-0.04192880168557167,0.0027993100229650736,0.9991170167922974,-0.02931929938495159,-0.017647599801421165,0.9994140267372131,-0.03054879978299141,0.002471629995852709,0.999530017375946,-0.04192880168557167,0.0027993100229650736,0.9991170167922974,-0.02931929938495159,-0.017647599801421165,0.9994140267372131,-0.040724098682403564,-0.017016399651765823,0.9990260004997253,-0.028077200055122375,-0.03777259960770607,0.9988920092582703,-0.040724098682403564,-0.017016399651765823,0.9990260004997253,-0.039502400904893875,-0.03683929890394211,0.9985399842262268,-0.028077200055122375,-0.03777259960770607,0.9988920092582703,0.12213200330734253,0.07176010310649872,-0.9899160265922546,0.2602919936180115,0.06362739950418472,-0.9634310007095337,0.11469200253486633,0.15429599583148956,-0.981344997882843,0.2602919936180115,0.06362739950418472,-0.9634310007095337,0.25384700298309326,0.14222900569438934,-0.9567300081253052,0.11469200253486633,0.15429599583148956,-0.981344997882843,0.2602919936180115,0.06362739950418472,-0.9634310007095337,0.12213200330734253,0.07176010310649872,-0.9899160265922546,0.2650519907474518,-0.014287300407886505,-0.9641280174255371,0.12213200330734253,0.07176010310649872,-0.9899160265922546,0.12865999341011047,-0.010410100221633911,-0.9916340112686157,0.2650519907474518,-0.014287300407886505,-0.9641280174255371,-0.02931929938495159,-0.017647599801421165,0.9994140267372131,0,0,1,-0.03054879978299141,0.002471629995852709,0.999530017375946,0,0,1,0,0,1,-0.03054879978299141,0.002471629995852709,0.999530017375946,0,0,1,-0.02931929938495159,-0.017647599801421165,0.9994140267372131,0,0,1,-0.02931929938495159,-0.017647599801421165,0.9994140267372131,-0.028077200055122375,-0.03777259960770607,0.9988920092582703,0,0,1,0,0,-1,0.12213200330734253,0.07176010310649872,-0.9899160265922546,0,0,-1,0.12213200330734253,0.07176010310649872,-0.9899160265922546,0.11469200253486633,0.15429599583148956,-0.981344997882843,0,0,-1,0.12213200330734253,0.07176010310649872,-0.9899160265922546,0,0,-1,0.12865999341011047,-0.010410100221633911,-0.9916340112686157,0,0,-1,0,0,-1,0.12865999341011047,-0.010410100221633911,-0.9916340112686157,-0.018977399915456772,0.9998199939727783,0,-0.018977399915456772,0.9998199939727783,0,-0.018978800624608994,0.9998199939727783,0,-0.018977399915456772,0.9998199939727783,0,-0.018978800624608994,0.9998199939727783,0,-0.018978800624608994,0.9998199939727783,0,-0.018977399915456772,0.9998199939727783,0,-0.018977399915456772,0.9998199939727783,0,-0.01897609978914261,0.9998199939727783,0,-0.018977399915456772,0.9998199939727783,0,-0.01897609978914261,0.9998199939727783,0,-0.01897609978914261,0.9998199939727783,0,0.9454110264778137,0.2850539982318878,-0.15793099999427795,0.9327769875526428,0.34265100955963135,-0.11187800019979477,0.9501780271530151,0.26688700914382935,-0.16103999316692352,0.9327769875526428,0.34265100955963135,-0.11187800019979477,0.9456809759140015,0.3042150139808655,-0.11463399976491928,0.9501780271530151,0.26688700914382935,-0.16103999316692352,0.9327769875526428,0.34265100955963135,-0.11187800019979477,0.9454110264778137,0.2850539982318878,-0.15793099999427795,0.9839950203895569,0.11078599840402603,-0.13956999778747559,0.9454110264778137,0.2850539982318878,-0.15793099999427795,0.9870949983596802,0.06705249845981598,-0.1454239934682846,0.9839950203895569,0.11078599840402603,-0.13956999778747559,0.9327769875526428,0.34265100955963135,-0.11187800019979477,0.9425340294837952,0.33383798599243164,-0.013508600182831287,0.9456809759140015,0.3042150139808655,-0.11463399976491928,0.9425340294837952,0.33383798599243164,-0.013508600182831287,0.9533529877662659,0.29978200793266296,-0.03533479943871498,0.9456809759140015,0.3042150139808655,-0.11463399976491928,0.9425340294837952,0.33383798599243164,-0.013508600182831287,0.9327769875526428,0.34265100955963135,-0.11187800019979477,0.9951320290565491,0.06225559860467911,-0.07639600336551666,0.9327769875526428,0.34265100955963135,-0.11187800019979477,0.9839950203895569,0.11078599840402603,-0.13956999778747559,0.9951320290565491,0.06225559860467911,-0.07639600336551666,0.28585100173950195,0.05602699890732765,-0.9566349983215332,0.26482900977134705,0.07700259983539581,-0.9612159729003906,0.29036301374435425,0.0307289008051157,-0.9564229846000671,0.26482900977134705,0.07700259983539581,-0.9612159729003906,0.2693359851837158,0.07035739719867706,-0.9604730010032654,0.29036301374435425,0.0307289008051157,-0.9564229846000671,0.26482900977134705,0.07700259983539581,-0.9612159729003906,0.28585100173950195,0.05602699890732765,-0.9566349983215332,0.2603040039539337,0.08364289999008179,-0.9618970155715942,0.28585100173950195,0.05602699890732765,-0.9566349983215332,0.28115299344062805,0.08126849681138992,-0.9562159776687622,0.2603040039539337,0.08364289999008179,-0.9618970155715942,-0.02319590002298355,-0.006366080138832331,0.9997109770774841,-0.024476900696754456,-0.004651839844882488,0.9996899962425232,-0.023050900548696518,-0.0066349199041724205,0.9997119903564453,-0.024476900696754456,-0.004651839844882488,0.9996899962425232,-0.02421339973807335,-0.006631869822740555,0.9996849894523621,-0.023050900548696518,-0.0066349199041724205,0.9997119903564453,-0.024476900696754456,-0.004651839844882488,0.9996899962425232,-0.02319590002298355,-0.006366080138832331,0.9997109770774841,-0.024740399792790413,-0.002671780064702034,0.9996899962425232,-0.02319590002298355,-0.006366080138832331,0.9997109770774841,-0.023341000080108643,-0.006097239907830954,0.9997090101242065,-0.024740399792790413,-0.002671780064702034,0.9996899962425232,0.2910670042037964,0.009926849976181984,-0.956650972366333,0.28585100173950195,0.05602699890732765,-0.9566349983215332,0.29325300455093384,-0.01563270017504692,-0.9559069871902466,0.28585100173950195,0.05602699890732765,-0.9566349983215332,0.29036301374435425,0.0307289008051157,-0.9564229846000671,0.29325300455093384,-0.01563270017504692,-0.9559069871902466,0.28585100173950195,0.05602699890732765,-0.9566349983215332,0.2910670042037964,0.009926849976181984,-0.956650972366333,0.28115299344062805,0.08126849681138992,-0.9562159776687622,0.2910670042037964,0.009926849976181984,-0.956650972366333,0.28868699073791504,0.03550190106034279,-0.9567649960517883,0.28115299344062805,0.08126849681138992,-0.9562159776687622,0.2602919936180115,0.06362739950418472,-0.9634310007095337,0.2910670042037964,0.009926849976181984,-0.956650972366333,0.25384700298309326,0.14222900569438934,-0.9567300081253052,0.2910670042037964,0.009926849976181984,-0.956650972366333,0.29325300455093384,-0.01563270017504692,-0.9559069871902466,0.25384700298309326,0.14222900569438934,-0.9567300081253052,0.2910670042037964,0.009926849976181984,-0.956650972366333,0.2602919936180115,0.06362739950418472,-0.9634310007095337,0.28868699073791504,0.03550190106034279,-0.9567649960517883,0.2602919936180115,0.06362739950418472,-0.9634310007095337,0.2650519907474518,-0.014287300407886505,-0.9641280174255371,0.28868699073791504,0.03550190106034279,-0.9567649960517883,-0.024476900696754456,-0.004651839844882488,0.9996899962425232,-0.024282999336719513,-0.0008425620035268366,0.9997050166130066,-0.02421339973807335,-0.006631869822740555,0.9996849894523621,-0.024282999336719513,-0.0008425620035268366,0.9997050166130066,-0.024074800312519073,-0.002986110048368573,0.999705970287323,-0.02421339973807335,-0.006631869822740555,0.9996849894523621,-0.024282999336719513,-0.0008425620035268366,0.9997050166130066,-0.024476900696754456,-0.004651839844882488,0.9996899962425232,-0.024491099640727043,0.001300979987718165,0.9996989965438843,-0.024476900696754456,-0.004651839844882488,0.9996899962425232,-0.024740399792790413,-0.002671780064702034,0.9996899962425232,-0.024491099640727043,0.001300979987718165,0.9996989965438843,-0.024282999336719513,-0.0008425620035268366,0.9997050166130066,-0.040724098682403564,-0.017016399651765823,0.9990260004997253,-0.024074800312519073,-0.002986110048368573,0.999705970287323,-0.040724098682403564,-0.017016399651765823,0.9990260004997253,-0.04192880168557167,0.0027993100229650736,0.9991170167922974,-0.024074800312519073,-0.002986110048368573,0.999705970287323,-0.040724098682403564,-0.017016399651765823,0.9990260004997253,-0.024282999336719513,-0.0008425620035268366,0.9997050166130066,-0.039502400904893875,-0.03683929890394211,0.9985399842262268,-0.024282999336719513,-0.0008425620035268366,0.9997050166130066,-0.024491099640727043,0.001300979987718165,0.9996989965438843,-0.039502400904893875,-0.03683929890394211,0.9985399842262268,0.9425340294837952,0.33383798599243164,-0.013508600182831287,0.9599909782409668,0.24174700677394867,0.14133700728416443,0.9533529877662659,0.29978200793266296,-0.03533479943871498,0.9599909782409668,0.24174700677394867,0.14133700728416443,0.9697449803352356,0.21225300431251526,0.12059400230646133,0.9533529877662659,0.29978200793266296,-0.03533479943871498,0.9599909782409668,0.24174700677394867,0.14133700728416443,0.9425340294837952,0.33383798599243164,-0.013508600182831287,0.9989849925041199,0.036414798349142075,0.026506900787353516,0.9425340294837952,0.33383798599243164,-0.013508600182831287,0.9951320290565491,0.06225559860467911,-0.07639600336551666,0.9989849925041199,0.036414798349142075,0.026506900787353516,0.9599909782409668,0.24174700677394867,0.14133700728416443,0.9706439971923828,0.17413200438022614,0.16591599583625793,0.9142550230026245,0.24635499715805054,0.3216310143470764,0.9706439971923828,0.17413200438022614,0.16591599583625793,0.8488919734954834,0.23550400137901306,0.4732019901275635,0.9142550230026245,0.24635499715805054,0.3216310143470764,0.9706439971923828,0.17413200438022614,0.16591599583625793,0.9599909782409668,0.24174700677394867,0.14133700728416443,0.9971519708633423,0.07541809976100922,0.00012982099724467844,0.9599909782409668,0.24174700677394867,0.14133700728416443,0.9989849925041199,0.036414798349142075,0.026506900787353516,0.9971519708633423,0.07541809976100922,0.00012982099724467844,0.9706439971923828,0.17413200438022614,0.16591599583625793,0.9397779703140259,0.3095639944076538,0.14487400650978088,0.8488919734954834,0.23550400137901306,0.4732019901275635,0.9397779703140259,0.3095639944076538,0.14487400650978088,0.7379209995269775,0.4375370144844055,0.513841986656189,0.8488919734954834,0.23550400137901306,0.4732019901275635,0.9397779703140259,0.3095639944076538,0.14487400650978088,0.9706439971923828,0.17413200438022614,0.16591599583625793,0.9594950079917908,0.2811320126056671,-0.018289700150489807,0.9706439971923828,0.17413200438022614,0.16591599583625793,0.9971519708633423,0.07541809976100922,0.00012982099724467844,0.9594950079917908,0.2811320126056671,-0.018289700150489807,0.29521599411964417,0.4621570110321045,0.8362169861793518,0.40801700949668884,0.4615049958229065,0.7877410054206848,0.29521599411964417,0.4621570110321045,0.8362169861793518,0.40801700949668884,0.4615049958229065,0.7877410054206848,0.40801700949668884,0.4615049958229065,0.7877410054206848,0.29521599411964417,0.4621570110321045,0.8362169861793518,0.29357901215553284,-0.3544760048389435,0.8877829909324646,0.20904399454593658,-0.42072099447250366,0.8827769756317139,0.29357901215553284,-0.3544760048389435,0.8877829909324646,0.20904399454593658,-0.42072099447250366,0.8827769756317139,0.20904399454593658,-0.42072099447250366,0.8827769756317139,0.29357901215553284,-0.3544760048389435,0.8877829909324646,0.40801700949668884,0.4615049958229065,0.7877410054206848,0.5146669745445251,0.4538959860801697,0.7273899912834167,0.40801700949668884,0.4615049958229065,0.7877410054206848,0.5146669745445251,0.4538959860801697,0.7273899912834167,0.5146669745445251,0.4538959860801697,0.7273899912834167,0.40801700949668884,0.4615049958229065,0.7877410054206848,0.3747209906578064,-0.28413400053977966,0.8825259804725647,0.29357901215553284,-0.3544760048389435,0.8877829909324646,0.3747209906578064,-0.28413400053977966,0.8825259804725647,0.29357901215553284,-0.3544760048389435,0.8877829909324646,0.29357901215553284,-0.3544760048389435,0.8877829909324646,0.3747209906578064,-0.28413400053977966,0.8825259804725647,0.7379209995269775,0.4375370144844055,0.513841986656189,0.9397779703140259,0.3095639944076538,0.14487400650978088,0.7489010095596313,0.5456399917602539,0.3760640025138855,0.9397779703140259,0.3095639944076538,0.14487400650978088,0.8737069964408875,0.4642159938812256,0.14539499580860138,0.7489010095596313,0.5456399917602539,0.3760640025138855,0.9397779703140259,0.3095639944076538,0.14487400650978088,0.8935869932174683,0.43856099247932434,-0.09573569893836975,0.8737069964408875,0.4642159938812256,0.14539499580860138,0.8935869932174683,0.43856099247932434,-0.09573569893836975,0.6864479780197144,0.7139639854431152,-0.1379999965429306,0.8737069964408875,0.4642159938812256,0.14539499580860138,-0.1509529948234558,0.9789339900016785,0.1374800056219101,0.1797730028629303,0.9500910043716431,-0.25496599078178406,-0.1509529948234558,0.9789339900016785,0.1374800056219101,0.1797730028629303,0.9500910043716431,-0.25496599078178406,0.0016988900024443865,0.975691020488739,-0.21914300322532654,-0.1509529948234558,0.9789339900016785,0.1374800056219101,0.1797730028629303,0.9500910043716431,-0.25496599078178406,0.2679480016231537,0.9044470191001892,-0.331932008266449,0.0016988900024443865,0.975691020488739,-0.21914300322532654,0.2679480016231537,0.9044470191001892,-0.331932008266449,0.001636979985050857,0.940542995929718,-0.33967098593711853,0.0016988900024443865,0.975691020488739,-0.21914300322532654,-0.29190900921821594,0.8863369822502136,0.3594380021095276,-0.1509529948234558,0.9789339900016785,0.1374800056219101,-0.29190900921821594,0.8863369822502136,0.3594380021095276,-0.1509529948234558,0.9789339900016785,0.1374800056219101,-0.1509529948234558,0.9789339900016785,0.1374800056219101,-0.29190900921821594,0.8863369822502136,0.3594380021095276,0.9971519708633423,0.07541809976100922,0.00012982099724467844,0.9903579950332642,-0.020109400153160095,-0.1370680034160614,0.9594950079917908,0.2811320126056671,-0.018289700150489807,0.9903579950332642,-0.020109400153160095,-0.1370680034160614,0.9807969927787781,0.09808730334043503,-0.16856999695301056,0.9594950079917908,0.2811320126056671,-0.018289700150489807,0.19777899980545044,-0.24163900315761566,-0.9499970078468323,0.4718709886074066,-0.09347130358219147,-0.8766989707946777,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.4718709886074066,-0.09347130358219147,-0.8766989707946777,0.4303869903087616,-0.09460219740867615,-0.8976730108261108,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.4303869903087616,-0.09460219740867615,-0.8976730108261108,0.4718709886074066,-0.09347130358219147,-0.8766989707946777,0.6336809992790222,-0.10028199851512909,-0.767067015171051,0.4718709886074066,-0.09347130358219147,-0.8766989707946777,0.7022460103034973,-0.08577480167150497,-0.7067490220069885,0.6336809992790222,-0.10028199851512909,-0.767067015171051,0.1586730033159256,-0.23442399501800537,-0.9590979814529419,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.3889220058917999,-0.09551019966602325,-0.9163060188293457,0.17829099297523499,-0.23808600008487701,-0.954738974571228,0.4303869903087616,-0.09460219740867615,-0.8976730108261108,0.3889220058917999,-0.09551019966602325,-0.9163060188293457,0.4303869903087616,-0.09460219740867615,-0.8976730108261108,0.6336809992790222,-0.10028199851512909,-0.767067015171051,0.3889220058917999,-0.09551019966602325,-0.9163060188293457,0.3656579852104187,0.9105949997901917,-0.19264300167560577,0.6864479780197144,0.7139639854431152,-0.1379999965429306,0.2679480016231537,0.9044470191001892,-0.331932008266449,0.6864479780197144,0.7139639854431152,-0.1379999965429306,0.5148900151252747,0.8029749989509583,-0.3001999855041504,0.2679480016231537,0.9044470191001892,-0.331932008266449,0.24959099292755127,0.43669000267982483,0.8642950057983398,0.38652101159095764,0.38413000106811523,0.8384780287742615,0.46391600370407104,0.6466240286827087,0.6055240035057068,0.38652101159095764,0.38413000106811523,0.8384780287742615,0.7379209995269775,0.4375370144844055,0.513841986656189,0.46391600370407104,0.6466240286827087,0.6055240035057068,0.46391600370407104,0.6466240286827087,0.6055240035057068,0.7379209995269775,0.4375370144844055,0.513841986656189,0.5272279977798462,0.709975004196167,0.4668689966201782,0.7379209995269775,0.4375370144844055,0.513841986656189,0.7489010095596313,0.5456399917602539,0.3760640025138855,0.5272279977798462,0.709975004196167,0.4668689966201782,-0.9407719969749451,-0.3349449932575226,-0.052539099007844925,-0.9589290022850037,-0.2689549922943115,-0.09010419994592667,-0.9772890210151672,-0.16912099719047546,-0.12768900394439697,-0.9589290022850037,-0.2689549922943115,-0.09010419994592667,-0.9868549704551697,0.07049760222434998,-0.14542299509048462,-0.9772890210151672,-0.16912099719047546,-0.12768900394439697,-0.740447998046875,-0.6693339943885803,0.06107340008020401,-0.765982985496521,-0.642166018486023,0.029873700812458992,-0.8320770263671875,-0.547855019569397,-0.08661250025033951,-0.765982985496521,-0.642166018486023,0.029873700812458992,-0.9050570130348206,-0.4228590130805969,-0.04540549963712692,-0.8320770263671875,-0.547855019569397,-0.08661250025033951,-0.26766499876976013,-0.9450880289077759,0.18751999735832214,-0.20892399549484253,-0.9503129720687866,0.230772003531456,-0.5683280229568481,-0.8204699754714966,0.06191229820251465,-0.20892399549484253,-0.9503129720687866,0.230772003531456,-0.765982985496521,-0.642166018486023,0.029873700812458992,-0.5683280229568481,-0.8204699754714966,0.06191229820251465,-0.08511889725923538,-0.9963700175285339,-0.0014353300211951137,-0.08511889725923538,-0.9963700175285339,-0.0014353300211951137,-0.0843248963356018,-0.9964380264282227,0,-0.08511889725923538,-0.9963700175285339,-0.0014353300211951137,-0.0843248963356018,-0.9964380264282227,0,-0.0843248963356018,-0.9964380264282227,0,0.04256080090999603,0.9990940093994141,0.0006589139811694622,0.04256080090999603,0.9990940093994141,0.0006589139811694622,0.04473559930920601,0.9989989995956421,0,0.04256080090999603,0.9990940093994141,0.0006589139811694622,0.04473559930920601,0.9989989995956421,0,0.04473559930920601,0.9989989995956421,0,-0.997717022895813,-0.0675387978553772,0,-0.997717022895813,-0.0675387978553772,0,-0.997717022895813,-0.0675387978553772,0,-0.997717022895813,-0.0675387978553772,0,-0.997717022895813,-0.0675387978553772,0,-0.997717022895813,-0.0675387978553772,0,0.9909679889678955,0.13409699499607086,0,0.9909679889678955,0.13409699499607086,0,0.9909679889678955,0.13409699499607086,0,0.9909679889678955,0.13409699499607086,0,0.9909679889678955,0.13409699499607086,0,0.9909679889678955,0.13409699499607086,0,-0.9868549704551697,0.07049760222434998,-0.14542299509048462,-0.9836030006408691,0.11422000080347061,-0.13956999778747559,-0.9772890210151672,-0.16912099719047546,-0.12768900394439697,-0.9836030006408691,0.11422000080347061,-0.13956999778747559,-0.9733700156211853,-0.16479800641536713,-0.15934999287128448,-0.9772890210151672,-0.16912099719047546,-0.12768900394439697,-0.9836030006408691,0.11422000080347061,-0.13956999778747559,-0.9949089884757996,0.0657287985086441,-0.07639600336551666,-0.9733700156211853,-0.16479800641536713,-0.15934999287128448,-0.9949089884757996,0.0657287985086441,-0.07639600336551666,-0.9577630162239075,-0.24369700253009796,-0.152647003531456,-0.9733700156211853,-0.16479800641536713,-0.15934999287128448,-0.809794008731842,-0.5859460234642029,-0.030024399980902672,-0.9050570130348206,-0.4228590130805969,-0.04540549963712692,-0.809794008731842,-0.5859460234642029,-0.030024399980902672,-0.9050570130348206,-0.4228590130805969,-0.04540549963712692,-0.765982985496521,-0.642166018486023,0.029873700812458992,-0.809794008731842,-0.5859460234642029,-0.030024399980902672,0.04102490097284317,0.9991570115089417,0.0013989299768581986,-0.0888155996799469,0.993710994720459,0.06819920241832733,0.04102490097284317,0.9991570115089417,0.0013989299768581986,-0.0888155996799469,0.993710994720459,0.06819920241832733,-0.13446299731731415,0.9881669878959656,-0.07379549741744995,0.04102490097284317,0.9991570115089417,0.0013989299768581986,-0.1456660032272339,-0.9893220067024231,-0.004908880218863487,-0.20489099621772766,-0.9787600040435791,-0.006929319817572832,-0.1456660032272339,-0.9893220067024231,-0.004908880218863487,-0.20489099621772766,-0.9787600040435791,-0.006929319817572832,-0.20489099621772766,-0.9787600040435791,-0.006929319817572832,-0.1456660032272339,-0.9893220067024231,-0.004908880218863487,-0.1456660032272339,-0.9893220067024231,-0.004908880218863487,-0.08511889725923538,-0.9963700175285339,-0.0014353300211951137,-0.1456660032272339,-0.9893220067024231,-0.004908880218863487,-0.08511889725923538,-0.9963700175285339,-0.0014353300211951137,-0.08511889725923538,-0.9963700175285339,-0.0014353300211951137,-0.1456660032272339,-0.9893220067024231,-0.004908880218863487,0.04070470109581947,0.9991700053215027,0.0013286999892443419,0.04102490097284317,0.9991570115089417,0.0013989299768581986,0.04070470109581947,0.9991700053215027,0.0013286999892443419,0.04102490097284317,0.9991570115089417,0.0013989299768581986,0.04102490097284317,0.9991570115089417,0.0013989299768581986,0.04070470109581947,0.9991700053215027,0.0013286999892443419,0.04070470109581947,0.9991700053215027,0.0013286999892443419,0.04256080090999603,0.9990940093994141,0.0006589139811694622,0.04070470109581947,0.9991700053215027,0.0013286999892443419,0.04256080090999603,0.9990940093994141,0.0006589139811694622,0.04256080090999603,0.9990940093994141,0.0006589139811694622,0.04070470109581947,0.9991700053215027,0.0013286999892443419,-0.9949089884757996,0.0657287985086441,-0.07639600336551666,-0.998852014541626,0.039901699870824814,0.026506900787353516,-0.9577630162239075,-0.24369700253009796,-0.152647003531456,-0.998852014541626,0.039901699870824814,0.026506900787353516,-0.9740890264511108,-0.19719700515270233,-0.1107420027256012,-0.9577630162239075,-0.24369700253009796,-0.152647003531456,-0.998852014541626,0.039901699870824814,0.026506900787353516,-0.996882975101471,0.07889830321073532,0.00012982499902136624,-0.9740890264511108,-0.19719700515270233,-0.1107420027256012,-0.996882975101471,0.07889830321073532,0.00012982499902136624,-0.9904220104217529,-0.016652299091219902,-0.1370680034160614,-0.9740890264511108,-0.19719700515270233,-0.1107420027256012,-0.25217700004577637,-0.9494950175285339,-0.1867240071296692,-0.0017187900375574827,-0.98478102684021,-0.1737920045852661,-0.24659599363803864,-0.967648983001709,-0.053343698382377625,-0.0017187900375574827,-0.98478102684021,-0.1737920045852661,-0.06046580150723457,-0.9972440004348755,-0.04298580065369606,-0.24659599363803864,-0.967648983001709,-0.053343698382377625,-0.24659599363803864,-0.967648983001709,-0.053343698382377625,-0.6169289946556091,-0.7861800193786621,-0.03632429987192154,-0.25217700004577637,-0.9494950175285339,-0.1867240071296692,-0.6169289946556091,-0.7861800193786621,-0.03632429987192154,-0.486395001411438,-0.8533440232276917,-0.18768000602722168,-0.25217700004577637,-0.9494950175285339,-0.1867240071296692,-0.2373889982700348,0.9651790261268616,-0.1098880022764206,-0.25450599193573,0.9608920216560364,-0.10914699733257294,-0.15526899695396423,0.9809349775314331,-0.11686500161886215,-0.25450599193573,0.9608920216560364,-0.10914699733257294,0.0017356500029563904,0.9944769740104675,-0.10493899881839752,-0.15526899695396423,0.9809349775314331,-0.11686500161886215,-0.15526899695396423,0.9809349775314331,-0.11686500161886215,-0.30875399708747864,0.9427739977836609,-0.12589000165462494,-0.2373889982700348,0.9651790261268616,-0.1098880022764206,-0.30875399708747864,0.9427739977836609,-0.12589000165462494,-0.13446299731731415,0.9881669878959656,-0.07379549741744995,-0.2373889982700348,0.9651790261268616,-0.1098880022764206,-0.24659599363803864,-0.967648983001709,-0.053343698382377625,-0.06046580150723457,-0.9972440004348755,-0.04298580065369606,-0.27688300609588623,-0.9588450193405151,0.06287190318107605,-0.06046580150723457,-0.9972440004348755,-0.04298580065369606,-0.17505300045013428,-0.982384979724884,0.06538920104503632,-0.27688300609588623,-0.9588450193405151,0.06287190318107605,-0.27688300609588623,-0.9588450193405151,0.06287190318107605,-0.42271000146865845,-0.9033820033073425,0.07223179936408997,-0.24659599363803864,-0.967648983001709,-0.053343698382377625,-0.42271000146865845,-0.9033820033073425,0.07223179936408997,-0.4239709973335266,-0.9035639762878418,-0.061802301555871964,-0.24659599363803864,-0.967648983001709,-0.053343698382377625,-0.27688300609588623,-0.9588450193405151,0.06287190318107605,-0.17505300045013428,-0.982384979724884,0.06538920104503632,-0.18108199536800385,-0.9581320285797119,0.221794992685318,-0.17505300045013428,-0.982384979724884,0.06538920104503632,-0.22831399738788605,-0.9497209787368774,0.21424999833106995,-0.18108199536800385,-0.9581320285797119,0.221794992685318,-0.18108199536800385,-0.9581320285797119,0.221794992685318,-0.26766499876976013,-0.9450880289077759,0.18751999735832214,-0.27688300609588623,-0.9588450193405151,0.06287190318107605,-0.26766499876976013,-0.9450880289077759,0.18751999735832214,-0.42271000146865845,-0.9033820033073425,0.07223179936408997,-0.27688300609588623,-0.9588450193405151,0.06287190318107605,-0.2579210102558136,0.9609829783439636,0.09994029998779297,-0.36026400327682495,0.9277510046958923,0.09740979969501495,-0.2373889982700348,0.9651790261268616,-0.1098880022764206,-0.36026400327682495,0.9277510046958923,0.09740979969501495,-0.25450599193573,0.9608920216560364,-0.10914699733257294,-0.2373889982700348,0.9651790261268616,-0.1098880022764206,-0.2373889982700348,0.9651790261268616,-0.1098880022764206,-0.13446299731731415,0.9881669878959656,-0.07379549741744995,-0.2579210102558136,0.9609829783439636,0.09994029998779297,-0.13446299731731415,0.9881669878959656,-0.07379549741744995,-0.0888155996799469,0.993710994720459,0.06819920241832733,-0.2579210102558136,0.9609829783439636,0.09994029998779297,-0.1570570021867752,0.9633780121803284,0.21733899414539337,-0.21541300415992737,0.9525880217552185,0.21488100290298462,-0.2579210102558136,0.9609829783439636,0.09994029998779297,-0.21541300415992737,0.9525880217552185,0.21488100290298462,-0.36026400327682495,0.9277510046958923,0.09740979969501495,-0.2579210102558136,0.9609829783439636,0.09994029998779297,-0.2579210102558136,0.9609829783439636,0.09994029998779297,-0.0888155996799469,0.993710994720459,0.06819920241832733,-0.1570570021867752,0.9633780121803284,0.21733899414539337,-0.0888155996799469,0.993710994720459,0.06819920241832733,-0.09814739972352982,0.9707689881324768,0.2190299928188324,-0.1570570021867752,0.9633780121803284,0.21733899414539337,-0.18108199536800385,-0.9581320285797119,0.221794992685318,-0.22831399738788605,-0.9497209787368774,0.21424999833106995,-0.052029799669981,-0.9406840205192566,0.3352710008621216,-0.22831399738788605,-0.9497209787368774,0.21424999833106995,-0.22308899462223053,-0.9195780158042908,0.32343000173568726,-0.052029799669981,-0.9406840205192566,0.3352710008621216,-0.052029799669981,-0.9406840205192566,0.3352710008621216,-0.20892399549484253,-0.9503129720687866,0.230772003531456,-0.18108199536800385,-0.9581320285797119,0.221794992685318,-0.20892399549484253,-0.9503129720687866,0.230772003531456,-0.26766499876976013,-0.9450880289077759,0.18751999735832214,-0.18108199536800385,-0.9581320285797119,0.221794992685318,-0.15549500286579132,-0.9656429886817932,-0.20821699500083923,-0.05104200169444084,-0.9774450063705444,-0.20493100583553314,-0.25217700004577637,-0.9494950175285339,-0.1867240071296692,-0.05104200169444084,-0.9774450063705444,-0.20493100583553314,-0.0017187900375574827,-0.98478102684021,-0.1737920045852661,-0.25217700004577637,-0.9494950175285339,-0.1867240071296692,-0.25217700004577637,-0.9494950175285339,-0.1867240071296692,-0.486395001411438,-0.8533440232276917,-0.18768000602722168,-0.15549500286579132,-0.9656429886817932,-0.20821699500083923,-0.486395001411438,-0.8533440232276917,-0.18768000602722168,-0.261821985244751,-0.9421719908714294,-0.20919300615787506,-0.15549500286579132,-0.9656429886817932,-0.20821699500083923,-0.15526899695396423,0.9809349775314331,-0.11686500161886215,0.0017356500029563904,0.9944769740104675,-0.10493899881839752,-0.13641799986362457,0.990568995475769,0.012742700055241585,0.0017356500029563904,0.9944769740104675,-0.10493899881839752,0.0017448000144213438,0.9997069835662842,0.02412310056388378,-0.13641799986362457,0.990568995475769,0.012742700055241585,-0.13641799986362457,0.990568995475769,0.012742700055241585,-0.2728550136089325,0.9620550274848938,0.0010368999792262912,-0.15526899695396423,0.9809349775314331,-0.11686500161886215,-0.2728550136089325,0.9620550274848938,0.0010368999792262912,-0.30875399708747864,0.9427739977836609,-0.12589000165462494,-0.15526899695396423,0.9809349775314331,-0.11686500161886215,-0.07330639660358429,-0.9700340032577515,-0.23164799809455872,-0.09680519998073578,-0.967507004737854,-0.23357999324798584,-0.15549500286579132,-0.9656429886817932,-0.20821699500083923,-0.09680519998073578,-0.967507004737854,-0.23357999324798584,-0.05104200169444084,-0.9774450063705444,-0.20493100583553314,-0.15549500286579132,-0.9656429886817932,-0.20821699500083923,-0.15549500286579132,-0.9656429886817932,-0.20821699500083923,-0.261821985244751,-0.9421719908714294,-0.20919300615787506,-0.07330639660358429,-0.9700340032577515,-0.23164799809455872,-0.261821985244751,-0.9421719908714294,-0.20919300615787506,-0.04973220080137253,-0.9720180034637451,-0.22958199679851532,-0.07330639660358429,-0.9700340032577515,-0.23164799809455872,-0.13641799986362457,0.990568995475769,0.012742700055241585,0.0017448000144213438,0.9997069835662842,0.02412310056388378,-0.16489599645137787,0.9446809887886047,0.2835260033607483,0.0017448000144213438,0.9997069835662842,0.02412310056388378,-0.030742300674319267,0.9545680284500122,0.29640400409698486,-0.16489599645137787,0.9446809887886047,0.2835260033607483,-0.16489599645137787,0.9446809887886047,0.2835260033607483,-0.29708099365234375,0.9172549843788147,0.26530298590660095,-0.13641799986362457,0.990568995475769,0.012742700055241585,-0.29708099365234375,0.9172549843788147,0.26530298590660095,-0.2728550136089325,0.9620550274848938,0.0010368999792262912,-0.13641799986362457,0.990568995475769,0.012742700055241585,-0.09524139761924744,-0.9521909952163696,-0.29027798771858215,-0.09305460005998611,-0.9523890018463135,-0.2903369963169098,-0.07330639660358429,-0.9700340032577515,-0.23164799809455872,-0.09305460005998611,-0.9523890018463135,-0.2903369963169098,-0.09680519998073578,-0.967507004737854,-0.23357999324798584,-0.07330639660358429,-0.9700340032577515,-0.23164799809455872,-0.07330639660358429,-0.9700340032577515,-0.23164799809455872,-0.04973220080137253,-0.9720180034637451,-0.22958199679851532,-0.09524139761924744,-0.9521909952163696,-0.29027798771858215,-0.04973220080137253,-0.9720180034637451,-0.22958199679851532,-0.09742770344018936,-0.9519879817962646,-0.29021701216697693,-0.09524139761924744,-0.9521909952163696,-0.29027798771858215,-0.16489599645137787,0.9446809887886047,0.2835260033607483,-0.030742300674319267,0.9545680284500122,0.29640400409698486,-0.21725299954414368,0.7149569988250732,0.6645579934120178,-0.030742300674319267,0.9545680284500122,0.29640400409698486,-0.10679499804973602,0.6538689732551575,0.7490320205688477,-0.21725299954414368,0.7149569988250732,0.6645579934120178,-0.3511599898338318,0.6268519759178162,0.6955170035362244,-0.5723040103912354,0.560558021068573,0.5985339879989624,-0.16489599645137787,0.9446809887886047,0.2835260033607483,-0.5723040103912354,0.560558021068573,0.5985339879989624,-0.29708099365234375,0.9172549843788147,0.26530298590660095,-0.16489599645137787,0.9446809887886047,0.2835260033607483,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.19862100481987,-0.24094699323177338,-0.9499970078468323,-0.1504870057106018,-0.3863599896430969,-0.9099889993667603,-0.19862100481987,-0.24094699323177338,-0.9499970078468323,-0.18963700532913208,-0.3836599886417389,-0.90379399061203,-0.1504870057106018,-0.3863599896430969,-0.9099889993667603,-0.1504870057106018,-0.3863599896430969,-0.9099889993667603,-0.11110000312328339,-0.3884510099887848,-0.9147469997406006,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.11110000312328339,-0.3884510099887848,-0.9147469997406006,-0.15949000418186188,-0.23386900126934052,-0.9590979814529419,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.3511599898338318,0.6268519759178162,0.6955170035362244,-0.10679499804973602,0.6538689732551575,0.7490320205688477,-0.403670996427536,0.31580299139022827,0.858672022819519,-0.10679499804973602,0.6538689732551575,0.7490320205688477,-0.11899500340223312,0.33265700936317444,0.935509979724884,-0.403670996427536,0.31580299139022827,0.858672022819519,-0.403670996427536,0.31580299139022827,0.858672022819519,-0.8480640053749084,0.23846599459648132,0.4732019901275635,-0.43994900584220886,0.517333984375,0.7340369820594788,-0.8480640053749084,0.23846599459648132,0.4732019901275635,-0.7437639832496643,0.46155598759651184,0.48350998759269714,-0.43994900584220886,0.517333984375,0.7340369820594788,-0.403670996427536,0.31580299139022827,0.858672022819519,-0.11899500340223312,0.33265700936317444,0.935509979724884,-0.38517799973487854,0.3854770064353943,0.8384780287742615,-0.11899500340223312,0.33265700936317444,0.935509979724884,-0.24806499481201172,0.43755799531936646,0.8642950057983398,-0.38517799973487854,0.3854770064353943,0.8384780287742615,-0.38517799973487854,0.3854770064353943,0.8384780287742615,-0.7363889813423157,0.4401099979877472,0.5138429999351501,-0.403670996427536,0.31580299139022827,0.858672022819519,-0.7363889813423157,0.4401099979877472,0.5138429999351501,-0.8480640053749084,0.23846599459648132,0.4732019901275635,-0.403670996427536,0.31580299139022827,0.858672022819519,-0.9404829740524292,0.268002986907959,-0.20896300673484802,-0.929544985294342,0.3022719919681549,-0.21113699674606323,-0.9444100260734558,0.28835201263427734,-0.15793099999427795,-0.929544985294342,0.3022719919681549,-0.21113699674606323,-0.9492400288581848,0.27020201086997986,-0.16103999316692352,-0.9444100260734558,0.28835201263427734,-0.15793099999427795,-0.9444100260734558,0.28835201263427734,-0.15793099999427795,-0.9868549704551697,0.07049760222434998,-0.14542299509048462,-0.9404829740524292,0.268002986907959,-0.20896300673484802,-0.9868549704551697,0.07049760222434998,-0.14542299509048462,-0.9853739738464355,-0.0017062299884855747,-0.17039799690246582,-0.9404829740524292,0.268002986907959,-0.20896300673484802,-0.9307889938354492,0.346994012594223,0.1150130033493042,-0.9012809991836548,0.4135279953479767,0.12917600572109222,-0.9307889938354492,0.346994012594223,0.1150130033493042,-0.9012809991836548,0.4135279953479767,0.12917600572109222,-0.9012809991836548,0.4135279953479767,0.12917600572109222,-0.9307889938354492,0.346994012594223,0.1150130033493042,-0.9307889938354492,0.346994012594223,0.1150130033493042,-0.9551780223846436,0.27855101227760315,0.1002189964056015,-0.9307889938354492,0.346994012594223,0.1150130033493042,-0.9551780223846436,0.27855101227760315,0.1002189964056015,-0.9551780223846436,0.27855101227760315,0.1002189964056015,-0.9307889938354492,0.346994012594223,0.1150130033493042,0.04066440090537071,-0.017158400267362595,0.9990260004997253,0.04193830117583275,0.00265300995670259,0.9991170167922974,0.029257500544190407,-0.01774979941546917,0.9994140267372131,0.04193830117583275,0.00265300995670259,0.9991170167922974,0.03055720031261444,0.002365059917792678,0.999530017375946,0.029257500544190407,-0.01774979941546917,0.9994140267372131,0.029257500544190407,-0.01774979941546917,0.9994140267372131,0.027945099398493767,-0.037870198488235474,0.9988920092582703,0.04066440090537071,-0.017158400267362595,0.9990260004997253,0.027945099398493767,-0.037870198488235474,0.9988920092582703,0.039373598992824554,-0.036976899951696396,0.9985399842262268,0.04066440090537071,-0.017158400267362595,0.9990260004997253,-0.12188100069761276,0.07218640297651291,-0.9899160265922546,-0.11415299773216248,0.1546970009803772,-0.981344997882843,-0.26006901264190674,0.06453579664230347,-0.9634310007095337,-0.11415299773216248,0.1546970009803772,-0.981344997882843,-0.2533490061759949,0.14311499893665314,-0.9567300081253052,-0.26006901264190674,0.06453579664230347,-0.9634310007095337,-0.26006901264190674,0.06453579664230347,-0.9634310007095337,-0.26510000228881836,-0.013361900113523006,-0.9641280174255371,-0.12188100069761276,0.07218640297651291,-0.9899160265922546,-0.26510000228881836,-0.013361900113523006,-0.9641280174255371,-0.1286959946155548,-0.009960849769413471,-0.9916340112686157,-0.12188100069761276,0.07218640297651291,-0.9899160265922546,0.029257500544190407,-0.01774979941546917,0.9994140267372131,0.03055720031261444,0.002365059917792678,0.999530017375946,0,0,1,0.03055720031261444,0.002365059917792678,0.999530017375946,0,0,1,0,0,1,0,0,1,0,0,1,0.029257500544190407,-0.01774979941546917,0.9994140267372131,0,0,1,0.027945099398493767,-0.037870198488235474,0.9988920092582703,0.029257500544190407,-0.01774979941546917,0.9994140267372131,0,0,-1,0,0,-1,-0.12188100069761276,0.07218640297651291,-0.9899160265922546,0,0,-1,-0.11415299773216248,0.1546970009803772,-0.981344997882843,-0.12188100069761276,0.07218640297651291,-0.9899160265922546,-0.12188100069761276,0.07218640297651291,-0.9899160265922546,-0.1286959946155548,-0.009960849769413471,-0.9916340112686157,0,0,-1,-0.1286959946155548,-0.009960849769413471,-0.9916340112686157,0,0,-1,0,0,-1,0.022468499839305878,0.9997479915618896,0,0.02246900089085102,0.9997479915618896,0,0.022468499839305878,0.9997479915618896,0,0.02246900089085102,0.9997479915618896,0,0.02246900089085102,0.9997479915618896,0,0.022468499839305878,0.9997479915618896,0,0.022468499839305878,0.9997479915618896,0,0.022468000650405884,0.9997479915618896,0,0.022468499839305878,0.9997479915618896,0,0.022468000650405884,0.9997479915618896,0,0.022468000650405884,0.9997479915618896,0,0.022468499839305878,0.9997479915618896,0,-0.9444100260734558,0.28835201263427734,-0.15793099999427795,-0.9492400288581848,0.27020201086997986,-0.16103999316692352,-0.9315760135650635,0.34590500593185425,-0.11187800019979477,-0.9492400288581848,0.27020201086997986,-0.16103999316692352,-0.944612979888916,0.3075149953365326,-0.11463399976491928,-0.9315760135650635,0.34590500593185425,-0.11187800019979477,-0.9315760135650635,0.34590500593185425,-0.11187800019979477,-0.9836030006408691,0.11422000080347061,-0.13956999778747559,-0.9444100260734558,0.28835201263427734,-0.15793099999427795,-0.9836030006408691,0.11422000080347061,-0.13956999778747559,-0.9868549704551697,0.07049760222434998,-0.14542299509048462,-0.9444100260734558,0.28835201263427734,-0.15793099999427795,-0.9315760135650635,0.34590500593185425,-0.11187800019979477,-0.944612979888916,0.3075149953365326,-0.11463399976491928,-0.9413629770278931,0.3371259868144989,-0.013508699834346771,-0.944612979888916,0.3075149953365326,-0.11463399976491928,-0.952301025390625,0.30310800671577454,-0.03533479943871498,-0.9413629770278931,0.3371259868144989,-0.013508699834346771,-0.9413629770278931,0.3371259868144989,-0.013508699834346771,-0.9949089884757996,0.0657287985086441,-0.07639600336551666,-0.9315760135650635,0.34590500593185425,-0.11187800019979477,-0.9949089884757996,0.0657287985086441,-0.07639600336551666,-0.9836030006408691,0.11422000080347061,-0.13956999778747559,-0.9315760135650635,0.34590500593185425,-0.11187800019979477,-0.2856529951095581,0.057024501264095306,-0.9566349983215332,-0.29025399684906006,0.03174230083823204,-0.9564229846000671,-0.2645590007305145,0.07792659848928452,-0.9612159729003906,-0.29025399684906006,0.03174230083823204,-0.9564229846000671,-0.269089013338089,0.07129710167646408,-0.9604730010032654,-0.2645590007305145,0.07792659848928452,-0.9612159729003906,-0.2645590007305145,0.07792659848928452,-0.9612159729003906,-0.2600109875202179,0.08455110341310501,-0.9618970155715942,-0.2856529951095581,0.057024501264095306,-0.9566349983215332,-0.2600109875202179,0.08455110341310501,-0.9618970155715942,-0.2808679938316345,0.08224940299987793,-0.9562159776687622,-0.2856529951095581,0.057024501264095306,-0.9566349983215332,0.0231734998524189,-0.006446999963372946,0.9997109770774841,0.023027600720524788,-0.006715329829603434,0.9997119903564453,0.024460500106215477,-0.004737250041216612,0.9996899962425232,0.023027600720524788,-0.006715329829603434,0.9997119903564453,0.02419009990990162,-0.006716350093483925,0.9996849894523621,0.024460500106215477,-0.004737250041216612,0.9996899962425232,0.024460500106215477,-0.004737250041216612,0.9996899962425232,0.024730900302529335,-0.0027581299655139446,0.9996899962425232,0.0231734998524189,-0.006446999963372946,0.9997109770774841,0.024730900302529335,-0.0027581299655139446,0.9996899962425232,0.02331949956715107,-0.006178679876029491,0.9997090101242065,0.0231734998524189,-0.006446999963372946,0.9997109770774841,-0.29102998971939087,0.01094259973615408,-0.956650972366333,-0.29330599308013916,-0.014609400182962418,-0.9559069871902466,-0.2856529951095581,0.057024501264095306,-0.9566349983215332,-0.29330599308013916,-0.014609400182962418,-0.9559069871902466,-0.29025399684906006,0.03174230083823204,-0.9564229846000671,-0.2856529951095581,0.057024501264095306,-0.9566349983215332,-0.2856529951095581,0.057024501264095306,-0.9566349983215332,-0.2808679938316345,0.08224940299987793,-0.9562159776687622,-0.29102998971939087,0.01094259973615408,-0.956650972366333,-0.2808679938316345,0.08224940299987793,-0.9562159776687622,-0.28856098651885986,0.036509398370981216,-0.9567649960517883,-0.29102998971939087,0.01094259973615408,-0.956650972366333,-0.26006901264190674,0.06453579664230347,-0.9634310007095337,-0.2533490061759949,0.14311499893665314,-0.9567300081253052,-0.29102998971939087,0.01094259973615408,-0.956650972366333,-0.2533490061759949,0.14311499893665314,-0.9567300081253052,-0.29330599308013916,-0.014609400182962418,-0.9559069871902466,-0.29102998971939087,0.01094259973615408,-0.956650972366333,-0.29102998971939087,0.01094259973615408,-0.956650972366333,-0.28856098651885986,0.036509398370981216,-0.9567649960517883,-0.26006901264190674,0.06453579664230347,-0.9634310007095337,-0.28856098651885986,0.036509398370981216,-0.9567649960517883,-0.26510000228881836,-0.013361900113523006,-0.9641280174255371,-0.26006901264190674,0.06453579664230347,-0.9634310007095337,0.024460500106215477,-0.004737250041216612,0.9996899962425232,0.02419009990990162,-0.006716350093483925,0.9996849894523621,0.024279899895191193,-0.0009273270261473954,0.9997050166130066,0.02419009990990162,-0.006716350093483925,0.9996849894523621,0.0240641999989748,-0.0030701300129294395,0.999705970287323,0.024279899895191193,-0.0009273270261473954,0.9997050166130066,0.024279899895191193,-0.0009273270261473954,0.9997050166130066,0.024495499208569527,0.0012154700234532356,0.9996989965438843,0.024460500106215477,-0.004737250041216612,0.9996899962425232,0.024495499208569527,0.0012154700234532356,0.9996989965438843,0.024730900302529335,-0.0027581299655139446,0.9996899962425232,0.024460500106215477,-0.004737250041216612,0.9996899962425232,0.024279899895191193,-0.0009273270261473954,0.9997050166130066,0.0240641999989748,-0.0030701300129294395,0.999705970287323,0.04066440090537071,-0.017158400267362595,0.9990260004997253,0.0240641999989748,-0.0030701300129294395,0.999705970287323,0.04193830117583275,0.00265300995670259,0.9991170167922974,0.04066440090537071,-0.017158400267362595,0.9990260004997253,0.04066440090537071,-0.017158400267362595,0.9990260004997253,0.039373598992824554,-0.036976899951696396,0.9985399842262268,0.024279899895191193,-0.0009273270261473954,0.9997050166130066,0.039373598992824554,-0.036976899951696396,0.9985399842262268,0.024495499208569527,0.0012154700234532356,0.9996989965438843,0.024279899895191193,-0.0009273270261473954,0.9997050166130066,-0.9413629770278931,0.3371259868144989,-0.013508699834346771,-0.952301025390625,0.30310800671577454,-0.03533479943871498,-0.9591410160064697,0.24509699642658234,0.14133700728416443,-0.952301025390625,0.30310800671577454,-0.03533479943871498,-0.9689980149269104,0.2156369984149933,0.12059400230646133,-0.9591410160064697,0.24509699642658234,0.14133700728416443,-0.9591410160064697,0.24509699642658234,0.14133700728416443,-0.998852014541626,0.039901699870824814,0.026506900787353516,-0.9413629770278931,0.3371259868144989,-0.013508699834346771,-0.998852014541626,0.039901699870824814,0.026506900787353516,-0.9949089884757996,0.0657287985086441,-0.07639600336551666,-0.9413629770278931,0.3371259868144989,-0.013508699834346771,-0.9591410160064697,0.24509699642658234,0.14133700728416443,-0.9133899807929993,0.24954399466514587,0.3216310143470764,-0.9700300097465515,0.1775200068950653,0.16591599583625793,-0.9133899807929993,0.24954399466514587,0.3216310143470764,-0.8480640053749084,0.23846599459648132,0.4732019901275635,-0.9700300097465515,0.1775200068950653,0.16591599583625793,-0.9700300097465515,0.1775200068950653,0.16591599583625793,-0.996882975101471,0.07889830321073532,0.00012982499902136624,-0.9591410160064697,0.24509699642658234,0.14133700728416443,-0.996882975101471,0.07889830321073532,0.00012982499902136624,-0.998852014541626,0.039901699870824814,0.026506900787353516,-0.9591410160064697,0.24509699642658234,0.14133700728416443,-0.9700300097465515,0.1775200068950653,0.16591599583625793,-0.8480640053749084,0.23846599459648132,0.4732019901275635,-0.9386910200119019,0.3128420114517212,0.14487400650978088,-0.8480640053749084,0.23846599459648132,0.4732019901275635,-0.7363889813423157,0.4401099979877472,0.5138429999351501,-0.9386910200119019,0.3128420114517212,0.14487400650978088,-0.9386910200119019,0.3128420114517212,0.14487400650978088,-0.9585080146789551,0.2844800055027008,-0.018289700150489807,-0.9700300097465515,0.1775200068950653,0.16591599583625793,-0.9585080146789551,0.2844800055027008,-0.018289700150489807,-0.996882975101471,0.07889830321073532,0.00012982499902136624,-0.9700300097465515,0.1775200068950653,0.16591599583625793,-0.29360100626945496,0.4631839990615845,0.8362169861793518,-0.29360100626945496,0.4631839990615845,0.8362169861793518,-0.4064030051231384,0.4629260003566742,0.7877410054206848,-0.29360100626945496,0.4631839990615845,0.8362169861793518,-0.4064030051231384,0.4629260003566742,0.7877410054206848,-0.4064030051231384,0.4629260003566742,0.7877410054206848,-0.2948150038719177,-0.3534489870071411,0.8877829909324646,-0.2948150038719177,-0.3534489870071411,0.8877829909324646,-0.2105109989643097,-0.4199889898300171,0.8827769756317139,-0.2948150038719177,-0.3534489870071411,0.8877829909324646,-0.2105109989643097,-0.4199889898300171,0.8827769756317139,-0.2105109989643097,-0.4199889898300171,0.8827769756317139,-0.4064030051231384,0.4629260003566742,0.7877410054206848,-0.4064030051231384,0.4629260003566742,0.7877410054206848,-0.5130789875984192,0.4556899964809418,0.7273899912834167,-0.4064030051231384,0.4629260003566742,0.7877410054206848,-0.5130789875984192,0.4556899964809418,0.7273899912834167,-0.5130789875984192,0.4556899964809418,0.7273899912834167,-0.37571099400520325,-0.28282400965690613,0.8825259804725647,-0.37571099400520325,-0.28282400965690613,0.8825259804725647,-0.2948150038719177,-0.3534489870071411,0.8877829909324646,-0.37571099400520325,-0.28282400965690613,0.8825259804725647,-0.2948150038719177,-0.3534489870071411,0.8877829909324646,-0.2948150038719177,-0.3534489870071411,0.8877829909324646,-0.7363889813423157,0.4401099979877472,0.5138429999351501,-0.746990978717804,0.5482509732246399,0.3760649859905243,-0.9386910200119019,0.3128420114517212,0.14487400650978088,-0.746990978717804,0.5482509732246399,0.3760649859905243,-0.8720809817314148,0.46726301312446594,0.14539499580860138,-0.9386910200119019,0.3128420114517212,0.14487400650978088,-0.9386910200119019,0.3128420114517212,0.14487400650978088,-0.8720809817314148,0.46726301312446594,0.14539499580860138,-0.8920509815216064,0.441677987575531,-0.09573569893836975,-0.8720809817314148,0.46726301312446594,0.14539499580860138,-0.6839510202407837,0.7163559794425964,-0.1379999965429306,-0.8920509815216064,0.441677987575531,-0.09573569893836975,0.15436899662017822,0.9784010052680969,0.1374800056219101,0.15436899662017822,0.9784010052680969,0.1374800056219101,-0.1764570027589798,0.9507129788398743,-0.25496599078178406,0.15436899662017822,0.9784010052680969,0.1374800056219101,0.0017053700285032392,0.975691020488739,-0.21914300322532654,-0.1764570027589798,0.9507129788398743,-0.25496599078178406,-0.1764570027589798,0.9507129788398743,-0.25496599078178406,0.0017053700285032392,0.975691020488739,-0.21914300322532654,-0.26478999853134155,0.9053769707679749,-0.331932008266449,0.0017053700285032392,0.975691020488739,-0.21914300322532654,0.00164258002769202,0.940542995929718,-0.33967000246047974,-0.26478999853134155,0.9053769707679749,-0.331932008266449,0.2950020134449005,0.885312020778656,0.3594380021095276,0.2950020134449005,0.885312020778656,0.3594380021095276,0.15436899662017822,0.9784010052680969,0.1374800056219101,0.2950020134449005,0.885312020778656,0.3594380021095276,0.15436899662017822,0.9784010052680969,0.1374800056219101,0.15436899662017822,0.9784010052680969,0.1374800056219101,-0.996882975101471,0.07889830321073532,0.00012982499902136624,-0.9585080146789551,0.2844800055027008,-0.018289700150489807,-0.9904220104217529,-0.016652299091219902,-0.1370680034160614,-0.9585080146789551,0.2844800055027008,-0.018289700150489807,-0.9804490208625793,0.10151000320911407,-0.16856999695301056,-0.9904220104217529,-0.016652299091219902,-0.1370680034160614,-0.19862100481987,-0.24094699323177338,-0.9499970078468323,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.47219398617744446,-0.09182369709014893,-0.8766989707946777,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.43071499466896057,-0.09309949725866318,-0.8976730108261108,-0.47219398617744446,-0.09182369709014893,-0.8766989707946777,-0.43071499466896057,-0.09309949725866318,-0.8976730108261108,-0.6340259909629822,-0.09806980192661285,-0.7670680284500122,-0.47219398617744446,-0.09182369709014893,-0.8766989707946777,-0.6340259909629822,-0.09806980192661285,-0.7670680284500122,-0.7025409936904907,-0.08332320302724838,-0.7067480087280273,-0.47219398617744446,-0.09182369709014893,-0.8766989707946777,-0.15949000418186188,-0.23386900126934052,-0.9590979814529419,-0.38925299048423767,-0.09415239840745926,-0.9163069725036621,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.38925299048423767,-0.09415239840745926,-0.9163069725036621,-0.43071499466896057,-0.09309949725866318,-0.8976730108261108,-0.1791210025548935,-0.23746199905872345,-0.954738974571228,-0.43071499466896057,-0.09309949725866318,-0.8976730108261108,-0.38925299048423767,-0.09415239840745926,-0.9163069725036621,-0.6340259909629822,-0.09806980192661285,-0.7670680284500122,-0.36247700452804565,0.9118660092353821,-0.1926420032978058,-0.26478999853134155,0.9053769707679749,-0.331932008266449,-0.6839510202407837,0.7163559794425964,-0.1379999965429306,-0.26478999853134155,0.9053769707679749,-0.331932008266449,-0.5120829939842224,0.8047680258750916,-0.3001999855041504,-0.6839510202407837,0.7163559794425964,-0.1379999965429306,-0.24806499481201172,0.43755799531936646,0.8642950057983398,-0.46165499091148376,0.6482399702072144,0.6055240035057068,-0.38517799973487854,0.3854770064353943,0.8384780287742615,-0.46165499091148376,0.6482399702072144,0.6055240035057068,-0.7363889813423157,0.4401099979877472,0.5138429999351501,-0.38517799973487854,0.3854770064353943,0.8384780287742615,-0.46165499091148376,0.6482399702072144,0.6055240035057068,-0.524744987487793,0.7118110060691833,0.4668700098991394,-0.7363889813423157,0.4401099979877472,0.5138429999351501,-0.524744987487793,0.7118110060691833,0.4668700098991394,-0.746990978717804,0.5482509732246399,0.3760649859905243,-0.7363889813423157,0.4401099979877472,0.5138429999351501],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"uv\": {\n\t\t\t\t\t\t\"itemSize\": 2,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.3474999964237213,0.33333298563957214,0.25,0.33333298563957214,0.3474999964237213,0.5333330035209656,0.25,0.33333298563957214,0.25,0.5333330035209656,0.3474999964237213,0.5333330035209656,0.42375001311302185,0.33333298563957214,0.3474999964237213,0.33333298563957214,0.42375001311302185,0.5333330035209656,0.3474999964237213,0.33333298563957214,0.3474999964237213,0.5333330035209656,0.42375001311302185,0.5333330035209656,0.5,0.33333298563957214,0.42375001311302185,0.33333298563957214,0.5,0.5333330035209656,0.42375001311302185,0.33333298563957214,0.42375001311302185,0.5333330035209656,0.5,0.5333330035209656,0.3633109927177429,0.549144983291626,0.3699580132961273,0.555791974067688,0.40793898701667786,0.549144983291626,0.3699580132961273,0.555791974067688,0.40129199624061584,0.555791974067688,0.40793898701667786,0.549144983291626,0.40793898701667786,0.6508560180664062,0.40129199624061584,0.6442080140113831,0.3633109927177429,0.6508560180664062,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.3633109927177429,0.6508560180664062,0.3699580132961273,0.555791974067688,0.3699580132961273,0.555791974067688,0.40129199624061584,0.555791974067688,0.3699580132961273,0.555791974067688,0.40129199624061584,0.555791974067688,0.40129199624061584,0.555791974067688,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6442080140113831,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0.348376989364624,0.5342109799385071,0.42287299036979675,0.5342109799385071,0.3474999964237213,0.5333330035209656,0.42287299036979675,0.5342109799385071,0.42375001311302185,0.5333330035209656,0.3474999964237213,0.5333330035209656,0.42287299036979675,0.6657900214195251,0.348376989364624,0.6657900214195251,0.42375001311302185,0.6666669845581055,0.348376989364624,0.6657900214195251,0.3474999964237213,0.6666669845581055,0.42375001311302185,0.6666669845581055,0.35026800632476807,0.5361019968986511,0.4209820032119751,0.5361019968986511,0.348376989364624,0.5342109799385071,0.4209820032119751,0.5361019968986511,0.42287299036979675,0.5342109799385071,0.348376989364624,0.5342109799385071,0.4209820032119751,0.5361019968986511,0.35026800632476807,0.5361019968986511,0.40793898701667786,0.549144983291626,0.35026800632476807,0.5361019968986511,0.3633109927177429,0.549144983291626,0.40793898701667786,0.549144983291626,0.4209820032119751,0.6638979911804199,0.35026800632476807,0.6638979911804199,0.42287299036979675,0.6657900214195251,0.35026800632476807,0.6638979911804199,0.348376989364624,0.6657900214195251,0.42287299036979675,0.6657900214195251,0.35026800632476807,0.6638979911804199,0.4209820032119751,0.6638979911804199,0.3633109927177429,0.6508560180664062,0.4209820032119751,0.6638979911804199,0.40793898701667786,0.6508560180664062,0.3633109927177429,0.6508560180664062,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0.25,0.27049899101257324,0.3474999964237213,0.27049899101257324,0.25,0.16666699945926666,0.3474999964237213,0.27049899101257324,0.3474999964237213,0.16666699945926666,0.25,0.16666699945926666,0.3474999964237213,0.27049899101257324,0.25,0.27049899101257324,0.3474999964237213,0.33333298563957214,0.25,0.27049899101257324,0.25,0.33333298563957214,0.3474999964237213,0.33333298563957214,0.3474999964237213,0.7295010089874268,0.25,0.7295010089874268,0.3474999964237213,0.8333330154418945,0.25,0.7295010089874268,0.25,0.8333330154418945,0.3474999964237213,0.8333330154418945,0.25,0.7295010089874268,0.3474999964237213,0.7295010089874268,0.25,0.6666669845581055,0.3474999964237213,0.7295010089874268,0.3474999964237213,0.6666669845581055,0.25,0.6666669845581055,0.3474999964237213,0.27049899101257324,0.42375001311302185,0.27049899101257324,0.3474999964237213,0.16666699945926666,0.42375001311302185,0.27049899101257324,0.42375001311302185,0.16666699945926666,0.3474999964237213,0.16666699945926666,0.42375001311302185,0.27049899101257324,0.3474999964237213,0.27049899101257324,0.42375001311302185,0.33333298563957214,0.3474999964237213,0.27049899101257324,0.3474999964237213,0.33333298563957214,0.42375001311302185,0.33333298563957214,0.42375001311302185,0.27049899101257324,0.5,0.27049899101257324,0.42375001311302185,0.16666699945926666,0.5,0.27049899101257324,0.5,0.16666699945926666,0.42375001311302185,0.16666699945926666,0.5,0.27049899101257324,0.42375001311302185,0.27049899101257324,0.5,0.33333298563957214,0.42375001311302185,0.27049899101257324,0.42375001311302185,0.33333298563957214,0.5,0.33333298563957214,0.42375001311302185,0.7295010089874268,0.3474999964237213,0.7295010089874268,0.42375001311302185,0.8333330154418945,0.3474999964237213,0.7295010089874268,0.3474999964237213,0.8333330154418945,0.42375001311302185,0.8333330154418945,0.3474999964237213,0.7295010089874268,0.42375001311302185,0.7295010089874268,0.3474999964237213,0.6666669845581055,0.42375001311302185,0.7295010089874268,0.42375001311302185,0.6666669845581055,0.3474999964237213,0.6666669845581055,0.5,0.7295010089874268,0.42375001311302185,0.7295010089874268,0.5,0.8333330154418945,0.42375001311302185,0.7295010089874268,0.42375001311302185,0.8333330154418945,0.5,0.8333330154418945,0.42375001311302185,0.7295010089874268,0.5,0.7295010089874268,0.42375001311302185,0.6666669845581055,0.5,0.7295010089874268,0.5,0.6666669845581055,0.42375001311302185,0.6666669845581055,0.5471259951591492,0.33333298563957214,0.5471259951591492,0.5333330035209656,0.625,0.33333298563957214,0.5471259951591492,0.5333330035209656,0.625,0.5333330035209656,0.625,0.33333298563957214,0.5471259951591492,0.5333330035209656,0.5471259951591492,0.33333298563957214,0.5,0.5333330035209656,0.5471259951591492,0.33333298563957214,0.5,0.33333298563957214,0.5,0.5333330035209656,1,0.37700700759887695,0,0.37700700759887695,1,1,0,0.37700700759887695,0,1,1,1,0,0.37700700759887695,1,0.37700700759887695,0,0,1,0.37700700759887695,1,0,0,0,0,0.622992992401123,1,0.622992992401123,0,0,1,0.622992992401123,1,0,0,0,1,0.622992992401123,0,0.622992992401123,1,1,0,0.622992992401123,0,1,1,1,1,0.37700700759887695,0,0.37700700759887695,1,1,0,0.37700700759887695,0,1,1,1,0,0.37700700759887695,1,0.37700700759887695,0,0,1,0.37700700759887695,1,0,0,0,0,0.622992992401123,1,0.622992992401123,0,0,1,0.622992992401123,1,0,0,0,1,0.622992992401123,0,0.622992992401123,1,1,0,0.622992992401123,0,1,1,1,1,0.37700700759887695,0,0.37700700759887695,1,1,0,0.37700700759887695,0,1,1,1,0,0.37700700759887695,1,0.37700700759887695,0,0,1,0.37700700759887695,1,0,0,0,0,0.622992992401123,1,0.622992992401123,0,0,1,0.622992992401123,1,0,0,0,1,0.622992992401123,0,0.622992992401123,1,1,0,0.622992992401123,0,1,1,1,1,0.37700700759887695,0,0.37700700759887695,1,1,0,0.37700700759887695,0,1,1,1,0,0.37700700759887695,1,0.37700700759887695,0,0,1,0.37700700759887695,1,0,0,0,0,0.622992992401123,1,0.622992992401123,0,0,1,0.622992992401123,1,0,0,0,1,0.622992992401123,0,0.622992992401123,1,1,0,0.622992992401123,0,1,1,1,0,0.622992992401123,1,0.622992992401123,0,0,1,0.622992992401123,1,0,0,0,1,0.622992992401123,0,0.622992992401123,1,1,0,0.622992992401123,0,1,1,1,0.3474999964237213,0.6051669716835022,0.25,0.6051669716835022,0.3474999964237213,0.6666669845581055,0.25,0.6051669716835022,0.25,0.6666669845581055,0.3474999964237213,0.6666669845581055,0.25,0.6051669716835022,0.3474999964237213,0.6051669716835022,0.25,0.5333330035209656,0.3474999964237213,0.6051669716835022,0.3474999964237213,0.5333330035209656,0.25,0.5333330035209656,0.5,0.6051669716835022,0.42375001311302185,0.6051669716835022,0.5,0.6666669845581055,0.42375001311302185,0.6051669716835022,0.42375001311302185,0.6666669845581055,0.5,0.6666669845581055,0.42375001311302185,0.6051669716835022,0.5,0.6051669716835022,0.42375001311302185,0.5333330035209656,0.5,0.6051669716835022,0.5,0.5333330035209656,0.42375001311302185,0.5333330035209656,0.40793898701667786,0.603941023349762,0.40129199624061584,0.6034259796142578,0.40793898701667786,0.6508560180664062,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.40793898701667786,0.6508560180664062,0.40129199624061584,0.6034259796142578,0.40793898701667786,0.603941023349762,0.40129199624061584,0.555791974067688,0.40793898701667786,0.603941023349762,0.40793898701667786,0.549144983291626,0.40129199624061584,0.555791974067688,0.3699580132961273,0.6034259796142578,0.3633109927177429,0.603941023349762,0.3699580132961273,0.6442080140113831,0.3633109927177429,0.603941023349762,0.3633109927177429,0.6508560180664062,0.3699580132961273,0.6442080140113831,0.3633109927177429,0.603941023349762,0.3699580132961273,0.6034259796142578,0.3633109927177429,0.549144983291626,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.555791974067688,0.3633109927177429,0.549144983291626,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.555791974067688,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.555791974067688,0.40129199624061584,0.555791974067688,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.555791974067688,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.555791974067688,0.3699580132961273,0.555791974067688,0.40129199624061584,0.6034259796142578,0.3699580132961273,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.3699580132961273,0.555791974067688,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.555791974067688,0.3699580132961273,0.555791974067688,0,0.4612500071525574,1,0.4612500071525574,0,0,1,0.4612500071525574,1,0,0,0,1,0.4612500071525574,0,0.4612500071525574,1,1,0,0.4612500071525574,0,1,1,1,0,0.4612500071525574,1,0.4612500071525574,0,0,1,0.4612500071525574,1,0,0,0,1,0.4612500071525574,0,0.4612500071525574,1,1,0,0.4612500071525574,0,1,1,1,0.348376989364624,0.6050990223884583,0.3474999964237213,0.6051669716835022,0.348376989364624,0.6657900214195251,0.3474999964237213,0.6051669716835022,0.3474999964237213,0.6666669845581055,0.348376989364624,0.6657900214195251,0.3474999964237213,0.6051669716835022,0.348376989364624,0.6050990223884583,0.3474999964237213,0.5333330035209656,0.348376989364624,0.6050990223884583,0.348376989364624,0.5342109799385071,0.3474999964237213,0.5333330035209656,0.42375001311302185,0.6051669716835022,0.42287299036979675,0.6050990223884583,0.42375001311302185,0.6666669845581055,0.42287299036979675,0.6050990223884583,0.42287299036979675,0.6657900214195251,0.42375001311302185,0.6666669845581055,0.42287299036979675,0.6050990223884583,0.42375001311302185,0.6051669716835022,0.42287299036979675,0.5342109799385071,0.42375001311302185,0.6051669716835022,0.42375001311302185,0.5333330035209656,0.42287299036979675,0.5342109799385071,0.35026800632476807,0.6049519777297974,0.348376989364624,0.6050990223884583,0.35026800632476807,0.6638979911804199,0.348376989364624,0.6050990223884583,0.348376989364624,0.6657900214195251,0.35026800632476807,0.6638979911804199,0.348376989364624,0.6050990223884583,0.35026800632476807,0.6049519777297974,0.348376989364624,0.5342109799385071,0.35026800632476807,0.6049519777297974,0.35026800632476807,0.5361019968986511,0.348376989364624,0.5342109799385071,0.3633109927177429,0.603941023349762,0.35026800632476807,0.6049519777297974,0.3633109927177429,0.6508560180664062,0.35026800632476807,0.6049519777297974,0.35026800632476807,0.6638979911804199,0.3633109927177429,0.6508560180664062,0.35026800632476807,0.6049519777297974,0.3633109927177429,0.603941023349762,0.35026800632476807,0.5361019968986511,0.3633109927177429,0.603941023349762,0.3633109927177429,0.549144983291626,0.35026800632476807,0.5361019968986511,0.42287299036979675,0.6050990223884583,0.4209820032119751,0.6049519777297974,0.42287299036979675,0.6657900214195251,0.4209820032119751,0.6049519777297974,0.4209820032119751,0.6638979911804199,0.42287299036979675,0.6657900214195251,0.4209820032119751,0.6049519777297974,0.42287299036979675,0.6050990223884583,0.4209820032119751,0.5361019968986511,0.42287299036979675,0.6050990223884583,0.42287299036979675,0.5342109799385071,0.4209820032119751,0.5361019968986511,0.4209820032119751,0.6049519777297974,0.40793898701667786,0.603941023349762,0.4209820032119751,0.6638979911804199,0.40793898701667786,0.603941023349762,0.40793898701667786,0.6508560180664062,0.4209820032119751,0.6638979911804199,0.40793898701667786,0.603941023349762,0.4209820032119751,0.6049519777297974,0.40793898701667786,0.549144983291626,0.4209820032119751,0.6049519777297974,0.4209820032119751,0.5361019968986511,0.40793898701667786,0.549144983291626,0,0.4612500071525574,1,0.4612500071525574,0,0,1,0.4612500071525574,1,0,0,0,1,0.4612500071525574,0,0.4612500071525574,1,1,0,0.4612500071525574,0,1,1,1,0,0.4612500071525574,1,0.4612500071525574,0,0,1,0.4612500071525574,1,0,0,0,1,0.4612500071525574,0,0.4612500071525574,1,1,0,0.4612500071525574,0,1,1,1,0,0.4612500071525574,1,0.4612500071525574,0,0,1,0.4612500071525574,1,0,0,0,1,0.4612500071525574,0,0.4612500071525574,1,1,0,0.4612500071525574,0,1,1,1,0.625,0.6051669716835022,0.5471259951591492,0.6051669716835022,0.625,0.6666669845581055,0.5471259951591492,0.6051669716835022,0.5471259951591492,0.6666669845581055,0.625,0.6666669845581055,0.5471259951591492,0.6051669716835022,0.625,0.6051669716835022,0.5471259951591492,0.5333330035209656,0.625,0.6051669716835022,0.625,0.5333330035209656,0.5471259951591492,0.5333330035209656,0.5471259951591492,0.6051669716835022,0.5,0.6051669716835022,0.5471259951591492,0.6666669845581055,0.5,0.6051669716835022,0.5,0.6666669845581055,0.5471259951591492,0.6666669845581055,0.5,0.6051669716835022,0.5471259951591492,0.6051669716835022,0.5,0.5333330035209656,0.5471259951591492,0.6051669716835022,0.5471259951591492,0.5333330035209656,0.5,0.5333330035209656,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,0.9750000238418579,1,0,0.37700700759887695,0.9750000238418579,1,0.9700000286102295,0.37700700759887695,0,0.37700700759887695,0.9700000286102295,0.37700700759887695,0.9750000238418579,1,1,0.37700700759887695,0.9750000238418579,1,1,1,1,0.37700700759887695,0,0,0,0.37700700759887695,1,0,0,0.37700700759887695,0.9700000286102295,0.37700700759887695,1,0,0.9700000286102295,0.37700700759887695,1,0.37700700759887695,1,0,1,1,1,0,0,1,1,0,0,0,0,1,1,0,1,0.622992992401123,1,0,1,0.622992992401123,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,0,0.3474999964237213,0.33333298563957214,0.3474999964237213,0.5333330035209656,0.25,0.33333298563957214,0.3474999964237213,0.5333330035209656,0.25,0.5333330035209656,0.25,0.33333298563957214,0.42375001311302185,0.33333298563957214,0.42375001311302185,0.5333330035209656,0.3474999964237213,0.33333298563957214,0.42375001311302185,0.5333330035209656,0.3474999964237213,0.5333330035209656,0.3474999964237213,0.33333298563957214,0.5,0.33333298563957214,0.5,0.5333330035209656,0.42375001311302185,0.33333298563957214,0.5,0.5333330035209656,0.42375001311302185,0.5333330035209656,0.42375001311302185,0.33333298563957214,0.3633109927177429,0.549144983291626,0.40793898701667786,0.549144983291626,0.3699580132961273,0.555791974067688,0.40793898701667786,0.549144983291626,0.40129199624061584,0.555791974067688,0.3699580132961273,0.555791974067688,0.40793898701667786,0.6508560180664062,0.3633109927177429,0.6508560180664062,0.40129199624061584,0.6442080140113831,0.3633109927177429,0.6508560180664062,0.3699580132961273,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.555791974067688,0.40129199624061584,0.555791974067688,0.3699580132961273,0.555791974067688,0.40129199624061584,0.555791974067688,0.40129199624061584,0.555791974067688,0.3699580132961273,0.555791974067688,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.40129199624061584,0.6442080140113831,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0.348376989364624,0.5342109799385071,0.3474999964237213,0.5333330035209656,0.42287299036979675,0.5342109799385071,0.3474999964237213,0.5333330035209656,0.42375001311302185,0.5333330035209656,0.42287299036979675,0.5342109799385071,0.42287299036979675,0.6657900214195251,0.42375001311302185,0.6666669845581055,0.348376989364624,0.6657900214195251,0.42375001311302185,0.6666669845581055,0.3474999964237213,0.6666669845581055,0.348376989364624,0.6657900214195251,0.35026800632476807,0.5361019968986511,0.348376989364624,0.5342109799385071,0.4209820032119751,0.5361019968986511,0.348376989364624,0.5342109799385071,0.42287299036979675,0.5342109799385071,0.4209820032119751,0.5361019968986511,0.4209820032119751,0.5361019968986511,0.40793898701667786,0.549144983291626,0.35026800632476807,0.5361019968986511,0.40793898701667786,0.549144983291626,0.3633109927177429,0.549144983291626,0.35026800632476807,0.5361019968986511,0.4209820032119751,0.6638979911804199,0.42287299036979675,0.6657900214195251,0.35026800632476807,0.6638979911804199,0.42287299036979675,0.6657900214195251,0.348376989364624,0.6657900214195251,0.35026800632476807,0.6638979911804199,0.35026800632476807,0.6638979911804199,0.3633109927177429,0.6508560180664062,0.4209820032119751,0.6638979911804199,0.3633109927177429,0.6508560180664062,0.40793898701667786,0.6508560180664062,0.4209820032119751,0.6638979911804199,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0.25,0.27049899101257324,0.25,0.16666699945926666,0.3474999964237213,0.27049899101257324,0.25,0.16666699945926666,0.3474999964237213,0.16666699945926666,0.3474999964237213,0.27049899101257324,0.3474999964237213,0.27049899101257324,0.3474999964237213,0.33333298563957214,0.25,0.27049899101257324,0.3474999964237213,0.33333298563957214,0.25,0.33333298563957214,0.25,0.27049899101257324,0.3474999964237213,0.7295010089874268,0.3474999964237213,0.8333330154418945,0.25,0.7295010089874268,0.3474999964237213,0.8333330154418945,0.25,0.8333330154418945,0.25,0.7295010089874268,0.25,0.7295010089874268,0.25,0.6666669845581055,0.3474999964237213,0.7295010089874268,0.25,0.6666669845581055,0.3474999964237213,0.6666669845581055,0.3474999964237213,0.7295010089874268,0.3474999964237213,0.27049899101257324,0.3474999964237213,0.16666699945926666,0.42375001311302185,0.27049899101257324,0.3474999964237213,0.16666699945926666,0.42375001311302185,0.16666699945926666,0.42375001311302185,0.27049899101257324,0.42375001311302185,0.27049899101257324,0.42375001311302185,0.33333298563957214,0.3474999964237213,0.27049899101257324,0.42375001311302185,0.33333298563957214,0.3474999964237213,0.33333298563957214,0.3474999964237213,0.27049899101257324,0.42375001311302185,0.27049899101257324,0.42375001311302185,0.16666699945926666,0.5,0.27049899101257324,0.42375001311302185,0.16666699945926666,0.5,0.16666699945926666,0.5,0.27049899101257324,0.5,0.27049899101257324,0.5,0.33333298563957214,0.42375001311302185,0.27049899101257324,0.5,0.33333298563957214,0.42375001311302185,0.33333298563957214,0.42375001311302185,0.27049899101257324,0.42375001311302185,0.7295010089874268,0.42375001311302185,0.8333330154418945,0.3474999964237213,0.7295010089874268,0.42375001311302185,0.8333330154418945,0.3474999964237213,0.8333330154418945,0.3474999964237213,0.7295010089874268,0.3474999964237213,0.7295010089874268,0.3474999964237213,0.6666669845581055,0.42375001311302185,0.7295010089874268,0.3474999964237213,0.6666669845581055,0.42375001311302185,0.6666669845581055,0.42375001311302185,0.7295010089874268,0.5,0.7295010089874268,0.5,0.8333330154418945,0.42375001311302185,0.7295010089874268,0.5,0.8333330154418945,0.42375001311302185,0.8333330154418945,0.42375001311302185,0.7295010089874268,0.42375001311302185,0.7295010089874268,0.42375001311302185,0.6666669845581055,0.5,0.7295010089874268,0.42375001311302185,0.6666669845581055,0.5,0.6666669845581055,0.5,0.7295010089874268,0.5471259951591492,0.33333298563957214,0.625,0.33333298563957214,0.5471259951591492,0.5333330035209656,0.625,0.33333298563957214,0.625,0.5333330035209656,0.5471259951591492,0.5333330035209656,0.5471259951591492,0.5333330035209656,0.5,0.5333330035209656,0.5471259951591492,0.33333298563957214,0.5,0.5333330035209656,0.5,0.33333298563957214,0.5471259951591492,0.33333298563957214,1,0.37700700759887695,1,1,0,0.37700700759887695,1,1,0,1,0,0.37700700759887695,0,0.37700700759887695,0,0,1,0.37700700759887695,0,0,1,0,1,0.37700700759887695,0,0.622992992401123,0,0,1,0.622992992401123,0,0,1,0,1,0.622992992401123,1,0.622992992401123,1,1,0,0.622992992401123,1,1,0,1,0,0.622992992401123,1,0.37700700759887695,1,1,0,0.37700700759887695,1,1,0,1,0,0.37700700759887695,0,0.37700700759887695,0,0,1,0.37700700759887695,0,0,1,0,1,0.37700700759887695,0,0.622992992401123,0,0,1,0.622992992401123,0,0,1,0,1,0.622992992401123,1,0.622992992401123,1,1,0,0.622992992401123,1,1,0,1,0,0.622992992401123,1,0.37700700759887695,1,1,0,0.37700700759887695,1,1,0,1,0,0.37700700759887695,0,0.37700700759887695,0,0,1,0.37700700759887695,0,0,1,0,1,0.37700700759887695,0,0.622992992401123,0,0,1,0.622992992401123,0,0,1,0,1,0.622992992401123,1,0.622992992401123,1,1,0,0.622992992401123,1,1,0,1,0,0.622992992401123,1,0.37700700759887695,1,1,0,0.37700700759887695,1,1,0,1,0,0.37700700759887695,0,0.37700700759887695,0,0,1,0.37700700759887695,0,0,1,0,1,0.37700700759887695,0,0.622992992401123,0,0,1,0.622992992401123,0,0,1,0,1,0.622992992401123,1,0.622992992401123,1,1,0,0.622992992401123,1,1,0,1,0,0.622992992401123,0,0.622992992401123,0,0,1,0.622992992401123,0,0,1,0,1,0.622992992401123,1,0.622992992401123,1,1,0,0.622992992401123,1,1,0,1,0,0.622992992401123,0.3474999964237213,0.6051669716835022,0.3474999964237213,0.6666669845581055,0.25,0.6051669716835022,0.3474999964237213,0.6666669845581055,0.25,0.6666669845581055,0.25,0.6051669716835022,0.25,0.6051669716835022,0.25,0.5333330035209656,0.3474999964237213,0.6051669716835022,0.25,0.5333330035209656,0.3474999964237213,0.5333330035209656,0.3474999964237213,0.6051669716835022,0.5,0.6051669716835022,0.5,0.6666669845581055,0.42375001311302185,0.6051669716835022,0.5,0.6666669845581055,0.42375001311302185,0.6666669845581055,0.42375001311302185,0.6051669716835022,0.42375001311302185,0.6051669716835022,0.42375001311302185,0.5333330035209656,0.5,0.6051669716835022,0.42375001311302185,0.5333330035209656,0.5,0.5333330035209656,0.5,0.6051669716835022,0.40793898701667786,0.603941023349762,0.40793898701667786,0.6508560180664062,0.40129199624061584,0.6034259796142578,0.40793898701667786,0.6508560180664062,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.555791974067688,0.40793898701667786,0.603941023349762,0.40129199624061584,0.555791974067688,0.40793898701667786,0.549144983291626,0.40793898701667786,0.603941023349762,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6442080140113831,0.3633109927177429,0.603941023349762,0.3699580132961273,0.6442080140113831,0.3633109927177429,0.6508560180664062,0.3633109927177429,0.603941023349762,0.3633109927177429,0.603941023349762,0.3633109927177429,0.549144983291626,0.3699580132961273,0.6034259796142578,0.3633109927177429,0.549144983291626,0.3699580132961273,0.555791974067688,0.3699580132961273,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6442080140113831,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.555791974067688,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.555791974067688,0.40129199624061584,0.555791974067688,0.40129199624061584,0.6034259796142578,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.555791974067688,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.555791974067688,0.3699580132961273,0.555791974067688,0.3699580132961273,0.6034259796142578,0.40129199624061584,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.40129199624061584,0.6442080140113831,0.3699580132961273,0.6442080140113831,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.6034259796142578,0.3699580132961273,0.555791974067688,0.40129199624061584,0.6034259796142578,0.3699580132961273,0.555791974067688,0.40129199624061584,0.555791974067688,0.40129199624061584,0.6034259796142578,0,0.4612500071525574,0,0,1,0.4612500071525574,0,0,1,0,1,0.4612500071525574,1,0.4612500071525574,1,1,0,0.4612500071525574,1,1,0,1,0,0.4612500071525574,0,0.4612500071525574,0,0,1,0.4612500071525574,0,0,1,0,1,0.4612500071525574,1,0.4612500071525574,1,1,0,0.4612500071525574,1,1,0,1,0,0.4612500071525574,0.348376989364624,0.6050990223884583,0.348376989364624,0.6657900214195251,0.3474999964237213,0.6051669716835022,0.348376989364624,0.6657900214195251,0.3474999964237213,0.6666669845581055,0.3474999964237213,0.6051669716835022,0.3474999964237213,0.6051669716835022,0.3474999964237213,0.5333330035209656,0.348376989364624,0.6050990223884583,0.3474999964237213,0.5333330035209656,0.348376989364624,0.5342109799385071,0.348376989364624,0.6050990223884583,0.42375001311302185,0.6051669716835022,0.42375001311302185,0.6666669845581055,0.42287299036979675,0.6050990223884583,0.42375001311302185,0.6666669845581055,0.42287299036979675,0.6657900214195251,0.42287299036979675,0.6050990223884583,0.42287299036979675,0.6050990223884583,0.42287299036979675,0.5342109799385071,0.42375001311302185,0.6051669716835022,0.42287299036979675,0.5342109799385071,0.42375001311302185,0.5333330035209656,0.42375001311302185,0.6051669716835022,0.35026800632476807,0.6049519777297974,0.35026800632476807,0.6638979911804199,0.348376989364624,0.6050990223884583,0.35026800632476807,0.6638979911804199,0.348376989364624,0.6657900214195251,0.348376989364624,0.6050990223884583,0.348376989364624,0.6050990223884583,0.348376989364624,0.5342109799385071,0.35026800632476807,0.6049519777297974,0.348376989364624,0.5342109799385071,0.35026800632476807,0.5361019968986511,0.35026800632476807,0.6049519777297974,0.3633109927177429,0.603941023349762,0.3633109927177429,0.6508560180664062,0.35026800632476807,0.6049519777297974,0.3633109927177429,0.6508560180664062,0.35026800632476807,0.6638979911804199,0.35026800632476807,0.6049519777297974,0.35026800632476807,0.6049519777297974,0.35026800632476807,0.5361019968986511,0.3633109927177429,0.603941023349762,0.35026800632476807,0.5361019968986511,0.3633109927177429,0.549144983291626,0.3633109927177429,0.603941023349762,0.42287299036979675,0.6050990223884583,0.42287299036979675,0.6657900214195251,0.4209820032119751,0.6049519777297974,0.42287299036979675,0.6657900214195251,0.4209820032119751,0.6638979911804199,0.4209820032119751,0.6049519777297974,0.4209820032119751,0.6049519777297974,0.4209820032119751,0.5361019968986511,0.42287299036979675,0.6050990223884583,0.4209820032119751,0.5361019968986511,0.42287299036979675,0.5342109799385071,0.42287299036979675,0.6050990223884583,0.4209820032119751,0.6049519777297974,0.4209820032119751,0.6638979911804199,0.40793898701667786,0.603941023349762,0.4209820032119751,0.6638979911804199,0.40793898701667786,0.6508560180664062,0.40793898701667786,0.603941023349762,0.40793898701667786,0.603941023349762,0.40793898701667786,0.549144983291626,0.4209820032119751,0.6049519777297974,0.40793898701667786,0.549144983291626,0.4209820032119751,0.5361019968986511,0.4209820032119751,0.6049519777297974,0,0.4612500071525574,0,0,1,0.4612500071525574,0,0,1,0,1,0.4612500071525574,1,0.4612500071525574,1,1,0,0.4612500071525574,1,1,0,1,0,0.4612500071525574,0,0.4612500071525574,0,0,1,0.4612500071525574,0,0,1,0,1,0.4612500071525574,1,0.4612500071525574,1,1,0,0.4612500071525574,1,1,0,1,0,0.4612500071525574,0,0.4612500071525574,0,0,1,0.4612500071525574,0,0,1,0,1,0.4612500071525574,1,0.4612500071525574,1,1,0,0.4612500071525574,1,1,0,1,0,0.4612500071525574,0.625,0.6051669716835022,0.625,0.6666669845581055,0.5471259951591492,0.6051669716835022,0.625,0.6666669845581055,0.5471259951591492,0.6666669845581055,0.5471259951591492,0.6051669716835022,0.5471259951591492,0.6051669716835022,0.5471259951591492,0.5333330035209656,0.625,0.6051669716835022,0.5471259951591492,0.5333330035209656,0.625,0.5333330035209656,0.625,0.6051669716835022,0.5471259951591492,0.6051669716835022,0.5471259951591492,0.6666669845581055,0.5,0.6051669716835022,0.5471259951591492,0.6666669845581055,0.5,0.6666669845581055,0.5,0.6051669716835022,0.5,0.6051669716835022,0.5,0.5333330035209656,0.5471259951591492,0.6051669716835022,0.5,0.5333330035209656,0.5471259951591492,0.5333330035209656,0.5471259951591492,0.6051669716835022,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,1,0,0.37700700759887695,0.9750000238418579,1,0,0.37700700759887695,0.9700000286102295,0.37700700759887695,0.9750000238418579,1,0.9700000286102295,0.37700700759887695,1,0.37700700759887695,0.9750000238418579,1,1,0.37700700759887695,1,1,0.9750000238418579,1,0,0,1,0,0,0.37700700759887695,1,0,0.9700000286102295,0.37700700759887695,0,0.37700700759887695,0.9700000286102295,0.37700700759887695,1,0,1,0.37700700759887695,1,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,1,0.622992992401123,1,0,1,0,1,0.622992992401123,1,0,1,0,1,0,1,0,0,0,1,0],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [0.009149551391601562,1.4914600849151611,-5.312899589538574],\n\t\t\t\t\t\"radius\": 27.531367749056045\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"14325D90-18CA-43F1-9846-0F8D20FF5FCB\",\n\t\t\t\"type\": \"MeshPhongMaterial\",\n\t\t\t\"name\": \"plane\",\n\t\t\t\"color\": 14013910,\n\t\t\t\"emissive\": 0,\n\t\t\t\"specular\": 657930,\n\t\t\t\"shininess\": 128\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"7CB78BB3-9750-435D-B074-52492F46B54E\",\n\t\t\"type\": \"Mesh\",\n\t\t\"name\": \"plane\",\n\t\t\"matrix\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n\t\t\"geometry\": \"B5BC84E9-7BF3-493D-A90D-9AB3D369624A\",\n\t\t\"material\": \"14325D90-18CA-43F1-9846-0F8D20FF5FCB\"\n\t}\n}"
  },
  {
    "path": "public/static/meshes/tree.json",
    "content": "{\n\t\"metadata\": {\n\t\t\"version\": 4.4,\n\t\t\"type\": \"Object\",\n\t\t\"generator\": \"Object3D.toJSON\"\n\t},\n\t\"geometries\": [\n\t\t{\n\t\t\t\"uuid\": \"D470D633-9912-4F15-BD99-BB90CF28BAD0\",\n\t\t\t\"type\": \"BufferGeometry\",\n\t\t\t\"name\": \"tree\",\n\t\t\t\"data\": {\n\t\t\t\t\"attributes\": {\n\t\t\t\t\t\"position\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.26670899987220764,4.247260093688965,-3.3864200115203857,-0.11469399929046631,2.176719903945923,-2.0398900508880615,-2.539099931716919,4.085010051727295,-2.590049982070923,-0.11469399929046631,2.176719903945923,-2.0398900508880615,-1.7451800107955933,2.168149948120117,-1.3664400577545166,-2.539099931716919,4.085010051727295,-2.590049982070923,-2.539099931716919,4.085010051727295,-2.590049982070923,-1.7451800107955933,2.168149948120117,-1.3664400577545166,-3.8020200729370117,3.961709976196289,-0.08854279667139053,-1.7451800107955933,2.168149948120117,-1.3664400577545166,-2.2903900146484375,2.1610100269317627,0.2230670005083084,-3.8020200729370117,3.961709976196289,-0.08854279667139053,-3.8020200729370117,3.961709976196289,-0.08854279667139053,-2.2903900146484375,2.1610100269317627,0.2230670005083084,-2.782219886779785,3.9422099590301514,2.6916399002075195,-2.2903900146484375,2.1610100269317627,0.2230670005083084,-1.4280200004577637,2.1606099605560303,1.8221900463104248,-2.782219886779785,3.9422099590301514,2.6916399002075195,-2.782219886779785,3.9422099590301514,2.6916399002075195,-1.4280200004577637,2.1606099605560303,1.8221900463104248,-0.15339699387550354,4.04902982711792,3.906749963760376,-1.4280200004577637,2.1606099605560303,1.8221900463104248,0.3003920018672943,2.170830011367798,2.3745601177215576,-0.15339699387550354,4.04902982711792,3.906749963760376,-0.15339699387550354,4.04902982711792,3.906749963760376,0.3003920018672943,2.170830011367798,2.3745601177215576,2.5743799209594727,4.228509902954102,2.961479902267456,0.3003920018672943,2.170830011367798,2.3745601177215576,1.9084299802780151,2.1857900619506836,1.6159800291061401,2.5743799209594727,4.228509902954102,2.961479902267456,2.5743799209594727,4.228509902954102,2.961479902267456,1.9084299802780151,2.1857900619506836,1.6159800291061401,3.840009927749634,4.370120048522949,0.5090510249137878,1.9084299802780151,2.1857900619506836,1.6159800291061401,2.4675700664520264,2.1939499378204346,0.05456399917602539,3.840009927749634,4.370120048522949,0.5090510249137878,3.840009927749634,4.370120048522949,0.5090510249137878,2.4675700664520264,2.1939499378204346,0.05456399917602539,2.960659980773926,4.374770164489746,-2.020390033721924,2.4675700664520264,2.1939499378204346,0.05456399917602539,1.6722099781036377,2.1881699562072754,-1.4125900268554688,2.960659980773926,4.374770164489746,-2.020390033721924,2.960659980773926,4.374770164489746,-2.020390033721924,1.6722099781036377,2.1881699562072754,-1.4125900268554688,0.26670899987220764,4.247260093688965,-3.3864200115203857,1.6722099781036377,2.1881699562072754,-1.4125900268554688,-0.11469399929046631,2.176719903945923,-2.0398900508880615,0.26670899987220764,4.247260093688965,-3.3864200115203857,-3.8020200729370117,3.961709976196289,-0.08854279667139053,-4.904809951782227,7.009729862213135,-0.6354860067367554,-2.539099931716919,4.085010051727295,-2.590049982070923,-4.904809951782227,7.009729862213135,-0.6354860067367554,-2.8419599533081055,7.096549987792969,-3.742029905319214,-2.539099931716919,4.085010051727295,-2.590049982070923,-2.539099931716919,4.085010051727295,-2.590049982070923,-2.8419599533081055,7.096549987792969,-3.742029905319214,0.26670899987220764,4.247260093688965,-3.3864200115203857,-2.8419599533081055,7.096549987792969,-3.742029905319214,0.9317920207977295,7.23514986038208,-4.387569904327393,0.26670899987220764,4.247260093688965,-3.3864200115203857,0.26670899987220764,4.247260093688965,-3.3864200115203857,0.9317920207977295,7.23514986038208,-4.387569904327393,2.960659980773926,4.374770164489746,-2.020390033721924,0.9317920207977295,7.23514986038208,-4.387569904327393,4.137060165405273,7.346590042114258,-2.2489099502563477,2.960659980773926,4.374770164489746,-2.020390033721924,2.960659980773926,4.374770164489746,-2.020390033721924,4.137060165405273,7.346590042114258,-2.2489099502563477,3.840009927749634,4.370120048522949,0.5090510249137878,4.137060165405273,7.346590042114258,-2.2489099502563477,4.845550060272217,7.347990036010742,1.1864299774169922,3.840009927749634,4.370120048522949,0.5090510249137878,3.840009927749634,4.370120048522949,0.5090510249137878,4.845550060272217,7.347990036010742,1.1864299774169922,2.5743799209594727,4.228509902954102,2.961479902267456,4.845550060272217,7.347990036010742,1.1864299774169922,2.8115899562835693,7.247049808502197,4.2535400390625,2.5743799209594727,4.228509902954102,2.961479902267456,2.5743799209594727,4.228509902954102,2.961479902267456,2.8115899562835693,7.247049808502197,4.2535400390625,-0.15339699387550354,4.04902982711792,3.906749963760376,2.8115899562835693,7.247049808502197,4.2535400390625,-0.8407350182533264,7.115170001983643,5.117099761962891,-0.15339699387550354,4.04902982711792,3.906749963760376,-0.15339699387550354,4.04902982711792,3.906749963760376,-0.8407350182533264,7.115170001983643,5.117099761962891,-2.782219886779785,3.9422099590301514,2.6916399002075195,-0.8407350182533264,7.115170001983643,5.117099761962891,-4.035630226135254,7.01915979385376,3.155179977416992,-2.782219886779785,3.9422099590301514,2.6916399002075195,-2.782219886779785,3.9422099590301514,2.6916399002075195,-4.035630226135254,7.01915979385376,3.155179977416992,-3.8020200729370117,3.961709976196289,-0.08854279667139053,-4.035630226135254,7.01915979385376,3.155179977416992,-4.904809951782227,7.009729862213135,-0.6354860067367554,-3.8020200729370117,3.961709976196289,-0.08854279667139053,-0.8407350182533264,7.115170001983643,5.117099761962891,-1.4599499702453613,10.74940013885498,5.145370006561279,-4.035630226135254,7.01915979385376,3.155179977416992,-1.4599499702453613,10.74940013885498,5.145370006561279,-4.408229827880859,10.709500312805176,2.745270013809204,-4.035630226135254,7.01915979385376,3.155179977416992,-4.035630226135254,7.01915979385376,3.155179977416992,-4.408229827880859,10.709500312805176,2.745270013809204,-4.904809951782227,7.009729862213135,-0.6354860067367554,-4.408229827880859,10.709500312805176,2.745270013809204,-4.774980068206787,10.681300163269043,-1.2461600303649902,-4.904809951782227,7.009729862213135,-0.6354860067367554,-4.904809951782227,7.009729862213135,-0.6354860067367554,-4.774980068206787,10.681300163269043,-1.2461600303649902,-2.8419599533081055,7.096549987792969,-3.742029905319214,-4.774980068206787,10.681300163269043,-1.2461600303649902,-2.2316999435424805,10.684700012207031,-4.188849925994873,-2.8419599533081055,7.096549987792969,-3.742029905319214,-2.8419599533081055,7.096549987792969,-3.742029905319214,-2.2316999435424805,10.684700012207031,-4.188849925994873,0.9317920207977295,7.23514986038208,-4.387569904327393,-2.2316999435424805,10.684700012207031,-4.188849925994873,1.6992100477218628,10.719099998474121,-4.380229949951172,0.9317920207977295,7.23514986038208,-4.387569904327393,0.9317920207977295,7.23514986038208,-4.387569904327393,1.6992100477218628,10.719099998474121,-4.380229949951172,4.137060165405273,7.346590042114258,-2.2489099502563477,1.6992100477218628,10.719099998474121,-4.380229949951172,4.602960109710693,10.764699935913086,-1.814039945602417,4.137060165405273,7.346590042114258,-2.2489099502563477,4.137060165405273,7.346590042114258,-2.2489099502563477,4.602960109710693,10.764699935913086,-1.814039945602417,4.845550060272217,7.347990036010742,1.1864299774169922,4.602960109710693,10.764699935913086,-1.814039945602417,4.811409950256348,10.786100387573242,1.821969985961914,4.845550060272217,7.347990036010742,1.1864299774169922,4.845550060272217,7.347990036010742,1.1864299774169922,4.811409950256348,10.786100387573242,1.821969985961914,2.8115899562835693,7.247049808502197,4.2535400390625,4.811409950256348,10.786100387573242,1.821969985961914,2.3066399097442627,10.777899742126465,4.724629878997803,2.8115899562835693,7.247049808502197,4.2535400390625,2.8115899562835693,7.247049808502197,4.2535400390625,2.3066399097442627,10.777899742126465,4.724629878997803,-0.8407350182533264,7.115170001983643,5.117099761962891,2.3066399097442627,10.777899742126465,4.724629878997803,-1.4599499702453613,10.74940013885498,5.145370006561279,-0.8407350182533264,7.115170001983643,5.117099761962891,-1.4599499702453613,10.74940013885498,5.145370006561279,-1.7319400310516357,14.592100143432617,4.365640163421631,-4.408229827880859,10.709500312805176,2.745270013809204,-1.7319400310516357,14.592100143432617,4.365640163421631,-3.9937100410461426,14.635700225830078,1.8981499671936035,-4.408229827880859,10.709500312805176,2.745270013809204,-4.408229827880859,10.709500312805176,2.745270013809204,-3.9937100410461426,14.635700225830078,1.8981499671936035,-4.774980068206787,10.681300163269043,-1.2461600303649902,-3.9937100410461426,14.635700225830078,1.8981499671936035,-3.8229899406433105,14.624099731445312,-1.6505999565124512,-4.774980068206787,10.681300163269043,-1.2461600303649902,-4.774980068206787,10.681300163269043,-1.2461600303649902,-3.8229899406433105,14.624099731445312,-1.6505999565124512,-2.2316999435424805,10.684700012207031,-4.188849925994873,-3.8229899406433105,14.624099731445312,-1.6505999565124512,-1.2234300374984741,14.5600004196167,-3.9788999557495117,-2.2316999435424805,10.684700012207031,-4.188849925994873,-2.2316999435424805,10.684700012207031,-4.188849925994873,-1.2234300374984741,14.5600004196167,-3.9788999557495117,1.6992100477218628,10.719099998474121,-4.380229949951172,-1.2234300374984741,14.5600004196167,-3.9788999557495117,2.2641499042510986,14.483400344848633,-3.7225399017333984,1.6992100477218628,10.719099998474121,-4.380229949951172,1.6992100477218628,10.719099998474121,-4.380229949951172,2.2641499042510986,14.483400344848633,-3.7225399017333984,4.602960109710693,10.764699935913086,-1.814039945602417,2.2641499042510986,14.483400344848633,-3.7225399017333984,4.471720218658447,14.442899703979492,-1.1328500509262085,4.602960109710693,10.764699935913086,-1.814039945602417,4.602960109710693,10.764699935913086,-1.814039945602417,4.471720218658447,14.442899703979492,-1.1328500509262085,4.811409950256348,10.786100387573242,1.821969985961914,4.471720218658447,14.442899703979492,-1.1328500509262085,4.168190002441406,14.460100173950195,2.1600100994110107,4.811409950256348,10.786100387573242,1.821969985961914,4.811409950256348,10.786100387573242,1.821969985961914,4.168190002441406,14.460100173950195,2.1600100994110107,2.3066399097442627,10.777899742126465,4.724629878997803,4.168190002441406,14.460100173950195,2.1600100994110107,1.5846099853515625,14.522000312805176,4.449950218200684,2.3066399097442627,10.777899742126465,4.724629878997803,2.3066399097442627,10.777899742126465,4.724629878997803,1.5846099853515625,14.522000312805176,4.449950218200684,-1.4599499702453613,10.74940013885498,5.145370006561279,1.5846099853515625,14.522000312805176,4.449950218200684,-1.7319400310516357,14.592100143432617,4.365640163421631,-1.4599499702453613,10.74940013885498,5.145370006561279,-3.9937100410461426,14.635700225830078,1.8981499671936035,-3.2951900959014893,18.11680030822754,1.1583900451660156,-3.8229899406433105,14.624099731445312,-1.6505999565124512,-3.2951900959014893,18.11680030822754,1.1583900451660156,-2.7869699001312256,18.161699295043945,-1.7338199615478516,-3.8229899406433105,14.624099731445312,-1.6505999565124512,-3.8229899406433105,14.624099731445312,-1.6505999565124512,-2.7869699001312256,18.161699295043945,-1.7338199615478516,-1.2234300374984741,14.5600004196167,-3.9788999557495117,-2.7869699001312256,18.161699295043945,-1.7338199615478516,-0.4056270122528076,18.11210060119629,-3.4276700019836426,-1.2234300374984741,14.5600004196167,-3.9788999557495117,-1.2234300374984741,14.5600004196167,-3.9788999557495117,-0.4056270122528076,18.11210060119629,-3.4276700019836426,2.2641499042510986,14.483400344848633,-3.7225399017333984,-0.4056270122528076,18.11210060119629,-3.4276700019836426,2.4682700634002686,17.997100830078125,-2.920140027999878,2.2641499042510986,14.483400344848633,-3.7225399017333984,2.2641499042510986,14.483400344848633,-3.7225399017333984,2.4682700634002686,17.997100830078125,-2.920140027999878,4.471720218658447,14.442899703979492,-1.1328500509262085,2.4682700634002686,17.997100830078125,-2.920140027999878,4.043320178985596,17.886899948120117,-0.5675309896469116,4.471720218658447,14.442899703979492,-1.1328500509262085,4.471720218658447,14.442899703979492,-1.1328500509262085,4.043320178985596,17.886899948120117,-0.5675309896469116,4.168190002441406,14.460100173950195,2.1600100994110107,4.043320178985596,17.886899948120117,-0.5675309896469116,3.436800003051758,17.847999572753906,2.201159954071045,4.168190002441406,14.460100173950195,2.1600100994110107,4.168190002441406,14.460100173950195,2.1600100994110107,3.436800003051758,17.847999572753906,2.201159954071045,1.5846099853515625,14.522000312805176,4.449950218200684,3.436800003051758,17.847999572753906,2.201159954071045,1.0314199924468994,17.897600173950195,3.868269920349121,1.5846099853515625,14.522000312805176,4.449950218200684,1.5846099853515625,14.522000312805176,4.449950218200684,1.0314199924468994,17.897600173950195,3.868269920349121,-1.7319400310516357,14.592100143432617,4.365640163421631,1.0314199924468994,17.897600173950195,3.868269920349121,-1.6998300552368164,18.005599975585938,3.4453001022338867,-1.7319400310516357,14.592100143432617,4.365640163421631,-1.7319400310516357,14.592100143432617,4.365640163421631,-1.6998300552368164,18.005599975585938,3.4453001022338867,-3.9937100410461426,14.635700225830078,1.8981499671936035,-1.6998300552368164,18.005599975585938,3.4453001022338867,-3.2951900959014893,18.11680030822754,1.1583900451660156,-3.9937100410461426,14.635700225830078,1.8981499671936035,-3.2951900959014893,18.11680030822754,1.1583900451660156,-2.3836801052093506,21.289600372314453,0.6645780205726624,-2.7869699001312256,18.161699295043945,-1.7338199615478516,-2.3836801052093506,21.289600372314453,0.6645780205726624,-1.8310699462890625,21.331499099731445,-1.4277199506759644,-2.7869699001312256,18.161699295043945,-1.7338199615478516,-2.7869699001312256,18.161699295043945,-1.7338199615478516,-1.8310699462890625,21.331499099731445,-1.4277199506759644,-0.4056270122528076,18.11210060119629,-3.4276700019836426,-1.8310699462890625,21.331499099731445,-1.4277199506759644,0.042246799916028976,21.319499969482422,-2.5499799251556396,-0.4056270122528076,18.11210060119629,-3.4276700019836426,-0.4056270122528076,18.11210060119629,-3.4276700019836426,0.042246799916028976,21.319499969482422,-2.5499799251556396,2.4682700634002686,17.997100830078125,-2.920140027999878,0.042246799916028976,21.319499969482422,-2.5499799251556396,2.152750015258789,21.256999969482422,-2.0186901092529297,2.4682700634002686,17.997100830078125,-2.920140027999878,2.4682700634002686,17.997100830078125,-2.920140027999878,2.152750015258789,21.256999969482422,-2.0186901092529297,4.043320178985596,17.886899948120117,-0.5675309896469116,2.152750015258789,21.256999969482422,-2.0186901092529297,3.175950050354004,21.18090057373047,-0.18297599256038666,4.043320178985596,17.886899948120117,-0.5675309896469116,4.043320178985596,17.886899948120117,-0.5675309896469116,3.175950050354004,21.18090057373047,-0.18297599256038666,3.436800003051758,17.847999572753906,2.201159954071045,3.175950050354004,21.18090057373047,-0.18297599256038666,2.543060064315796,21.138500213623047,1.8556400537490845,3.436800003051758,17.847999572753906,2.201159954071045,3.436800003051758,17.847999572753906,2.201159954071045,2.543060064315796,21.138500213623047,1.8556400537490845,1.0314199924468994,17.897600173950195,3.868269920349121,2.543060064315796,21.138500213623047,1.8556400537490845,0.6508910059928894,21.152799606323242,2.947360038757324,1.0314199924468994,17.897600173950195,3.868269920349121,1.0314199924468994,17.897600173950195,3.868269920349121,0.6508910059928894,21.152799606323242,2.947360038757324,-1.6998300552368164,18.005599975585938,3.4453001022338867,0.6508910059928894,21.152799606323242,2.947360038757324,-1.3470799922943115,21.214799880981445,2.4583499431610107,-1.6998300552368164,18.005599975585938,3.4453001022338867,-1.6998300552368164,18.005599975585938,3.4453001022338867,-1.3470799922943115,21.214799880981445,2.4583499431610107,-3.2951900959014893,18.11680030822754,1.1583900451660156,-1.3470799922943115,21.214799880981445,2.4583499431610107,-2.3836801052093506,21.289600372314453,0.6645780205726624,-3.2951900959014893,18.11680030822754,1.1583900451660156,0.042246799916028976,21.319499969482422,-2.5499799251556396,0.2468080073595047,24.02359962463379,-1.2157100439071655,2.152750015258789,21.256999969482422,-2.0186901092529297,0.2468080073595047,24.02359962463379,-1.2157100439071655,1.3124699592590332,24.008899688720703,-0.9004499912261963,2.152750015258789,21.256999969482422,-2.0186901092529297,2.152750015258789,21.256999969482422,-2.0186901092529297,1.3124699592590332,24.008899688720703,-0.9004499912261963,3.175950050354004,21.18090057373047,-0.18297599256038666,1.3124699592590332,24.008899688720703,-0.9004499912261963,1.7868000268936157,23.976200103759766,0.055833600461483,3.175950050354004,21.18090057373047,-0.18297599256038666,3.175950050354004,21.18090057373047,-0.18297599256038666,1.7868000268936157,23.976200103759766,0.055833600461483,2.543060064315796,21.138500213623047,1.8556400537490845,1.7868000268936157,23.976200103759766,0.055833600461483,1.410949945449829,23.948999404907227,1.0773899555206299,2.543060064315796,21.138500213623047,1.8556400537490845,2.543060064315796,21.138500213623047,1.8556400537490845,1.410949945449829,23.948999404907227,1.0773899555206299,0.6508910059928894,21.152799606323242,2.947360038757324,1.410949945449829,23.948999404907227,1.0773899555206299,0.4272969961166382,23.94059944152832,1.588230013847351,0.6508910059928894,21.152799606323242,2.947360038757324,0.6508910059928894,21.152799606323242,2.947360038757324,0.4272969961166382,23.94059944152832,1.588230013847351,-1.3470799922943115,21.214799880981445,2.4583499431610107,0.4272969961166382,23.94059944152832,1.588230013847351,-0.5814440250396729,23.95400047302246,1.2984000444412231,-1.3470799922943115,21.214799880981445,2.4583499431610107,-1.3470799922943115,21.214799880981445,2.4583499431610107,-0.5814440250396729,23.95400047302246,1.2984000444412231,-2.3836801052093506,21.289600372314453,0.6645780205726624,-0.5814440250396729,23.95400047302246,1.2984000444412231,-1.0720900297164917,23.98189926147461,0.36265799403190613,-2.3836801052093506,21.289600372314453,0.6645780205726624,-2.3836801052093506,21.289600372314453,0.6645780205726624,-1.0720900297164917,23.98189926147461,0.36265799403190613,-1.8310699462890625,21.331499099731445,-1.4277199506759644,-1.0720900297164917,23.98189926147461,0.36265799403190613,-0.7402340173721313,24.010099411010742,-0.6863549947738647,-1.8310699462890625,21.331499099731445,-1.4277199506759644,-1.8310699462890625,21.331499099731445,-1.4277199506759644,-0.7402340173721313,24.010099411010742,-0.6863549947738647,0.042246799916028976,21.319499969482422,-2.5499799251556396,-0.7402340173721313,24.010099411010742,-0.6863549947738647,0.2468080073595047,24.02359962463379,-1.2157100439071655,0.042246799916028976,21.319499969482422,-2.5499799251556396,1.7868000268936157,23.976200103759766,0.055833600461483,0.3412100076675415,26.801000595092773,0.19781099259853363,1.410949945449829,23.948999404907227,1.0773899555206299,1.410949945449829,23.948999404907227,1.0773899555206299,0.3412100076675415,26.801000595092773,0.19781099259853363,0.4272969961166382,23.94059944152832,1.588230013847351,0.4272969961166382,23.94059944152832,1.588230013847351,0.3412100076675415,26.801000595092773,0.19781099259853363,-0.5814440250396729,23.95400047302246,1.2984000444412231,-0.5814440250396729,23.95400047302246,1.2984000444412231,0.3412100076675415,26.801000595092773,0.19781099259853363,-1.0720900297164917,23.98189926147461,0.36265799403190613,-1.0720900297164917,23.98189926147461,0.36265799403190613,0.3412100076675415,26.801000595092773,0.19781099259853363,-0.7402340173721313,24.010099411010742,-0.6863549947738647,-0.7402340173721313,24.010099411010742,-0.6863549947738647,0.3412100076675415,26.801000595092773,0.19781099259853363,0.2468080073595047,24.02359962463379,-1.2157100439071655,0.2468080073595047,24.02359962463379,-1.2157100439071655,0.3412100076675415,26.801000595092773,0.19781099259853363,1.3124699592590332,24.008899688720703,-0.9004499912261963,1.3124699592590332,24.008899688720703,-0.9004499912261963,0.3412100076675415,26.801000595092773,0.19781099259853363,1.7868000268936157,23.976200103759766,0.055833600461483,-0.11469399929046631,2.176719903945923,-2.0398900508880615,-0.03338040038943291,1.4769500494003296,-1.156999945640564,-1.7451800107955933,2.168149948120117,-1.3664400577545166,-0.03338040038943291,1.4769500494003296,-1.156999945640564,-1.0116699934005737,1.4717999696731567,-0.7529280185699463,-1.7451800107955933,2.168149948120117,-1.3664400577545166,-1.7451800107955933,2.168149948120117,-1.3664400577545166,-1.0116699934005737,1.4717999696731567,-0.7529280185699463,-2.2903900146484375,2.1610100269317627,0.2230670005083084,-1.0116699934005737,1.4717999696731567,-0.7529280185699463,-1.3387999534606934,1.467519998550415,0.20077499747276306,-2.2903900146484375,2.1610100269317627,0.2230670005083084,-2.2903900146484375,2.1610100269317627,0.2230670005083084,-1.3387999534606934,1.467519998550415,0.20077499747276306,-1.4280200004577637,2.1606099605560303,1.8221900463104248,-1.3387999534606934,1.467519998550415,0.20077499747276306,-0.8213750123977661,1.4672800302505493,1.160249948501587,-1.4280200004577637,2.1606099605560303,1.8221900463104248,-1.4280200004577637,2.1606099605560303,1.8221900463104248,-0.8213750123977661,1.4672800302505493,1.160249948501587,0.3003920018672943,2.170830011367798,2.3745601177215576,-0.8213750123977661,1.4672800302505493,1.160249948501587,0.21567100286483765,1.4734100103378296,1.49167001247406,0.3003920018672943,2.170830011367798,2.3745601177215576,0.3003920018672943,2.170830011367798,2.3745601177215576,0.21567100286483765,1.4734100103378296,1.49167001247406,1.9084299802780151,2.1857900619506836,1.6159800291061401,0.21567100286483765,1.4734100103378296,1.49167001247406,1.1805000305175781,1.48239004611969,1.036520004272461,1.9084299802780151,2.1857900619506836,1.6159800291061401,1.9084299802780151,2.1857900619506836,1.6159800291061401,1.1805000305175781,1.48239004611969,1.036520004272461,2.4675700664520264,2.1939499378204346,0.05456399917602539,1.1805000305175781,1.48239004611969,1.036520004272461,1.5159800052642822,1.487280011177063,0.09967269748449326,2.4675700664520264,2.1939499378204346,0.05456399917602539,2.4675700664520264,2.1939499378204346,0.05456399917602539,1.5159800052642822,1.487280011177063,0.09967269748449326,1.6722099781036377,2.1881699562072754,-1.4125900268554688,1.5159800052642822,1.487280011177063,0.09967269748449326,1.0387599468231201,1.4838099479675293,-0.7806190252304077,1.6722099781036377,2.1881699562072754,-1.4125900268554688,1.6722099781036377,2.1881699562072754,-1.4125900268554688,1.0387599468231201,1.4838099479675293,-0.7806190252304077,-0.11469399929046631,2.176719903945923,-2.0398900508880615,1.0387599468231201,1.4838099479675293,-0.7806190252304077,-0.03338040038943291,1.4769500494003296,-1.156999945640564,-0.11469399929046631,2.176719903945923,-2.0398900508880615,0,2.0199999809265137,-0.699999988079071,0,-1.2400000095367432,-0.699999988079071,-0.4949750006198883,2.0199999809265137,-0.4949750006198883,0,-1.2400000095367432,-0.699999988079071,-0.4949750006198883,-1.2400000095367432,-0.4949750006198883,-0.4949750006198883,2.0199999809265137,-0.4949750006198883,-0.4949750006198883,2.0199999809265137,-0.4949750006198883,-0.4949750006198883,-1.2400000095367432,-0.4949750006198883,-0.699999988079071,2.0199999809265137,0,-0.4949750006198883,-1.2400000095367432,-0.4949750006198883,-0.699999988079071,-1.2400000095367432,0,-0.699999988079071,2.0199999809265137,0,-0.699999988079071,2.0199999809265137,0,-0.699999988079071,-1.2400000095367432,0,-0.4949750006198883,2.0199999809265137,0.4949750006198883,-0.699999988079071,-1.2400000095367432,0,-0.4949750006198883,-1.2400000095367432,0.4949750006198883,-0.4949750006198883,2.0199999809265137,0.4949750006198883,-0.4949750006198883,2.0199999809265137,0.4949750006198883,-0.4949750006198883,-1.2400000095367432,0.4949750006198883,0,2.0199999809265137,0.699999988079071,-0.4949750006198883,-1.2400000095367432,0.4949750006198883,0,-1.2400000095367432,0.699999988079071,0,2.0199999809265137,0.699999988079071,0,2.0199999809265137,0.699999988079071,0,-1.2400000095367432,0.699999988079071,0.4949750006198883,2.0199999809265137,0.4949750006198883,0,-1.2400000095367432,0.699999988079071,0.4949750006198883,-1.2400000095367432,0.4949750006198883,0.4949750006198883,2.0199999809265137,0.4949750006198883,0.4949750006198883,2.0199999809265137,0.4949750006198883,0.4949750006198883,-1.2400000095367432,0.4949750006198883,0.699999988079071,2.0199999809265137,0,0.4949750006198883,-1.2400000095367432,0.4949750006198883,0.699999988079071,-1.2400000095367432,0,0.699999988079071,2.0199999809265137,0,0.699999988079071,2.0199999809265137,0,0.699999988079071,-1.2400000095367432,0,0.4949750006198883,2.0199999809265137,-0.4949750006198883,0.699999988079071,-1.2400000095367432,0,0.4949750006198883,-1.2400000095367432,-0.4949750006198883,0.4949750006198883,2.0199999809265137,-0.4949750006198883,0.4949750006198883,2.0199999809265137,-0.4949750006198883,0.4949750006198883,-1.2400000095367432,-0.4949750006198883,0,2.0199999809265137,-0.699999988079071,0.4949750006198883,-1.2400000095367432,-0.4949750006198883,0,-1.2400000095367432,-0.699999988079071,0,2.0199999809265137,-0.699999988079071],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"normal\": {\n\t\t\t\t\t\t\"itemSize\": 3,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,-0.760748028755188,-0.572242021560669,-0.3062700033187866,-0.760748028755188,-0.572242021560669,-0.3062700033187866,-0.760748028755188,-0.572242021560669,-0.3062700033187866,-0.760748028755188,-0.572242021560669,-0.3062700033187866,-0.760748028755188,-0.572242021560669,-0.3062700033187866,-0.760748028755188,-0.572242021560669,-0.3062700033187866,-0.32412898540496826,-0.6175709962844849,-0.716621994972229,-0.32412898540496826,-0.6175709962844849,-0.716621994972229,-0.32412898540496826,-0.6175709962844849,-0.716621994972229,-0.32412898540496826,-0.6175709962844849,-0.716621994972229,-0.32412898540496826,-0.6175709962844849,-0.716621994972229,-0.32412898540496826,-0.6175709962844849,-0.716621994972229,0.4038900136947632,-0.43542900681495667,-0.8045340180397034,0.4038900136947632,-0.43542900681495667,-0.8045340180397034,0.4038900136947632,-0.43542900681495667,-0.8045340180397034,0.4038900136947632,-0.43542900681495667,-0.8045340180397034,0.4038900136947632,-0.43542900681495667,-0.8045340180397034,0.4038900136947632,-0.43542900681495667,-0.8045340180397034,0.7341899871826172,-0.35549798607826233,-0.5784339904785156,0.7341899871826172,-0.35549798607826233,-0.5784339904785156,0.7341899871826172,-0.35549798607826233,-0.5784339904785156,0.7341899871826172,-0.35549798607826233,-0.5784339904785156,0.7341899871826172,-0.35549798607826233,-0.5784339904785156,0.7341899871826172,-0.35549798607826233,-0.5784339904785156,0.8428840041160583,-0.4757539927959442,0.2514060139656067,0.8428840041160583,-0.4757539927959442,0.2514060139656067,0.8428840041160583,-0.4757539927959442,0.2514060139656067,0.8428840041160583,-0.4757539927959442,0.2514060139656067,0.8428840041160583,-0.4757539927959442,0.2514060139656067,0.8428840041160583,-0.4757539927959442,0.2514060139656067,0.23920799791812897,-0.4334790110588074,0.868835985660553,0.23920799791812897,-0.4334790110588074,0.868835985660553,0.23920799791812897,-0.4334790110588074,0.868835985660553,0.23920799791812897,-0.4334790110588074,0.868835985660553,0.23920799791812897,-0.4334790110588074,0.868835985660553,0.23920799791812897,-0.4334790110588074,0.868835985660553,-0.2001589983701706,-0.5495319962501526,0.8111420273780823,-0.2001589983701706,-0.5495319962501526,0.8111420273780823,-0.2001589983701706,-0.5495319962501526,0.8111420273780823,-0.2001589983701706,-0.5495319962501526,0.8111420273780823,-0.2001589983701706,-0.5495319962501526,0.8111420273780823,-0.2001589983701706,-0.5495319962501526,0.8111420273780823,-0.5867350101470947,-0.6532530188560486,0.4785430133342743,-0.5867350101470947,-0.6532530188560486,0.4785430133342743,-0.5867350101470947,-0.6532530188560486,0.4785430133342743,-0.5867350101470947,-0.6532530188560486,0.4785430133342743,-0.5867350101470947,-0.6532530188560486,0.4785430133342743,-0.5867350101470947,-0.6532530188560486,0.4785430133342743,-0.27597400546073914,-0.3804889917373657,0.8826469779014587,-0.27597400546073914,-0.3804889917373657,0.8826469779014587,-0.27597400546073914,-0.3804889917373657,0.8826469779014587,-0.27597400546073914,-0.3804889917373657,0.8826469779014587,-0.27597400546073914,-0.3804889917373657,0.8826469779014587,-0.27597400546073914,-0.3804889917373657,0.8826469779014587,-0.9142860174179077,-0.2973800003528595,0.2750380039215088,-0.9142860174179077,-0.2973800003528595,0.2750380039215088,-0.9142860174179077,-0.2973800003528595,0.2750380039215088,-0.9142860174179077,-0.2973800003528595,0.2750380039215088,-0.9142860174179077,-0.2973800003528595,0.2750380039215088,-0.9142860174179077,-0.2973800003528595,0.2750380039215088,-0.8717160224914551,-0.009140499867498875,-0.4899260103702545,-0.8717160224914551,-0.009140499867498875,-0.4899260103702545,-0.8717160224914551,-0.009140499867498875,-0.4899260103702545,-0.8717160224914551,-0.009140499867498875,-0.4899260103702545,-0.8717160224914551,-0.009140499867498875,-0.4899260103702545,-0.8717160224914551,-0.009140499867498875,-0.4899260103702545,-0.01902969926595688,-0.40463799238204956,-0.9142789840698242,-0.01902969926595688,-0.40463799238204956,-0.9142789840698242,-0.01902969926595688,-0.40463799238204956,-0.9142789840698242,-0.01902969926595688,-0.40463799238204956,-0.9142789840698242,-0.01902969926595688,-0.40463799238204956,-0.9142789840698242,-0.01902969926595688,-0.40463799238204956,-0.9142789840698242,0.5910559892654419,-0.15193399786949158,-0.7921919822692871,0.5910559892654419,-0.15193399786949158,-0.7921919822692871,0.5910559892654419,-0.15193399786949158,-0.7921919822692871,0.5910559892654419,-0.15193399786949158,-0.7921919822692871,0.5910559892654419,-0.15193399786949158,-0.7921919822692871,0.5910559892654419,-0.15193399786949158,-0.7921919822692871,0.8927599787712097,-0.11926399916410446,-0.43446099758148193,0.8927599787712097,-0.11926399916410446,-0.43446099758148193,0.8927599787712097,-0.11926399916410446,-0.43446099758148193,0.8927599787712097,-0.11926399916410446,-0.43446099758148193,0.8927599787712097,-0.11926399916410446,-0.43446099758148193,0.8927599787712097,-0.11926399916410446,-0.43446099758148193,0.7948989868164062,-0.16687999665737152,0.5833410024642944,0.7948989868164062,-0.16687999665737152,0.5833410024642944,0.7948989868164062,-0.16687999665737152,0.5833410024642944,0.7948989868164062,-0.16687999665737152,0.5833410024642944,0.7948989868164062,-0.16687999665737152,0.5833410024642944,0.7948989868164062,-0.16687999665737152,0.5833410024642944,0.24081900715827942,-0.09632270038127899,0.9657790064811707,0.24081900715827942,-0.09632270038127899,0.9657790064811707,0.24081900715827942,-0.09632270038127899,0.9657790064811707,0.24081900715827942,-0.09632270038127899,0.9657790064811707,0.24081900715827942,-0.09632270038127899,0.9657790064811707,0.24081900715827942,-0.09632270038127899,0.9657790064811707,-0.549809992313385,0.14245399832725525,0.8230530023574829,-0.549809992313385,0.14245399832725525,0.8230530023574829,-0.549809992313385,0.14245399832725525,0.8230530023574829,-0.549809992313385,0.14245399832725525,0.8230530023574829,-0.549809992313385,0.14245399832725525,0.8230530023574829,-0.549809992313385,0.14245399832725525,0.8230530023574829,-0.978331983089447,0.19056899845600128,-0.08093419671058655,-0.978331983089447,0.19056899845600128,-0.08093419671058655,-0.978331983089447,0.19056899845600128,-0.08093419671058655,-0.978331983089447,0.19056899845600128,-0.08093419671058655,-0.978331983089447,0.19056899845600128,-0.08093419671058655,-0.978331983089447,0.19056899845600128,-0.08093419671058655,-0.8385369777679443,0.3270440101623535,-0.43577298521995544,-0.8385369777679443,0.3270440101623535,-0.43577298521995544,-0.8385369777679443,0.3270440101623535,-0.43577298521995544,-0.8385369777679443,0.3270440101623535,-0.43577298521995544,-0.8385369777679443,0.3270440101623535,-0.43577298521995544,-0.8385369777679443,0.3270440101623535,-0.43577298521995544,0.2657470107078552,-0.10576699674129486,-0.9582229852676392,0.2657470107078552,-0.10576699674129486,-0.9582229852676392,0.2657470107078552,-0.10576699674129486,-0.9582229852676392,0.2657470107078552,-0.10576699674129486,-0.9582229852676392,0.2657470107078552,-0.10576699674129486,-0.9582229852676392,0.2657470107078552,-0.10576699674129486,-0.9582229852676392,0.6423310041427612,-0.2831369936466217,-0.7122099995613098,0.6423310041427612,-0.2831369936466217,-0.7122099995613098,0.6423310041427612,-0.2831369936466217,-0.7122099995613098,0.6423310041427612,-0.2831369936466217,-0.7122099995613098,0.6423310041427612,-0.2831369936466217,-0.7122099995613098,0.6423310041427612,-0.2831369936466217,-0.7122099995613098,0.971671998500824,-0.06283880025148392,-0.2278279960155487,0.971671998500824,-0.06283880025148392,-0.2278279960155487,0.971671998500824,-0.06283880025148392,-0.2278279960155487,0.971671998500824,-0.06283880025148392,-0.2278279960155487,0.971671998500824,-0.06283880025148392,-0.2278279960155487,0.971671998500824,-0.06283880025148392,-0.2278279960155487,0.6733559966087341,0.20715799927711487,0.7097020149230957,0.6733559966087341,0.20715799927711487,0.7097020149230957,0.6733559966087341,0.20715799927711487,0.7097020149230957,0.6733559966087341,0.20715799927711487,0.7097020149230957,0.6733559966087341,0.20715799927711487,0.7097020149230957,0.6733559966087341,0.20715799927711487,0.7097020149230957,0.34046098589897156,0.13227400183677673,0.9309080243110657,0.34046098589897156,0.13227400183677673,0.9309080243110657,0.34046098589897156,0.13227400183677673,0.9309080243110657,0.34046098589897156,0.13227400183677673,0.9309080243110657,0.34046098589897156,0.13227400183677673,0.9309080243110657,0.34046098589897156,0.13227400183677673,0.9309080243110657,-0.9016389846801758,0.2986389994621277,-0.312828004360199,-0.9016389846801758,0.2986389994621277,-0.312828004360199,-0.9016389846801758,0.2986389994621277,-0.312828004360199,-0.9016389846801758,0.2986389994621277,-0.312828004360199,-0.9016389846801758,0.2986389994621277,-0.312828004360199,-0.9016389846801758,0.2986389994621277,-0.312828004360199,-0.8722169995307922,0.17059700191020966,-0.458404004573822,-0.8722169995307922,0.17059700191020966,-0.458404004573822,-0.8722169995307922,0.17059700191020966,-0.458404004573822,-0.8722169995307922,0.17059700191020966,-0.458404004573822,-0.8722169995307922,0.17059700191020966,-0.458404004573822,-0.8722169995307922,0.17059700191020966,-0.458404004573822,0.19586600363254547,0.3220050036907196,-0.9262549877166748,0.19586600363254547,0.3220050036907196,-0.9262549877166748,0.19586600363254547,0.3220050036907196,-0.9262549877166748,0.19586600363254547,0.3220050036907196,-0.9262549877166748,0.19586600363254547,0.3220050036907196,-0.9262549877166748,0.19586600363254547,0.3220050036907196,-0.9262549877166748,0.8584190011024475,0.24052299559116364,-0.4530630111694336,0.8584190011024475,0.24052299559116364,-0.4530630111694336,0.8584190011024475,0.24052299559116364,-0.4530630111694336,0.8584190011024475,0.24052299559116364,-0.4530630111694336,0.8584190011024475,0.24052299559116364,-0.4530630111694336,0.8584190011024475,0.24052299559116364,-0.4530630111694336,0.9314330220222473,0.10063199698925018,0.3497210144996643,0.9314330220222473,0.10063199698925018,0.3497210144996643,0.9314330220222473,0.10063199698925018,0.3497210144996643,0.9314330220222473,0.10063199698925018,0.3497210144996643,0.9314330220222473,0.10063199698925018,0.3497210144996643,0.9314330220222473,0.10063199698925018,0.3497210144996643,0.670229971408844,0.19294500350952148,0.7166330218315125,0.670229971408844,0.19294500350952148,0.7166330218315125,0.670229971408844,0.19294500350952148,0.7166330218315125,0.670229971408844,0.19294500350952148,0.7166330218315125,0.670229971408844,0.19294500350952148,0.7166330218315125,0.670229971408844,0.19294500350952148,0.7166330218315125,0.12276999652385712,0.10141099989414215,0.9872400164604187,0.12276999652385712,0.10141099989414215,0.9872400164604187,0.12276999652385712,0.10141099989414215,0.9872400164604187,0.12276999652385712,0.10141099989414215,0.9872400164604187,0.12276999652385712,0.10141099989414215,0.9872400164604187,0.12276999652385712,0.10141099989414215,0.9872400164604187,-0.77565997838974,0.3322719931602478,0.536607027053833,-0.77565997838974,0.3322719931602478,0.536607027053833,-0.77565997838974,0.3322719931602478,0.536607027053833,-0.77565997838974,0.3322719931602478,0.536607027053833,-0.77565997838974,0.3322719931602478,0.536607027053833,-0.77565997838974,0.3322719931602478,0.536607027053833,-0.9763389825820923,0.0830760970711708,-0.19964900612831116,-0.9763389825820923,0.0830760970711708,-0.19964900612831116,-0.9763389825820923,0.0830760970711708,-0.19964900612831116,-0.9763389825820923,0.0830760970711708,-0.19964900612831116,-0.9763389825820923,0.0830760970711708,-0.19964900612831116,-0.9763389825820923,0.0830760970711708,-0.19964900612831116,-0.5272349715232849,0.3033440113067627,-0.7937290072441101,-0.5272349715232849,0.3033440113067627,-0.7937290072441101,-0.5272349715232849,0.3033440113067627,-0.7937290072441101,-0.5272349715232849,0.3033440113067627,-0.7937290072441101,-0.5272349715232849,0.3033440113067627,-0.7937290072441101,-0.5272349715232849,0.3033440113067627,-0.7937290072441101,0.41588398814201355,0.24524599313735962,-0.8757249712944031,0.41588398814201355,0.24524599313735962,-0.8757249712944031,0.41588398814201355,0.24524599313735962,-0.8757249712944031,0.41588398814201355,0.24524599313735962,-0.8757249712944031,0.41588398814201355,0.24524599313735962,-0.8757249712944031,0.41588398814201355,0.24524599313735962,-0.8757249712944031,0.8709120154380798,0.1310179978609085,-0.47365298867225647,0.8709120154380798,0.1310179978609085,-0.47365298867225647,0.8709120154380798,0.1310179978609085,-0.47365298867225647,0.8709120154380798,0.1310179978609085,-0.47365298867225647,0.8709120154380798,0.1310179978609085,-0.47365298867225647,0.8709120154380798,0.1310179978609085,-0.47365298867225647,0.8761029839515686,0.05920939892530441,0.4784739911556244,0.8761029839515686,0.05920939892530441,0.4784739911556244,0.8761029839515686,0.05920939892530441,0.4784739911556244,0.8761029839515686,0.05920939892530441,0.4784739911556244,0.8761029839515686,0.05920939892530441,0.4784739911556244,0.8761029839515686,0.05920939892530441,0.4784739911556244,0.6617929935455322,0.014518500305712223,0.7495459914207458,0.6617929935455322,0.014518500305712223,0.7495459914207458,0.6617929935455322,0.014518500305712223,0.7495459914207458,0.6617929935455322,0.014518500305712223,0.7495459914207458,0.6617929935455322,0.014518500305712223,0.7495459914207458,0.6617929935455322,0.014518500305712223,0.7495459914207458,-0.319925993680954,0.26186099648475647,0.910535991191864,-0.319925993680954,0.26186099648475647,0.910535991191864,-0.319925993680954,0.26186099648475647,0.910535991191864,-0.319925993680954,0.26186099648475647,0.910535991191864,-0.319925993680954,0.26186099648475647,0.910535991191864,-0.319925993680954,0.26186099648475647,0.910535991191864,-0.87425297498703,0.3179300129413605,0.36688101291656494,-0.87425297498703,0.3179300129413605,0.36688101291656494,-0.87425297498703,0.3179300129413605,0.36688101291656494,-0.87425297498703,0.3179300129413605,0.36688101291656494,-0.87425297498703,0.3179300129413605,0.36688101291656494,-0.87425297498703,0.3179300129413605,0.36688101291656494,0.41034600138664246,0.17995700240135193,-0.8939970135688782,0.41034600138664246,0.17995700240135193,-0.8939970135688782,0.41034600138664246,0.17995700240135193,-0.8939970135688782,0.41034600138664246,0.17995700240135193,-0.8939970135688782,0.41034600138664246,0.17995700240135193,-0.8939970135688782,0.41034600138664246,0.17995700240135193,-0.8939970135688782,0.8957099914550781,0.2628059983253479,-0.3586600124835968,0.8957099914550781,0.2628059983253479,-0.3586600124835968,0.8957099914550781,0.2628059983253479,-0.3586600124835968,0.8957099914550781,0.2628059983253479,-0.3586600124835968,0.8957099914550781,0.2628059983253479,-0.3586600124835968,0.8957099914550781,0.2628059983253479,-0.3586600124835968,0.8399869799613953,0.2879219949245453,0.45991599559783936,0.8399869799613953,0.2879219949245453,0.45991599559783936,0.8399869799613953,0.2879219949245453,0.45991599559783936,0.8399869799613953,0.2879219949245453,0.45991599559783936,0.8399869799613953,0.2879219949245453,0.45991599559783936,0.8399869799613953,0.2879219949245453,0.45991599559783936,0.42694801092147827,0.23087699711322784,0.8743060231208801,0.42694801092147827,0.23087699711322784,0.8743060231208801,0.42694801092147827,0.23087699711322784,0.8743060231208801,0.42694801092147827,0.23087699711322784,0.8743060231208801,0.42694801092147827,0.23087699711322784,0.8743060231208801,0.42694801092147827,0.23087699711322784,0.8743060231208801,-0.4392940104007721,0.2548229992389679,0.8614439964294434,-0.4392940104007721,0.2548229992389679,0.8614439964294434,-0.4392940104007721,0.2548229992389679,0.8614439964294434,-0.4392940104007721,0.2548229992389679,0.8614439964294434,-0.4392940104007721,0.2548229992389679,0.8614439964294434,-0.4392940104007721,0.2548229992389679,0.8614439964294434,-0.842477023601532,0.049831900745630264,0.5364230275154114,-0.842477023601532,0.049831900745630264,0.5364230275154114,-0.842477023601532,0.049831900745630264,0.5364230275154114,-0.842477023601532,0.049831900745630264,0.5364230275154114,-0.842477023601532,0.049831900745630264,0.5364230275154114,-0.842477023601532,0.049831900745630264,0.5364230275154114,-0.8489220142364502,0.022278500720858574,-0.5280479788780212,-0.8489220142364502,0.022278500720858574,-0.5280479788780212,-0.8489220142364502,0.022278500720858574,-0.5280479788780212,-0.8489220142364502,0.022278500720858574,-0.5280479788780212,-0.8489220142364502,0.022278500720858574,-0.5280479788780212,-0.8489220142364502,0.022278500720858574,-0.5280479788780212,-0.5193139910697937,-0.06069700047373772,-0.8524249792098999,-0.5193139910697937,-0.06069700047373772,-0.8524249792098999,-0.5193139910697937,-0.06069700047373772,-0.8524249792098999,-0.5193139910697937,-0.06069700047373772,-0.8524249792098999,-0.5193139910697937,-0.06069700047373772,-0.8524249792098999,-0.5193139910697937,-0.06069700047373772,-0.8524249792098999,0.7114359736442566,0.6211659908294678,0.3286519944667816,0.7114359736442566,0.6211659908294678,0.3286519944667816,0.7114359736442566,0.6211659908294678,0.3286519944667816,0.2969909906387329,0.5501980185508728,0.7804350256919861,0.2969909906387329,0.5501980185508728,0.7804350256919861,0.2969909906387329,0.5501980185508728,0.7804350256919861,-0.27789801359176636,0.46625399589538574,0.8398690223693848,-0.27789801359176636,0.46625399589538574,0.8398690223693848,-0.27789801359176636,0.46625399589538574,0.8398690223693848,-0.8047069907188416,0.40068501234054565,0.43806299567222595,-0.8047069907188416,0.40068501234054565,0.43806299567222595,-0.8047069907188416,0.40068501234054565,0.43806299567222595,-0.826466977596283,0.39371100068092346,-0.4024209976196289,-0.826466977596283,0.39371100068092346,-0.4024209976196289,-0.826466977596283,0.39371100068092346,-0.4024209976196289,-0.36715900897979736,0.4462279975414276,-0.816133975982666,-0.36715900897979736,0.4462279975414276,-0.816133975982666,-0.36715900897979736,0.4462279975414276,-0.816133975982666,0.3473069965839386,0.5567770004272461,-0.7545710206031799,0.3473069965839386,0.5567770004272461,-0.7545710206031799,0.3473069965839386,0.5567770004272461,-0.7545710206031799,0.726285994052887,0.6254630088806152,-0.2851389944553375,0.726285994052887,0.6254630088806152,-0.2851389944553375,0.726285994052887,0.6254630088806152,-0.2851389944553375,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.009031989611685276,-0.7840629816055298,-0.6206160187721252,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.009031989611685276,-0.7840629816055298,-0.6206160187721252,-0.42397400736808777,-0.8076540231704712,-0.4098060131072998,-0.36797401309013367,-0.4791550040245056,-0.7968720197677612,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.42397400736808777,-0.8076540231704712,-0.4098060131072998,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.42397400736808777,-0.8076540231704712,-0.4098060131072998,-0.5874360203742981,-0.8076900243759155,0.05054819956421852,-0.7997400164604187,-0.511879026889801,-0.3136799931526184,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.5874360203742981,-0.8076900243759155,0.05054819956421852,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.5874360203742981,-0.8076900243759155,0.05054819956421852,-0.38683798909187317,-0.7910040020942688,0.4739930033683777,-0.6281530261039734,-0.5862579941749573,0.5115900039672852,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.38683798909187317,-0.7910040020942688,0.4739930033683777,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,-0.38683798909187317,-0.7910040020942688,0.4739930033683777,0.04452129825949669,-0.7860050201416016,0.6166149973869324,-0.1830880045890808,-0.6606040000915527,0.7280669808387756,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.04452129825949669,-0.7860050201416016,0.6166149973869324,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.04452129825949669,-0.7860050201416016,0.6166149973869324,0.4480859935283661,-0.7971259951591492,0.40473300218582153,0.19648900628089905,-0.7212250232696533,0.6642490029335022,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.4480859935283661,-0.7971259951591492,0.40473300218582153,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.4480859935283661,-0.7971259951591492,0.40473300218582153,0.5940340161323547,-0.8029959797859192,-0.048183199018239975,0.7031289935112,-0.6839159727096558,0.19460000097751617,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.5940340161323547,-0.8029959797859192,-0.048183199018239975,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.5940340161323547,-0.8029959797859192,-0.048183199018239975,0.40161699056625366,-0.7847539782524109,-0.47208499908447266,0.6422889828681946,-0.5451629757881165,-0.5387600064277649,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.40161699056625366,-0.7847539782524109,-0.47208499908447266,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,0.40161699056625366,-0.7847539782524109,-0.47208499908447266,-0.009031989611685276,-0.7840629816055298,-0.6206160187721252,0.3780370056629181,-0.5602200031280518,-0.7370499968528748,-0.38268300890922546,0,-0.9238799810409546,-0.38268300890922546,0,-0.9238799810409546,-0.38268300890922546,0,-0.9238799810409546,-0.38268300890922546,0,-0.9238799810409546,-0.38268300890922546,0,-0.9238799810409546,-0.38268300890922546,0,-0.9238799810409546,-0.9238799810409546,0,-0.38268300890922546,-0.9238799810409546,0,-0.38268300890922546,-0.9238799810409546,0,-0.38268300890922546,-0.9238799810409546,0,-0.38268300890922546,-0.9238799810409546,0,-0.38268300890922546,-0.9238799810409546,0,-0.38268300890922546,-0.9238799810409546,0,0.38268300890922546,-0.9238799810409546,0,0.38268300890922546,-0.9238799810409546,0,0.38268300890922546,-0.9238799810409546,0,0.38268300890922546,-0.9238799810409546,0,0.38268300890922546,-0.9238799810409546,0,0.38268300890922546,-0.38268300890922546,0,0.9238799810409546,-0.38268300890922546,0,0.9238799810409546,-0.38268300890922546,0,0.9238799810409546,-0.38268300890922546,0,0.9238799810409546,-0.38268300890922546,0,0.9238799810409546,-0.38268300890922546,0,0.9238799810409546,0.38268300890922546,0,0.9238799810409546,0.38268300890922546,0,0.9238799810409546,0.38268300890922546,0,0.9238799810409546,0.38268300890922546,0,0.9238799810409546,0.38268300890922546,0,0.9238799810409546,0.38268300890922546,0,0.9238799810409546,0.9238799810409546,0,0.38268300890922546,0.9238799810409546,0,0.38268300890922546,0.9238799810409546,0,0.38268300890922546,0.9238799810409546,0,0.38268300890922546,0.9238799810409546,0,0.38268300890922546,0.9238799810409546,0,0.38268300890922546,0.9238799810409546,0,-0.38268300890922546,0.9238799810409546,0,-0.38268300890922546,0.9238799810409546,0,-0.38268300890922546,0.9238799810409546,0,-0.38268300890922546,0.9238799810409546,0,-0.38268300890922546,0.9238799810409546,0,-0.38268300890922546,0.38268300890922546,0,-0.9238799810409546,0.38268300890922546,0,-0.9238799810409546,0.38268300890922546,0,-0.9238799810409546,0.38268300890922546,0,-0.9238799810409546,0.38268300890922546,0,-0.9238799810409546,0.38268300890922546,0,-0.9238799810409546],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"uv\": {\n\t\t\t\t\t\t\"itemSize\": 2,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0,0.5,0,0,0.125,0.5,0,0,0.125,0,0.125,0.5,0.125,0.5,0.125,0,0.25,0.5,0.125,0,0.25,0,0.25,0.5,0.25,0.5,0.25,0,0.375,0.5,0.25,0,0.375,0,0.375,0.5,0.375,0.5,0.375,0,0.5,0.5,0.375,0,0.5,0,0.5,0.5,0.5,0.5,0.5,0,0.625,0.5,0.5,0,0.625,0,0.625,0.5,0.625,0.5,0.625,0,0.75,0.5,0.625,0,0.75,0,0.75,0.5,0.75,0.5,0.75,0,0.875,0.5,0.75,0,0.875,0,0.875,0.5,0.875,0.5,0.875,0,1,0.5,0.875,0,1,0,1,0.5,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,0.5,1,0,1,0,0,0.5,1,0,1,0,0,0.5,1,0,1,0,0,0.5,1,0,1,0,0,0.5,1,0,1,0,0,0.5,1,0,1,0,0,0.5,0,0,1,0,0,0.5,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,0,0.5,0,0,0.125,0.5,0,0,0.125,0,0.125,0.5,0.125,0.5,0.125,0,0.25,0.5,0.125,0,0.25,0,0.25,0.5,0.25,0.5,0.25,0,0.375,0.5,0.25,0,0.375,0,0.375,0.5,0.375,0.5,0.375,0,0.5,0.5,0.375,0,0.5,0,0.5,0.5,0.5,0.5,0.5,0,0.625,0.5,0.5,0,0.625,0,0.625,0.5,0.625,0.5,0.625,0,0.75,0.5,0.625,0,0.75,0,0.75,0.5,0.75,0.5,0.75,0,0.875,0.5,0.75,0,0.875,0,0.875,0.5,0.875,0.5,0.875,0,1,0.5,0.875,0,1,0,1,0.5],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t},\n\t\t\t\t\t\"color\": {\n\t\t\t\t\t\t\"itemSize\": 4,\n\t\t\t\t\t\t\"type\": \"Float32Array\",\n\t\t\t\t\t\t\"array\": [0.3206380009651184,0.38063400983810425,0.13594099879264832,1.2453700304031372,0.29510799050331116,0.3503260016441345,0.1251160055398941,1.4137400388717651,0.31815600395202637,0.3776879906654358,0.13488900661468506,1.2617299556732178,0.29510799050331116,0.3503260016441345,0.1251160055398941,1.4137400388717651,0.29471999406814575,0.34986498951911926,0.12495200335979462,1.4163000583648682,0.31815600395202637,0.3776879906654358,0.13488900661468506,1.2617299556732178,0.31815600395202637,0.3776879906654358,0.13488900661468506,1.2617299556732178,0.29471999406814575,0.34986498951911926,0.12495200335979462,1.4163000583648682,0.3164210021495819,0.3756290078163147,0.13415299355983734,1.2731800079345703,0.29471999406814575,0.34986498951911926,0.12495200335979462,1.4163000583648682,0.2945379912853241,0.34964901208877563,0.12487500160932541,1.4175000190734863,0.3164210021495819,0.3756290078163147,0.13415299355983734,1.2731800079345703,0.3164210021495819,0.3756290078163147,0.13415299355983734,1.2731800079345703,0.2945379912853241,0.34964901208877563,0.12487500160932541,1.4175000190734863,0.3163580000400543,0.3755530118942261,0.1341259926557541,1.2735899686813354,0.2945379912853241,0.34964901208877563,0.12487500160932541,1.4175000190734863,0.29468199610710144,0.349821001291275,0.12493599951267242,1.4165500402450562,0.3163580000400543,0.3755530118942261,0.1341259926557541,1.2735899686813354,0.3163580000400543,0.3755530118942261,0.1341259926557541,1.2735899686813354,0.29468199610710144,0.349821001291275,0.12493599951267242,1.4165500402450562,0.31812700629234314,0.37765398621559143,0.13487599790096283,1.2619199752807617,0.29468199610710144,0.349821001291275,0.12493599951267242,1.4165500402450562,0.29510700702667236,0.35032498836517334,0.1251160055398941,1.4137500524520874,0.31812700629234314,0.37765398621559143,0.13487599790096283,1.2619199752807617,0.31812700629234314,0.37765398621559143,0.13487599790096283,1.2619199752807617,0.29510700702667236,0.35032498836517334,0.1251160055398941,1.4137500524520874,0.32080700993537903,0.38083499670028687,0.136012002825737,1.2442500591278076,0.29510700702667236,0.35032498836517334,0.1251160055398941,1.4137500524520874,0.2955699861049652,0.35087400674819946,0.12531200051307678,1.4106999635696411,0.32080700993537903,0.38083499670028687,0.136012002825737,1.2442500591278076,0.32080700993537903,0.38083499670028687,0.136012002825737,1.2442500591278076,0.2955699861049652,0.35087400674819946,0.12531200051307678,1.4106999635696411,0.3227669894695282,0.3831630051136017,0.1368439942598343,1.2313200235366821,0.2955699861049652,0.35087400674819946,0.12531200051307678,1.4106999635696411,0.29576700925827026,0.35110801458358765,0.1253959983587265,1.4093999862670898,0.3227669894695282,0.3831630051136017,0.1368439942598343,1.2313200235366821,0.3227669894695282,0.3831630051136017,0.1368439942598343,1.2313200235366821,0.29576700925827026,0.35110801458358765,0.1253959983587265,1.4093999862670898,0.3226720094680786,0.38304999470710754,0.13680300116539001,1.231950044631958,0.29576700925827026,0.35110801458358765,0.1253959983587265,1.4093999862670898,0.29555800557136536,0.3508610129356384,0.12530699372291565,1.410770058631897,0.3226720094680786,0.38304999470710754,0.13680300116539001,1.231950044631958,0.3226720094680786,0.38304999470710754,0.13680300116539001,1.231950044631958,0.29555800557136536,0.3508610129356384,0.12530699372291565,1.410770058631897,0.3206380009651184,0.38063400983810425,0.13594099879264832,1.2453700304031372,0.29555800557136536,0.3508610129356384,0.12530699372291565,1.410770058631897,0.29510799050331116,0.3503260016441345,0.1251160055398941,1.4137400388717651,0.3206380009651184,0.38063400983810425,0.13594099879264832,1.2453700304031372,0.3164210021495819,0.3756290078163147,0.13415299355983734,1.2731800079345703,0.3537150025367737,0.4199030101299286,0.14996500313282013,1.027209997177124,0.31815600395202637,0.3776879906654358,0.13488900661468506,1.2617299556732178,0.3537150025367737,0.4199030101299286,0.14996500313282013,1.027209997177124,0.35514000058174133,0.4215939939022064,0.15056900680065155,1.0178099870681763,0.31815600395202637,0.3776879906654358,0.13488900661468506,1.2617299556732178,0.31815600395202637,0.3776879906654358,0.13488900661468506,1.2617299556732178,0.35514000058174133,0.4215939939022064,0.15056900680065155,1.0178099870681763,0.3206380009651184,0.38063400983810425,0.13594099879264832,1.2453700304031372,0.35514000058174133,0.4215939939022064,0.15056900680065155,1.0178099870681763,0.3574979901313782,0.42439401149749756,0.15156899392604828,1.0022599697113037,0.3206380009651184,0.38063400983810425,0.13594099879264832,1.2453700304031372,0.3206380009651184,0.38063400983810425,0.13594099879264832,1.2453700304031372,0.3574979901313782,0.42439401149749756,0.15156899392604828,1.0022599697113037,0.3226720094680786,0.38304999470710754,0.13680300116539001,1.231950044631958,0.3574979901313782,0.42439401149749756,0.15156899392604828,1.0022599697113037,0.35942399501800537,0.4266799986362457,0.15238599479198456,0.9895560145378113,0.3226720094680786,0.38304999470710754,0.13680300116539001,1.231950044631958,0.3226720094680786,0.38304999470710754,0.13680300116539001,1.231950044631958,0.35942399501800537,0.4266799986362457,0.15238599479198456,0.9895560145378113,0.3227669894695282,0.3831630051136017,0.1368439942598343,1.2313200235366821,0.35942399501800537,0.4266799986362457,0.15238599479198456,0.9895560145378113,0.35956400632858276,0.4268459975719452,0.1524450033903122,0.9886329770088196,0.3227669894695282,0.3831630051136017,0.1368439942598343,1.2313200235366821,0.3227669894695282,0.3831630051136017,0.1368439942598343,1.2313200235366821,0.35956400632858276,0.4268459975719452,0.1524450033903122,0.9886329770088196,0.32080700993537903,0.38083499670028687,0.136012002825737,1.2442500591278076,0.35956400632858276,0.4268459975719452,0.1524450033903122,0.9886329770088196,0.3579699993133545,0.42495399713516235,0.1517689973115921,0.9991440176963806,0.32080700993537903,0.38083499670028687,0.136012002825737,1.2442500591278076,0.32080700993537903,0.38083499670028687,0.136012002825737,1.2442500591278076,0.3579699993133545,0.42495399713516235,0.1517689973115921,0.9991440176963806,0.31812700629234314,0.37765398621559143,0.13487599790096283,1.2619199752807617,0.3579699993133545,0.42495399713516235,0.1517689973115921,0.9991440176963806,0.3557159900665283,0.4222779870033264,0.1508129984140396,1.014009952545166,0.31812700629234314,0.37765398621559143,0.13487599790096283,1.2619199752807617,0.31812700629234314,0.37765398621559143,0.13487599790096283,1.2619199752807617,0.3557159900665283,0.4222779870033264,0.1508129984140396,1.014009952545166,0.3163580000400543,0.3755530118942261,0.1341259926557541,1.2735899686813354,0.3557159900665283,0.4222779870033264,0.1508129984140396,1.014009952545166,0.35398200154304504,0.4202190041542053,0.15007799863815308,1.0254499912261963,0.3163580000400543,0.3755530118942261,0.1341259926557541,1.2735899686813354,0.3163580000400543,0.3755530118942261,0.1341259926557541,1.2735899686813354,0.35398200154304504,0.4202190041542053,0.15007799863815308,1.0254499912261963,0.3164210021495819,0.3756290078163147,0.13415299355983734,1.2731800079345703,0.35398200154304504,0.4202190041542053,0.15007799863815308,1.0254499912261963,0.3537150025367737,0.4199030101299286,0.14996500313282013,1.027209997177124,0.3164210021495819,0.3756290078163147,0.13415299355983734,1.2731800079345703,0.3557159900665283,0.4222779870033264,0.1508129984140396,1.014009952545166,0.4003030061721802,0.4752100110054016,0.16971799731254578,0.7199440002441406,0.35398200154304504,0.4202190041542053,0.15007799863815308,1.0254499912261963,0.4003030061721802,0.4752100110054016,0.16971799731254578,0.7199440002441406,0.3993009924888611,0.47402000427246094,0.16929300129413605,0.7265539765357971,0.35398200154304504,0.4202190041542053,0.15007799863815308,1.0254499912261963,0.35398200154304504,0.4202190041542053,0.15007799863815308,1.0254499912261963,0.3993009924888611,0.47402000427246094,0.16929300129413605,0.7265539765357971,0.3537150025367737,0.4199030101299286,0.14996500313282013,1.027209997177124,0.3993009924888611,0.47402000427246094,0.16929300129413605,0.7265539765357971,0.39889100193977356,0.4735339879989624,0.1691190004348755,0.7292569875717163,0.3537150025367737,0.4199030101299286,0.14996500313282013,1.027209997177124,0.3537150025367737,0.4199030101299286,0.14996500313282013,1.027209997177124,0.39889100193977356,0.4735339879989624,0.1691190004348755,0.7292569875717163,0.35514000058174133,0.4215939939022064,0.15056900680065155,1.0178099870681763,0.39889100193977356,0.4735339879989624,0.1691190004348755,0.7292569875717163,0.39937299489974976,0.4741060137748718,0.16932399570941925,0.7260779738426208,0.35514000058174133,0.4215939939022064,0.15056900680065155,1.0178099870681763,0.35514000058174133,0.4215939939022064,0.15056900680065155,1.0178099870681763,0.39937299489974976,0.4741060137748718,0.16932399570941925,0.7260779738426208,0.3574979901313782,0.42439401149749756,0.15156899392604828,1.0022599697113037,0.39937299489974976,0.4741060137748718,0.16932399570941925,0.7260779738426208,0.4004780054092407,0.47541800141334534,0.16979199647903442,0.7187910079956055,0.3574979901313782,0.42439401149749756,0.15156899392604828,1.0022599697113037,0.3574979901313782,0.42439401149749756,0.15156899392604828,1.0022599697113037,0.4004780054092407,0.47541800141334534,0.16979199647903442,0.7187910079956055,0.35942399501800537,0.4266799986362457,0.15238599479198456,0.9895560145378113,0.4004780054092407,0.47541800141334534,0.16979199647903442,0.7187910079956055,0.4015420079231262,0.4766809940338135,0.17024299502372742,0.711775004863739,0.35942399501800537,0.4266799986362457,0.15238599479198456,0.9895560145378113,0.35942399501800537,0.4266799986362457,0.15238599479198456,0.9895560145378113,0.4015420079231262,0.4766809940338135,0.17024299502372742,0.711775004863739,0.35956400632858276,0.4268459975719452,0.1524450033903122,0.9886329770088196,0.4015420079231262,0.4766809940338135,0.17024299502372742,0.711775004863739,0.4018400013446808,0.4770349860191345,0.1703689992427826,0.7098090052604675,0.35956400632858276,0.4268459975719452,0.1524450033903122,0.9886329770088196,0.35956400632858276,0.4268459975719452,0.1524450033903122,0.9886329770088196,0.4018400013446808,0.4770349860191345,0.1703689992427826,0.7098090052604675,0.3579699993133545,0.42495399713516235,0.1517689973115921,0.9991440176963806,0.4018400013446808,0.4770349860191345,0.1703689992427826,0.7098090052604675,0.40130600333213806,0.4763999879360199,0.1701429933309555,0.7133309841156006,0.3579699993133545,0.42495399713516235,0.1517689973115921,0.9991440176963806,0.3579699993133545,0.42495399713516235,0.1517689973115921,0.9991440176963806,0.40130600333213806,0.4763999879360199,0.1701429933309555,0.7133309841156006,0.3557159900665283,0.4222779870033264,0.1508129984140396,1.014009952545166,0.40130600333213806,0.4763999879360199,0.1701429933309555,0.7133309841156006,0.4003030061721802,0.4752100110054016,0.16971799731254578,0.7199440002441406,0.3557159900665283,0.4222779870033264,0.1508129984140396,1.014009952545166,0.4003030061721802,0.4752100110054016,0.16971799731254578,0.7199440002441406,0.44751399755477905,0.5312579870223999,0.18973499536514282,0.40856900811195374,0.3993009924888611,0.47402000427246094,0.16929300129413605,0.7265539765357971,0.44751399755477905,0.5312579870223999,0.18973499536514282,0.40856900811195374,0.4476589858531952,0.5314289927482605,0.18979600071907043,0.4076170027256012,0.3993009924888611,0.47402000427246094,0.16929300129413605,0.7265539765357971,0.3993009924888611,0.47402000427246094,0.16929300129413605,0.7265539765357971,0.4476589858531952,0.5314289927482605,0.18979600071907043,0.4076170027256012,0.39889100193977356,0.4735339879989624,0.1691190004348755,0.7292569875717163,0.4476589858531952,0.5314289927482605,0.18979600071907043,0.4076170027256012,0.44754499197006226,0.5312939882278442,0.18974800407886505,0.40836599469184875,0.39889100193977356,0.4735339879989624,0.1691190004348755,0.7292569875717163,0.39889100193977356,0.4735339879989624,0.1691190004348755,0.7292569875717163,0.44754499197006226,0.5312939882278442,0.18974800407886505,0.40836599469184875,0.39937299489974976,0.4741060137748718,0.16932399570941925,0.7260779738426208,0.44754499197006226,0.5312939882278442,0.18974800407886505,0.40836599469184875,0.4472070038318634,0.530892014503479,0.1896039992570877,0.4105980098247528,0.39937299489974976,0.4741060137748718,0.16932399570941925,0.7260779738426208,0.39937299489974976,0.4741060137748718,0.16932399570941925,0.7260779738426208,0.4472070038318634,0.530892014503479,0.1896039992570877,0.4105980098247528,0.4004780054092407,0.47541800141334534,0.16979199647903442,0.7187910079956055,0.4472070038318634,0.530892014503479,0.1896039992570877,0.4105980098247528,0.44686898589134216,0.5304920077323914,0.18946099281311035,0.41282200813293457,0.4004780054092407,0.47541800141334534,0.16979199647903442,0.7187910079956055,0.4004780054092407,0.47541800141334534,0.16979199647903442,0.7187910079956055,0.44686898589134216,0.5304920077323914,0.18946099281311035,0.41282200813293457,0.4015420079231262,0.4766809940338135,0.17024299502372742,0.711775004863739,0.44686898589134216,0.5304920077323914,0.18946099281311035,0.41282200813293457,0.44675299525260925,0.5303540229797363,0.18941199779510498,0.4135870039463043,0.4015420079231262,0.4766809940338135,0.17024299502372742,0.711775004863739,0.4015420079231262,0.4766809940338135,0.17024299502372742,0.711775004863739,0.44675299525260925,0.5303540229797363,0.18941199779510498,0.4135870039463043,0.4018400013446808,0.4770349860191345,0.1703689992427826,0.7098090052604675,0.44675299525260925,0.5303540229797363,0.18941199779510498,0.4135870039463043,0.4469130039215088,0.5305430293083191,0.1894800066947937,0.41253700852394104,0.4018400013446808,0.4770349860191345,0.1703689992427826,0.7098090052604675,0.4018400013446808,0.4770349860191345,0.1703689992427826,0.7098090052604675,0.4469130039215088,0.5305430293083191,0.1894800066947937,0.41253700852394104,0.40130600333213806,0.4763999879360199,0.1701429933309555,0.7133309841156006,0.4469130039215088,0.5305430293083191,0.1894800066947937,0.41253700852394104,0.44722700119018555,0.5309159755706787,0.1896129995584488,0.4104659855365753,0.40130600333213806,0.4763999879360199,0.1701429933309555,0.7133309841156006,0.40130600333213806,0.4763999879360199,0.1701429933309555,0.7133309841156006,0.44722700119018555,0.5309159755706787,0.1896129995584488,0.4104659855365753,0.4003030061721802,0.4752100110054016,0.16971799731254578,0.7199440002441406,0.44722700119018555,0.5309159755706787,0.1896129995584488,0.4104659855365753,0.44751399755477905,0.5312579870223999,0.18973499536514282,0.40856900811195374,0.4003030061721802,0.4752100110054016,0.16971799731254578,0.7199440002441406,0.4476589858531952,0.5314289927482605,0.18979600071907043,0.4076170027256012,0.49059000611305237,0.5823950171470642,0.20799799263477325,0.12447000294923782,0.44754499197006226,0.5312939882278442,0.18974800407886505,0.40836599469184875,0.49059000611305237,0.5823950171470642,0.20799799263477325,0.12447000294923782,0.4912300109863281,0.5831559896469116,0.20826999843120575,0.1202469989657402,0.44754499197006226,0.5312939882278442,0.18974800407886505,0.40836599469184875,0.44754499197006226,0.5312939882278442,0.18974800407886505,0.40836599469184875,0.4912300109863281,0.5831559896469116,0.20826999843120575,0.1202469989657402,0.4472070038318634,0.530892014503479,0.1896039992570877,0.4105980098247528,0.4912300109863281,0.5831559896469116,0.20826999843120575,0.1202469989657402,0.49103298783302307,0.5829219818115234,0.20818600058555603,0.12154500186443329,0.4472070038318634,0.530892014503479,0.1896039992570877,0.4105980098247528,0.4472070038318634,0.530892014503479,0.1896039992570877,0.4105980098247528,0.49103298783302307,0.5829219818115234,0.20818600058555603,0.12154500186443329,0.44686898589134216,0.5304920077323914,0.18946099281311035,0.41282200813293457,0.49103298783302307,0.5829219818115234,0.20818600058555603,0.12154500186443329,0.4901160001754761,0.581833004951477,0.20779700577259064,0.12759600579738617,0.44686898589134216,0.5304920077323914,0.18946099281311035,0.41282200813293457,0.44686898589134216,0.5304920077323914,0.18946099281311035,0.41282200813293457,0.4901160001754761,0.581833004951477,0.20779700577259064,0.12759600579738617,0.44675299525260925,0.5303540229797363,0.18941199779510498,0.4135870039463043,0.4901160001754761,0.581833004951477,0.20779700577259064,0.12759600579738617,0.4890339970588684,0.5805490016937256,0.20733900368213654,0.13472899794578552,0.44675299525260925,0.5303540229797363,0.18941199779510498,0.4135870039463043,0.44675299525260925,0.5303540229797363,0.18941199779510498,0.4135870039463043,0.4890339970588684,0.5805490016937256,0.20733900368213654,0.13472899794578552,0.4469130039215088,0.5305430293083191,0.1894800066947937,0.41253700852394104,0.4890339970588684,0.5805490016937256,0.20733900368213654,0.13472899794578552,0.4884510040283203,0.5798559784889221,0.20709200203418732,0.13857600092887878,0.4469130039215088,0.5305430293083191,0.1894800066947937,0.41253700852394104,0.4469130039215088,0.5305430293083191,0.1894800066947937,0.41253700852394104,0.4884510040283203,0.5798559784889221,0.20709200203418732,0.13857600092887878,0.44722700119018555,0.5309159755706787,0.1896129995584488,0.4104659855365753,0.4884510040283203,0.5798559784889221,0.20709200203418732,0.13857600092887878,0.488644003868103,0.5800859928131104,0.20717400312423706,0.1373009979724884,0.44722700119018555,0.5309159755706787,0.1896129995584488,0.4104659855365753,0.44722700119018555,0.5309159755706787,0.1896129995584488,0.4104659855365753,0.488644003868103,0.5800859928131104,0.20717400312423706,0.1373009979724884,0.44751399755477905,0.5312579870223999,0.18973499536514282,0.40856900811195374,0.488644003868103,0.5800859928131104,0.20717400312423706,0.1373009979724884,0.4894990026950836,0.5811010003089905,0.2075359970331192,0.13166099786758423,0.44751399755477905,0.5312579870223999,0.18973499536514282,0.40856900811195374,0.44751399755477905,0.5312579870223999,0.18973499536514282,0.40856900811195374,0.4894990026950836,0.5811010003089905,0.2075359970331192,0.13166099786758423,0.4476589858531952,0.5314289927482605,0.18979600071907043,0.4076170027256012,0.4894990026950836,0.5811010003089905,0.2075359970331192,0.13166099786758423,0.49059000611305237,0.5823950171470642,0.20799799263477325,0.12447000294923782,0.4476589858531952,0.5314289927482605,0.18979600071907043,0.4076170027256012,0.49059000611305237,0.5823950171470642,0.20799799263477325,0.12447000294923782,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4912300109863281,0.5831559896469116,0.20826999843120575,0.1202469989657402,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4912300109863281,0.5831559896469116,0.20826999843120575,0.1202469989657402,0.4912300109863281,0.5831559896469116,0.20826999843120575,0.1202469989657402,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.49103298783302307,0.5829219818115234,0.20818600058555603,0.12154500186443329,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.49103298783302307,0.5829219818115234,0.20818600058555603,0.12154500186443329,0.49103298783302307,0.5829219818115234,0.20818600058555603,0.12154500186443329,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4901160001754761,0.581833004951477,0.20779700577259064,0.12759600579738617,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4901160001754761,0.581833004951477,0.20779700577259064,0.12759600579738617,0.4901160001754761,0.581833004951477,0.20779700577259064,0.12759600579738617,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4890339970588684,0.5805490016937256,0.20733900368213654,0.13472899794578552,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4890339970588684,0.5805490016937256,0.20733900368213654,0.13472899794578552,0.4890339970588684,0.5805490016937256,0.20733900368213654,0.13472899794578552,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4884510040283203,0.5798559784889221,0.20709200203418732,0.13857600092887878,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4884510040283203,0.5798559784889221,0.20709200203418732,0.13857600092887878,0.4884510040283203,0.5798559784889221,0.20709200203418732,0.13857600092887878,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.488644003868103,0.5800859928131104,0.20717400312423706,0.1373009979724884,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.488644003868103,0.5800859928131104,0.20717400312423706,0.1373009979724884,0.488644003868103,0.5800859928131104,0.20717400312423706,0.1373009979724884,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4894990026950836,0.5811010003089905,0.2075359970331192,0.13166099786758423,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.4894990026950836,0.5811010003089905,0.2075359970331192,0.13166099786758423,0.4894990026950836,0.5811010003089905,0.2075359970331192,0.13166099786758423,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.49059000611305237,0.5823950171470642,0.20799799263477325,0.12447000294923782,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.49059000611305237,0.5823950171470642,0.20799799263477325,0.12447000294923782,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.5094619989395142,0.6047999858856201,0.2160000056028366,3.045599937438965,0.29510799050331116,0.3503260016441345,0.1251160055398941,1.4137400388717651,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29471999406814575,0.34986498951911926,0.12495200335979462,1.4163000583648682,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29471999406814575,0.34986498951911926,0.12495200335979462,1.4163000583648682,0.29471999406814575,0.34986498951911926,0.12495200335979462,1.4163000583648682,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2945379912853241,0.34964901208877563,0.12487500160932541,1.4175000190734863,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2945379912853241,0.34964901208877563,0.12487500160932541,1.4175000190734863,0.2945379912853241,0.34964901208877563,0.12487500160932541,1.4175000190734863,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29468199610710144,0.349821001291275,0.12493599951267242,1.4165500402450562,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29468199610710144,0.349821001291275,0.12493599951267242,1.4165500402450562,0.29468199610710144,0.349821001291275,0.12493599951267242,1.4165500402450562,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29510700702667236,0.35032498836517334,0.1251160055398941,1.4137500524520874,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29510700702667236,0.35032498836517334,0.1251160055398941,1.4137500524520874,0.29510700702667236,0.35032498836517334,0.1251160055398941,1.4137500524520874,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2955699861049652,0.35087400674819946,0.12531200051307678,1.4106999635696411,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2955699861049652,0.35087400674819946,0.12531200051307678,1.4106999635696411,0.2955699861049652,0.35087400674819946,0.12531200051307678,1.4106999635696411,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29576700925827026,0.35110801458358765,0.1253959983587265,1.4093999862670898,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29576700925827026,0.35110801458358765,0.1253959983587265,1.4093999862670898,0.29576700925827026,0.35110801458358765,0.1253959983587265,1.4093999862670898,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29555800557136536,0.3508610129356384,0.12530699372291565,1.410770058631897,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29555800557136536,0.3508610129356384,0.12530699372291565,1.410770058631897,0.29555800557136536,0.3508610129356384,0.12530699372291565,1.410770058631897,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29510799050331116,0.3503260016441345,0.1251160055398941,1.4137400388717651,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.2911269962787628,0.3456000089645386,0.12342900037765503,1.440000057220459,0.29510799050331116,0.3503260016441345,0.1251160055398941,1.4137400388717651,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1,0.274509996175766,0.1689630001783371,0.04956730082631111,1],\n\t\t\t\t\t\t\"normalized\": false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"boundingSphere\": {\n\t\t\t\t\t\"center\": [-0.029629945755004883,12.780500292778015,0.37890005111694336],\n\t\t\t\t\t\"radius\": 14.06198179331316\n\t\t\t\t}\n\t\t\t}\n\t\t}],\n\t\"materials\": [\n\t\t{\n\t\t\t\"uuid\": \"8EB46EB1-4ECF-4069-ABF1-36B3E34524F9\",\n\t\t\t\"type\": \"MeshBasicMaterial\",\n\t\t\t\"name\": \"tree\",\n\t\t\t\"color\": 16777215,\n\t\t\t\"shading\": 1,\n\t\t\t\"vertexColors\": 2,\n\t\t\t\"depthFunc\": 3,\n\t\t\t\"depthTest\": true,\n\t\t\t\"depthWrite\": true,\n\t\t\t\"skinning\": false,\n\t\t\t\"morphTargets\": false\n\t\t}],\n\t\"object\": {\n\t\t\"uuid\": \"513ABE68-B385-43DE-806D-E0A0AA039E1D\",\n\t\t\"type\": \"Mesh\",\n\t\t\"name\": \"tree\",\n\t\t\"matrix\": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],\n\t\t\"geometry\": \"D470D633-9912-4F15-BD99-BB90CF28BAD0\",\n\t\t\"material\": \"8EB46EB1-4ECF-4069-ABF1-36B3E34524F9\"\n\t}\n}"
  },
  {
    "path": "resources/balloon.fbx",
    "content": "; FBX 7.4.0 project file\n; Copyright (C) 1997-2010 Autodesk Inc. and/or its licensors.\n; All rights reserved.\n; ----------------------------------------------------\n\nFBXHeaderExtension:  {\n\tFBXHeaderVersion: 1003\n\tFBXVersion: 7400\n\tCreationTimeStamp:  {\n\t\tVersion: 1000\n\t\tYear: 2016\n\t\tMonth: 9\n\t\tDay: 25\n\t\tHour: 1\n\t\tMinute: 48\n\t\tSecond: 8\n\t\tMillisecond: 0\n\t}\n\tCreator: \"FBX SDK/FBX Plugins version 2015.1\"\n\tSceneInfo: \"SceneInfo::GlobalInfo\", \"UserData\" {\n\t\tType: \"UserData\"\n\t\tVersion: 100\n\t\tMetaData:  {\n\t\t\tVersion: 100\n\t\t\tTitle: \"balloon\"\n\t\t\tSubject: \"\"\n\t\t\tAuthor: \"\"\n\t\t\tKeywords: \"\"\n\t\t\tRevision: \"\"\n\t\t\tComment: \"\"\n\t\t}\n\t\tProperties70:  {\n\t\t\tP: \"DocumentUrl\", \"KString\", \"Url\", \"\", \"/Users/alexanderperrin/Projects/flight/resources/balloon.fbx\"\n\t\t\tP: \"SrcDocumentUrl\", \"KString\", \"Url\", \"\", \"/Users/alexanderperrin/Projects/flight/resources/balloon.fbx\"\n\t\t\tP: \"Original\", \"Compound\", \"\", \"\"\n\t\t\tP: \"Original|ApplicationVendor\", \"KString\", \"\", \"\", \"The Foundry\"\n\t\t\tP: \"Original|ApplicationName\", \"KString\", \"\", \"\", \"MODO\"\n\t\t\tP: \"Original|ApplicationVersion\", \"KString\", \"\", \"\", \"\"\n\t\t\tP: \"Original|DateTime_GMT\", \"DateTime\", \"\", \"\", \"25/09/2016 01:48:08.000\"\n\t\t\tP: \"Original|FileName\", \"KString\", \"\", \"\", \"/Users/alexanderperrin/Projects/sunday-drive/resources/modo/balloon.lxo\"\n\t\t\tP: \"LastSaved\", \"Compound\", \"\", \"\"\n\t\t\tP: \"LastSaved|ApplicationVendor\", \"KString\", \"\", \"\", \"The Foundry\"\n\t\t\tP: \"LastSaved|ApplicationName\", \"KString\", \"\", \"\", \"MODO\"\n\t\t\tP: \"LastSaved|ApplicationVersion\", \"KString\", \"\", \"\", \"\"\n\t\t\tP: \"LastSaved|DateTime_GMT\", \"DateTime\", \"\", \"\", \"25/09/2016 01:48:08.000\"\n\t\t}\n\t}\n}\nGlobalSettings:  {\n\tVersion: 1000\n\tProperties70:  {\n\t\tP: \"UpAxis\", \"int\", \"Integer\", \"\",1\n\t\tP: \"UpAxisSign\", \"int\", \"Integer\", \"\",1\n\t\tP: \"FrontAxis\", \"int\", \"Integer\", \"\",2\n\t\tP: \"FrontAxisSign\", \"int\", \"Integer\", \"\",1\n\t\tP: \"CoordAxis\", \"int\", \"Integer\", \"\",0\n\t\tP: \"CoordAxisSign\", \"int\", \"Integer\", \"\",1\n\t\tP: \"OriginalUpAxis\", \"int\", \"Integer\", \"\",-1\n\t\tP: \"OriginalUpAxisSign\", \"int\", \"Integer\", \"\",1\n\t\tP: \"UnitScaleFactor\", \"double\", \"Number\", \"\",1\n\t\tP: \"OriginalUnitScaleFactor\", \"double\", \"Number\", \"\",1\n\t\tP: \"AmbientColor\", \"ColorRGB\", \"Color\", \"\",0,0,0\n\t\tP: \"DefaultCamera\", \"KString\", \"\", \"\", \"Producer Perspective\"\n\t\tP: \"TimeMode\", \"enum\", \"\", \"\",0\n\t\tP: \"TimeProtocol\", \"enum\", \"\", \"\",2\n\t\tP: \"SnapOnFrameMode\", \"enum\", \"\", \"\",0\n\t\tP: \"TimeSpanStart\", \"KTime\", \"Time\", \"\",0\n\t\tP: \"TimeSpanStop\", \"KTime\", \"Time\", \"\",46186158000\n\t\tP: \"CustomFrameRate\", \"double\", \"Number\", \"\",-1\n\t\tP: \"TimeMarker\", \"Compound\", \"\", \"\"\n\t\tP: \"CurrentTimeMarker\", \"int\", \"Integer\", \"\",-1\n\t}\n}\n\n; Documents Description\n;------------------------------------------------------------------\n\nDocuments:  {\n\tCount: 1\n\tDocument: 140409716432592, \"\", \"Scene\" {\n\t\tProperties70:  {\n\t\t\tP: \"SourceObject\", \"object\", \"\", \"\"\n\t\t\tP: \"ActiveAnimStackName\", \"KString\", \"\", \"\", \"\"\n\t\t}\n\t\tRootNode: 0\n\t}\n}\n\n; Document References\n;------------------------------------------------------------------\n\nReferences:  {\n}\n\n; Object definitions\n;------------------------------------------------------------------\n\nDefinitions:  {\n\tVersion: 100\n\tCount: 3\n\tObjectType: \"GlobalSettings\" {\n\t\tCount: 1\n\t}\n\tObjectType: \"Geometry\" {\n\t\tCount: 1\n\t\tPropertyTemplate: \"FbxMesh\" {\n\t\t\tProperties70:  {\n\t\t\t\tP: \"Color\", \"ColorRGB\", \"Color\", \"\",0.8,0.8,0.8\n\t\t\t\tP: \"BBoxMin\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"BBoxMax\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"Primary Visibility\", \"bool\", \"\", \"\",1\n\t\t\t\tP: \"Casts Shadows\", \"bool\", \"\", \"\",1\n\t\t\t\tP: \"Receive Shadows\", \"bool\", \"\", \"\",1\n\t\t\t}\n\t\t}\n\t}\n\tObjectType: \"Model\" {\n\t\tCount: 1\n\t\tPropertyTemplate: \"FbxNode\" {\n\t\t\tProperties70:  {\n\t\t\t\tP: \"QuaternionInterpolate\", \"enum\", \"\", \"\",0\n\t\t\t\tP: \"RotationOffset\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"RotationPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"ScalingOffset\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"ScalingPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"TranslationActive\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"TranslationMin\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"TranslationMax\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"TranslationMinX\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"TranslationMinY\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"TranslationMinZ\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"TranslationMaxX\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"TranslationMaxY\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"TranslationMaxZ\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationOrder\", \"enum\", \"\", \"\",0\n\t\t\t\tP: \"RotationSpaceForLimitOnly\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationStiffnessX\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"RotationStiffnessY\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"RotationStiffnessZ\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"AxisLen\", \"double\", \"Number\", \"\",10\n\t\t\t\tP: \"PreRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"PostRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"RotationActive\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationMin\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"RotationMax\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"RotationMinX\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationMinY\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationMinZ\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationMaxX\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationMaxY\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"RotationMaxZ\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"InheritType\", \"enum\", \"\", \"\",0\n\t\t\t\tP: \"ScalingActive\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"ScalingMin\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",1,1,1\n\t\t\t\tP: \"ScalingMinX\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"ScalingMinY\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"ScalingMinZ\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"ScalingMaxX\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"ScalingMaxY\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"ScalingMaxZ\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"GeometricTranslation\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"GeometricRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\t\tP: \"GeometricScaling\", \"Vector3D\", \"Vector\", \"\",1,1,1\n\t\t\t\tP: \"MinDampRangeX\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MinDampRangeY\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MinDampRangeZ\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MaxDampRangeX\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MaxDampRangeY\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MaxDampRangeZ\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MinDampStrengthX\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MinDampStrengthY\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MinDampStrengthZ\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MaxDampStrengthX\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MaxDampStrengthY\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"MaxDampStrengthZ\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"PreferedAngleX\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"PreferedAngleY\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"PreferedAngleZ\", \"double\", \"Number\", \"\",0\n\t\t\t\tP: \"LookAtProperty\", \"object\", \"\", \"\"\n\t\t\t\tP: \"UpVectorProperty\", \"object\", \"\", \"\"\n\t\t\t\tP: \"Show\", \"bool\", \"\", \"\",1\n\t\t\t\tP: \"NegativePercentShapeSupport\", \"bool\", \"\", \"\",1\n\t\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",-1\n\t\t\t\tP: \"Freeze\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"LODBox\", \"bool\", \"\", \"\",0\n\t\t\t\tP: \"Lcl Translation\", \"Lcl Translation\", \"\", \"A\",0,0,0\n\t\t\t\tP: \"Lcl Rotation\", \"Lcl Rotation\", \"\", \"A\",0,0,0\n\t\t\t\tP: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",1,1,1\n\t\t\t\tP: \"Visibility\", \"Visibility\", \"\", \"A\",1\n\t\t\t\tP: \"Visibility Inheritance\", \"Visibility Inheritance\", \"\", \"\",1\n\t\t\t}\n\t\t}\n\t}\n}\n\n; Object properties\n;------------------------------------------------------------------\n\nObjects:  {\n\tGeometry: 140409716540784, \"Geometry::\", \"Mesh\" {\n\t\tProperties70:  {\n\t\t\tP: \"PolygonPartNames\", \"stringlist\", \"\", \"U\",0, \"Default\"\n\t\t}\n\t\tVertices: *2883 {\n\t\t\ta: -0.0644859857857227,2220.34130096436,0.0827373587526381,-0.0644852581899613,2205.41343688965,-8.70132595300674,-0.0644852465484291,2205.27019500732,8.61858949065208,-235.098171234131,2189.3985748291,0.0827373587526381,-231.234550476074,2174.97940063477,-8.70132595300674,-231.197476387024,2174.84092712402,8.61858949065208,-454.174852371216,2098.65379333496,0.0827373587526381,-446.710968017578,2085.72597503662,-8.70132595300674,-446.6392993927,2085.60180664062,8.61858949065208,-642.300224304199,1954.30011749268,0.0827373587526381,-631.74467086792,1943.74465942383,-8.70132595300674,-631.643342971802,1943.64337921143,8.61858949065208,-786.653900146484,1766.17488861084,0.0827373587526381,-773.725986480713,1758.71105194092,-8.70132595300674,-773.601913452148,1758.63933563232,8.61858949065208,-877.398300170898,1547.09815979004,0.0827373587526381,-862.979125976562,1543.23463439941,-8.70132595300674,-862.840747833252,1543.19753646851,8.61858949065208,-908.349609375,1311.99979782104,0.0827373587526381,-893.421745300293,1311.99979782104,-8.70132595300674,-893.278503417969,1311.99979782104,8.61858949065208,-877.398300170898,1076.90181732178,0.0827373587526381,-862.979125976562,1080.76543807983,-8.70132595300674,-862.840747833252,1080.80253601074,8.61858949065208,-786.653900146484,857.825088500977,0.0827373587526381,-773.726034164429,865.28902053833,-8.70132595300674,-773.601913452148,865.360736846924,8.61858949065208,-642.918539047241,670.377683639526,0.0827373587526381,-631.44006729126,679.921531677246,-8.70132595300674,-631.329870223999,680.013132095337,8.61858949065208,-118.19474697113,88.2642507553101,0.0827373587526381,-104.257667064667,93.6119496822357,-8.70132595300674,-104.123866558075,93.6632871627808,8.61858949065208,-118.808472156525,59.1516852378845,0.0827373587526381,-103.95519733429,57.6616108417511,-8.70132595300674,-103.812611103058,57.647305727005,8.61858949065208,-144.400012493134,-66.8691158294678,0.0827373587526381,-129.815053939819,-70.050173997879,-8.70132595300674,-129.675042629242,-70.0807094573975,8.61858949065208,\n0.0129056701553054,2220.34130096436,0.104102620389313,-6.19836449623108,2205.41343688965,-6.10716864466667,6.04866519570351,2205.27019500732,6.13986104726791,-166.181004047394,2189.3985748291,166.298019886017,-169.66028213501,2174.97940063477,157.354748249054,-157.387042045593,2174.84092712402,169.575572013855,-321.091604232788,2098.65379333496,321.208620071411,-322.02513217926,2085.72597503662,309.719586372375,-309.72740650177,2085.60180664062,321.915936470032,-454.116344451904,1954.30011749268,454.233360290527,-452.863693237305,1943.74465942383,440.558195114136,-440.545034408569,1943.64337921143,452.733564376831,-556.189823150635,1766.17488861084,556.306791305542,-553.259658813477,1758.71105194092,540.954113006592,-540.924882888794,1758.63933563232,553.113412857056,-620.355796813965,1547.09815979004,620.472812652588,-616.371154785156,1543.23463439941,604.065608978271,-604.02626991272,1543.19753646851,616.214799880981,-642.241668701172,1311.99979782104,642.358684539795,-637.897348403931,1311.99979782104,625.591802597046,-625.549030303955,1311.99979782104,637.737560272217,-620.355796813965,1076.90181732178,620.472812652588,-616.371154785156,1080.76543807983,604.065608978271,-604.02626991272,1080.80253601074,616.214799880981,-556.189823150635,857.825088500977,556.306791305542,-553.259706497192,865.28902053833,540.954160690308,-540.924882888794,865.360736846924,553.113412857056,-454.553556442261,670.377683639526,454.670572280884,-452.648305892944,679.921531677246,440.342807769775,-440.323352813721,680.013132095337,452.511882781982,-83.5178017616272,88.2642507553101,83.6348116397858,-79.8740684986115,93.6119496822357,67.5685346126556,-67.5324261188507,93.6632871627808,79.7209560871124,-83.9517712593079,59.1516852378845,84.0687811374664,-79.6601891517639,57.6616108417511,67.3546612262726,-67.3123359680176,57.647305727005,79.5008659362793,-102.047729492188,-66.8691158294678,102.164733409882,-97.9458689689636,-70.050173997879,85.6403410434723,-85.5998396873474,-70.0807094573975,97.7883636951447,0.0827373587526381,2220.34130096436,0.0644859857857227,\n-8.70132595300674,2205.41343688965,0.0644852581899613,8.61858949065208,2205.27019500732,0.0644852465484291,0.0827373587526381,2189.3985748291,235.098171234131,-8.70132595300674,2174.97940063477,231.234550476074,8.61858949065208,2174.84092712402,231.197476387024,0.0827373587526381,2098.65379333496,454.174852371216,-8.70132595300674,2085.72597503662,446.710968017578,8.61858949065208,2085.60180664062,446.6392993927,0.0827373587526381,1954.30011749268,642.300224304199,-8.70132595300674,1943.74465942383,631.74467086792,8.61858949065208,1943.64337921143,631.643342971802,0.0827373587526381,1766.17488861084,786.653900146484,-8.70132595300674,1758.71105194092,773.725986480713,8.61858949065208,1758.63933563232,773.601913452148,0.0827373587526381,1547.09815979004,877.398300170898,-8.70132595300674,1543.23463439941,862.979125976562,8.61858949065208,1543.19753646851,862.840747833252,0.0827373587526381,1311.99979782104,908.349609375,-8.70132595300674,1311.99979782104,893.421745300293,8.61858949065208,1311.99979782104,893.278503417969,0.0827373587526381,1076.90181732178,877.398300170898,-8.70132595300674,1080.76543807983,862.979125976562,8.61858949065208,1080.80253601074,862.840747833252,0.0827373587526381,857.825088500977,786.653900146484,-8.70132595300674,865.28902053833,773.726034164429,8.61858949065208,865.360736846924,773.601913452148,0.0827373587526381,670.377683639526,642.918539047241,-8.70132595300674,679.921531677246,631.44006729126,8.61858949065208,680.013132095337,631.329870223999,0.0827373587526381,88.2642507553101,118.19474697113,-8.70132595300674,93.6119496822357,104.257667064667,8.61858949065208,93.6632871627808,104.123866558075,0.0827373587526381,59.1516852378845,118.808472156525,-8.70132595300674,57.6616108417511,103.95519733429,8.61858949065208,57.647305727005,103.812611103058,0.0827373587526381,-66.8691158294678,144.400012493134,-8.70132595300674,-70.050173997879,129.815053939819,8.61858949065208,-70.0807094573975,129.675042629242,0.104102620389313,2220.34130096436,-0.0129056701553054,-6.10716864466667,2205.41343688965,6.19836449623108,\n6.13986104726791,2205.27019500732,-6.04866519570351,166.298019886017,2189.3985748291,166.181004047394,157.354748249054,2174.97940063477,169.66028213501,169.575572013855,2174.84092712402,157.387042045593,321.208620071411,2098.65379333496,321.091604232788,309.719586372375,2085.72597503662,322.02513217926,321.915936470032,2085.60180664062,309.72740650177,454.233360290527,1954.30011749268,454.116344451904,440.558195114136,1943.74465942383,452.863693237305,452.733564376831,1943.64337921143,440.545034408569,556.306791305542,1766.17488861084,556.189823150635,540.954113006592,1758.71105194092,553.259658813477,553.113412857056,1758.63933563232,540.924882888794,620.472812652588,1547.09815979004,620.355796813965,604.065608978271,1543.23463439941,616.371154785156,616.214799880981,1543.19753646851,604.02626991272,642.358684539795,1311.99979782104,642.241668701172,625.591802597046,1311.99979782104,637.897348403931,637.737560272217,1311.99979782104,625.549030303955,620.472812652588,1076.90181732178,620.355796813965,604.065608978271,1080.76543807983,616.371154785156,616.214799880981,1080.80253601074,604.02626991272,556.306791305542,857.825088500977,556.189823150635,540.954160690308,865.28902053833,553.259706497192,553.113412857056,865.360736846924,540.924882888794,454.670572280884,670.377683639526,454.553556442261,440.342807769775,679.921531677246,452.648305892944,452.511882781982,680.013132095337,440.323352813721,83.6348116397858,88.2642507553101,83.5178017616272,67.5685346126556,93.6119496822357,79.8740684986115,79.7209560871124,93.6632871627808,67.5324261188507,84.0687811374664,59.1516852378845,83.9517712593079,67.3546612262726,57.6616108417511,79.6601891517639,79.5008659362793,57.647305727005,67.3123359680176,102.164733409882,-66.8691158294678,102.047729492188,85.6403410434723,-70.050173997879,97.9458689689636,97.7883636951447,-70.0807094573975,85.5998396873474,0.0644859857857227,2220.34130096436,-0.0827373587526381,0.0644852581899613,2205.41343688965,8.70132595300674,0.0644852465484291,2205.27019500732,-8.61858949065208,235.098171234131,2189.3985748291,-0.0827373587526381,\n231.234550476074,2174.97940063477,8.70132595300674,231.197476387024,2174.84092712402,-8.61858949065208,454.174852371216,2098.65379333496,-0.0827373587526381,446.710968017578,2085.72597503662,8.70132595300674,446.6392993927,2085.60180664062,-8.61858949065208,642.300224304199,1954.30011749268,-0.0827373587526381,631.74467086792,1943.74465942383,8.70132595300674,631.643342971802,1943.64337921143,-8.61858949065208,786.653900146484,1766.17488861084,-0.0827373587526381,773.725986480713,1758.71105194092,8.70132595300674,773.601913452148,1758.63933563232,-8.61858949065208,877.398300170898,1547.09815979004,-0.0827373587526381,862.979125976562,1543.23463439941,8.70132595300674,862.840747833252,1543.19753646851,-8.61858949065208,908.349609375,1311.99979782104,-0.0827373587526381,893.421745300293,1311.99979782104,8.70132595300674,893.278503417969,1311.99979782104,-8.61858949065208,877.398300170898,1076.90181732178,-0.0827373587526381,862.979125976562,1080.76543807983,8.70132595300674,862.840747833252,1080.80253601074,-8.61858949065208,786.653900146484,857.825088500977,-0.0827373587526381,773.726034164429,865.28902053833,8.70132595300674,773.601913452148,865.360736846924,-8.61858949065208,642.918539047241,670.377683639526,-0.0827373587526381,631.44006729126,679.921531677246,8.70132595300674,631.329870223999,680.013132095337,-8.61858949065208,118.19474697113,88.2642507553101,-0.0827373587526381,104.257667064667,93.6119496822357,8.70132595300674,104.123866558075,93.6632871627808,-8.61858949065208,118.808472156525,59.1516852378845,-0.0827373587526381,103.95519733429,57.6616108417511,8.70132595300674,103.812611103058,57.647305727005,-8.61858949065208,144.400012493134,-66.8691158294678,-0.0827373587526381,129.815053939819,-70.050173997879,8.70132595300674,129.675042629242,-70.0807094573975,-8.61858949065208,-0.0129056701553054,2220.34130096436,-0.104102620389313,6.19836449623108,2205.41343688965,6.10716864466667,-6.04866519570351,2205.27019500732,-6.13986104726791,166.181004047394,2189.3985748291,-166.298019886017,169.66028213501,2174.97940063477,-157.354748249054,\n157.387042045593,2174.84092712402,-169.575572013855,321.091604232788,2098.65379333496,-321.208620071411,322.02513217926,2085.72597503662,-309.719586372375,309.72740650177,2085.60180664062,-321.915936470032,454.116344451904,1954.30011749268,-454.233360290527,452.863693237305,1943.74465942383,-440.558195114136,440.545034408569,1943.64337921143,-452.733564376831,556.189823150635,1766.17488861084,-556.306791305542,553.259658813477,1758.71105194092,-540.954113006592,540.924882888794,1758.63933563232,-553.113412857056,620.355796813965,1547.09815979004,-620.472812652588,616.371154785156,1543.23463439941,-604.065608978271,604.02626991272,1543.19753646851,-616.214799880981,642.241668701172,1311.99979782104,-642.358684539795,637.897348403931,1311.99979782104,-625.591802597046,625.549030303955,1311.99979782104,-637.737560272217,620.355796813965,1076.90181732178,-620.472812652588,616.371154785156,1080.76543807983,-604.065608978271,604.02626991272,1080.80253601074,-616.214799880981,556.189823150635,857.825088500977,-556.306791305542,553.259706497192,865.28902053833,-540.954160690308,540.924882888794,865.360736846924,-553.113412857056,454.553556442261,670.377683639526,-454.670572280884,452.648305892944,679.921531677246,-440.342807769775,440.323352813721,680.013132095337,-452.511882781982,83.5178017616272,88.2642507553101,-83.6348116397858,79.8740684986115,93.6119496822357,-67.5685346126556,67.5324261188507,93.6632871627808,-79.7209560871124,83.9517712593079,59.1516852378845,-84.0687811374664,79.6601891517639,57.6616108417511,-67.3546612262726,67.3123359680176,57.647305727005,-79.5008659362793,102.047729492188,-66.8691158294678,-102.164733409882,97.9458689689636,-70.050173997879,-85.6403410434723,85.5998396873474,-70.0807094573975,-97.7883636951447,-0.0827373587526381,2220.34130096436,-0.0644859857857227,8.70132595300674,2205.41343688965,-0.0644852581899613,-8.61858949065208,2205.27019500732,-0.0644852465484291,-0.0827373587526381,2189.3985748291,-235.098171234131,8.70132595300674,2174.97940063477,-231.234550476074,-8.61858949065208,2174.84092712402,-231.197476387024,\n-0.0827373587526381,2098.65379333496,-454.174852371216,8.70132595300674,2085.72597503662,-446.710968017578,-8.61858949065208,2085.60180664062,-446.6392993927,-0.0827373587526381,1954.30011749268,-642.300224304199,8.70132595300674,1943.74465942383,-631.74467086792,-8.61858949065208,1943.64337921143,-631.643342971802,-0.0827373587526381,1766.17488861084,-786.653900146484,8.70132595300674,1758.71105194092,-773.725986480713,-8.61858949065208,1758.63933563232,-773.601913452148,-0.0827373587526381,1547.09815979004,-877.398300170898,8.70132595300674,1543.23463439941,-862.979125976562,-8.61858949065208,1543.19753646851,-862.840747833252,-0.0827373587526381,1311.99979782104,-908.349609375,8.70132595300674,1311.99979782104,-893.421745300293,-8.61858949065208,1311.99979782104,-893.278503417969,-0.0827373587526381,1076.90181732178,-877.398300170898,8.70132595300674,1080.76543807983,-862.979125976562,-8.61858949065208,1080.80253601074,-862.840747833252,-0.0827373587526381,857.825088500977,-786.653900146484,8.70132595300674,865.28902053833,-773.726034164429,-8.61858949065208,865.360736846924,-773.601913452148,-0.0827373587526381,670.377683639526,-642.918539047241,8.70132595300674,679.921531677246,-631.44006729126,-8.61858949065208,680.013132095337,-631.329870223999,-0.0827373587526381,88.2642507553101,-118.19474697113,8.70132595300674,93.6119496822357,-104.257667064667,-8.61858949065208,93.6632871627808,-104.123866558075,-0.0827373587526381,59.1516852378845,-118.808472156525,8.70132595300674,57.6616108417511,-103.95519733429,-8.61858949065208,57.647305727005,-103.812611103058,-0.0827373587526381,-66.8691158294678,-144.400012493134,8.70132595300674,-70.050173997879,-129.815053939819,-8.61858949065208,-70.0807094573975,-129.675042629242,-0.104102620389313,2220.34130096436,0.0129056701553054,6.10716864466667,2205.41343688965,-6.19836449623108,-6.13986104726791,2205.27019500732,6.04866519570351,-166.298019886017,2189.3985748291,-166.181004047394,-157.354748249054,2174.97940063477,-169.66028213501,-169.575572013855,2174.84092712402,-157.387042045593,\n-321.208620071411,2098.65379333496,-321.091604232788,-309.719586372375,2085.72597503662,-322.02513217926,-321.915936470032,2085.60180664062,-309.72740650177,-454.233360290527,1954.30011749268,-454.116344451904,-440.558195114136,1943.74465942383,-452.863693237305,-452.733564376831,1943.64337921143,-440.545034408569,-556.306791305542,1766.17488861084,-556.189823150635,-540.954113006592,1758.71105194092,-553.259658813477,-553.113412857056,1758.63933563232,-540.924882888794,-620.472812652588,1547.09815979004,-620.355796813965,-604.065608978271,1543.23463439941,-616.371154785156,-616.214799880981,1543.19753646851,-604.02626991272,-642.358684539795,1311.99979782104,-642.241668701172,-625.591802597046,1311.99979782104,-637.897348403931,-637.737560272217,1311.99979782104,-625.549030303955,-620.472812652588,1076.90181732178,-620.355796813965,-604.065608978271,1080.76543807983,-616.371154785156,-616.214799880981,1080.80253601074,-604.02626991272,-556.306791305542,857.825088500977,-556.189823150635,-540.954160690308,865.28902053833,-553.259706497192,-553.113412857056,865.360736846924,-540.924882888794,-454.670572280884,670.377683639526,-454.553556442261,-440.342807769775,679.921531677246,-452.648305892944,-452.511882781982,680.013132095337,-440.323352813721,-83.6348116397858,88.2642507553101,-83.5178017616272,-67.5685346126556,93.6119496822357,-79.8740684986115,-79.7209560871124,93.6632871627808,-67.5324261188507,-84.0687811374664,59.1516852378845,-83.9517712593079,-67.3546612262726,57.6616108417511,-79.6601891517639,-79.5008659362793,57.647305727005,-67.3123359680176,-102.164733409882,-66.8691158294678,-102.047729492188,-85.6403410434723,-70.050173997879,-97.9458689689636,-97.7883636951447,-70.0807094573975,-85.5998396873474,0,-300,-122.24999666214,-86.4437997341156,-300,-86.4437997341156,-122.24999666214,-300,0,-86.4437997341156,-300,86.4437997341156,0,-300,122.24999666214,86.4437997341156,-300,86.4437997341156,122.24999666214,-300,0,86.4437997341156,-300,-86.4437997341156,0,-69.9999988079071,-150,-106.066012382507,-69.9999988079071,-106.066012382507,\n-150,-69.9999988079071,0,-106.066012382507,-69.9999988079071,106.066012382507,0,-69.9999988079071,150,106.066012382507,-69.9999988079071,106.066012382507,150,-69.9999988079071,0,106.066012382507,-69.9999988079071,-106.066012382507,0,413.650035858154,0,0,444.26064491272,-232.510089874268,-60.1780414581299,444.26064491272,-224.587488174438,-116.255044937134,444.26064491272,-201.3596534729,-164.409470558167,444.26064491272,-164.409470558167,-201.3596534729,444.26064491272,-116.255044937134,-224.587488174438,444.26064491272,-60.1780414581299,-232.510089874268,444.26064491272,0,-224.587488174438,444.26064491272,60.1780414581299,-201.3596534729,444.26064491272,116.255044937134,-164.409470558167,444.26064491272,164.409470558167,-116.255044937134,444.26064491272,201.3596534729,-60.1780414581299,444.26064491272,224.587488174438,0,444.26064491272,232.510089874268,60.1780414581299,444.26064491272,224.587488174438,116.255044937134,444.26064491272,201.3596534729,164.409470558167,444.26064491272,164.409470558167,201.3596534729,444.26064491272,116.255044937134,224.587488174438,444.26064491272,60.1780414581299,232.510089874268,444.26064491272,0,224.587488174438,444.26064491272,-60.1780414581299,201.3596534729,444.26064491272,-116.255044937134,164.409470558167,444.26064491272,-164.409470558167,116.255044937134,444.26064491272,-201.3596534729,60.1780414581299,444.26064491272,-224.587488174438,0,534.006214141846,-449.174976348877,-116.255044937134,534.006214141846,-433.869791030884,-224.587488174438,534.006214141846,-388.996982574463,-317.614698410034,534.006214141846,-317.614698410034,-388.996982574463,534.006214141846,-224.587488174438,-433.869791030884,534.006214141846,-116.255044937134,-449.174976348877,534.006214141846,0,-433.869791030884,534.006214141846,116.255044937134,-388.996982574463,534.006214141846,224.587488174438,-317.614698410034,534.006214141846,317.614698410034,-224.587488174438,534.006214141846,388.996982574463,-116.255044937134,534.006214141846,433.869791030884,0,534.006214141846,449.174976348877,116.255044937134,534.006214141846,433.869791030884,\n224.587488174438,534.006214141846,388.996982574463,317.614698410034,534.006214141846,317.614698410034,388.996982574463,534.006214141846,224.587488174438,433.869791030884,534.006214141846,116.255044937134,449.174976348877,534.006214141846,0,433.869791030884,534.006214141846,-116.255044937134,388.996982574463,534.006214141846,-224.587488174438,317.614698410034,534.006214141846,-317.614698410034,224.587488174438,534.006214141846,-388.996982574463,116.255044937134,534.006214141846,-433.869791030884,0,676.770687103271,-635.229396820068,-164.409470558167,676.770687103271,-613.584470748901,-317.614698410034,676.770687103271,-550.124788284302,-449.174976348877,676.770687103271,-449.174976348877,-550.124788284302,676.770687103271,-317.614698410034,-613.584470748901,676.770687103271,-164.409470558167,-635.229396820068,676.770687103271,0,-613.584470748901,676.770687103271,164.409470558167,-550.124788284302,676.770687103271,317.614698410034,-449.174976348877,676.770687103271,449.174976348877,-317.614698410034,676.770687103271,550.124788284302,-164.409470558167,676.770687103271,613.584470748901,0,676.770687103271,635.229396820068,164.409470558167,676.770687103271,613.584470748901,317.614698410034,676.770687103271,550.124788284302,449.174976348877,676.770687103271,449.174976348877,550.124788284302,676.770687103271,317.614698410034,613.584470748901,676.770687103271,164.409470558167,635.229396820068,676.770687103271,0,613.584470748901,676.770687103271,-164.409470558167,550.124788284302,676.770687103271,-317.614698410034,449.174976348877,676.770687103271,-449.174976348877,317.614698410034,676.770687103271,-550.124788284302,164.409470558167,676.770687103271,-613.584470748901,0,862.825012207031,-777.993965148926,-201.3596534729,862.825012207031,-751.484394073486,-388.996982574463,862.825012207031,-673.762512207031,-550.124788284302,862.825012207031,-550.124788284302,-673.762512207031,862.825012207031,-388.996982574463,-751.484394073486,862.825012207031,-201.3596534729,-777.993965148926,862.825012207031,0,-751.484394073486,862.825012207031,201.3596534729,\n-673.762512207031,862.825012207031,388.996934890747,-550.124788284302,862.825012207031,550.124788284302,-388.996934890747,862.825012207031,673.762512207031,-201.3596534729,862.825012207031,751.484394073486,0,862.825012207031,777.993965148926,201.3596534729,862.825012207031,751.484394073486,388.996982574463,862.825012207031,673.762512207031,550.124788284302,862.825012207031,550.124788284302,673.762512207031,862.825012207031,388.996982574463,751.484394073486,862.825012207031,201.3596534729,777.993965148926,862.825012207031,0,751.484394073486,862.825012207031,-201.3596534729,673.762512207031,862.825012207031,-388.996982574463,550.124788284302,862.825012207031,-550.124788284302,388.996982574463,862.825012207031,-673.762512207031,201.3596534729,862.825012207031,-751.484394073486,0,1079.48989868164,-867.739391326904,-224.587488174438,1079.48989868164,-838.17195892334,-433.869695663452,1079.48989868164,-751.484394073486,-613.584470748901,1079.48989868164,-613.584470748901,-751.484394073486,1079.48989868164,-433.869695663452,-838.17195892334,1079.48989868164,-224.587488174438,-867.739391326904,1079.48989868164,0,-838.17195892334,1079.48989868164,224.587488174438,-751.484394073486,1079.48989868164,433.869695663452,-613.584470748901,1079.48989868164,613.584470748901,-433.869695663452,1079.48989868164,751.484394073486,-224.587488174438,1079.48989868164,838.17195892334,0,1079.48989868164,867.739391326904,224.587488174438,1079.48989868164,838.17195892334,433.869695663452,1079.48989868164,751.484394073486,613.584470748901,1079.48989868164,613.584470748901,751.484394073486,1079.48989868164,433.869695663452,838.17195892334,1079.48989868164,224.587488174438,867.739391326904,1079.48989868164,0,838.17195892334,1079.48989868164,-224.587488174438,751.484394073486,1079.48989868164,-433.869695663452,613.584470748901,1079.48989868164,-613.584470748901,433.869695663452,1079.48989868164,-751.484394073486,224.587488174438,1079.48989868164,-838.17195892334,0,1311.99989318848,-898.349952697754,-232.510089874268,1311.99989318848,-867.739391326904,\n-449.174976348877,1311.99989318848,-777.993869781494,-635.229396820068,1311.99989318848,-635.229396820068,-777.993869781494,1311.99989318848,-449.174976348877,-867.739391326904,1311.99989318848,-232.510089874268,-898.349952697754,1311.99989318848,0,-867.739391326904,1311.99989318848,232.510089874268,-777.993869781494,1311.99989318848,449.174976348877,-635.229396820068,1311.99989318848,635.229396820068,-449.174976348877,1311.99989318848,777.993869781494,-232.510089874268,1311.99989318848,867.739391326904,0,1311.99989318848,898.349952697754,232.510089874268,1311.99989318848,867.739391326904,449.174976348877,1311.99989318848,777.993869781494,635.229396820068,1311.99989318848,635.229396820068,777.993869781494,1311.99989318848,449.174976348877,867.739391326904,1311.99989318848,232.510089874268,898.349952697754,1311.99989318848,0,867.739391326904,1311.99989318848,-232.510089874268,777.993869781494,1311.99989318848,-449.174976348877,635.229396820068,1311.99989318848,-635.229396820068,449.174976348877,1311.99989318848,-777.993869781494,232.510089874268,1311.99989318848,-867.739391326904,0,1544.51007843018,-867.739391326904,-224.587488174438,1544.51007843018,-838.17195892334,-433.869695663452,1544.51007843018,-751.484394073486,-613.584470748901,1544.51007843018,-613.584470748901,-751.484394073486,1544.51007843018,-433.869695663452,-838.17195892334,1544.51007843018,-224.587488174438,-867.739391326904,1544.51007843018,0,-838.17195892334,1544.51007843018,224.587488174438,-751.484394073486,1544.51007843018,433.869695663452,-613.584470748901,1544.51007843018,613.584470748901,-433.869695663452,1544.51007843018,751.484394073486,-224.587488174438,1544.51007843018,838.17195892334,0,1544.51007843018,867.739391326904,224.587488174438,1544.51007843018,838.17195892334,433.869695663452,1544.51007843018,751.484394073486,613.584470748901,1544.51007843018,613.584470748901,751.484394073486,1544.51007843018,433.869695663452,838.17195892334,1544.51007843018,224.587488174438,867.739391326904,1544.51007843018,0,838.17195892334,1544.51007843018,-224.587488174438,\n751.484394073486,1544.51007843018,-433.869695663452,613.584470748901,1544.51007843018,-613.584470748901,433.869695663452,1544.51007843018,-751.484394073486,224.587488174438,1544.51007843018,-838.17195892334,0,1761.17515563965,-777.993869781494,-201.359629631042,1761.17515563965,-751.484394073486,-388.996934890747,1761.17515563965,-673.762512207031,-550.124740600586,1761.17515563965,-550.124740600586,-673.762512207031,1761.17515563965,-388.996934890747,-751.484394073486,1761.17515563965,-201.359629631042,-777.993869781494,1761.17515563965,0,-751.484394073486,1761.17515563965,201.359629631042,-673.762512207031,1761.17515563965,388.996934890747,-550.124740600586,1761.17515563965,550.124740600586,-388.996934890747,1761.17515563965,673.762512207031,-201.359629631042,1761.17515563965,751.484394073486,0,1761.17515563965,777.993869781494,201.359629631042,1761.17515563965,751.484394073486,388.996934890747,1761.17515563965,673.762512207031,550.124740600586,1761.17515563965,550.124740600586,673.762512207031,1761.17515563965,388.996934890747,751.484394073486,1761.17515563965,201.359629631042,777.993869781494,1761.17515563965,0,751.484394073486,1761.17515563965,-201.359629631042,673.762512207031,1761.17515563965,-388.996934890747,550.124740600586,1761.17515563965,-550.124740600586,388.996934890747,1761.17515563965,-673.762512207031,201.359629631042,1761.17515563965,-751.484394073486,0,1947.22938537598,-635.229396820068,-164.409470558167,1947.22938537598,-613.584470748901,-317.614698410034,1947.22938537598,-550.124788284302,-449.174976348877,1947.22938537598,-449.174976348877,-550.124788284302,1947.22938537598,-317.614698410034,-613.584470748901,1947.22938537598,-164.409470558167,-635.229396820068,1947.22938537598,0,-613.584470748901,1947.22938537598,164.409470558167,-550.124788284302,1947.22938537598,317.614698410034,-449.174976348877,1947.22938537598,449.174976348877,-317.614698410034,1947.22938537598,550.124788284302,-164.409470558167,1947.22938537598,613.584470748901,0,1947.22938537598,635.229396820068,164.409470558167,1947.22938537598,613.584470748901,\n317.614698410034,1947.22938537598,550.124788284302,449.174976348877,1947.22938537598,449.174976348877,550.124788284302,1947.22938537598,317.614698410034,613.584470748901,1947.22938537598,164.409470558167,635.229396820068,1947.22938537598,0,613.584470748901,1947.22938537598,-164.409470558167,550.124788284302,1947.22938537598,-317.614698410034,449.174976348877,1947.22938537598,-449.174976348877,317.614698410034,1947.22938537598,-550.124788284302,164.409470558167,1947.22938537598,-613.584470748901,0,2089.9938583374,-449.175024032593,-116.255056858063,2089.9938583374,-433.869791030884,-224.587512016296,2089.9938583374,-388.997006416321,-317.614698410034,2089.9938583374,-317.614698410034,-388.997006416321,2089.9938583374,-224.587512016296,-433.869791030884,2089.9938583374,-116.255056858063,-449.175024032593,2089.9938583374,0,-433.869791030884,2089.9938583374,116.255056858063,-388.997006416321,2089.9938583374,224.587512016296,-317.614698410034,2089.9938583374,317.614698410034,-224.587512016296,2089.9938583374,388.997006416321,-116.255056858063,2089.9938583374,433.869791030884,0,2089.9938583374,449.175024032593,116.255056858063,2089.9938583374,433.869791030884,224.587512016296,2089.9938583374,388.997006416321,317.614698410034,2089.9938583374,317.614698410034,388.997006416321,2089.9938583374,224.587512016296,433.869791030884,2089.9938583374,116.255056858063,449.175024032593,2089.9938583374,0,433.869791030884,2089.9938583374,-116.255056858063,388.997006416321,2089.9938583374,-224.587512016296,317.614698410034,2089.9938583374,-317.614698410034,224.587512016296,2089.9938583374,-388.997006416321,116.255056858063,2089.9938583374,-433.869791030884,0,2179.73957061768,-232.510042190552,-60.1780235767365,2179.73957061768,-224.587464332581,-116.255021095276,2179.73957061768,-201.359605789185,-164.409422874451,2179.73957061768,-164.409422874451,-201.359605789185,2179.73957061768,-116.255021095276,-224.587464332581,2179.73957061768,-60.1780235767365,-232.510042190552,2179.73957061768,0,-224.587464332581,2179.73957061768,60.1780235767365,\n-201.359605789185,2179.73957061768,116.255021095276,-164.409422874451,2179.73957061768,164.409422874451,-116.255021095276,2179.73957061768,201.359605789185,-60.1780235767365,2179.73957061768,224.587464332581,0,2179.73957061768,232.510042190552,60.1780235767365,2179.73957061768,224.587464332581,116.255021095276,2179.73957061768,201.359605789185,164.409422874451,2179.73957061768,164.409422874451,201.359605789185,2179.73957061768,116.255021095276,224.587464332581,2179.73957061768,60.1780235767365,232.510042190552,2179.73957061768,0,224.587464332581,2179.73957061768,-60.1780235767365,201.359605789185,2179.73957061768,-116.255021095276,164.409422874451,2179.73957061768,-164.409422874451,116.255021095276,2179.73957061768,-201.359605789185,60.1780235767365,2179.73957061768,-224.587464332581,0,2210.35003662109,1.10016143788208e-13,0,-68.9999997615814,-134.630036354065,-95.1978027820587,-68.9999997615814,-95.1978027820587,-134.630036354065,-68.9999997615814,0,-95.1978027820587,-68.9999997615814,95.1978027820587,0,-68.9999997615814,134.630036354065,95.1978027820587,-68.9999997615814,95.1978027820587,134.630036354065,-68.9999997615814,0,95.1978027820587,-68.9999997615814,-95.1978027820587,0,-264.000010490417,-87.3412370681763,-61.7595732212067,-264.000010490417,-61.7595732212067,-87.3412370681763,-264.000010490417,0,-61.7595732212067,-264.000010490417,61.7595732212067,0,-264.000010490417,87.3412370681763,61.7595732212067,-264.000010490417,61.7595732212067,87.3412370681763,-264.000010490417,0,61.7595732212067,-264.000010490417,-61.7595732212067,-25,270.000028610229,-25,25,270.000028610229,-25,25,270.000028610229,25,-25,270.000028610229,25,-25,430.000019073486,-25,25,430.000019073486,-25,25,430.000019073486,25,-25,430.000019073486,25,0,58.153510093689,-122.931003570557,-86.9253396987915,58.153510093689,-86.9253396987915,-122.931003570557,58.153510093689,0,-86.9253396987915,58.153510093689,86.9253396987915,0,58.153510093689,122.931003570557,86.9253396987915,58.153510093689,86.9253396987915,122.931003570557,58.153510093689,0,86.9253396987915,58.153510093689,-86.9253396987915,\n0,91.84650182724,-122.931003570557,-86.9253396987915,91.84650182724,-86.9253396987915,-122.931003570557,91.84650182724,0,-86.9253396987915,91.84650182724,86.9253396987915,0,91.84650182724,122.931003570557,86.9253396987915,91.84650182724,86.9253396987915,122.931003570557,91.84650182724,0,86.9253396987915,91.84650182724,-86.9253396987915,0,58.153510093689,-108.8587641716,-76.9747614860535,58.153510093689,-76.9747614860535,-108.8587641716,58.153510093689,0,-76.9747614860535,58.153510093689,76.9747614860535,0,58.153510093689,108.8587641716,76.9747614860535,58.153510093689,76.9747614860535,108.8587641716,58.153510093689,0,76.9747614860535,58.153510093689,-76.9747614860535,0,91.84650182724,-108.8587641716,-76.9747614860535,91.84650182724,-76.9747614860535,-108.8587641716,91.84650182724,0,-76.9747614860535,91.84650182724,76.9747614860535,0,91.84650182724,108.8587641716,76.9747614860535,91.84650182724,76.9747614860535,108.8587641716,91.84650182724,0,76.9747614860535,91.84650182724,-76.9747614860535,0,413.650035858154,0,-224.587488174438,444.26064491272,60.1780414581299,224.587488174438,444.26064491272,-60.1780414581299,-433.869791030884,534.006214141846,116.255044937134,433.869791030884,534.006214141846,-116.255044937134,-613.584470748901,676.770687103271,164.409470558167,613.584470748901,676.770687103271,-164.409470558167,-751.484394073486,862.825012207031,201.3596534729,751.484394073486,862.825012207031,-201.3596534729,-838.17195892334,1079.48989868164,224.587488174438,838.17195892334,1079.48989868164,-224.587488174438,-867.739391326904,1311.99989318848,232.510089874268,867.739391326904,1311.99989318848,-232.510089874268,-838.17195892334,1544.51007843018,224.587488174438,838.17195892334,1544.51007843018,-224.587488174438,-751.484394073486,1761.17515563965,201.359629631042,751.484394073486,1761.17515563965,-201.359629631042,-613.584470748901,1947.22938537598,164.409470558167,613.584470748901,1947.22938537598,-164.409470558167,-433.869791030884,2089.9938583374,116.255056858063,433.869791030884,2089.9938583374,-116.255056858063,\n-224.587464332581,2179.73957061768,60.1780235767365,224.587464332581,2179.73957061768,-60.1780235767365,0,2210.35003662109,1.10016143788208e-13,0,2210.35003662109,1.10016143788208e-13,201.3596534729,444.26064491272,-116.255044937134,388.996982574463,534.006214141846,-224.587488174438,550.124788284302,676.770687103271,-317.614698410034,673.762512207031,862.825012207031,-388.996982574463,751.484394073486,1079.48989868164,-433.869695663452,777.993869781494,1311.99989318848,-449.174976348877,751.484394073486,1544.51007843018,-433.869695663452,673.762512207031,1761.17515563965,-388.996934890747,550.124788284302,1947.22938537598,-317.614698410034,388.997006416321,2089.9938583374,-224.587512016296,201.359605789185,2179.73957061768,-116.255021095276,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,224.587488174438,444.26064491272,60.1780414581299,433.869791030884,534.006214141846,116.255044937134,613.584470748901,676.770687103271,164.409470558167,751.484394073486,862.825012207031,201.3596534729,838.17195892334,1079.48989868164,224.587488174438,867.739391326904,1311.99989318848,232.510089874268,838.17195892334,1544.51007843018,224.587488174438,751.484394073486,1761.17515563965,201.359629631042,613.584470748901,1947.22938537598,164.409470558167,433.869791030884,2089.9938583374,116.255056858063,224.587464332581,2179.73957061768,60.1780235767365,0,2210.35003662109,1.10016143788208e-13,0,2210.35003662109,1.10016143788208e-13,201.3596534729,444.26064491272,116.255044937134,388.996982574463,534.006214141846,224.587488174438,550.124788284302,676.770687103271,317.614698410034,673.762512207031,862.825012207031,388.996982574463,751.484394073486,1079.48989868164,433.869695663452,777.993869781494,1311.99989318848,449.174976348877,751.484394073486,1544.51007843018,433.869695663452,673.762512207031,1761.17515563965,388.996934890747,550.124788284302,1947.22938537598,317.614698410034,388.997006416321,2089.9938583374,224.587512016296,201.359605789185,2179.73957061768,116.255021095276,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,\n116.255044937134,444.26064491272,201.3596534729,224.587488174438,534.006214141846,388.996982574463,317.614698410034,676.770687103271,550.124788284302,388.996982574463,862.825012207031,673.762512207031,433.869695663452,1079.48989868164,751.484394073486,449.174976348877,1311.99989318848,777.993869781494,433.869695663452,1544.51007843018,751.484394073486,388.996934890747,1761.17515563965,673.762512207031,317.614698410034,1947.22938537598,550.124788284302,224.587512016296,2089.9938583374,388.997006416321,116.255021095276,2179.73957061768,201.359605789185,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,60.1780414581299,444.26064491272,224.587488174438,116.255044937134,534.006214141846,433.869791030884,164.409470558167,676.770687103271,613.584470748901,201.3596534729,862.825012207031,751.484394073486,224.587488174438,1079.48989868164,838.17195892334,232.510089874268,1311.99989318848,867.739391326904,224.587488174438,1544.51007843018,838.17195892334,201.359629631042,1761.17515563965,751.484394073486,164.409470558167,1947.22938537598,613.584470748901,116.255056858063,2089.9938583374,433.869791030884,60.1780235767365,2179.73957061768,224.587464332581,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,-60.1780414581299,444.26064491272,224.587488174438,-116.255044937134,534.006214141846,433.869791030884,-164.409470558167,676.770687103271,613.584470748901,-201.3596534729,862.825012207031,751.484394073486,-224.587488174438,1079.48989868164,838.17195892334,-232.510089874268,1311.99989318848,867.739391326904,-224.587488174438,1544.51007843018,838.17195892334,-201.359629631042,1761.17515563965,751.484394073486,-164.409470558167,1947.22938537598,613.584470748901,-116.255056858063,2089.9938583374,433.869791030884,-60.1780235767365,2179.73957061768,224.587464332581,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,-116.255044937134,444.26064491272,201.3596534729,-224.587488174438,534.006214141846,388.996982574463,-317.614698410034,676.770687103271,550.124788284302,-388.996934890747,862.825012207031,673.762512207031,\n-433.869695663452,1079.48989868164,751.484394073486,-449.174976348877,1311.99989318848,777.993869781494,-433.869695663452,1544.51007843018,751.484394073486,-388.996934890747,1761.17515563965,673.762512207031,-317.614698410034,1947.22938537598,550.124788284302,-224.587512016296,2089.9938583374,388.997006416321,-116.255021095276,2179.73957061768,201.359605789185,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,-201.3596534729,444.26064491272,116.255044937134,-388.996982574463,534.006214141846,224.587488174438,-550.124788284302,676.770687103271,317.614698410034,-673.762512207031,862.825012207031,388.996934890747,-751.484394073486,1079.48989868164,433.869695663452,-777.993869781494,1311.99989318848,449.174976348877,-751.484394073486,1544.51007843018,433.869695663452,-673.762512207031,1761.17515563965,388.996934890747,-550.124788284302,1947.22938537598,317.614698410034,-388.997006416321,2089.9938583374,224.587512016296,-201.359605789185,2179.73957061768,116.255021095276,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,116.255044937134,444.26064491272,-201.3596534729,60.1780414581299,444.26064491272,-224.587488174438,224.587488174438,534.006214141846,-388.996982574463,116.255044937134,534.006214141846,-433.869791030884,317.614698410034,676.770687103271,-550.124788284302,164.409470558167,676.770687103271,-613.584470748901,388.996982574463,862.825012207031,-673.762512207031,201.3596534729,862.825012207031,-751.484394073486,433.869695663452,1079.48989868164,-751.484394073486,224.587488174438,1079.48989868164,-838.17195892334,449.174976348877,1311.99989318848,-777.993869781494,232.510089874268,1311.99989318848,-867.739391326904,433.869695663452,1544.51007843018,-751.484394073486,224.587488174438,1544.51007843018,-838.17195892334,388.996934890747,1761.17515563965,-673.762512207031,201.359629631042,1761.17515563965,-751.484394073486,317.614698410034,1947.22938537598,-550.124788284302,164.409470558167,1947.22938537598,-613.584470748901,224.587512016296,2089.9938583374,-388.997006416321,116.255056858063,2089.9938583374,-433.869791030884,\n116.255021095276,2179.73957061768,-201.359605789185,60.1780235767365,2179.73957061768,-224.587464332581,0,413.650035858154,0,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,-60.1780414581299,444.26064491272,-224.587488174438,-116.255044937134,444.26064491272,-201.3596534729,-201.3596534729,444.26064491272,-116.255044937134,-224.587488174438,444.26064491272,-60.1780414581299,-116.255044937134,534.006214141846,-433.869791030884,-224.587488174438,534.006214141846,-388.996982574463,-388.996982574463,534.006214141846,-224.587488174438,-433.869791030884,534.006214141846,-116.255044937134,-164.409470558167,676.770687103271,-613.584470748901,-317.614698410034,676.770687103271,-550.124788284302,-550.124788284302,676.770687103271,-317.614698410034,-613.584470748901,676.770687103271,-164.409470558167,-201.3596534729,862.825012207031,-751.484394073486,-388.996982574463,862.825012207031,-673.762512207031,-673.762512207031,862.825012207031,-388.996982574463,-751.484394073486,862.825012207031,-201.3596534729,-224.587488174438,1079.48989868164,-838.17195892334,-433.869695663452,1079.48989868164,-751.484394073486,-751.484394073486,1079.48989868164,-433.869695663452,-838.17195892334,1079.48989868164,-224.587488174438,-232.510089874268,1311.99989318848,-867.739391326904,-449.174976348877,1311.99989318848,-777.993869781494,-777.993869781494,1311.99989318848,-449.174976348877,-867.739391326904,1311.99989318848,-232.510089874268,-224.587488174438,1544.51007843018,-838.17195892334,-433.869695663452,1544.51007843018,-751.484394073486,-751.484394073486,1544.51007843018,-433.869695663452,-838.17195892334,1544.51007843018,-224.587488174438,-201.359629631042,1761.17515563965,-751.484394073486,-388.996934890747,1761.17515563965,-673.762512207031,-673.762512207031,1761.17515563965,-388.996934890747,-751.484394073486,1761.17515563965,-201.359629631042,-164.409470558167,1947.22938537598,-613.584470748901,-317.614698410034,1947.22938537598,-550.124788284302,-550.124788284302,1947.22938537598,-317.614698410034,-613.584470748901,1947.22938537598,-164.409470558167,\n-116.255056858063,2089.9938583374,-433.869791030884,-224.587512016296,2089.9938583374,-388.997006416321,-388.997006416321,2089.9938583374,-224.587512016296,-433.869791030884,2089.9938583374,-116.255056858063,-60.1780235767365,2179.73957061768,-224.587464332581,-116.255021095276,2179.73957061768,-201.359605789185,-201.359605789185,2179.73957061768,-116.255021095276,-224.587464332581,2179.73957061768,-60.1780235767365,0,413.650035858154,0,0,413.650035858154,0,0,413.650035858154,0,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,0,2210.35003662109,1.10016143788208e-13,0,2210.35003662109,1.10016143788208e-13,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,0,444.26064491272,-232.510089874268,-164.409470558167,444.26064491272,-164.409470558167,-164.409470558167,444.26064491272,164.409470558167,0,444.26064491272,232.510089874268,164.409470558167,444.26064491272,164.409470558167,232.510089874268,444.26064491272,0,164.409470558167,444.26064491272,-164.409470558167,0,534.006214141846,-449.174976348877,-317.614698410034,534.006214141846,-317.614698410034,-317.614698410034,534.006214141846,317.614698410034,0,534.006214141846,449.174976348877,317.614698410034,534.006214141846,317.614698410034,449.174976348877,534.006214141846,0,317.614698410034,534.006214141846,-317.614698410034,0,676.770687103271,-635.229396820068,-449.174976348877,676.770687103271,-449.174976348877,-449.174976348877,676.770687103271,449.174976348877,0,676.770687103271,635.229396820068,449.174976348877,676.770687103271,449.174976348877,635.229396820068,676.770687103271,0,449.174976348877,676.770687103271,-449.174976348877,0,862.825012207031,-777.993965148926,-550.124788284302,862.825012207031,-550.124788284302,-550.124788284302,862.825012207031,550.124788284302,0,862.825012207031,777.993965148926,550.124788284302,862.825012207031,550.124788284302,777.993965148926,862.825012207031,0,550.124788284302,862.825012207031,-550.124788284302,0,1079.48989868164,-867.739391326904,-613.584470748901,1079.48989868164,-613.584470748901,-613.584470748901,1079.48989868164,613.584470748901,\n0,1079.48989868164,867.739391326904,613.584470748901,1079.48989868164,613.584470748901,867.739391326904,1079.48989868164,0,613.584470748901,1079.48989868164,-613.584470748901,0,1311.99989318848,-898.349952697754,-635.229396820068,1311.99989318848,-635.229396820068,-635.229396820068,1311.99989318848,635.229396820068,0,1311.99989318848,898.349952697754,635.229396820068,1311.99989318848,635.229396820068,898.349952697754,1311.99989318848,0,635.229396820068,1311.99989318848,-635.229396820068,0,1544.51007843018,-867.739391326904,-613.584470748901,1544.51007843018,-613.584470748901,-613.584470748901,1544.51007843018,613.584470748901,0,1544.51007843018,867.739391326904,613.584470748901,1544.51007843018,613.584470748901,867.739391326904,1544.51007843018,0,613.584470748901,1544.51007843018,-613.584470748901,0,1761.17515563965,-777.993869781494,-550.124740600586,1761.17515563965,-550.124740600586,-550.124740600586,1761.17515563965,550.124740600586,0,1761.17515563965,777.993869781494,550.124740600586,1761.17515563965,550.124740600586,777.993869781494,1761.17515563965,0,550.124740600586,1761.17515563965,-550.124740600586,0,1947.22938537598,-635.229396820068,-449.174976348877,1947.22938537598,-449.174976348877,-449.174976348877,1947.22938537598,449.174976348877,0,1947.22938537598,635.229396820068,449.174976348877,1947.22938537598,449.174976348877,635.229396820068,1947.22938537598,0,449.174976348877,1947.22938537598,-449.174976348877,0,2089.9938583374,-449.175024032593,-317.614698410034,2089.9938583374,-317.614698410034,-317.614698410034,2089.9938583374,317.614698410034,0,2089.9938583374,449.175024032593,317.614698410034,2089.9938583374,317.614698410034,449.175024032593,2089.9938583374,0,317.614698410034,2089.9938583374,-317.614698410034,0,2179.73957061768,-232.510042190552,-164.409422874451,2179.73957061768,-164.409422874451,-164.409422874451,2179.73957061768,164.409422874451,0,2179.73957061768,232.510042190552,164.409422874451,2179.73957061768,164.409422874451,232.510042190552,2179.73957061768,0,164.409422874451,2179.73957061768,-164.409422874451,\n0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,0,413.650035858154,0,0,413.650035858154,0,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,-232.510089874268,444.26064491272,0,-449.174976348877,534.006214141846,0,-635.229396820068,676.770687103271,0,-777.993965148926,862.825012207031,0,-867.739391326904,1079.48989868164,0,-898.349952697754,1311.99989318848,0,-867.739391326904,1544.51007843018,0,-777.993869781494,1761.17515563965,0,-635.229396820068,1947.22938537598,0,-449.175024032593,2089.9938583374,0,-232.510042190552,2179.73957061768,0,0,413.650035858154,0,0,2210.35003662109,1.10016143788208e-13,232.510042190552,2179.73957061768,0,0,2210.35003662109,1.10016143788208e-13\n\t\t} \n\t\tPolygonVertexIndex: *3726 {\n\t\t\ta: 0,1,-4,1,4,-4,1,2,-5,2,5,-5,2,0,-6,0,3,-6,3,4,-7,4,7,-7,4,5,-8,5,8,-8,5,3,-9,3,6,-9,6,7,-10,7,10,-10,7,8,-11,8,11,-11,8,6,-12,6,9,-12,9,10,-13,10,13,-13,10,11,-14,11,14,-14,11,9,-15,9,12,-15,12,13,-16,13,16,-16,13,14,-17,14,17,-17,14,12,-18,12,15,-18,15,16,-19,16,19,-19,16,17,-20,17,20,-20,17,15,-21,15,18,-21,18,19,-22,19,22,-22,19,20,-23,20,23,-23,20,18,-24,18,21,-24,21,22,-25,22,25,-25,22,23,-26,23,26,-26,23,21,-27,21,24,-27,24,25,-28,25,28,-28,25,26,-29,26,29,-29,26,24,-30,24,27,-30,27,28,-31,28,31,-31,28,29,-32,29,32,-32,29,27,-33,27,30,-33,30,31,-34,31,34,-34,31,32,-35,32,35,-35,32,30,-36,30,33,-36,33,34,-37,34,37,-37,34,35,-38,35,38,-38,35,33,-39,33,36,-39,36,37,-39,39,40,-43,40,43,-43,40,41,-44,41,44,-44,41,39,-45,39,42,-45,42,43,-46,43,46,-46,43,44,-47,44,47,-47,44,42,-48,42,45,-48,45,46,-49,46,49,-49,46,47,-50,47,50,-50,47,45,-51,45,48,-51,48,49,-52,49,52,-52,49,50,-53,50,53,-53,50,48,-54,48,51,-54,51,52,-55,52,55,-55,52,53,-56,53,56,-56,53,51,-57,51,54,-57,54,55,-58,55,58,-58,55,56,-59,56,59,-59,56,54,-60,54,57,-60,57,58,-61,58,61,-61,58,59,-62,59,62,-62,59,57,-63,57,60,-63,60,61,-64,61,64,-64,61,62,-65,62,65,-65,62,60,-66,60,63,-66,63,64,-67,64,67,-67,64,65,-68,65,68,-68,65,63,-69,63,66,-69,66,67,-70,67,70,-70,67,68,-71,68,71,-71,68,66,-72,66,69,-72,69,70,-73,70,73,-73,70,71,-74,71,74,-74,71,69,-75,69,72,-75,72,73,-76,73,76,-76,73,74,-77,74,77,-77,74,72,-78,72,75,-78,75,76,-78,78,79,-82,79,82,-82,79,80,-83,80,83,-83,80,78,-84,78,81,-84,81,82,-85,82,85,-85,82,83,-86,83,86,-86,83,81,-87,81,84,-87,84,85,-88,85,88,-88,85,86,-89,86,89,-89,86,84,-90,84,87,-90,87,88,-91,88,91,-91,88,89,-92,89,92,-92,89,87,-93,87,90,-93,90,91,-94,91,94,-94,91,92,-95,92,95,-95,92,90,-96,90,93,-96,93,94,-97,94,97,-97,94,95,-98,95,98,-98,95,93,-99,93,96,-99,96,97,-100,97,100,-100,97,98,-101,98,101,-101,98,96,-102,96,99,-102,99,100,-103,100,103,-103,100,101,-104,101,104,-104,101,99,-105,99,102,-105,102,103,-106,103,106,-106,103,104,-107,104,107,-107,104,102,-108,102,105,-108,105,106,-109,106,109,-109,106,107,-110,\n107,110,-110,107,105,-111,105,108,-111,108,109,-112,109,112,-112,109,110,-113,110,113,-113,110,108,-114,108,111,-114,111,112,-115,112,115,-115,112,113,-116,113,116,-116,113,111,-117,111,114,-117,114,115,-117,117,118,-121,118,121,-121,118,119,-122,119,122,-122,119,117,-123,117,120,-123,120,121,-124,121,124,-124,121,122,-125,122,125,-125,122,120,-126,120,123,-126,123,124,-127,124,127,-127,124,125,-128,125,128,-128,125,123,-129,123,126,-129,126,127,-130,127,130,-130,127,128,-131,128,131,-131,128,126,-132,126,129,-132,129,130,-133,130,133,-133,130,131,-134,131,134,-134,131,129,-135,129,132,-135,132,133,-136,133,136,-136,133,134,-137,134,137,-137,134,132,-138,132,135,-138,135,136,-139,136,139,-139,136,137,-140,137,140,-140,137,135,-141,135,138,-141,138,139,-142,139,142,-142,139,140,-143,140,143,-143,140,138,-144,138,141,-144,141,142,-145,142,145,-145,142,143,-146,143,146,-146,143,141,-147,141,144,-147,144,145,-148,145,148,-148,145,146,-149,146,149,-149,146,144,-150,144,147,-150,147,148,-151,148,151,-151,148,149,-152,149,152,-152,149,147,-153,147,150,-153,150,151,-154,151,154,-154,151,152,-155,152,155,-155,152,150,-156,150,153,-156,153,154,-156,156,157,-160,157,160,-160,157,158,-161,158,161,-161,158,156,-162,156,159,-162,159,160,-163,160,163,-163,160,161,-164,161,164,-164,161,159,-165,159,162,-165,162,163,-166,163,166,-166,163,164,-167,164,167,-167,164,162,-168,162,165,-168,165,166,-169,166,169,-169,166,167,-170,167,170,-170,167,165,-171,165,168,-171,168,169,-172,169,172,-172,169,170,-173,170,173,-173,170,168,-174,168,171,-174,171,172,-175,172,175,-175,172,173,-176,173,176,-176,173,171,-177,171,174,-177,174,175,-178,175,178,-178,175,176,-179,176,179,-179,176,174,-180,174,177,-180,177,178,-181,178,181,-181,178,179,-182,179,182,-182,179,177,-183,177,180,-183,180,181,-184,181,184,-184,181,182,-185,182,185,-185,182,180,-186,180,183,-186,183,184,-187,184,187,-187,184,185,-188,185,188,-188,185,183,-189,183,186,-189,186,187,-190,187,190,-190,187,188,-191,188,191,-191,188,186,-192,186,189,-192,189,190,-193,190,193,-193,190,191,\n-194,191,194,-194,191,189,-195,189,192,-195,192,193,-195,195,196,-199,196,199,-199,196,197,-200,197,200,-200,197,195,-201,195,198,-201,198,199,-202,199,202,-202,199,200,-203,200,203,-203,200,198,-204,198,201,-204,201,202,-205,202,205,-205,202,203,-206,203,206,-206,203,201,-207,201,204,-207,204,205,-208,205,208,-208,205,206,-209,206,209,-209,206,204,-210,204,207,-210,207,208,-211,208,211,-211,208,209,-212,209,212,-212,209,207,-213,207,210,-213,210,211,-214,211,214,-214,211,212,-215,212,215,-215,212,210,-216,210,213,-216,213,214,-217,214,217,-217,214,215,-218,215,218,-218,215,213,-219,213,216,-219,216,217,-220,217,220,-220,217,218,-221,218,221,-221,218,216,-222,216,219,-222,219,220,-223,220,223,-223,220,221,-224,221,224,-224,221,219,-225,219,222,-225,222,223,-226,223,226,-226,223,224,-227,224,227,-227,224,222,-228,222,225,-228,225,226,-229,226,229,-229,226,227,-230,227,230,-230,227,225,-231,225,228,-231,228,229,-232,229,232,-232,229,230,-233,230,233,-233,230,228,-234,228,231,-234,231,232,-234,234,235,-238,235,238,-238,235,236,-239,236,239,-239,236,234,-240,234,237,-240,237,238,-241,238,241,-241,238,239,-242,239,242,-242,239,237,-243,237,240,-243,240,241,-244,241,244,-244,241,242,-245,242,245,-245,242,240,-246,240,243,-246,243,244,-247,244,247,-247,244,245,-248,245,248,-248,245,243,-249,243,246,-249,246,247,-250,247,250,-250,247,248,-251,248,251,-251,248,246,-252,246,249,-252,249,250,-253,250,253,-253,250,251,-254,251,254,-254,251,249,-255,249,252,-255,252,253,-256,253,256,-256,253,254,-257,254,257,-257,254,252,-258,252,255,-258,255,256,-259,256,259,-259,256,257,-260,257,260,-260,257,255,-261,255,258,-261,258,259,-262,259,262,-262,259,260,-263,260,263,-263,260,258,-264,258,261,-264,261,262,-265,262,265,-265,262,263,-266,263,266,-266,263,261,-267,261,264,-267,264,265,-268,265,268,-268,265,266,-269,266,269,-269,266,264,-270,264,267,-270,267,268,-271,268,271,-271,268,269,-272,269,272,-272,269,267,-273,267,270,-273,270,271,-273,273,274,-277,274,277,-277,274,275,-278,275,278,-278,275,273,-279,273,276,-279,276,277,-280,277,\n280,-280,277,278,-281,278,281,-281,278,276,-282,276,279,-282,279,280,-283,280,283,-283,280,281,-284,281,284,-284,281,279,-285,279,282,-285,282,283,-286,283,286,-286,283,284,-287,284,287,-287,284,282,-288,282,285,-288,285,286,-289,286,289,-289,286,287,-290,287,290,-290,287,285,-291,285,288,-291,288,289,-292,289,292,-292,289,290,-293,290,293,-293,290,288,-294,288,291,-294,291,292,-295,292,295,-295,292,293,-296,293,296,-296,293,291,-297,291,294,-297,294,295,-298,295,298,-298,295,296,-299,296,299,-299,296,294,-300,294,297,-300,297,298,-301,298,301,-301,298,299,-302,299,302,-302,299,297,-303,297,300,-303,300,301,-304,301,304,-304,301,302,-305,302,305,-305,302,300,-306,300,303,-306,303,304,-307,304,307,-307,304,305,-308,305,308,-308,305,303,-309,303,306,-309,306,307,-310,307,310,-310,307,308,-311,308,311,-311,308,306,-312,306,309,-312,309,310,-312,312,319,-314,319,318,-314,318,317,-314,317,316,-314,316,315,-314,315,314,-314,320,312,-322,312,313,-322,321,313,-323,313,314,-323,322,314,-324,314,315,-324,323,315,-325,315,316,-325,324,316,-326,316,317,-326,325,317,-327,317,318,-327,326,318,-328,318,319,-328,327,319,-321,319,312,-321,858,852,-806,330,851,-807,331,943,-860,332,850,-808,333,849,-809,334,957,-947,335,650,-652,336,779,-768,337,940,-861,338,766,-755,339,753,-742,340,938,-862,341,740,-729,342,727,-716,343,936,-863,344,713,-703,345,688,-690,346,857,-864,347,328,-653,348,686,-676,349,942,-865,350,803,-781,351,802,-782,352,944,-330,865,858,-810,858,805,-810,354,330,-811,330,806,-811,355,331,-867,331,859,-867,356,332,-812,332,807,-812,357,333,-813,333,808,-813,358,334,-948,334,946,-948,359,335,-654,335,651,-654,360,336,-769,336,767,-769,361,337,-868,337,860,-868,362,338,-756,338,754,-756,363,339,-743,339,741,-743,364,340,-869,340,861,-869,365,341,-730,341,728,-730,366,342,-717,342,715,-717,367,343,-870,343,862,-870,368,344,-704,344,702,-704,369,345,-691,345,689,-691,370,346,-871,346,863,-871,371,347,-655,347,652,-655,372,348,-677,348,675,-677,373,349,-872,349,864,-872,374,350,-783,350,780,-783,375,351,-784,351,781,-784,\n376,352,-354,352,329,-354,872,865,-814,865,809,-814,378,354,-815,354,810,-815,379,355,-874,355,866,-874,380,356,-816,356,811,-816,381,357,-817,357,812,-817,382,358,-949,358,947,-949,383,359,-656,359,653,-656,384,360,-770,360,768,-770,385,361,-875,361,867,-875,386,362,-757,362,755,-757,387,363,-744,363,742,-744,388,364,-876,364,868,-876,389,365,-731,365,729,-731,390,366,-718,366,716,-718,391,367,-877,367,869,-877,392,368,-705,368,703,-705,393,369,-692,369,690,-692,394,370,-878,370,870,-878,395,371,-657,371,654,-657,396,372,-678,372,676,-678,397,373,-879,373,871,-879,398,374,-785,374,782,-785,399,375,-786,375,783,-786,400,376,-378,376,353,-378,879,872,-818,872,813,-818,402,378,-819,378,814,-819,403,379,-881,379,873,-881,404,380,-820,380,815,-820,405,381,-821,381,816,-821,406,382,-950,382,948,-950,407,383,-658,383,655,-658,408,384,-771,384,769,-771,409,385,-882,385,874,-882,410,386,-758,386,756,-758,411,387,-745,387,743,-745,412,388,-883,388,875,-883,413,389,-732,389,730,-732,414,390,-719,390,717,-719,415,391,-884,391,876,-884,416,392,-706,392,704,-706,417,393,-693,393,691,-693,418,394,-885,394,877,-885,419,395,-659,395,656,-659,420,396,-679,396,677,-679,421,397,-886,397,878,-886,422,398,-787,398,784,-787,423,399,-788,399,785,-788,424,400,-402,400,377,-402,886,879,-822,879,817,-822,426,402,-823,402,818,-823,427,403,-888,403,880,-888,428,404,-824,404,819,-824,429,405,-825,405,820,-825,430,406,-951,406,949,-951,431,407,-660,407,657,-660,432,408,-772,408,770,-772,433,409,-889,409,881,-889,434,410,-759,410,757,-759,435,411,-746,411,744,-746,436,412,-890,412,882,-890,437,413,-733,413,731,-733,438,414,-720,414,718,-720,439,415,-891,415,883,-891,440,416,-707,416,705,-707,441,417,-694,417,692,-694,442,418,-892,418,884,-892,443,419,-661,419,658,-661,444,420,-680,420,678,-680,445,421,-893,421,885,-893,446,422,-789,422,786,-789,447,423,-790,423,787,-790,448,424,-426,424,401,-426,893,886,-826,886,821,-826,450,426,-827,426,822,-827,451,427,-895,427,887,-895,452,428,-828,428,823,-828,453,429,-829,429,824,-829,454,430,-952,430,950,\n-952,455,431,-662,431,659,-662,456,432,-773,432,771,-773,457,433,-896,433,888,-896,458,434,-760,434,758,-760,459,435,-747,435,745,-747,460,436,-897,436,889,-897,461,437,-734,437,732,-734,462,438,-721,438,719,-721,463,439,-898,439,890,-898,464,440,-708,440,706,-708,465,441,-695,441,693,-695,466,442,-899,442,891,-899,467,443,-663,443,660,-663,468,444,-681,444,679,-681,469,445,-900,445,892,-900,470,446,-791,446,788,-791,471,447,-792,447,789,-792,472,448,-450,448,425,-450,900,893,-830,893,825,-830,474,450,-831,450,826,-831,475,451,-902,451,894,-902,476,452,-832,452,827,-832,477,453,-833,453,828,-833,478,454,-953,454,951,-953,479,455,-664,455,661,-664,480,456,-774,456,772,-774,481,457,-903,457,895,-903,482,458,-761,458,759,-761,483,459,-748,459,746,-748,484,460,-904,460,896,-904,485,461,-735,461,733,-735,486,462,-722,462,720,-722,487,463,-905,463,897,-905,488,464,-709,464,707,-709,489,465,-696,465,694,-696,490,466,-906,466,898,-906,491,467,-665,467,662,-665,492,468,-682,468,680,-682,493,469,-907,469,899,-907,494,470,-793,470,790,-793,495,471,-794,471,791,-794,496,472,-474,472,449,-474,907,900,-834,900,829,-834,498,474,-835,474,830,-835,499,475,-909,475,901,-909,500,476,-836,476,831,-836,501,477,-837,477,832,-837,502,478,-954,478,952,-954,503,479,-666,479,663,-666,504,480,-775,480,773,-775,505,481,-910,481,902,-910,506,482,-762,482,760,-762,507,483,-749,483,747,-749,508,484,-911,484,903,-911,509,485,-736,485,734,-736,510,486,-723,486,721,-723,511,487,-912,487,904,-912,512,488,-710,488,708,-710,513,489,-697,489,695,-697,514,490,-913,490,905,-913,515,491,-667,491,664,-667,516,492,-683,492,681,-683,517,493,-914,493,906,-914,518,494,-795,494,792,-795,519,495,-796,495,793,-796,520,496,-498,496,473,-498,914,907,-838,907,833,-838,522,498,-839,498,834,-839,523,499,-916,499,908,-916,524,500,-840,500,835,-840,525,501,-841,501,836,-841,526,502,-955,502,953,-955,527,503,-668,503,665,-668,528,504,-776,504,774,-776,529,505,-917,505,909,-917,530,506,-763,506,761,-763,531,507,-750,507,748,-750,532,508,-918,508,910,-918,533,509,-737,509,\n735,-737,534,510,-724,510,722,-724,535,511,-919,511,911,-919,536,512,-711,512,709,-711,537,513,-698,513,696,-698,538,514,-920,514,912,-920,539,515,-669,515,666,-669,540,516,-684,516,682,-684,541,517,-921,517,913,-921,542,518,-797,518,794,-797,543,519,-798,519,795,-798,544,520,-522,520,497,-522,921,914,-842,914,837,-842,546,522,-843,522,838,-843,547,523,-923,523,915,-923,548,524,-844,524,839,-844,549,525,-845,525,840,-845,550,526,-956,526,954,-956,551,527,-670,527,667,-670,552,528,-777,528,775,-777,553,529,-924,529,916,-924,554,530,-764,530,762,-764,555,531,-751,531,749,-751,556,532,-925,532,917,-925,557,533,-738,533,736,-738,558,534,-725,534,723,-725,559,535,-926,535,918,-926,560,536,-712,536,710,-712,561,537,-699,537,697,-699,562,538,-927,538,919,-927,563,539,-671,539,668,-671,564,540,-685,540,683,-685,565,541,-928,541,920,-928,566,542,-799,542,796,-799,567,543,-800,543,797,-800,568,544,-546,544,521,-546,928,921,-846,921,841,-846,570,546,-847,546,842,-847,571,547,-930,547,922,-930,572,548,-848,548,843,-848,573,549,-849,549,844,-849,574,550,-957,550,955,-957,575,551,-672,551,669,-672,576,552,-778,552,776,-778,577,553,-931,553,923,-931,578,554,-765,554,763,-765,579,555,-752,555,750,-752,580,556,-932,556,924,-932,581,557,-739,557,737,-739,582,558,-726,558,724,-726,583,559,-933,559,925,-933,584,560,-713,560,711,-713,585,561,-700,561,698,-700,586,562,-934,562,926,-934,587,563,-673,563,670,-673,588,564,-686,564,684,-686,589,565,-935,565,927,-935,590,566,-801,566,798,-801,591,567,-593,567,799,-593,801,568,-570,568,545,-570,928,845,-675,570,846,-854,571,929,-855,572,847,-946,573,848,-856,574,956,-857,575,671,-959,576,777,-701,577,930,-779,578,764,-942,579,751,-766,580,931,-753,581,738,-940,582,725,-740,583,932,-727,584,712,-938,585,699,-715,586,959,-702,587,672,-961,588,685,-674,589,934,-688,590,800,-936,591,592,-805,801,569,-594,323,597,-323,597,596,-323,323,324,-598,324,598,-598,325,599,-325,599,598,-325,325,326,-600,326,600,-600,327,601,-327,601,600,-327,327,320,-602,320,594,-602,321,595,-321,595,594,-321,321,322,-596,\n322,596,-596,600,601,-609,601,609,-609,601,594,-610,594,602,-610,594,595,-603,595,603,-603,595,596,-604,596,604,-604,596,597,-605,597,605,-605,597,598,-606,598,606,-606,598,599,-607,599,607,-607,599,600,-608,600,608,-608,610,611,-614,611,612,-614,614,615,-611,615,611,-611,615,616,-612,616,612,-612,616,617,-613,617,613,-613,617,614,-614,614,610,-614,614,617,-616,617,616,-616,626,618,-628,618,619,-628,627,619,-629,619,620,-629,628,620,-630,620,621,-630,629,621,-631,621,622,-631,630,622,-632,622,623,-632,631,623,-633,623,624,-633,632,624,-634,624,625,-634,633,625,-627,625,618,-627,618,625,-635,625,641,-635,625,624,-642,624,640,-642,624,623,-641,623,639,-641,623,622,-640,622,638,-640,622,621,-639,621,637,-639,621,620,-638,620,636,-638,620,619,-637,619,635,-637,619,618,-636,618,634,-636,629,630,-646,630,646,-646,630,631,-647,631,647,-647,631,632,-648,632,648,-648,632,633,-649,633,649,-649,633,626,-650,626,642,-650,626,627,-643,627,643,-643,627,628,-644,628,644,-644,628,629,-645,629,645,-645,642,643,-635,643,635,-635,649,642,-642,642,634,-642,648,649,-641,649,641,-641,647,648,-640,648,640,-640,646,647,-639,647,639,-639,645,646,-638,646,638,-638,644,645,-637,645,637,-637,643,644,-636,644,636,-636\n\t\t} \n\t\tEdges: *2168 {\n\t\t\ta: 0,1,2,3,4,6,7,9,10,12,13,16,19,20,21,22,25,27,28,31,34,37,38,39,40,43,45,46,49,52,55,56,57,58,61,63,64,67,70,73,74,75,76,79,81,82,85,88,91,92,93,94,97,99,100,103,106,109,110,111,112,115,117,118,121,124,127,128,129,130,133,135,136,139,142,145,146,147,148,151,153,154,157,160,163,164,165,166,169,171,172,175,178,181,182,183,184,187,189,190,193,196,199,200,201,202,205,207,208,211,214,219,220,221,222,223,225,226,228,229,231,232,235,238,239,240,241,244,246,247,250,253,256,257,258,259,262,264,265,268,271,274,275,276,277,280,282,283,286,289,292,293,294,295,298,300,301,304,307,310,311,312,313,316,318,319,322,325,328,329,330,331,334,336,337,340,343,346,347,348,349,352,354,355,358,361,364,365,366,367,370,372,373,376,379,382,383,384,385,388,390,391,394,397,400,401,402,403,406,408,409,412,415,418,419,420,421,424,426,427,430,433,438,439,440,441,442,444,445,447,448,450,451,454,457,458,459,460,463,465,466,469,472,475,476,477,478,481,483,484,487,490,493,494,495,496,499,501,502,505,508,511,512,513,514,517,519,520,523,526,529,530,531,532,535,537,538,541,544,547,548,549,550,553,555,556,559,562,565,566,567,568,571,573,574,577,580,583,584,585,586,589,591,592,595,598,601,602,603,604,607,609,610,613,616,619,620,621,622,625,627,628,631,634,637,638,639,640,643,645,646,649,652,657,658,659,660,661,663,664,666,667,669,670,673,676,677,678,679,682,684,685,688,691,694,695,696,697,700,702,703,706,709,712,713,714,715,718,720,721,724,727,730,731,732,733,736,738,739,742,745,748,749,750,751,754,756,757,760,763,766,767,768,769,772,774,775,778,781,784,785,786,787,790,792,793,796,799,802,803,804,805,808,810,811,814,817,820,821,822,823,826,828,829,832,835,838,839,840,841,844,846,847,850,853,856,857,858,859,862,864,865,868,871,876,877,878,879,880,882,883,885,886,888,889,892,895,896,897,898,901,903,904,907,910,913,914,915,916,919,921,922,925,928,931,932,933,934,937,939,940,943,946,949,950,951,952,955,957,958,961,964,967,968,969,970,973,975,976,979,982,985,986,987,988,991,993,994,997,1000,1003,1004,1005,1006,1009,1011,1012,1015,1018,1021,1022,\n1023,1024,1027,1029,1030,1033,1036,1039,1040,1041,1042,1045,1047,1048,1051,1054,1057,1058,1059,1060,1063,1065,1066,1069,1072,1075,1076,1077,1078,1081,1083,1084,1087,1090,1095,1096,1097,1098,1099,1101,1102,1104,1105,1107,1108,1111,1114,1115,1116,1117,1120,1122,1123,1126,1129,1132,1133,1134,1135,1138,1140,1141,1144,1147,1150,1151,1152,1153,1156,1158,1159,1162,1165,1168,1169,1170,1171,1174,1176,1177,1180,1183,1186,1187,1188,1189,1192,1194,1195,1198,1201,1204,1205,1206,1207,1210,1212,1213,1216,1219,1222,1223,1224,1225,1228,1230,1231,1234,1237,1240,1241,1242,1243,1246,1248,1249,1252,1255,1258,1259,1260,1261,1264,1266,1267,1270,1273,1276,1277,1278,1279,1282,1284,1285,1288,1291,1294,1295,1296,1297,1300,1302,1303,1306,1309,1314,1315,1316,1317,1318,1320,1321,1323,1324,1326,1327,1330,1333,1334,1335,1336,1339,1341,1342,1345,1348,1351,1352,1353,1354,1357,1359,1360,1363,1366,1369,1370,1371,1372,1375,1377,1378,1381,1384,1387,1388,1389,1390,1393,1395,1396,1399,1402,1405,1406,1407,1408,1411,1413,1414,1417,1420,1423,1424,1425,1426,1429,1431,1432,1435,1438,1441,1442,1443,1444,1447,1449,1450,1453,1456,1459,1460,1461,1462,1465,1467,1468,1471,1474,1477,1478,1479,1480,1483,1485,1486,1489,1492,1495,1496,1497,1498,1501,1503,1504,1507,1510,1513,1514,1515,1516,1519,1521,1522,1525,1528,1533,1534,1535,1536,1537,1539,1540,1542,1543,1545,1546,1549,1552,1553,1554,1555,1558,1560,1561,1564,1567,1570,1571,1572,1573,1576,1578,1579,1582,1585,1588,1589,1590,1591,1594,1596,1597,1600,1603,1606,1607,1608,1609,1612,1614,1615,1618,1621,1624,1625,1626,1627,1630,1632,1633,1636,1639,1642,1643,1644,1645,1648,1650,1651,1654,1657,1660,1661,1662,1663,1666,1668,1669,1672,1675,1678,1679,1680,1681,1684,1686,1687,1690,1693,1696,1697,1698,1699,1702,1704,1705,1708,1711,1714,1715,1716,1717,1720,1722,1723,1726,1729,1732,1733,1734,1735,1738,1740,1741,1744,1747,1752,1753,1754,1755,1756,1758,1759,1761,1762,1764,1765,1767,1768,1770,1771,1772,1774,1777,1778,1780,1783,1784,1786,1789,1790,1792,1795,1796,1798,1801,1802,1804,1807,1808,1810,1813,1814,1818,1819,1820,1821,1822,1823,\n1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1894,1896,1897,1898,1900,1902,1903,1904,1906,1908,1909,1910,1912,1914,1915,1916,1918,1920,1921,1922,1924,1926,1927,1928,1930,1932,1933,1934,1936,1938,1939,1940,1942,1944,1945,1946,1948,1950,1951,1952,1954,1956,1957,1958,1960,1962,1963,1964,1966,1968,1969,1970,1972,1974,1975,1976,1978,1980,1981,1982,1984,1986,1987,1988,1990,1992,1993,1994,1996,1998,1999,2000,2002,2004,2005,2006,2008,2010,2011,2012,2014,2016,2017,2018,2020,2022,2023,2024,2026,2028,2029,2030,2032,2034,2035,2036,2038,2040,2041,2042,2044,2046,2047,2048,2050,2052,2053,2054,2056,2058,2059,2060,2062,2064,2065,2066,2068,2070,2071,2072,2074,2076,2077,2078,2080,2082,2083,2084,2086,2088,2089,2090,2092,2094,2095,2096,2098,2100,2101,2102,2104,2106,2107,2108,2110,2112,2113,2114,2116,2118,2119,2120,2122,2124,2125,2126,2128,2130,2131,2132,2134,2136,2137,2138,2140,2142,2143,2144,2146,2148,2149,2150,2152,2154,2155,2156,2158,2160,2161,2162,2164,2166,2167,2168,2170,2172,2173,2174,2176,2178,2179,2180,2182,2184,2185,2186,2188,2190,2191,2192,2194,2196,2197,2198,2200,2202,2203,2204,2206,2208,2209,2210,2212,2214,2215,2216,2218,2220,2221,2222,2224,2226,2227,2228,2230,2232,2233,2234,2236,2238,2239,2240,2242,2244,2245,2246,2248,2250,2251,2252,2254,2256,2257,2258,2260,2262,2263,2264,2266,2268,2269,2270,2272,2274,2275,2276,2278,2280,2281,2282,2284,2286,2287,2288,2290,2292,2293,2294,2296,2298,2299,2300,2302,2304,2305,2306,2308,2310,2311,2312,2314,2316,2317,2318,2320,2322,2323,2324,2326,2328,2329,2330,2332,2334,2335,2336,2338,2340,2341,2342,2344,2346,2347,2348,2350,2352,2353,2354,2356,2358,2359,2360,2362,2364,2365,2366,2368,2370,2371,2372,2374,2376,2377,2378,2380,2382,2383,2384,2386,2388,2389,2390,2392,2394,2395,2396,2398,2400,2401,2402,2404,\n2406,2407,2408,2410,2412,2413,2414,2416,2418,2419,2420,2422,2424,2425,2426,2428,2430,2431,2432,2434,2436,2437,2438,2440,2442,2443,2444,2446,2448,2449,2450,2452,2454,2455,2456,2458,2460,2461,2462,2464,2466,2467,2468,2470,2472,2473,2474,2476,2478,2479,2480,2482,2484,2485,2486,2488,2490,2491,2492,2494,2496,2497,2498,2500,2502,2503,2504,2506,2508,2509,2510,2512,2514,2515,2516,2518,2520,2521,2522,2524,2526,2527,2528,2530,2532,2533,2534,2536,2538,2539,2540,2542,2544,2545,2546,2548,2550,2551,2552,2554,2556,2557,2558,2560,2562,2563,2564,2566,2568,2569,2570,2572,2574,2575,2576,2578,2580,2581,2582,2584,2586,2587,2588,2590,2592,2593,2594,2596,2598,2599,2600,2602,2604,2605,2606,2608,2610,2611,2612,2614,2616,2617,2618,2620,2622,2623,2624,2626,2628,2629,2630,2632,2634,2635,2636,2638,2640,2641,2642,2644,2646,2647,2648,2650,2652,2653,2654,2656,2658,2659,2660,2662,2664,2665,2666,2668,2670,2671,2672,2674,2676,2677,2678,2680,2682,2683,2684,2686,2688,2689,2690,2692,2694,2695,2696,2698,2700,2701,2702,2704,2706,2707,2708,2710,2712,2713,2714,2716,2718,2719,2720,2722,2724,2725,2726,2728,2730,2731,2732,2734,2736,2737,2738,2740,2742,2743,2744,2746,2748,2749,2750,2752,2754,2755,2756,2758,2760,2761,2762,2764,2766,2767,2768,2770,2772,2773,2774,2776,2778,2779,2780,2782,2784,2785,2786,2788,2790,2791,2792,2794,2796,2797,2798,2800,2802,2803,2804,2806,2808,2809,2810,2812,2814,2815,2816,2818,2820,2821,2822,2824,2826,2827,2828,2830,2832,2833,2834,2836,2838,2839,2840,2842,2844,2845,2846,2848,2850,2851,2852,2854,2856,2857,2858,2860,2862,2863,2864,2866,2868,2869,2870,2872,2874,2875,2876,2878,2880,2881,2882,2884,2886,2887,2888,2890,2892,2893,2894,2896,2898,2899,2900,2902,2904,2905,2906,2908,2910,2911,2912,2914,2916,2917,2918,2920,2922,2923,2924,2926,2928,2929,2930,2932,2934,2935,2936,2938,2940,2941,2942,2944,2946,2947,2948,2950,2952,2953,2954,2956,2958,2959,2960,2962,2964,2965,2966,2968,2970,2971,2972,2974,2976,2977,2978,2980,2982,2983,2984,2986,2988,2989,2990,2992,2994,2995,2996,2998,3000,3001,3002,3004,3006,3007,3008,3010,3012,3013,3014,3016,3018,3019,\n3020,3022,3024,3025,3026,3028,3030,3031,3032,3034,3036,3037,3038,3040,3042,3043,3044,3046,3048,3049,3050,3052,3054,3055,3056,3058,3060,3061,3062,3064,3066,3067,3068,3070,3072,3073,3074,3076,3078,3079,3080,3082,3084,3085,3086,3088,3090,3091,3092,3094,3096,3097,3098,3100,3102,3103,3104,3106,3108,3109,3110,3112,3114,3115,3116,3118,3120,3121,3122,3124,3126,3127,3128,3130,3132,3133,3134,3136,3138,3139,3140,3142,3144,3145,3146,3148,3150,3151,3152,3154,3156,3157,3158,3160,3162,3163,3164,3166,3168,3169,3170,3172,3174,3175,3176,3178,3180,3181,3182,3184,3186,3187,3188,3190,3192,3193,3194,3196,3198,3199,3200,3202,3204,3205,3206,3208,3210,3211,3212,3214,3216,3217,3218,3220,3222,3223,3224,3226,3228,3229,3230,3232,3234,3235,3236,3238,3240,3241,3242,3244,3246,3247,3248,3250,3252,3253,3254,3256,3258,3259,3260,3262,3264,3265,3266,3268,3270,3271,3272,3274,3276,3277,3278,3280,3282,3283,3284,3286,3288,3289,3290,3292,3294,3295,3296,3298,3300,3301,3302,3304,3306,3307,3308,3310,3312,3313,3314,3316,3318,3319,3320,3322,3324,3325,3326,3328,3331,3332,3334,3335,3337,3338,3340,3341,3343,3344,3346,3347,3349,3350,3352,3353,3355,3356,3358,3359,3361,3362,3364,3365,3367,3368,3370,3371,3373,3374,3376,3377,3379,3380,3381,3382,3383,3385,3386,3388,3389,3391,3392,3394,3395,3397,3398,3400,3401,3402,3403,3405,3406,3409,3411,3412,3414,3415,3417,3421,3423,3424,3426,3427,3429,3433,3435,3436,3438,3439,3441,3445,3448,3451,3452,3453,3454,3457,3459,3460,3463,3465,3466,3469,3471,3472,3475,3477,3478,3481,3483,3484,3487,3489,3490,3493,3496,3498,3499,3500,3501,3502,3504,3505,3506,3507,3510,3511,3513,3516,3517,3519,3522,3523,3529,3534,3535,3536,3537,3538,3541,3542,3543,3544,3547,3548,3549,3550,3553,3554,3555,3556,3559,3560,3561,3562,3565,3566,3567,3568,3571,3572,3573,3574,3577,3578,3579,3583,3584,3585,3586,3589,3591,3592,3595,3597,3598,3601,3603,3604,3607,3609,3610,3613,3615,3616,3619,3621,3622,3625,3628,3631,3632,3633,3634,3637,3639,3640,3643,3645,3646,3649,3651,3652,3655,3657,3658,3661,3663,3664,3667,3669,3670,3673,3676,3679,3680,3681,3685,3686,3691,3692,3697,3698,\n3703,3704,3709,3710,3715,3716,3721\n\t\t} \n\t\tGeometryVersion: 124\n\t\tLayerElementNormal: 0 {\n\t\t\tVersion: 102\n\t\t\tName: \"Normals\"\n\t\t\tMappingInformationType: \"ByPolygonVertex\"\n\t\t\tReferenceInformationType: \"IndexToDirect\"\n\t\t\tNormals: *2037 {\n\t\t\t\ta: -0.066618800163269,0.506020724773407,-0.859944760799408,-0.131259739398956,0.489867031574249,-0.861859142780304,0.130521461367607,-0.991411566734314,-0.00819932762533426,0.258810341358185,-0.965892732143402,-0.00827310420572758,-0.0647447258234024,0.491784483194351,0.868306457996368,-0.127550676465034,0.476025193929672,0.870132625102997,-0.253574877977371,0.439203798770905,-0.861858367919922,0.499983102083206,-0.865995585918427,-0.00827665720134974,-0.246408775448799,0.42679226398468,0.870132803916931,-0.358609229326248,0.358609318733215,-0.861857771873474,0.707082509994507,-0.707082688808441,-0.00827444065362215,-0.348475903272629,0.348475813865662,0.87013167142868,-0.439204066991806,0.253574669361115,-0.861858248710632,0.865995824337006,-0.499982744455338,-0.00827253889292479,-0.426793962717056,0.246409684419632,0.87013167142868,-0.489867776632309,0.131259515881538,-0.861858725547791,0.965892851352692,-0.258809924125671,-0.00827231258153915,-0.476026177406311,0.127550646662712,0.870132148265839,-0.507147967815399,2.24015064276273e-08,-0.861859023571014,0.999965786933899,1.27752741718723e-07,-0.00827066041529179,-0.492818802595139,-2.23987370873147e-08,0.870131969451904,-0.489867120981216,-0.131259486079216,-0.861859142780304,0.965892851352692,0.258809983730316,-0.00827080477029085,-0.476026177406311,-0.127550810575485,0.870132088661194,-0.43924555182457,-0.253500670194626,-0.861858904361725,0.865954756736755,0.500053882598877,-0.00827410351485014,-0.426771521568298,-0.246445149183273,0.870132684707642,-0.391043692827225,-0.325227111577988,-0.860994875431061,0.768983960151672,0.639214932918549,-0.00824256893247366,-0.380147665739059,-0.315919727087021,0.869300007820129,-0.465338587760925,-0.167372986674309,-0.869164109230042,0.743581593036652,0.668594121932983,-0.00826701615005732,-0.449323832988739,-0.169834434986115,0.877077162265778,-0.518200278282166,0.0563749708235264,-0.853399276733398,0.999934554100037,0.00841299258172512,-0.00774967158213258,0.995393514633179,-0.0955365225672722,-0.00803452078253031,\n-0.501859366893768,0.0469188168644905,0.863675773143768,-0.498867362737656,0.101306952536106,-0.860737025737762,0.98007607460022,-0.198451742529869,-0.00823238585144281,-0.484841167926788,0.0981708765029907,0.869075119495392,-0.213095754384995,-0.977031350135803,8.96165772701352e-08,-0.6551793217659,0.506020724773407,-0.56096613407135,-0.702241063117981,0.489867150783539,-0.516611695289612,0.0864948108792305,-0.991411566734314,-0.0980904176831245,0.177156656980515,-0.965892732143402,-0.188856437802315,0.568203985691071,0.491784483194351,0.659766852855682,0.525084793567657,0.476025134325027,0.705468654632568,-0.788730382919312,0.43920424580574,-0.430120915174484,0.347688883543015,-0.865995585918427,-0.359394043684006,0.441039562225342,0.426792204380035,0.789514124393463,-0.863000392913818,0.358609408140182,-0.355850577354431,0.494131863117218,-0.707082629203796,-0.505833804607391,0.368866443634033,0.348475724458694,0.861685693264008,-0.919989764690399,0.253574192523956,-0.29886269569397,0.606501936912537,-0.499982714653015,-0.61820113658905,0.313486635684967,0.246409833431244,0.917065024375916,-0.955814838409424,0.131259262561798,-0.263038069009781,0.67713987827301,-0.258809924125671,-0.68883889913559,0.278675019741058,0.127550810575485,0.951877653598785,-0.968034088611603,-2.24015082039841e-08,-0.250818580389023,0.701234579086304,1.35267612222378e-07,-0.712930619716644,0.266801327466965,-8.58618278698486e-08,0.963751554489136,-0.955814838409424,-0.131259396672249,-0.263037979602814,0.677141308784485,0.258809953927994,-0.688837468624115,0.278675556182861,-0.127550661563873,0.951877474784851,-0.920019686222076,-0.253500461578369,-0.298833191394806,0.606471419334412,0.500053822994232,-0.618173599243164,0.313503712415695,-0.246445313096046,0.917049705982208,-0.885324835777283,-0.325226694345474,-0.332306385040283,0.537924587726593,0.639214932918549,-0.549582958221436,0.345882743597031,-0.31591984629631,0.883492946624756,-0.943635821342468,-0.167372673749924,-0.285548210144043,0.51994514465332,0.668594062328339,-0.531638026237488,\n0.302467584609985,-0.169834211468697,0.937907099723816,-0.969867348670959,0.0563749894499779,-0.237021550536156,0.701580762863159,0.0084129124879837,-0.712540328502655,0.698168277740479,-0.0955365598201752,-0.709530711174011,0.25584277510643,0.0469188168644905,0.965579152107239,-0.961385428905487,0.101306982338428,-0.255880653858185,0.687197268009186,-0.198451742529869,-0.698839604854584,0.271694362163544,0.0981708616018295,0.957363367080688,-0.15068131685257,-0.977031350135803,0.150681465864182,-0.859944760799408,0.506020724773407,0.066618800163269,-0.861859142780304,0.489867031574249,0.131259739398956,-0.00819932762533426,-0.991411566734314,-0.130521461367607,-0.00827310420572758,-0.965892732143402,-0.258810341358185,0.868306457996368,0.491784483194351,0.0647447258234024,0.870132625102997,0.476025193929672,0.127550676465034,-0.861858367919922,0.439203798770905,0.253574877977371,-0.00827665720134974,-0.865995585918427,-0.499983102083206,0.870132803916931,0.42679226398468,0.24640879034996,-0.861857771873474,0.358609318733215,0.358609229326248,-0.00827444065362215,-0.707082688808441,-0.707082509994507,0.87013167142868,0.348475813865662,0.348475903272629,-0.861858248710632,0.253574669361115,0.439204066991806,-0.00827253889292479,-0.499982744455338,-0.865995824337006,0.87013167142868,0.246409684419632,0.426793962717056,-0.861858725547791,0.131259515881538,0.489867776632309,-0.00827231258153915,-0.258809924125671,-0.965892851352692,0.870132148265839,0.127550646662712,0.476026177406311,-0.861859023571014,2.24015064276273e-08,0.507147967815399,-0.00827066041529179,1.35267612222378e-07,-0.999965786933899,0.870131969451904,-2.23987370873147e-08,0.492818802595139,-0.861859083175659,-0.131259486079216,0.489867150783539,-0.00827080383896828,0.258809983730316,-0.965892851352692,0.870132088661194,-0.127550810575485,0.476026177406311,-0.861858904361725,-0.253500699996948,0.439245581626892,-0.00827410258352757,0.500053882598877,-0.865954756736755,0.870132684707642,-0.246445149183273,0.426771521568298,-0.860994875431061,-0.325227111577988,0.391043692827225,\n-0.00824256986379623,0.639214932918549,-0.768983960151672,0.869300007820129,-0.315919727087021,0.380147665739059,-0.869164109230042,-0.167372986674309,0.465338587760925,-0.00826701708137989,0.668594121932983,-0.743581593036652,0.877077162265778,-0.169834434986115,0.449323832988739,-0.853399276733398,0.0563749745488167,0.518200278282166,-0.00774967158213258,0.00841299258172512,-0.999934554100037,-0.00803452078253031,-0.0955365225672722,-0.995393514633179,0.863675773143768,0.0469188168644905,0.501859366893768,-0.860737025737762,0.101306959986687,0.498867362737656,-0.00823238585144281,-0.198451742529869,-0.98007607460022,0.869075119495392,0.0981708765029907,0.484841167926788,8.96165772701352e-08,-0.977031350135803,0.213095754384995,-0.56096613407135,0.506020724773407,0.6551793217659,-0.516611695289612,0.489867150783539,0.702241063117981,-0.0980904176831245,-0.991411566734314,-0.0864948108792305,-0.188856437802315,-0.965892732143402,-0.177156656980515,0.659766793251038,0.491784483194351,-0.568203985691071,0.705468654632568,0.47602516412735,-0.525084793567657,-0.430120944976807,0.439204275608063,0.788730382919312,-0.359394043684006,-0.865995585918427,-0.347688883543015,0.789514124393463,0.426792204380035,-0.441039562225342,-0.355850577354431,0.358609437942505,0.863000392913818,-0.505833804607391,-0.707082629203796,-0.494131863117218,0.861685693264008,0.348475724458694,-0.368866443634033,-0.29886269569397,0.253574192523956,0.919989764690399,-0.61820113658905,-0.499982714653015,-0.606501936912537,0.91706508398056,0.246409848332405,-0.313486635684967,-0.263038069009781,0.131259262561798,0.955814838409424,-0.68883889913559,-0.258809924125671,-0.67713987827301,0.951877653598785,0.127550810575485,-0.278675019741058,-0.2508185505867,-2.24015064276273e-08,0.968034088611603,-0.712930619716644,1.35267612222378e-07,-0.701234579086304,0.963751554489136,-8.58618278698486e-08,-0.266801327466965,-0.263037979602814,-0.131259396672249,0.955814838409424,-0.688837468624115,0.258809953927994,-0.677141308784485,0.951877474784851,-0.127550661563873,-0.278675556182861,\n-0.298833191394806,-0.253500461578369,0.920019686222076,-0.618173599243164,0.500053822994232,-0.606471419334412,0.917049705982208,-0.246445313096046,-0.313503712415695,-0.332306385040283,-0.325226694345474,0.885324835777283,-0.549582958221436,0.639214932918549,-0.537924587726593,0.883492946624756,-0.31591984629631,-0.345882743597031,-0.285548210144043,-0.167372673749924,0.943635821342468,-0.531638026237488,0.668594062328339,-0.51994514465332,0.937907099723816,-0.169834211468697,-0.302467584609985,-0.237021550536156,0.0563749931752682,0.969867348670959,-0.712540328502655,0.0084129124879837,-0.701580703258514,-0.709530711174011,-0.0955365672707558,-0.698168218135834,0.965579152107239,0.0469188168644905,-0.25584277510643,-0.255880653858185,0.101306982338428,0.961385428905487,-0.698839604854584,-0.198451742529869,-0.687197268009186,0.957363367080688,0.0981708616018295,-0.271694362163544,0.150681465864182,-0.977031350135803,0.15068131685257,0.066618800163269,0.506020724773407,0.859944760799408,0.131259739398956,0.489867031574249,0.861859142780304,-0.130521461367607,-0.991411566734314,0.00819932762533426,-0.258810341358185,-0.965892732143402,0.00827310420572758,0.0647447258234024,0.491784483194351,-0.868306457996368,0.127550676465034,0.476025193929672,-0.870132625102997,0.253574877977371,0.439203798770905,0.861858367919922,-0.499983102083206,-0.865995585918427,0.00827665720134974,0.246408775448799,0.42679226398468,-0.870132803916931,0.358609229326248,0.358609318733215,0.861857771873474,-0.707082509994507,-0.707082688808441,0.00827444065362215,0.348475903272629,0.348475813865662,-0.87013167142868,0.439204066991806,0.253574669361115,0.861858248710632,-0.865995824337006,-0.499982744455338,0.00827253889292479,0.426793962717056,0.246409684419632,-0.87013167142868,0.489867776632309,0.131259515881538,0.861858725547791,-0.965892851352692,-0.258809924125671,0.00827231258153915,0.476026177406311,0.127550646662712,-0.870132148265839,0.507147967815399,2.24015064276273e-08,0.861859023571014,-0.999965786933899,1.27752741718723e-07,0.00827066041529179,\n0.492818802595139,-2.23987370873147e-08,-0.870131969451904,0.489867120981216,-0.131259486079216,0.861859142780304,-0.965892851352692,0.258809983730316,0.00827080477029085,0.476026177406311,-0.127550810575485,-0.870132088661194,0.43924555182457,-0.253500670194626,0.861858904361725,-0.865954756736755,0.500053882598877,0.00827410351485014,0.426771521568298,-0.246445149183273,-0.870132684707642,0.391043692827225,-0.325227111577988,0.860994875431061,-0.768983960151672,0.639214932918549,0.00824256893247366,0.380147665739059,-0.315919727087021,-0.869300007820129,0.465338587760925,-0.167372986674309,0.869164109230042,-0.743581593036652,0.668594121932983,0.00826701615005732,0.449323832988739,-0.169834434986115,-0.877077162265778,0.518200278282166,0.0563749708235264,0.853399276733398,-0.999934554100037,0.00841299258172512,0.00774967158213258,-0.995393514633179,-0.0955365225672722,0.00803452078253031,0.501859366893768,0.0469188168644905,-0.863675773143768,0.498867362737656,0.101306952536106,0.860737025737762,-0.98007607460022,-0.198451742529869,0.00823238585144281,0.484841167926788,0.0981708765029907,-0.869075119495392,0.213095754384995,-0.977031350135803,-8.96165772701352e-08,0.6551793217659,0.506020724773407,0.56096613407135,0.702241063117981,0.489867150783539,0.516611695289612,-0.0864948108792305,-0.991411566734314,0.0980904176831245,-0.177156656980515,-0.965892732143402,0.188856437802315,-0.568203985691071,0.491784483194351,-0.659766852855682,-0.525084793567657,0.476025134325027,-0.705468654632568,0.788730382919312,0.43920424580574,0.430120915174484,-0.347688883543015,-0.865995585918427,0.359394043684006,-0.441039562225342,0.426792204380035,-0.789514124393463,0.863000392913818,0.358609408140182,0.355850577354431,-0.494131863117218,-0.707082629203796,0.505833804607391,-0.368866443634033,0.348475724458694,-0.861685693264008,0.919989764690399,0.253574192523956,0.29886269569397,-0.606501936912537,-0.499982714653015,0.61820113658905,-0.313486635684967,0.246409833431244,-0.917065024375916,0.955814838409424,0.131259262561798,0.263038069009781,\n-0.67713987827301,-0.258809924125671,0.68883889913559,-0.278675019741058,0.127550810575485,-0.951877653598785,0.968034088611603,-2.24015082039841e-08,0.250818580389023,-0.701234579086304,1.35267612222378e-07,0.712930619716644,-0.266801327466965,-8.58618278698486e-08,-0.963751554489136,0.955814838409424,-0.131259396672249,0.263037979602814,-0.677141308784485,0.258809953927994,0.688837468624115,-0.278675556182861,-0.127550661563873,-0.951877474784851,0.920019686222076,-0.253500461578369,0.298833191394806,-0.606471419334412,0.500053822994232,0.618173599243164,-0.313503712415695,-0.246445313096046,-0.917049705982208,0.885324835777283,-0.325226694345474,0.332306385040283,-0.537924587726593,0.639214932918549,0.549582958221436,-0.345882743597031,-0.31591984629631,-0.883492946624756,0.943635821342468,-0.167372673749924,0.285548210144043,-0.51994514465332,0.668594062328339,0.531638026237488,-0.302467584609985,-0.169834211468697,-0.937907099723816,0.969867348670959,0.0563749894499779,0.237021550536156,-0.701580762863159,0.0084129124879837,0.712540328502655,-0.698168277740479,-0.0955365598201752,0.709530711174011,-0.25584277510643,0.0469188168644905,-0.965579152107239,0.961385428905487,0.101306982338428,0.255880653858185,-0.687197268009186,-0.198451742529869,0.698839604854584,-0.271694362163544,0.0981708616018295,-0.957363367080688,0.15068131685257,-0.977031350135803,-0.150681465864182,0.859944760799408,0.506020724773407,-0.066618800163269,0.861859142780304,0.489867031574249,-0.131259739398956,0.00819932762533426,-0.991411566734314,0.130521461367607,0.00827310420572758,-0.965892732143402,0.258810341358185,-0.868306457996368,0.491784483194351,-0.0647447258234024,-0.870132625102997,0.476025193929672,-0.127550676465034,0.861858367919922,0.439203798770905,-0.253574877977371,0.00827665720134974,-0.865995585918427,0.499983102083206,-0.870132803916931,0.42679226398468,-0.24640879034996,0.861857771873474,0.358609318733215,-0.358609229326248,0.00827444065362215,-0.707082688808441,0.707082509994507,-0.87013167142868,0.348475813865662,-0.348475903272629,\n0.861858248710632,0.253574669361115,-0.439204066991806,0.00827253889292479,-0.499982744455338,0.865995824337006,-0.87013167142868,0.246409684419632,-0.426793962717056,0.861858725547791,0.131259515881538,-0.489867776632309,0.00827231258153915,-0.258809924125671,0.965892851352692,-0.870132148265839,0.127550646662712,-0.476026177406311,0.861859023571014,2.24015064276273e-08,-0.507147967815399,0.00827066041529179,1.35267612222378e-07,0.999965786933899,-0.870131969451904,-2.23987370873147e-08,-0.492818802595139,0.861859083175659,-0.131259486079216,-0.489867150783539,0.00827080383896828,0.258809983730316,0.965892851352692,-0.870132088661194,-0.127550810575485,-0.476026177406311,0.861858904361725,-0.253500699996948,-0.439245581626892,0.00827410258352757,0.500053882598877,0.865954756736755,-0.870132684707642,-0.246445149183273,-0.426771521568298,0.860994875431061,-0.325227111577988,-0.391043692827225,0.00824256986379623,0.639214932918549,0.768983960151672,-0.869300007820129,-0.315919727087021,-0.380147665739059,0.869164109230042,-0.167372986674309,-0.465338587760925,0.00826701708137989,0.668594121932983,0.743581593036652,-0.877077162265778,-0.169834434986115,-0.449323832988739,0.853399276733398,0.0563749745488167,-0.518200278282166,0.00774967158213258,0.00841299258172512,0.999934554100037,0.00803452078253031,-0.0955365225672722,0.995393514633179,-0.863675773143768,0.0469188168644905,-0.501859366893768,0.860737025737762,0.101306959986687,-0.498867362737656,0.00823238585144281,-0.198451742529869,0.98007607460022,-0.869075119495392,0.0981708765029907,-0.484841167926788,-8.96165772701352e-08,-0.977031350135803,-0.213095754384995,0.56096613407135,0.506020724773407,-0.6551793217659,0.516611695289612,0.489867150783539,-0.702241063117981,0.0980904176831245,-0.991411566734314,0.0864948108792305,0.188856437802315,-0.965892732143402,0.177156656980515,-0.659766793251038,0.491784483194351,0.568203985691071,-0.705468654632568,0.47602516412735,0.525084793567657,0.430120944976807,0.439204275608063,-0.788730382919312,0.359394043684006,-0.865995585918427,0.347688883543015,\n-0.789514124393463,0.426792204380035,0.441039562225342,0.355850577354431,0.358609437942505,-0.863000392913818,0.505833804607391,-0.707082629203796,0.494131863117218,-0.861685693264008,0.348475724458694,0.368866443634033,0.29886269569397,0.253574192523956,-0.919989764690399,0.61820113658905,-0.499982714653015,0.606501936912537,-0.91706508398056,0.246409848332405,0.313486635684967,0.263038069009781,0.131259262561798,-0.955814838409424,0.68883889913559,-0.258809924125671,0.67713987827301,-0.951877653598785,0.127550810575485,0.278675019741058,0.2508185505867,-2.24015064276273e-08,-0.968034088611603,0.712930619716644,1.35267612222378e-07,0.701234579086304,-0.963751554489136,-8.58618278698486e-08,0.266801327466965,0.263037979602814,-0.131259396672249,-0.955814838409424,0.688837468624115,0.258809953927994,0.677141308784485,-0.951877474784851,-0.127550661563873,0.278675556182861,0.298833191394806,-0.253500461578369,-0.920019686222076,0.618173599243164,0.500053822994232,0.606471419334412,-0.917049705982208,-0.246445313096046,0.313503712415695,0.332306385040283,-0.325226694345474,-0.885324835777283,0.549582958221436,0.639214932918549,0.537924587726593,-0.883492946624756,-0.31591984629631,0.345882743597031,0.285548210144043,-0.167372673749924,-0.943635821342468,0.531638026237488,0.668594062328339,0.51994514465332,-0.937907099723816,-0.169834211468697,0.302467584609985,0.237021550536156,0.0563749931752682,-0.969867348670959,0.712540328502655,0.0084129124879837,0.701580703258514,0.709530711174011,-0.0955365672707558,0.698168218135834,-0.965579152107239,0.0469188168644905,0.25584277510643,0.255880653858185,0.101306982338428,-0.961385428905487,0.698839604854584,-0.198451742529869,0.687197268009186,-0.957363367080688,0.0981708616018295,0.271694362163544,-0.150681465864182,-0.977031350135803,-0.15068131685257,0,-1,0,-0.380327969789505,-0.110781975090504,-0.918192803859711,-0.918192803859711,-0.110781967639923,-0.380327969789505,-0.918192803859711,-0.110781975090504,0.380327969789505,-0.380327969789505,-0.110781960189342,0.918192803859711,\n0.380327969789505,-0.110781975090504,0.918192803859711,0.918192803859711,-0.110781967639923,0.380327969789505,0.918192803859711,-0.110781975090504,-0.380327969789505,0.380327969789505,-0.110781960189342,-0.918192803859711,-0.0340449586510658,-0.965384900569916,-0.258598029613495,-0.0171816311776638,-0.991298496723175,-0.130507230758667,-0.0998151376843452,-0.965384900569916,-0.240974947810173,-0.0503738783299923,-0.991298496723175,-0.121613405644894,-0.158782914280891,-0.965384900569916,-0.206929937005043,-0.0801333114504814,-0.991298496723175,-0.104431785643101,-0.206929951906204,-0.965384900569916,-0.158782914280891,-0.10443177819252,-0.991298496723175,-0.0801333039999008,-0.240974977612495,-0.965384900569916,-0.0998151525855064,-0.121613405644894,-0.991298496723175,-0.0503738783299923,-0.258597999811172,-0.965384900569916,-0.0340449549257755,-0.130507230758667,-0.991298496723175,-0.0171816311776638,-0.258598029613495,-0.965384900569916,0.0340449586510658,-0.130507230758667,-0.991298496723175,0.0171816311776638,-0.240974947810173,-0.965384900569916,0.0998151376843452,-0.121613405644894,-0.991298496723175,0.0503738783299923,-0.206929937005043,-0.965384900569916,0.158782914280891,-0.104431785643101,-0.991298496723175,0.0801333114504814,-0.158782914280891,-0.965384900569916,0.206929951906204,-0.0801333039999008,-0.991298496723175,0.10443177819252,-0.0998151525855064,-0.965384900569916,0.240974977612495,-0.0503738783299923,-0.991298496723175,0.121613405644894,-0.0340449549257755,-0.965384900569916,0.258597999811172,-0.0171816311776638,-0.991298496723175,0.130507230758667,0.0340449586510658,-0.965384900569916,0.258598029613495,0.0171816311776638,-0.991298496723175,0.130507230758667,0.0998151376843452,-0.965384900569916,0.240974947810173,0.0503738783299923,-0.991298496723175,0.121613405644894,0.158782914280891,-0.965384900569916,0.206929937005043,0.0801333114504814,-0.991298496723175,0.104431785643101,0.206929951906204,-0.965384900569916,0.158782914280891,0.10443177819252,-0.991298496723175,0.0801333039999008,0.240974977612495,-0.965384900569916,0.0998151525855064,\n0.121613405644894,-0.991298496723175,0.0503738783299923,0.258597999811172,-0.965384900569916,0.0340449549257755,0.130507230758667,-0.991298496723175,0.0171816311776638,0.258598029613495,-0.965384900569916,-0.0340449586510658,0.130507230758667,-0.991298496723175,-0.0171816311776638,0.240974947810173,-0.965384900569916,-0.0998151376843452,0.121613405644894,-0.991298496723175,-0.0503738783299923,0.206929937005043,-0.965384900569916,-0.158782914280891,0.104431785643101,-0.991298496723175,-0.0801333114504814,0.158782914280891,-0.965384900569916,-0.206929951906204,0.0801333039999008,-0.991298496723175,-0.10443177819252,0.0998151525855064,-0.965384900569916,-0.240974977612495,0.0503738783299923,-0.991298496723175,-0.121613405644894,0.0340449549257755,-0.965384900569916,-0.258597999811172,0.0171816311776638,-0.991298496723175,-0.130507230758667,-0.0656695440411568,-0.864219605922699,-0.498810589313507,-0.192533776164055,-0.864219546318054,-0.464817494153976,-0.306276977062225,-0.864219546318054,-0.399147808551788,-0.399147838354111,-0.864219546318054,-0.306277006864548,-0.464817494153976,-0.864219546318054,-0.192533776164055,-0.498810678720474,-0.864219546318054,-0.0656695514917374,-0.498810589313507,-0.864219605922699,0.0656695440411568,-0.464817464351654,-0.864219546318054,0.192533776164055,-0.399147808551788,-0.864219546318054,0.306276977062225,-0.306277006864548,-0.864219546318054,0.399147838354111,-0.192533776164055,-0.864219546318054,0.464817464351654,-0.0656695514917374,-0.864219546318054,0.498810648918152,0.0656695440411568,-0.864219605922699,0.498810589313507,0.192533776164055,-0.864219546318054,0.464817494153976,0.306276977062225,-0.864219546318054,0.399147808551788,0.399147838354111,-0.864219546318054,0.306277006864548,0.464817494153976,-0.864219546318054,0.192533776164055,0.498810678720474,-0.864219546318054,0.0656695514917374,0.498810589313507,-0.864219605922699,-0.0656695440411568,0.464817464351654,-0.864219546318054,-0.192533776164055,0.399147808551788,-0.864219546318054,-0.306276977062225,0.306277006864548,-0.864219546318054,-0.399147838354111,\n0.192533776164055,-0.864219546318054,-0.464817464351654,0.0656695514917374,-0.864219546318054,-0.498810648918152,-0.0926782712340355,-0.70416671037674,-0.703960180282593,-0.271718472242355,-0.70416659116745,-0.655986607074738,-0.432241797447205,-0.704166650772095,-0.563308358192444,-0.563308358192444,-0.704166650772095,-0.432241827249527,-0.655986607074738,-0.704166650772095,-0.271718442440033,-0.703960359096527,-0.70416659116745,-0.0926782861351967,-0.703960180282593,-0.70416671037674,0.0926782712340355,-0.655986607074738,-0.70416659116745,0.271718502044678,-0.563308417797089,-0.704166650772095,0.432241797447205,-0.432241797447205,-0.704166650772095,0.563308417797089,-0.271718502044678,-0.704166650772095,0.655986607074738,-0.0926782935857773,-0.70416659116745,0.703960299491882,0.0926782712340355,-0.70416671037674,0.703960180282593,0.271718472242355,-0.70416659116745,0.655986607074738,0.432241797447205,-0.704166650772095,0.563308358192444,0.563308358192444,-0.704166650772095,0.432241827249527,0.655986607074738,-0.704166650772095,0.271718442440033,0.703960359096527,-0.70416659116745,0.0926782861351967,0.703960180282593,-0.70416671037674,-0.0926782712340355,0.655986607074738,-0.70416659116745,-0.271718472242355,0.563308358192444,-0.704166650772095,-0.432241827249527,0.432241827249527,-0.704166650772095,-0.563308358192444,0.271718442440033,-0.704166650772095,-0.655986547470093,0.0926782935857773,-0.70416659116745,-0.703960299491882,-0.113272354006767,-0.496890515089035,-0.860388994216919,-0.332097709178925,-0.496890693902969,-0.801754772663116,-0.52829110622406,-0.496890604496002,-0.688482582569122,-0.688482522964478,-0.496890753507614,-0.528291046619415,-0.801754832267761,-0.49689057469368,-0.332097709178925,-0.860388875007629,-0.496890693902969,-0.113272339105606,-0.860388994216919,-0.496890515089035,0.113272346556187,-0.801754772663116,-0.496890664100647,0.332097738981247,-0.688482582569122,-0.496890604496002,0.528291046619415,-0.528290987014771,-0.496890723705292,0.688482522964478,-0.332097768783569,-0.496890604496002,0.801754832267761,\n-0.113272339105606,-0.496890693902969,0.860388875007629,0.113272354006767,-0.496890515089035,0.860388994216919,0.332097709178925,-0.496890693902969,0.801754772663116,0.52829110622406,-0.496890604496002,0.688482582569122,0.688482522964478,-0.496890753507614,0.528291046619415,0.801754832267761,-0.49689057469368,0.332097709178925,0.860388875007629,-0.496890693902969,0.113272339105606,0.860388994216919,-0.496890515089035,-0.113272346556187,0.801754772663116,-0.496890693902969,-0.332097709178925,0.688482582569122,-0.496890604496002,-0.52829110622406,0.528291046619415,-0.496890723705292,-0.688482522964478,0.332097709178925,-0.49689057469368,-0.801754832267761,0.113272339105606,-0.496890693902969,-0.860388875007629,-0.126148134469986,-0.256820946931839,-0.95819079875946,-0.369847893714905,-0.256821036338806,-0.892891645431519,-0.588342726230621,-0.256820976734161,-0.766743659973145,-0.7667436003685,-0.256821155548096,-0.588342726230621,-0.892891645431519,-0.256820976734161,-0.369847893714905,-0.95819079875946,-0.256821006536484,-0.126148119568825,-0.95819079875946,-0.256820946931839,0.126148119568825,-0.892891645431519,-0.256821036338806,0.369847893714905,-0.766743659973145,-0.256821036338806,0.588342726230621,-0.588342726230621,-0.256821125745773,0.7667436003685,-0.369847893714905,-0.256821006536484,0.892891645431519,-0.126148119568825,-0.256821036338806,0.95819079875946,0.126148134469986,-0.256820946931839,0.95819079875946,0.369847893714905,-0.256821036338806,0.892891645431519,0.588342726230621,-0.256820976734161,0.766743659973145,0.7667436003685,-0.256821155548096,0.588342726230621,0.892891645431519,-0.256820976734161,0.369847893714905,0.95819079875946,-0.256821006536484,0.126148119568825,0.95819079875946,-0.256820946931839,-0.126148119568825,0.892891645431519,-0.256821036338806,-0.369847893714905,0.766743659973145,-0.256820976734161,-0.588342726230621,0.588342726230621,-0.256821125745773,-0.7667436003685,0.369847893714905,-0.256820976734161,-0.892891645431519,0.126148119568825,-0.256821036338806,-0.95819079875946,-0.130526095628738,-4.50826860287634e-08,-0.991444885730743,\n-0.382683455944061,-5.25964622966058e-08,-0.923879504203796,-0.608761191368103,-5.25964658493194e-08,-0.793353497982025,-0.793353497982025,-5.25964658493194e-08,-0.608761191368103,-0.923879504203796,-4.50826824760497e-08,-0.382683455944061,-0.991444885730743,-5.25964622966058e-08,-0.130526095628738,-0.991444885730743,-5.25964622966058e-08,0.130526095628738,-0.923879504203796,-5.25964622966058e-08,0.382683455944061,-0.793353497982025,-5.25964658493194e-08,0.608761191368103,-0.608761191368103,-5.25964658493194e-08,0.793353497982025,-0.382683455944061,-4.50826824760497e-08,0.923879504203796,-0.130526095628738,-5.25964622966058e-08,0.991444885730743,0.130526095628738,-4.50826860287634e-08,0.991444885730743,0.382683455944061,-5.25964622966058e-08,0.923879504203796,0.608761191368103,-5.25964658493194e-08,0.793353497982025,0.793353497982025,-5.25964658493194e-08,0.608761191368103,0.923879504203796,-4.50826824760497e-08,0.382683455944061,0.991444885730743,-5.25964622966058e-08,0.130526095628738,0.991444885730743,-5.25964622966058e-08,-0.130526095628738,0.923879504203796,-5.25964622966058e-08,-0.382683455944061,0.793353497982025,-5.25964658493194e-08,-0.608761191368103,0.608761191368103,-5.25964658493194e-08,-0.793353497982025,0.382683455944061,-4.50826824760497e-08,-0.923879504203796,0.130526095628738,-5.25964622966058e-08,-0.991444885730743,-0.126148000359535,0.256820917129517,-0.958190858364105,-0.369847863912582,0.256820857524872,-0.892891705036163,-0.5883429646492,0.256820827722549,-0.766743540763855,-0.76674348115921,0.256821066141129,-0.588342905044556,-0.892891705036163,0.256820797920227,-0.369847863912582,-0.958190858364105,0.256820797920227,-0.126148015260696,-0.958190858364105,0.256820917129517,0.126148000359535,-0.892891705036163,0.256820857524872,0.369847863912582,-0.766743540763855,0.256820797920227,0.5883429646492,-0.588342905044556,0.256821066141129,0.76674348115921,-0.369847863912582,0.256820797920227,0.892891705036163,-0.126148015260696,0.256820797920227,0.958190858364105,0.126148000359535,0.256820917129517,0.958190858364105,\n0.369847863912582,0.256820857524872,0.892891705036163,0.5883429646492,0.256820827722549,0.766743540763855,0.76674348115921,0.256821066141129,0.588342905044556,0.892891705036163,0.256820797920227,0.369847863912582,0.958190858364105,0.256820797920227,0.126148015260696,0.958190858364105,0.256820917129517,-0.126148000359535,0.892891705036163,0.256820857524872,-0.369847863912582,0.766743540763855,0.256820797920227,-0.5883429646492,0.588342905044556,0.256821066141129,-0.76674348115921,0.369847863912582,0.256820797920227,-0.892891705036163,0.126148015260696,0.256820797920227,-0.958190858364105,-0.113272324204445,0.496890515089035,-0.860388994216919,-0.33209764957428,0.496890634298325,-0.801754832267761,-0.528291404247284,0.496890544891357,-0.688482403755188,-0.688482284545898,0.496890753507614,-0.528291285037994,-0.801754891872406,0.49689057469368,-0.33209764957428,-0.860388934612274,0.496890634298325,-0.113272316753864,-0.860388994216919,0.496890515089035,0.113272324204445,-0.801754832267761,0.496890634298325,0.33209764957428,-0.688482403755188,0.496890544891357,0.528291404247284,-0.528291285037994,0.496890753507614,0.688482284545898,-0.33209764957428,0.49689057469368,0.801754891872406,-0.113272309303284,0.496890634298325,0.860388934612274,0.113272324204445,0.496890515089035,0.860388994216919,0.33209764957428,0.496890634298325,0.801754832267761,0.528291404247284,0.496890544891357,0.688482403755188,0.688482284545898,0.496890753507614,0.528291285037994,0.801754891872406,0.49689057469368,0.33209764957428,0.860388934612274,0.496890634298325,0.113272316753864,0.860388994216919,0.496890515089035,-0.113272324204445,0.801754832267761,0.496890634298325,-0.33209764957428,0.688482403755188,0.496890544891357,-0.528291404247284,0.528291285037994,0.496890753507614,-0.688482284545898,0.33209764957428,0.49689057469368,-0.801754891872406,0.113272309303284,0.496890634298325,-0.860388934612274,-0.0926780551671982,0.704166650772095,-0.703960299491882,-0.271718531847,0.704166650772095,-0.655986547470093,-0.432241916656494,0.704166650772095,-0.563308298587799,\n-0.563308298587799,0.70416671037674,-0.432241886854172,-0.655986487865448,0.70416671037674,-0.271718531847,-0.703960299491882,0.704166650772095,-0.0926780626177788,-0.703960239887238,0.70416671037674,0.0926780551671982,-0.655986547470093,0.704166650772095,0.271718561649323,-0.563308298587799,0.704166650772095,0.432241916656494,-0.432241886854172,0.70416671037674,0.563308298587799,-0.271718531847,0.70416671037674,0.655986487865448,-0.0926780551671982,0.704166650772095,0.703960299491882,0.0926780551671982,0.704166650772095,0.703960299491882,0.271718531847,0.704166650772095,0.655986547470093,0.432241916656494,0.704166650772095,0.563308298587799,0.563308298587799,0.70416671037674,0.432241886854172,0.655986487865448,0.70416671037674,0.271718531847,0.703960299491882,0.704166650772095,0.0926780626177788,0.703960239887238,0.70416671037674,-0.0926780551671982,0.655986547470093,0.704166650772095,-0.271718561649323,0.563308298587799,0.704166650772095,-0.432241916656494,0.432241886854172,0.70416671037674,-0.563308298587799,0.271718531847,0.70416671037674,-0.655986487865448,0.0926780551671982,0.704166650772095,-0.703960299491882,-0.0656695663928986,0.864219427108765,-0.498810827732086,-0.192533850669861,0.864219427108765,-0.464817702770233,-0.30627715587616,0.864219427108765,-0.3991479575634,-0.399147987365723,0.864219427108765,-0.30627715587616,-0.464817672967911,0.864219427108765,-0.1925338357687,-0.498810917139053,0.86421936750412,-0.0656695812940598,-0.498810827732086,0.864219486713409,0.0656695663928986,-0.464817702770233,0.864219427108765,0.192533850669861,-0.3991479575634,0.864219427108765,0.30627715587616,-0.30627715587616,0.864219427108765,0.399147987365723,-0.1925338357687,0.864219427108765,0.464817672967911,-0.0656695738434792,0.864219427108765,0.498810917139053,0.0656695663928986,0.864219427108765,0.498810827732086,0.192533850669861,0.864219427108765,0.464817702770233,0.30627715587616,0.864219427108765,0.3991479575634,0.399147987365723,0.864219427108765,0.30627715587616,0.464817672967911,0.864219427108765,0.1925338357687,\n0.498810917139053,0.86421936750412,0.0656695812940598,0.498810827732086,0.864219486713409,-0.0656695663928986,0.464817702770233,0.864219427108765,-0.192533850669861,0.3991479575634,0.864219427108765,-0.30627715587616,0.30627715587616,0.864219427108765,-0.399147987365723,0.1925338357687,0.864219427108765,-0.464817672967911,0.0656695738434792,0.864219427108765,-0.498810917139053,-0.0340450294315815,0.965384900569916,-0.25859797000885,-0.0998151004314423,0.965384900569916,-0.240974903106689,-0.15878289937973,0.965384900569916,-0.206929847598076,-0.206929862499237,0.965384900569916,-0.158782914280891,-0.240974918007851,0.965384900569916,-0.0998151078820229,-0.25859797000885,0.965384900569916,-0.0340450294315815,-0.25859797000885,0.965384900569916,0.0340450294315815,-0.240974903106689,0.965384900569916,0.0998151004314423,-0.206929847598076,0.965384900569916,0.15878289937973,-0.158782914280891,0.965384900569916,0.206929862499237,-0.0998151078820229,0.965384900569916,0.240974918007851,-0.0340450294315815,0.965384900569916,0.25859797000885,0.0340450294315815,0.965384900569916,0.25859797000885,0.0998151004314423,0.965384900569916,0.240974903106689,0.15878289937973,0.965384900569916,0.206929847598076,0.206929862499237,0.965384900569916,0.158782914280891,0.240974918007851,0.965384900569916,0.0998151078820229,0.25859797000885,0.965384900569916,0.0340450294315815,0.382199168205261,0.922709047794342,0.0503174141049385,0.25859797000885,0.965384900569916,-0.0340450294315815,0.240974903106689,0.965384900569916,-0.0998151004314423,0.206929847598076,0.965384900569916,-0.15878289937973,0.158782914280891,0.965384900569916,-0.206929862499237,0.0998151078820229,0.965384900569916,-0.240974918007851,0.0340450294315815,0.965384900569916,-0.25859797000885,-0.0171815101057291,0.99129855632782,-0.130506664514542,-0.050373699516058,0.99129855632782,-0.121612846851349,-0.0801329910755157,0.99129855632782,-0.104431323707104,-0.104431308805943,0.99129855632782,-0.0801329836249352,-0.121612846851349,0.99129855632782,-0.050373699516058,-0.130506664514542,0.99129855632782,-0.0171815101057291,\n-0.130506664514542,0.99129855632782,0.0171815101057291,-0.121612846851349,0.99129855632782,0.050373699516058,-0.104431323707104,0.99129855632782,0.0801329910755157,-0.0801329836249352,0.99129855632782,0.104431308805943,-0.050373699516058,0.99129855632782,0.121612846851349,-0.0171815101057291,0.99129855632782,0.130506664514542,0.0171815101057291,0.99129855632782,0.130506664514542,0.050373699516058,0.99129855632782,0.121612846851349,0.0801329910755157,0.99129855632782,0.104431323707104,0.104431308805943,0.99129855632782,0.0801329836249352,0.121612846851349,0.99129855632782,0.050373699516058,0.130506664514542,0.99129855632782,0.0171815101057291,0.130506664514542,0.99129855632782,-0.0171815101057291,0.121612846851349,0.99129855632782,-0.050373699516058,0.104431323707104,0.99129855632782,-0.0801329910755157,0.0801329836249352,0.99129855632782,-0.104431308805943,0.050373699516058,0.99129855632782,-0.121612846851349,0.0171815101057291,0.99129855632782,-0.130506664514542,-0.0459086298942566,0.997890174388885,0.0459086298942566,-0.0649245977401733,0.997890174388885,0,0,0.997890174388885,0.0649245977401733,0.0459086298942566,0.997890174388885,0.0459086298942566,0.0649245977401733,0.997890174388885,0,0.0459086298942566,0.997890174388885,-0.0459086298942566,0,0.997890174388885,-0.0649245977401733,-0.0459086298942566,0.997890174388885,-0.0459086298942566,-0.901529490947723,0.218626901507378,0.373425841331482,-0.373425841331482,0.218626916408539,0.901529490947723,0.373425841331482,0.218626901507378,0.901529490947723,0.901529490947723,0.218626916408539,0.373425841331482,0.901529490947723,0.218626901507378,-0.373425841331482,0.373425841331482,0.218626916408539,-0.901529490947723,-0.373425841331482,0.218626901507378,-0.901529490947723,-0.901529490947723,0.218626916408539,-0.373425841331482,0,0,-1,1,0,0,0,0,1,-1,0,0,0,1,0,-0.382683545351028,0,-0.923879504203796,-0.923879504203796,0,-0.382683545351028,-0.923879504203796,0,0.382683545351028,-0.382683545351028,0,0.923879504203796,0.382683545351028,0,0.923879504203796,0.923879504203796,0,0.382683545351028,\n0.923879504203796,0,-0.382683545351028,0.382683545351028,0,-0.923879504203796\n\t\t\t} \n\t\t\tNormalsW: *679 {\n\t\t\t\ta: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n\t\t\t} \n\t\t\tNormalsIndex: *3726 {\n\t\t\t\ta: 0,0,1,0,1,1,2,2,3,2,3,3,4,4,5,4,5,5,1,1,6,1,6,6,3,3,7,3,7,7,5,5,8,5,8,8,6,6,9,6,9,9,7,7,10,7,10,10,8,8,11,8,11,11,9,9,12,9,12,12,10,10,13,10,13,13,11,11,14,11,14,14,12,12,15,12,15,15,13,13,16,13,16,16,14,14,17,14,17,17,15,15,18,15,18,18,16,16,19,16,19,19,17,17,20,17,20,20,18,18,21,18,21,21,19,19,22,19,22,22,20,20,23,20,23,23,21,21,24,21,24,24,22,22,25,22,25,25,23,23,26,23,26,26,24,24,27,24,27,27,25,25,28,25,28,28,26,26,29,26,29,29,27,27,30,27,30,30,28,28,31,28,31,31,29,29,32,29,32,32,30,30,33,30,33,33,34,34,35,34,35,35,32,32,36,32,36,36,33,33,37,33,37,37,35,35,38,35,38,38,36,36,39,36,39,39,40,40,40,41,41,42,41,42,42,43,43,44,43,44,44,45,45,46,45,46,46,42,42,47,42,47,47,44,44,48,44,48,48,46,46,49,46,49,49,47,47,50,47,50,50,48,48,51,48,51,51,49,49,52,49,52,52,50,50,53,50,53,53,51,51,54,51,54,54,52,52,55,52,55,55,53,53,56,53,56,56,54,54,57,54,57,57,55,55,58,55,58,58,56,56,59,56,59,59,57,57,60,57,60,60,58,58,61,58,61,61,59,59,62,59,62,62,60,60,63,60,63,63,61,61,64,61,64,64,62,62,65,62,65,65,63,63,66,63,66,66,64,64,67,64,67,67,65,65,68,65,68,68,66,66,69,66,69,69,67,67,70,67,70,70,68,68,71,68,71,71,69,69,72,69,72,72,70,70,73,70,73,73,71,71,74,71,74,74,75,75,76,75,76,76,73,73,77,73,77,77,74,74,78,74,78,78,76,76,79,76,79,79,77,77,80,77,80,80,81,81,81,82,82,83,82,83,83,84,84,85,84,85,85,86,86,87,86,87,87,83,83,88,83,88,88,85,85,89,85,89,89,87,87,90,87,90,90,88,88,91,88,91,91,89,89,92,89,92,92,90,90,93,90,93,93,91,91,94,91,94,94,92,92,95,92,95,95,93,93,96,93,96,96,94,94,97,94,97,97,95,95,98,95,98,98,96,96,99,96,99,99,97,97,100,97,100,100,98,98,101,98,101,101,99,99,102,99,102,102,100,100,103,100,103,103,101,101,104,101,104,104,102,102,105,102,105,105,103,103,106,103,106,106,104,104,107,104,107,107,105,105,108,105,108,108,106,106,109,106,109,109,107,107,110,107,110,110,108,108,111,108,111,111,109,109,112,109,112,112,110,110,113,110,113,113,111,111,114,111,114,114,112,112,115,112,115,115,116,116,117,116,117,117,114,114,118,114,118,118,115,115,119,115,119,119,117,117,120,117,120,120,118,118,121,118,121,121,\n122,122,122,123,123,124,123,124,124,125,125,126,125,126,126,127,127,128,127,128,128,124,124,129,124,129,129,126,126,130,126,130,130,128,128,131,128,131,131,129,129,132,129,132,132,130,130,133,130,133,133,131,131,134,131,134,134,132,132,135,132,135,135,133,133,136,133,136,136,134,134,137,134,137,137,135,135,138,135,138,138,136,136,139,136,139,139,137,137,140,137,140,140,138,138,141,138,141,141,139,139,142,139,142,142,140,140,143,140,143,143,141,141,144,141,144,144,142,142,145,142,145,145,143,143,146,143,146,146,144,144,147,144,147,147,145,145,148,145,148,148,146,146,149,146,149,149,147,147,150,147,150,150,148,148,151,148,151,151,149,149,152,149,152,152,150,150,153,150,153,153,151,151,154,151,154,154,152,152,155,152,155,155,153,153,156,153,156,156,157,157,158,157,158,158,155,155,159,155,159,159,156,156,160,156,160,160,158,158,161,158,161,161,159,159,162,159,162,162,163,163,163,164,164,165,164,165,165,166,166,167,166,167,167,168,168,169,168,169,169,165,165,170,165,170,170,167,167,171,167,171,171,169,169,172,169,172,172,170,170,173,170,173,173,171,171,174,171,174,174,172,172,175,172,175,175,173,173,176,173,176,176,174,174,177,174,177,177,175,175,178,175,178,178,176,176,179,176,179,179,177,177,180,177,180,180,178,178,181,178,181,181,179,179,182,179,182,182,180,180,183,180,183,183,181,181,184,181,184,184,182,182,185,182,185,185,183,183,186,183,186,186,184,184,187,184,187,187,185,185,188,185,188,188,186,186,189,186,189,189,187,187,190,187,190,190,188,188,191,188,191,191,189,189,192,189,192,192,190,190,193,190,193,193,191,191,194,191,194,194,192,192,195,192,195,195,193,193,196,193,196,196,194,194,197,194,197,197,198,198,199,198,199,199,196,196,200,196,200,200,197,197,201,197,201,201,199,199,202,199,202,202,200,200,203,200,203,203,204,204,204,205,205,206,205,206,206,207,207,208,207,208,208,209,209,210,209,210,210,206,206,211,206,211,211,208,208,212,208,212,212,210,210,213,210,213,213,211,211,214,211,214,214,212,212,215,212,215,215,213,213,216,213,216,216,214,214,217,214,217,217,215,215,218,215,218,218,216,216,219,216,219,219,\n217,217,220,217,220,220,218,218,221,218,221,221,219,219,222,219,222,222,220,220,223,220,223,223,221,221,224,221,224,224,222,222,225,222,225,225,223,223,226,223,226,226,224,224,227,224,227,227,225,225,228,225,228,228,226,226,229,226,229,229,227,227,230,227,230,230,228,228,231,228,231,231,229,229,232,229,232,232,230,230,233,230,233,233,231,231,234,231,234,234,232,232,235,232,235,235,233,233,236,233,236,236,234,234,237,234,237,237,235,235,238,235,238,238,239,239,240,239,240,240,237,237,241,237,241,241,238,238,242,238,242,242,240,240,243,240,243,243,241,241,244,241,244,244,245,245,245,246,246,247,246,247,247,248,248,249,248,249,249,250,250,251,250,251,251,247,247,252,247,252,252,249,249,253,249,253,253,251,251,254,251,254,254,252,252,255,252,255,255,253,253,256,253,256,256,254,254,257,254,257,257,255,255,258,255,258,258,256,256,259,256,259,259,257,257,260,257,260,260,258,258,261,258,261,261,259,259,262,259,262,262,260,260,263,260,263,263,261,261,264,261,264,264,262,262,265,262,265,265,263,263,266,263,266,266,264,264,267,264,267,267,265,265,268,265,268,268,266,266,269,266,269,269,267,267,270,267,270,270,268,268,271,268,271,271,269,269,272,269,272,272,270,270,273,270,273,273,271,271,274,271,274,274,272,272,275,272,275,275,273,273,276,273,276,276,274,274,277,274,277,277,275,275,278,275,278,278,276,276,279,276,279,279,280,280,281,280,281,281,278,278,282,278,282,282,279,279,283,279,283,283,281,281,284,281,284,284,282,282,285,282,285,285,286,286,286,287,287,288,287,288,288,289,289,290,289,290,290,291,291,292,291,292,292,288,288,293,288,293,293,290,290,294,290,294,294,292,292,295,292,295,295,293,293,296,293,296,296,294,294,297,294,297,297,295,295,298,295,298,298,296,296,299,296,299,299,297,297,300,297,300,300,298,298,301,298,301,301,299,299,302,299,302,302,300,300,303,300,303,303,301,301,304,301,304,304,302,302,305,302,305,305,303,303,306,303,306,306,304,304,307,304,307,307,305,305,308,305,308,308,306,306,309,306,309,309,307,307,310,307,310,310,308,308,311,308,311,311,309,309,312,309,312,312,310,310,313,310,313,313,311,311,314,\n311,314,314,312,312,315,312,315,315,313,313,316,313,316,316,314,314,317,314,317,317,315,315,318,315,318,318,316,316,319,316,319,319,317,317,320,317,320,320,321,321,322,321,322,322,319,319,323,319,323,323,320,320,324,320,324,324,322,322,325,322,325,325,323,323,326,323,326,326,327,327,327,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,329,329,329,329,329,329,330,330,330,330,330,330,331,331,331,331,331,331,332,332,332,332,332,332,333,333,333,333,333,333,334,334,334,334,334,334,335,335,335,335,335,335,336,336,336,336,336,336,337,338,337,339,340,339,341,342,341,343,344,343,345,346,345,347,348,347,349,350,349,351,352,351,353,354,353,355,356,355,357,358,357,359,360,359,361,362,361,363,364,363,365,366,365,367,368,367,369,370,369,371,372,371,373,374,373,375,376,375,377,378,377,379,380,379,381,382,381,383,384,383,385,337,385,337,337,385,386,339,386,339,339,386,387,341,387,341,341,387,388,343,388,343,343,388,389,345,389,345,345,389,390,347,390,347,347,390,391,349,391,349,349,391,392,351,392,351,351,392,393,353,393,353,353,393,394,355,394,355,355,394,395,357,395,357,357,395,396,359,396,359,359,396,397,361,397,361,361,397,398,363,398,363,363,398,399,365,399,365,365,399,400,367,400,367,367,400,401,369,401,369,369,401,402,371,402,371,371,402,403,373,403,373,373,403,404,375,404,375,375,404,405,377,405,377,377,405,406,379,406,379,379,406,407,381,407,381,381,407,408,383,408,383,383,408,409,385,409,385,385,409,410,386,410,386,386,410,411,387,411,387,387,411,412,388,412,388,388,412,413,389,413,389,389,413,414,390,414,390,390,414,415,391,415,391,391,415,416,392,416,392,392,416,417,393,417,393,393,417,418,394,418,394,394,418,419,395,419,395,395,419,420,396,420,396,396,420,421,397,421,397,397,421,422,398,422,398,398,422,423,399,423,399,399,423,424,400,424,400,400,424,425,401,425,401,401,425,426,402,426,402,402,426,427,403,427,403,403,427,428,404,428,404,404,428,429,405,429,405,405,429,430,406,430,406,406,430,431,407,431,407,407,431,432,408,432,408,408,432,433,409,433,409,409,433,434,410,434,410,410,434,435,411,435,\n411,411,435,436,412,436,412,412,436,437,413,437,413,413,437,438,414,438,414,414,438,439,415,439,415,415,439,440,416,440,416,416,440,441,417,441,417,417,441,442,418,442,418,418,442,443,419,443,419,419,443,444,420,444,420,420,444,445,421,445,421,421,445,446,422,446,422,422,446,447,423,447,423,423,447,448,424,448,424,424,448,449,425,449,425,425,449,450,426,450,426,426,450,451,427,451,427,427,451,452,428,452,428,428,452,453,429,453,429,429,453,454,430,454,430,430,454,455,431,455,431,431,455,456,432,456,432,432,456,457,433,457,433,433,457,458,434,458,434,434,458,459,435,459,435,435,459,460,436,460,436,436,460,461,437,461,437,437,461,462,438,462,438,438,462,463,439,463,439,439,463,464,440,464,440,440,464,465,441,465,441,441,465,466,442,466,442,442,466,467,443,467,443,443,467,468,444,468,444,444,468,469,445,469,445,445,469,470,446,470,446,446,470,471,447,471,447,447,471,472,448,472,448,448,472,473,449,473,449,449,473,474,450,474,450,450,474,475,451,475,451,451,475,476,452,476,452,452,476,477,453,477,453,453,477,478,454,478,454,454,478,479,455,479,455,455,479,480,456,480,456,456,480,481,457,481,457,457,481,482,458,482,458,458,482,483,459,483,459,459,483,484,460,484,460,460,484,485,461,485,461,461,485,486,462,486,462,462,486,487,463,487,463,463,487,488,464,488,464,464,488,489,465,489,465,465,489,490,466,490,466,466,490,491,467,491,467,467,491,492,468,492,468,468,492,493,469,493,469,469,493,494,470,494,470,470,494,495,471,495,471,471,495,496,472,496,472,472,496,497,473,497,473,473,497,498,474,498,474,474,498,499,475,499,475,475,499,500,476,500,476,476,500,501,477,501,477,477,501,502,478,502,478,478,502,503,479,503,479,479,503,504,480,504,480,480,504,505,481,505,481,481,505,506,482,506,482,482,506,507,483,507,483,483,507,508,484,508,484,484,508,509,485,509,485,485,509,510,486,510,486,486,510,511,487,511,487,487,511,512,488,512,488,488,512,513,489,513,489,489,513,514,490,514,490,490,514,515,491,515,491,491,515,516,492,516,492,492,516,517,493,517,493,493,517,518,494,518,494,494,518,519,495,519,495,495,519,520,496,520,496,496,520,\n521,497,521,497,497,521,522,498,522,498,498,522,523,499,523,499,499,523,524,500,524,500,500,524,525,501,525,501,501,525,526,502,526,502,502,526,527,503,527,503,503,527,528,504,528,504,504,528,529,505,529,505,505,529,530,506,530,506,506,530,531,507,531,507,507,531,532,508,532,508,508,532,533,509,533,509,509,533,534,510,534,510,510,534,535,511,535,511,511,535,536,512,536,512,512,536,537,513,537,513,513,537,538,514,538,514,514,538,539,515,539,515,515,539,540,516,540,516,516,540,541,517,541,517,517,541,542,518,542,518,518,542,543,519,543,519,519,543,544,520,544,520,520,544,545,521,545,521,521,545,546,522,546,522,522,546,547,523,547,523,523,547,548,524,548,524,524,548,549,525,549,525,525,549,550,526,550,526,526,550,551,527,551,527,527,551,552,528,552,528,528,552,553,529,553,529,529,553,554,530,554,530,530,554,555,531,555,531,531,555,556,532,556,532,532,556,557,533,557,533,533,557,558,534,558,534,534,558,559,535,559,535,535,559,560,536,560,536,536,560,561,537,561,537,537,561,562,538,562,538,538,562,563,539,563,539,539,563,564,540,564,540,540,564,565,541,565,541,541,565,566,542,566,542,542,566,567,543,567,543,543,567,568,544,568,544,544,568,569,545,569,545,545,569,570,546,570,546,546,570,571,547,571,547,547,571,572,548,572,548,548,572,573,549,573,549,549,573,574,550,574,550,550,574,575,551,575,551,551,575,576,552,576,552,552,576,577,553,577,553,553,577,578,554,578,554,554,578,579,555,579,555,555,579,580,556,580,556,556,580,581,557,581,557,557,581,582,558,582,558,558,582,583,559,583,559,559,583,584,560,584,560,560,584,585,561,585,561,561,585,586,562,586,562,562,586,587,563,587,563,563,587,588,564,588,564,564,588,589,565,589,565,565,589,590,566,590,566,566,590,591,567,591,567,567,591,592,568,592,568,568,592,593,569,593,569,569,593,594,570,594,570,570,594,595,571,595,571,571,595,596,572,596,572,572,596,597,573,597,573,573,597,598,574,598,574,574,598,599,575,599,575,575,599,600,576,600,576,576,600,601,577,601,577,577,601,602,578,602,578,578,602,603,579,603,579,579,603,604,580,604,580,580,604,605,581,605,581,581,605,606,582,606,\n582,582,606,607,583,607,583,583,607,608,584,608,584,584,608,609,585,609,585,585,609,610,586,610,586,586,610,611,587,611,587,587,611,612,588,612,588,588,612,613,589,613,589,589,613,614,590,614,590,590,614,615,591,615,591,591,615,616,592,616,592,592,616,617,593,617,593,593,617,618,594,619,594,594,619,620,595,620,595,595,620,621,596,621,596,596,621,622,597,622,597,597,622,623,598,623,598,598,623,624,599,624,599,599,624,625,600,625,600,600,625,601,601,626,602,602,627,603,603,628,604,604,629,605,605,630,606,606,631,607,607,632,608,608,633,609,609,634,610,610,635,611,611,636,612,612,637,613,613,638,614,614,639,615,615,640,616,616,641,617,617,642,618,643,643,620,620,644,621,621,645,622,622,646,623,623,647,624,624,648,625,625,649,650,650,651,650,651,651,650,652,650,652,652,650,653,653,652,653,652,652,653,654,653,654,654,653,655,655,654,655,654,654,655,656,655,656,656,655,657,657,656,657,656,656,657,651,657,651,651,657,658,658,658,658,658,658,659,659,659,659,659,659,660,660,660,660,660,660,661,661,661,661,661,661,662,662,662,662,662,662,663,663,663,663,663,663,664,664,664,664,664,664,665,665,665,665,665,665,328,328,328,328,328,328,666,666,666,666,666,666,667,667,667,667,667,667,668,668,668,668,668,668,669,669,669,669,669,669,670,670,670,670,670,670,671,671,671,671,671,671,672,672,672,672,672,672,673,673,673,673,673,673,674,674,674,674,674,674,675,675,675,675,675,675,676,676,676,676,676,676,677,677,677,677,677,677,678,678,678,678,678,678,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,670,675,675,675,675,675,675,674,674,674,674,674,674,673,673,673,673,673,673,672,672,672,672,672,672,671,671,671,671,671,671,678,678,678,678,678,678,677,677,677,677,677,677,676,676,676,676,676,676\n\t\t\t} \n\t\t}\n\t\tLayerElementColor: 0 {\n\t\t\tVersion: 101\n\t\t\tName: \"Color\"\n\t\t\tMappingInformationType: \"ByPolygonVertex\"\n\t\t\tReferenceInformationType: \"IndexToDirect\"\n\t\t\tColors: *32 {\n\t\t\t\ta: 0.586805582046509,0.47773277759552,0.312644809484482,1,0.446799993515015,0.363789558410645,0.237963229417801,1,0.344999998807907,0.248568296432495,0.103668294847012,1,0.375,0.270065069198608,0.112611629068851,1,0.639999985694885,0.270000010728836,0.25,1,0.779999971389771,0.779999971389771,0.779999971389771,1,0.204999998211861,0.147654667496681,0.061554666608572,1,0.409999996423721,0.409999996423721,0.479999989271164,1\n\t\t\t} \n\t\t\tColorIndex: *3726 {\n\t\t\t\ta: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\n0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,1,0,0,1,1,0,1,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,2,3,2,2,3,3,2,3,2,2,3,3,2,3,2,2,3,3,2,3,2,2,3,3,2,3,2,2,3,3,2,3,2,2,3,3,2,3,2,2,3,3,2,3,2,2,3,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,\n4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,\n5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,4,4,4,5,5,5,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,4,4,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,6,6,3,3,6,3,6,6,3,3,6,3,6,6,3,3,6,3,6,6,3,3,6,3,6,6,3,3,6,3,6,6,3,3,6,3,6,6,3,3,6,3,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7\n\t\t\t} \n\t\t}\n\t\tLayerElementUV: 0 {\n\t\t\tVersion: 101\n\t\t\tName: \"Texture\"\n\t\t\tMappingInformationType: \"ByPolygonVertex\"\n\t\t\tReferenceInformationType: \"IndexToDirect\"\n\t\t\tUV: *2262 {\n\t\t\t\ta: 0.333333343267441,0.472222208976746,0.75,0.75,0.875,0.416666656732559,0.666666686534882,0.333333343267441,0.958333313465118,0.0833333358168602,0.333333343267441,0.25,0.75,0.5,0.345670878887177,0.519030153751373,0.916666686534882,0.833333313465118,0.833333313465118,0.416666656732559,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0,0.472222208976746,1,0.472222208976746,0.708333313465118,0.75,0.75,0.416666656732559,0.666666686534882,0.25,0.916666686534882,0.0833333358168602,0,0.25,1,0.25,0.625,0.5,0.154329165816307,0.519030094146729,0.958333313465118,0.75,0.791666686534882,0.416666656732559,0.333333343267441,0.5,0.504999995231628,0.75,0.666666686534882,0.444444447755814,0.666666686534882,0.75,0.625,0.416666656732559,0.666666686534882,0.16666667163372,0.875,0.0833333358168602,0.666666686534882,0.222222223877907,0.5,0.5,0.0190301258116961,0.654329121112823,0.916666686534882,0.75,0.75,0.416666656732559,0,0.5,1,0.5,0.872500002384186,0.962176203727722,0.333333343267441,0.444444447755814,0.625,0.75,0.5,0.416666656732559,0.833333313465118,0.0833333358168602,0.666666686534882,0.0833333358168602,0.333333343267441,0.222222223877907,0.375,0.5,0.0190301109105349,0.845670819282532,0.958333313465118,0.666666686534882,0.708333313465118,0.416666656732559,0.666666686534882,0.472222208976746,0,0.444444447755814,1,0.444444447755814,0.583333313465118,0.75,0.375,0.416666656732559,0.729166626930237,1,0.791666686534882,0.0833333358168602,0,0.222222223877907,1,0.222222223877907,0.25,0.5,0.154329136013985,0.980969905853271,0.916666686534882,0.666666686534882,0.666666686534882,0.416666656732559,0.333333343267441,0.472222208976746,0.666666686534882,0.416666656732559,0.541666686534882,0.75,0.125,0.416666656732559,0.3125,1,0.75,0.0833333358168602,0.666666686534882,0.194444447755814,0.125,0.5,0.345670849084854,0.980969905853271,0.958333313465118,0.583333313465118,0.625,0.416666656732559,0,0.472222208976746,1,0.472222208976746,0.333333343267441,0.416666656732559,0.5,0.75,0,0.416666656732559,0.708333313465118,0.916666686534882,\n0.708333313465118,0.0833333358168602,0.333333343267441,0.194444447755814,0,0.5,0.480969876050949,0.845670878887177,1,0.5,0.916666686534882,0.583333313465118,0.583333313465118,0.416666656732559,0.666666686534882,0.444444447755814,0,0.416666656732559,1,0.416666656732559,0.458333343267441,0.75,0.875,0.333333343267441,0.708333313465118,0.833333313465118,0.666666686534882,0.0833333358168602,0,0.194444447755814,1,0.194444447755814,0.875,0,0.980969905853271,0.845670878887177,0.958333313465118,0.5,0.541666686534882,0.416666656732559,0.333333343267441,0.444444447755814,0.666666686534882,0.388888895511627,0.416666656732559,0.75,0.75,0.333333343267441,0.708333313465118,0.75,0.625,0.0833333358168602,0.666666686534882,0.16666667163372,0.75,0,0.845670878887177,0.980969905853271,0.916666686534882,0.5,0.5,0.416666656732559,0,0.444444447755814,1,0.444444447755814,0.333333343267441,0.388888895511627,0.375,0.75,0.625,0.333333343267441,0.708333313465118,0.666666686534882,0.583333313465118,0.0833333358168602,0.333333343267441,0.16666667163372,0.625,0,0.654329121112823,0.980969905853271,0.958333313465118,0.416666656732559,0.458333343267441,0.416666656732559,0.666666686534882,0.416666656732559,0,0.388888895511627,1,0.388888895511627,0.333333343267441,0.75,0.5,0.333333343267441,0.708333313465118,0.583333313465118,0.541666686534882,0.0833333358168602,1,0.16666667163372,0,0.16666667163372,0.5,0,0.519030094146729,0.845670819282532,0.916666686534882,0.416666656732559,0.416666656732559,0.416666656732559,0.333333343267441,0.416666656732559,0.666666686534882,0.361111104488373,0.291666656732559,0.75,0.375,0.333333343267441,0.708333313465118,0.5,0.5,0.0833333358168602,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.375,0,0.519030153751373,0.654329121112823,0.375,0.416666656732559,0.958333313465118,0.333333343267441,0,0.416666656732559,1,0.416666656732559,0.333333343267441,0.361111104488373,0.25,0.75,0.125,0.333333343267441,0.708333313465118,0.416666656732559,0.458333343267441,0.0833333358168602,0.333333343267441,0.5,0.504999995231628,\n0.75,0.25,0,0.654329180717468,0.519030094146729,0.333333343267441,0.416666656732559,0.916666686534882,0.333333343267441,0.666666686534882,0.388888895511627,0,0.361111104488373,1,0.361111104488373,0.20833332836628,0.75,0,0.333333343267441,0.708333313465118,0.333333343267441,0.416666656732559,0.0833333358168602,0,0.5,1,0.5,0.872500002384186,0.962176203727722,0.125,0,0.845670878887177,0.519030153751373,0.291666656732559,0.416666656732559,0.958333313465118,0.25,0.333333343267441,0.388888895511627,0.666666686534882,0.333333343267441,0.16666667163372,0.75,0.875,0.25,0.708333313465118,0.25,0.375,0.0833333358168602,0.666666686534882,0.472222208976746,0,0,0.980969905853271,0.654329180717468,1,0,0.25,0.416666656732559,0.916666686534882,0.25,0,0.388888895511627,1,0.388888895511627,0.333333343267441,0.333333343267441,0.125,0.75,0.75,0.25,0.708333313465118,0.16666667163372,0.333333343267441,0.0833333358168602,0.333333343267441,0.472222208976746,0.25,0.666666686534882,0.20833332836628,0.416666656732559,0.958333313465118,0.16666667163372,0.666666686534882,0.361111104488373,0,0.333333343267441,1,0.333333343267441,0.0833333358168602,0.75,0.625,0.25,0.708333313465118,0.0833333358168602,0.291666656732559,0.0833333358168602,0,0.472222208976746,1,0.472222208976746,0.5,0.666666686534882,0.16666667163372,0.416666656732559,0.916666686534882,0.16666667163372,0.333333343267441,0.361111104488373,0.666666686534882,0.305555552244186,0.0416666679084301,0.75,0.5,0.25,0.6875,0,0.25,0.0833333358168602,0.666666686534882,0.444444447755814,0.75,0.666666686534882,0.5,1,0.125,0.416666656732559,0.958333313465118,0.0833333358168602,0,0.361111104488373,1,0.361111104488373,0.333333343267441,0.305555552244186,1,0.75,0.375,0.25,0.854166626930237,1,0.20833332836628,0.0833333358168602,0.333333343267441,0.444444447755814,1,0.666666686534882,0.25,1,0,0.666666686534882,0.0833333358168602,0.416666656732559,0.916666686534882,0.0833333358168602,0.666666686534882,0.333333343267441,0,0.305555552244186,1,0.305555552244186,0.958333313465118,0.666666686534882,0.125,0.25,\n0.8125,0,0.16666667163372,0.0833333358168602,0,0.444444447755814,1,0.444444447755814,0.25,0.333333343267441,0.0416666679084301,0.416666656732559,0.3125,0,0.333333343267441,0.333333343267441,0.666666686534882,0.277777791023254,0.916666686534882,0.666666686534882,0,0.25,0.833333313465118,0.916666686534882,0.125,0.0833333358168602,0.666666686534882,0.416666656732559,0.5,0.333333343267441,0.354166686534882,1,1,0.416666656732559,0,0.333333343267441,1,0.333333343267441,0.333333343267441,0.277777791023254,0.875,0.666666686534882,0.875,0.16666667163372,0.833333313465118,0.833333313465118,0.0833333358168602,0.0833333358168602,0.333333343267441,0.416666656732559,0.5,0,0.75,0.333333343267441,0.333333343267441,0.916666686534882,0.958333313465118,0.333333343267441,0.666666686534882,0.305555552244186,0,0.277777791023254,1,0.277777791023254,0.833333313465118,0.666666686534882,0.75,0.16666667163372,0.833333313465118,0.75,0.0416666679084301,0.0833333358168602,0,0.416666656732559,1,0.416666656732559,0.25,0,0,0.333333343267441,1,0.333333343267441,0.333333343267441,0.833333313465118,0.916666686534882,0.333333343267441,0.333333343267441,0.305555552244186,0.666666686534882,0.25,0.791666686534882,0.666666686534882,0.625,0.16666667163372,0.833333313465118,0.666666686534882,1,0.0833333358168602,0.666666686534882,0.388888895511627,0.459104746580124,0.663386046886444,0.333333343267441,0.75,0.875,0.333333343267441,0,0.305555552244186,1,0.305555552244186,0.333333343267441,0.25,0.75,0.666666686534882,0.5,0.16666667163372,0.833333313465118,0.583333313465118,0.770833373069763,0,0.333333343267441,0.388888895511627,0.336614042520523,0.540895283222198,0.333333343267441,0.666666686534882,0.833333313465118,0.333333343267441,0.666666686534882,0.277777791023254,0,0.25,1,0.25,0.708333313465118,0.666666686534882,0.375,0.16666667163372,0.833333313465118,0.5,0.875,0.5,0.480969905853271,0.654329180717468,0,0.388888895511627,1,0.388888895511627,0.163386002182961,0.540895223617554,0.770833373069763,1,0.333333343267441,0.583333313465118,0.791666686534882,0.333333343267441,\n0.333333343267441,0.277777791023254,0.666666686534882,0.222222223877907,0.666666686534882,0.666666686534882,0.125,0.16666667163372,0.833333313465118,0.416666656732559,0.75,0.5,0.345670878887177,0.519030153751373,0.666666686534882,0.361111104488373,0.0408952757716179,0.663385987281799,0.75,0.916666686534882,0.333333343267441,0.5,0.75,0.333333343267441,0,0.277777791023254,1,0.277777791023254,0.333333343267441,0.222222223877907,0.625,0.666666686534882,0,0.16666667163372,0.833333313465118,0.333333343267441,0.625,0.5,0.154329165816307,0.519030094146729,0.333333343267441,0.361111104488373,0.0408952608704567,0.836613953113556,0.270833313465118,1,0.333333343267441,0.416666656732559,0.708333313465118,0.333333343267441,0.666666686534882,0.25,0,0.222222223877907,1,0.222222223877907,0.583333313465118,0.666666686534882,0.875,0.0833333358168602,0.833333313465118,0.25,0.5,0.5,0.0190301258116961,0.654329121112823,0,0.361111104488373,1,0.361111104488373,0.163385987281799,0.959104776382446,0.229166656732559,0,0.666666686534882,0.333333343267441,0.333333343267441,0.333333343267441,0.333333343267441,0.25,0.666666686534882,0.194444447755814,0.541666686534882,0.666666686534882,0.75,0.0833333358168602,0.833333313465118,0.16666667163372,0.375,0.5,0.0190301109105349,0.845670819282532,0.666666686534882,0.333333343267441,0.336614012718201,0.959104776382446,0.25,0.916666686534882,0.625,0.333333343267441,0.333333343267441,0.25,0,0.25,1,0.25,0.333333343267441,0.194444447755814,0.5,0.666666686534882,0.625,0.0833333358168602,0.833333313465118,0.0833333358168602,0.25,0.5,0.154329136013985,0.980969905853271,0.333333343267441,0.333333343267441,0.459104716777802,0.836614012718201,0.25,0.833333313465118,0.583333313465118,0.333333343267441,0.333333343267441,0.16666667163372,0.666666686534882,0.222222223877907,0,0.194444447755814,1,0.194444447755814,0.458333343267441,0.666666686534882,0.5,0.0833333358168602,0.020833333954215,1,0.125,0.5,0.345670849084854,0.980969905853271,0,0.333333343267441,1,0.333333343267441,0.459104746580124,0.663386046886444,0.25,\n0.75,0.541666686534882,0.333333343267441,0.333333343267441,0.0833333358168602,0.333333343267441,0.222222223877907,0.666666686534882,0.16666667163372,0.416666656732559,0.666666686534882,0.375,0.0833333358168602,0.8125,1,0,0.5,0.480969876050949,0.845670878887177,1,0.5,0.666666686534882,0.305555552244186,0.336614042520523,0.540895283222198,0.25,0.666666686534882,0.5,0.333333343267441,0.395833313465118,0,0,0.222222223877907,1,0.222222223877907,0.666666686534882,0.444444447755814,0.333333343267441,0.16666667163372,0.375,0.666666686534882,0.125,0.0833333358168602,0.791666686534882,0.916666686534882,0.980969905853271,0.845670878887177,0.875,0,0.333333343267441,0.305555552244186,0.163386002182961,0.540895223617554,0.25,0.583333313465118,0.4375,1,0.458333343267441,0.333333343267441,0.666666686534882,0.194444447755814,0.333333343267441,0.444444447755814,0,0.16666667163372,1,0.16666667163372,0.333333343267441,0.666666686534882,0,0.0833333358168602,0.291666656732559,0.916666686534882,0.845670878887177,0.980969905853271,0.75,0,0,0.305555552244186,1,0.305555552244186,0.0408952757716179,0.663385987281799,0.25,0.5,0.416666656732559,0.916666686534882,0.416666656732559,0.333333343267441,0.333333343267441,0.194444447755814,0,0.444444447755814,1,0.444444447755814,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.291666656732559,0.666666686534882,0.729166626930237,0,0.791666686534882,0.833333313465118,0.654329121112823,0.980969905853271,0.625,0,0.666666686534882,0.277777791023254,0.0408952608704567,0.836613953113556,0.25,0.416666656732559,0.416666656732559,0.833333313465118,0.375,0.333333343267441,0,0.194444447755814,1,0.194444447755814,0.666666686534882,0.416666656732559,0.333333343267441,0.5,0.504999995231628,0.75,0.229166656732559,1,0.25,0.666666686534882,0.291666656732559,0.833333313465118,0.519030094146729,0.845670819282532,0.5,0,0.333333343267441,0.277777791023254,0.163385987281799,0.959104776382446,0.25,0.333333343267441,0.416666656732559,0.75,0.333333343267441,0.333333343267441,0.666666686534882,0.16666667163372,0.333333343267441,\n0.416666656732559,0,0.5,0.872500002384186,0.962176203727722,1,0.5,0.1875,1,0.20833332836628,0.666666686534882,0.791666686534882,0.75,0.519030153751373,0.654329121112823,0.375,0,0,0.277777791023254,1,0.277777791023254,0.336614012718201,0.959104776382446,0.25,0.25,0.416666656732559,0.666666686534882,0.291666656732559,0.333333343267441,0.333333343267441,0.16666667163372,0,0.416666656732559,1,0.416666656732559,0.666666686534882,0.472222208976746,0.10416667163372,1,0.16666667163372,0.666666686534882,0.654329180717468,0.519030094146729,0.25,0,0.666666686534882,0.25,0.459104716777802,0.836614012718201,0.25,0.16666667163372,0.416666656732559,0.583333313465118,0.25,0.333333343267441,1,0.16666667163372,0,0.16666667163372,0.666666686534882,0.388888895511627,0.333333343267441,0.472222208976746,0.0625,1,0.125,0.666666686534882,0.845670878887177,0.519030153751373,0.125,0,0.333333343267441,0.25,0.979166626930237,1,0.25,0.0833333358168602,0.416666656732559,0.5,0.20833332836628,0.333333343267441,0.333333343267441,0.388888895511627,0,0.472222208976746,1,0.472222208976746,0.0833333358168602,0.666666686534882,0.020833333954215,0,0.980969905853271,0.654329180717468,1,0,0,0,0,0.25,1,0.25,0.145833343267441,1,0.958333313465118,0.916666686534882,0.416666656732559,0.416666656732559,0.16666667163372,0.333333343267441,0,0.388888895511627,1,0.388888895511627,0.666666686534882,0.444444447755814,0.0416666679084301,0.666666686534882,0.0625,0,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.666666686534882,0.222222223877907,0.916666686534882,0.916666686534882,0.979166626930237,0,0.416666656732559,0.333333343267441,0.125,0.333333343267441,0.666666686534882,0.361111104488373,0.333333343267441,0.444444447755814,1,0.666666686534882,0.145833343267441,0,0.333333343267441,0.5,0.504999995231628,0.75,0.333333343267441,0.222222223877907,0.875,0.916666686534882,0.10416667163372,0,0.0833333358168602,0.333333343267441,0.416666656732559,0.25,0.333333343267441,0.361111104488373,0,0.444444447755814,1,0.444444447755814,0.958333313465118,0.583333313465118,\n0.1875,0,0,0.5,0.872500002384186,0.962176203727722,1,0.5,0,0.222222223877907,1,0.222222223877907,0.833333313465118,0.916666686534882,0.854166626930237,0,0.0416666679084301,0.333333343267441,0.416666656732559,0.16666667163372,0,0.361111104488373,1,0.361111104488373,0.666666686534882,0.416666656732559,0.20833332836628,0.916666686534882,0.916666686534882,0.583333313465118,0.666666686534882,0.472222208976746,0.666666686534882,0.194444447755814,0.395833313465118,1,0.791666686534882,0.916666686534882,1,0.333333343267441,0.416666656732559,0.0833333358168602,0.666666686534882,0.333333343267441,0.333333343267441,0.416666656732559,0.16666667163372,0.916666686534882,0.875,0.583333313465118,0.333333343267441,0.472222208976746,0.333333343267441,0.194444447755814,0.75,0.916666686534882,0.354166686534882,0,0.958333313465118,0.25,0.4375,0,0.333333343267441,0.333333343267441,0,0.416666656732559,1,0.416666656732559,0.0833333358168602,0.916666686534882,0.833333313465118,0.583333313465118,0,0.472222208976746,1,0.472222208976746,0,0.194444447755814,1,0.194444447755814,0.520833373069763,1,0.708333313465118,0.916666686534882,0.479166686534882,1,0.916666686534882,0.25,0,0.333333343267441,1,0.333333343267441,0.666666686534882,0.388888895511627,0.0416666679084301,0.916666686534882,0.791666686534882,0.583333313465118,0.666666686534882,0.444444447755814,0.666666686534882,0.16666667163372,0.666666686534882,0.916666686534882,0.479166686534882,0,0.458333343267441,0.916666686534882,0.875,0.25,0.666666686534882,0.305555552244186,0.333333343267441,0.388888895511627,0.20833332836628,0.833333313465118,0.75,0.583333313465118,0.333333343267441,0.444444447755814,0.333333343267441,0.16666667163372,0.645833373069763,1,0.625,0.916666686534882,0.458333343267441,0.833333313465118,0.833333313465118,0.25,0.333333343267441,0.305555552244186,0,0.388888895511627,1,0.388888895511627,0.16666667163372,0.833333313465118,0.708333313465118,0.583333313465118,0,0.444444447755814,1,0.444444447755814,1,0.16666667163372,0,0.16666667163372,0.583333313465118,0.916666686534882,\n0.604166626930237,0,0.458333343267441,0.75,0.791666686534882,0.25,0,0.305555552244186,1,0.305555552244186,0.666666686534882,0.361111104488373,0.0833333358168602,0.833333313465118,0.666666686534882,0.583333313465118,0.666666686534882,0.416666656732559,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.895833373069763,1,0.541666686534882,0.916666686534882,0.458333343267441,0.666666686534882,0.75,0.25,0.666666686534882,0.277777791023254,0.333333343267441,0.361111104488373,0.0416666679084301,0.833333313465118,0.625,0.583333313465118,0.333333343267441,0.416666656732559,0.333333343267441,0.5,0.504999995231628,0.75,0.875,0.916666686534882,0.5,0.916666686534882,0.458333343267441,0.583333313465118,0.708333313465118,0.25,0.333333343267441,0.277777791023254,0,0.361111104488373,1,0.361111104488373,0.20833332836628,0.75,0.583333313465118,0.583333313465118,0,0.416666656732559,1,0.416666656732559,0,0.5,1,0.5,0.872500002384186,0.962176203727722,0.75,0.916666686534882,0.458333343267441,0.916666686534882,0.458333343267441,0.5,0.666666686534882,0.25,0,0.277777791023254,1,0.277777791023254,0.666666686534882,0.333333343267441,0.16666667163372,0.75,0.541666686534882,0.583333313465118,0.666666686534882,0.388888895511627,0.666666686534882,0.472222208976746,0.625,0.916666686534882,0.416666656732559,0.916666686534882,0.458333343267441,0.416666656732559,0.625,0.25,0.666666686534882,0.25,0.333333343267441,0.333333343267441,0.0833333358168602,0.75,0.5,0.583333313465118,0.333333343267441,0.388888895511627,0.333333343267441,0.472222208976746,0.5,0.916666686534882,0.375,0.916666686534882,0.458333343267441,0.333333343267441,0.583333313465118,0.25,0.333333343267441,0.25,0,0.333333343267441,1,0.333333343267441,0.0416666679084301,0.75,0.458333343267441,0.583333313465118,0,0.388888895511627,1,0.388888895511627,0,0.472222208976746,1,0.472222208976746,0.375,0.916666686534882,0.333333343267441,0.916666686534882,0.541666686534882,0.25,0.458333343267441,0.25,0,0.25,1,0.25,0.666666686534882,0.305555552244186,0.20833332836628,0.666666686534882,0.416666656732559,\n0.583333313465118,0.666666686534882,0.361111104488373,0.666666686534882,0.444444447755814,0.291666656732559,0.916666686534882,0.125,0.916666686534882,0.5,0.25,0.458333343267441,0.16666667163372,0.666666686534882,0.222222223877907,0.333333343267441,0.305555552244186,0.16666667163372,0.666666686534882,0.375,0.583333313465118,0.333333343267441,0.361111104488373,0.333333343267441,0.444444447755814,0.25,0.916666686534882,0,0.916666686534882,0.458333343267441,0.25,0.458333343267441,0.0833333358168602,0.333333343267441,0.222222223877907,0,0.305555552244186,1,0.305555552244186,0.0833333358168602,0.666666686534882,0.333333343267441,0.583333313465118,0,0.361111104488373,1,0.361111104488373,0,0.444444447755814,1,0.444444447755814,0.20833332836628,0.916666686534882,0.875,0.833333313465118,0.416666656732559,0.25,0.520833373069763,0,0,0.222222223877907,1,0.222222223877907,0.291666656732559,0.75,0.666666686534882,0.277777791023254,0.0416666679084301,0.666666686534882,0.291666656732559,0.583333313465118,0.666666686534882,0.333333343267441,0.666666686534882,0.416666656732559,0.16666667163372,0.916666686534882,0.75,0.833333313465118,0.5625,1,0.375,0.25,0.666666686534882,0.194444447755814,0.791666686534882,0.666666686534882,0.333333343267441,0.277777791023254,0.25,0.583333313465118,0.20833332836628,0.583333313465118,0.333333343267441,0.333333343267441,0.333333343267441,0.416666656732559,0.125,0.916666686534882,0.625,0.833333313465118,0.541666686534882,0.916666686534882,0.333333343267441,0.25,0.333333343267441,0.194444447755814,0.291666656732559,0.666666686534882,0,0.277777791023254,1,0.277777791023254,0.20833332836628,0.583333313465118,0.16666667163372,0.583333313465118,0,0.333333343267441,1,0.333333343267441,0,0.416666656732559,1,0.416666656732559,0.0833333358168602,0.916666686534882,0.5,0.833333313465118,0.541666686534882,0.833333313465118,0.291666656732559,0.25,0,0.194444447755814,1,0.194444447755814,0.791666686534882,0.583333313465118,0.666666686534882,0.25,0.16666667163372,0.583333313465118,0.0833333358168602,0.583333313465118,\n0.666666686534882,0.305555552244186,0.666666686534882,0.388888895511627,0.0416666679084301,0.916666686534882,0.375,0.833333313465118,0.541666686534882,0.75,0.25,0.25,0.666666686534882,0.16666667163372,0.291666656732559,0.583333313465118,0.333333343267441,0.25,0.125,0.583333313465118,0.0416666679084301,0.583333313465118,0.333333343267441,0.305555552244186,0.333333343267441,0.388888895511627,1,0.916666686534882,0.125,0.833333313465118,0.541666686534882,0.666666686534882,0.20833332836628,0.25,0.333333343267441,0.16666667163372,0.791666686534882,0.5,0,0.25,1,0.25,0.0833333358168602,0.583333313465118,0.20833332836628,0.5,0,0.305555552244186,1,0.305555552244186,0,0.388888895511627,1,0.388888895511627,0.958333313465118,0.833333313465118,0,0.833333313465118,0.541666686534882,0.583333313465118,0.16666667163372,0.25,1,0.16666667163372,0,0.16666667163372,0.291666656732559,0.5,0.666666686534882,0.222222223877907,0.0416666679084301,0.583333313465118,0.16666667163372,0.5,0.666666686534882,0.277777791023254,0.666666686534882,0.361111104488373,0.916666686534882,0.833333313465118,0.875,0.75,0.541666686534882,0.5,0.125,0.25,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.791666686534882,0.416666656732559,0.333333343267441,0.222222223877907,1,0.583333313465118,0.0833333358168602,0.5,0.333333343267441,0.277777791023254,0.333333343267441,0.361111104488373,0.875,0.833333313465118,0.75,0.75,0.541666686534882,0.416666656732559,0.0833333358168602,0.25,0.333333343267441,0.5,0.504999995231628,0.75,0.291666656732559,0.416666656732559,0,0.222222223877907,1,0.222222223877907,0.958333313465118,0.5,0.0416666679084301,0.5,0,0.277777791023254,1,0.277777791023254,0,0.361111104488373,1,0.361111104488373,0.833333313465118,0.833333313465118,0.625,0.75,0.541666686534882,0.333333343267441,0.0416666679084301,0.25,0,0.5,1,0.5,0.872500002384186,0.962176203727722,0.791666686534882,0.333333343267441,0.666666686534882,0.194444447755814,0.916666686534882,0.5,0.20833332836628,0.416666656732559,0.666666686534882,0.25,0.666666686534882,0.333333343267441,\n0.791666686534882,0.833333313465118,0.5,0.75,1,0.25,0.541666686534882,0.25,0.666666686534882,0.472222208976746,0.291666656732559,0.333333343267441,0.333333343267441,0.194444447755814,0.875,0.5,0.16666667163372,0.416666656732559,0.333333343267441,0.25,0.333333343267441,0.333333343267441,0.75,0.833333313465118,0.375,0.75,0.958333313465118,0.16666667163372,0.541666686534882,0.16666667163372,0.333333343267441,0.472222208976746,0.791666686534882,0.25,0,0.194444447755814,1,0.194444447755814,0.833333313465118,0.5,0.0833333358168602,0.416666656732559,0,0.25,1,0.25,0,0.333333343267441,1,0.333333343267441,0.708333313465118,0.833333313465118,0.125,0.75,0.916666686534882,0.16666667163372,0.541666686534882,0.0833333358168602,0,0.472222208976746,1,0.472222208976746,0.291666656732559,0.25,0.666666686534882,0.16666667163372,0.791666686534882,0.5,0.0416666679084301,0.416666656732559,0.666666686534882,0.222222223877907,0.666666686534882,0.305555552244186,0.666666686534882,0.833333313465118,0,0.75,0.875,0.16666667163372,0.5625,0,0.666666686534882,0.444444447755814,0.791666686534882,0.16666667163372,0.333333343267441,0.16666667163372,0.75,0.5,0.20833332836628,0.333333343267441,0.333333343267441,0.222222223877907,0.333333343267441,0.305555552244186,0.625,0.833333313465118,0.875,0.666666686534882,0.604166626930237,1,0.833333313465118,0.16666667163372,0.333333343267441,0.444444447755814,0.291666656732559,0.16666667163372,1,0.16666667163372,0,0.16666667163372,0.708333313465118,0.5,0.16666667163372,0.333333343267441,0,0.222222223877907,1,0.222222223877907,0,0.305555552244186,1,0.305555552244186,0.583333313465118,0.833333313465118,0.75,0.666666686534882,0.583333313465118,0.916666686534882,0.791666686534882,0.16666667163372,0,0.444444447755814,1,0.444444447755814,0.791666686534882,0.0833333358168602,0.666666686534882,0.5,0.0833333358168602,0.333333343267441,0.666666686534882,0.194444447755814,0.666666686534882,0.277777791023254,0.541666686534882,0.833333313465118,0.625,0.666666686534882,0.583333313465118,0.833333313465118,0.75,0.16666667163372,\n0.666666686534882,0.416666656732559,0.291666656732559,0.0833333358168602,0.625,0.5,0.0416666679084301,0.333333343267441,0.333333343267441,0.194444447755814,0.333333343267441,0.277777791023254,0.5,0.833333313465118,0.5,0.666666686534882,0.583333313465118,0.75,0.708333313465118,0.16666667163372,0.333333343267441,0.416666656732559,0.270833313465118,0,0.583333313465118,0.5,0.20833332836628,0.25,0,0.194444447755814,1,0.194444447755814,0,0.277777791023254,1,0.277777791023254,0.458333343267441,0.833333313465118,0.375,0.666666686534882,0.583333313465118,0.666666686534882,0.666666686534882,0.16666667163372,0,0.416666656732559,1,0.416666656732559,0.420507907867432,0.679373323917389,0.541666686534882,0.5,0.16666667163372,0.25,0.666666686534882,0.16666667163372,0.666666686534882,0.25,0.416666656732559,0.833333313465118,0.125,0.666666686534882,0.583333313465118,0.583333313465118,0.625,0.16666667163372,0.666666686534882,0.388888895511627,0.320626705884933,0.579492092132568,0.5,0.5,0.0833333358168602,0.25,0.333333343267441,0.16666667163372,0.333333343267441,0.25,0.375,0.833333313465118,0,0.666666686534882,0.583333313465118,0.5,0.583333313465118,0.16666667163372,0.333333343267441,0.388888895511627,0.179373323917389,0.579492092132568,0.458333343267441,0.5,0.0416666679084301,0.25,1,0.16666667163372,0,0.16666667163372,0,0.25,1,0.25,0.333333343267441,0.833333313465118,0.875,0.583333313465118,0.583333313465118,0.416666656732559,0.541666686534882,0.16666667163372,0,0.388888895511627,1,0.388888895511627,0.079492099583149,0.679373264312744,0.416666656732559,0.5,0.20833332836628,0.16666667163372,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.666666686534882,0.222222223877907,0.291666656732559,0.833333313465118,0.75,0.583333313465118,0.583333313465118,0.333333343267441,0.5,0.16666667163372,0.666666686534882,0.361111104488373,0.0794920921325684,0.820626676082611,0.375,0.5,0.16666667163372,0.16666667163372,0.333333343267441,0.5,0.504999995231628,0.75,0.333333343267441,0.222222223877907,0.25,0.833333313465118,0.625,0.583333313465118,\n0.583333313465118,0.25,0.458333343267441,0.16666667163372,0.333333343267441,0.361111104488373,0.179373309016228,0.920507907867432,0.333333343267441,0.5,0.0833333358168602,0.16666667163372,0,0.5,1,0.5,0.872500002384186,0.962176203727722,0,0.222222223877907,1,0.222222223877907,0.20833332836628,0.833333313465118,0.5,0.583333313465118,0.583333313465118,0.16666667163372,0.416666656732559,0.16666667163372,0,0.361111104488373,1,0.361111104488373,0.320626676082611,0.920507907867432,0.291666656732559,0.5,0.0416666679084301,0.16666667163372,0.666666686534882,0.472222208976746,0.666666686534882,0.194444447755814,0.16666667163372,0.833333313465118,0.375,0.583333313465118,0.375,0.16666667163372,0.583333313465118,0.0833333358168602,0.666666686534882,0.333333343267441,0.420507907867432,0.820626676082611,0.25,0.5,0.20833332836628,0.0833333358168602,0.333333343267441,0.472222208976746,0.333333343267441,0.194444447755814,0.125,0.833333313465118,0.125,0.583333313465118,0.6875,1,0.333333343267441,0.16666667163372,0.333333343267441,0.333333343267441,0.920507907867432,0.820626735687256,0.20833332836628,0.5,0.16666667163372,0.0833333358168602,0,0.472222208976746,1,0.472222208976746,0,0.194444447755814,1,0.194444447755814,0.0833333358168602,0.833333313465118,0,0.583333313465118,0.291666656732559,0.16666667163372,0.645833373069763,0,0,0.333333343267441,1,0.333333343267441,0.820626735687256,0.920507907867432,0.16666667163372,0.5,0.0833333358168602,0.0833333358168602,0.666666686534882,0.16666667163372,0.0416666679084301,0.833333313465118,0.875,0.5,0.666666686534882,0.916666686534882,0.25,0.16666667163372,0.666666686534882,0.305555552244186,0.679373323917389,0.920507907867432,0.125,0.5,0.0416666679084301,0.0833333358168602,0.333333343267441,0.16666667163372,1,0.833333313465118,0.75,0.5,0.666666686534882,0.833333313465118,0.20833332836628,0.16666667163372,0.333333343267441,0.305555552244186,0.579492092132568,0.820626676082611,0.9375,1,0.0833333358168602,0.5,0,0.16666667163372,1,0.16666667163372,0.958333313465118,0.75,0.625,0.5,0.666666686534882,\n0.75,0.16666667163372,0.16666667163372,0,0.305555552244186,1,0.305555552244186,0.579492092132568,0.679373323917389,0.0416666679084301,0.5,0.895833373069763,0,0.666666686534882,0.5,0.872500002384186,0.537823796272278,0.916666686534882,0.75,0.5,0.5,0.666666686534882,0.666666686534882,0.125,0.16666667163372,0.666666686534882,0.277777791023254,0.679373323917389,0.579492092132568,1,0.5,0.9375,0,0.333333343267441,0.5,0.504999995231628,0.75,0.875,0.75,0.375,0.5,0.666666686534882,0.583333313465118,0.0833333358168602,0.16666667163372,0.333333343267441,0.277777791023254,0.820626676082611,0.579492092132568,0.958333313465118,0.916666686534882,0.958333313465118,0.416666656732559,0,0.5,0.872500002384186,0.962176203727722,1,0.5,0.833333313465118,0.75,0.125,0.5,0.666666686534882,0.5,0.0416666679084301,0.16666667163372,0,0.277777791023254,1,0.277777791023254,0.920507907867432,0.679373323917389,0.916666686534882,0.916666686534882,0.916666686534882,0.416666656732559,0.666666686534882,0.472222208976746,0.791666686534882,0.75,0,0.5,0.666666686534882,0.416666656732559,1,0.16666667163372,0.666666686534882,0.25,0.875,0.5,0.480969905853271,0.654329180717468,0.958333313465118,0.833333313465118,0.875,0.416666656732559\n\t\t\t} \n\t\t\tUVIndex: *3726 {\n\t\t\t\ta: 496,482,451,482,436,451,482,466,436,466,421,436,466,495,421,495,452,421,451,436,407,436,394,407,436,421,394,421,380,394,421,452,380,452,408,380,407,394,367,394,355,367,394,380,355,380,341,355,380,408,341,408,368,341,367,355,328,355,316,328,355,341,316,341,302,316,341,368,302,368,329,302,328,316,291,316,281,291,316,302,281,302,267,281,302,329,267,329,292,267,291,281,255,281,245,255,281,267,245,267,233,245,267,292,233,292,256,233,255,245,220,245,209,220,245,233,209,233,197,209,233,256,197,256,221,197,220,209,186,209,174,186,209,197,174,197,160,174,197,221,160,221,187,160,186,174,147,174,135,147,174,160,135,160,122,135,160,187,122,187,148,122,147,135,110,135,99,110,135,122,99,122,86,99,122,148,86,148,111,86,110,99,73,99,62,73,99,86,62,86,49,62,86,111,49,111,74,49,73,62,36,62,24,36,62,49,24,49,10,24,49,74,10,74,37,10,38,25,11,909,897,871,897,860,871,897,886,860,886,849,860,886,908,849,908,872,849,871,860,833,860,821,833,860,849,821,849,809,821,849,872,809,872,834,809,833,821,794,821,783,794,821,809,783,809,772,783,809,834,772,834,795,772,794,783,757,783,746,757,783,772,746,772,735,746,772,795,735,795,758,735,757,746,720,746,710,720,746,735,710,735,700,710,735,758,700,758,721,700,720,710,686,710,676,686,710,700,676,700,666,676,700,721,666,721,687,666,686,676,651,676,640,651,676,666,640,666,629,640,666,687,629,687,652,629,651,640,615,640,605,615,640,629,605,629,595,605,629,652,595,652,616,595,615,605,581,605,571,581,605,595,571,595,561,571,595,616,561,616,582,561,581,571,546,571,535,546,571,561,535,561,524,535,561,582,524,582,547,524,546,535,509,535,498,509,535,524,498,524,485,498,524,547,485,547,510,485,509,498,468,498,454,468,498,485,454,485,439,454,485,510,439,510,470,439,469,455,440,423,410,381,410,369,381,410,395,369,395,356,369,395,424,356,424,382,356,381,369,342,369,330,342,369,356,330,356,317,330,356,382,317,382,343,317,342,330,303,330,293,303,330,317,293,317,282,293,317,343,282,343,304,282,303,293,268,293,257,268,293,282,257,282,246,257,282,304,246,304,269,246,268,257,234,257,222,234,257,\n246,222,246,210,222,246,269,210,269,235,210,234,222,198,222,188,198,222,210,188,210,175,188,210,235,175,235,199,175,198,188,161,188,149,161,188,175,149,175,136,149,175,199,136,199,162,136,161,149,123,149,112,123,149,136,112,136,100,112,136,162,100,162,124,100,123,112,87,112,75,87,112,100,75,100,63,75,100,124,63,124,88,63,87,75,50,75,39,50,75,63,39,63,26,39,63,88,26,88,51,26,50,39,12,39,0,12,39,26,0,26,1121,0,26,51,1121,51,13,1121,12,0,1109,0,1099,1109,0,1121,1099,1121,1089,1099,1121,13,1089,13,1111,1089,1110,1100,1090,1078,1069,1049,1069,1038,1049,1069,1060,1038,1060,1028,1038,1060,1079,1028,1079,1050,1028,1049,1038,1016,1038,1004,1016,1038,1028,1004,1028,993,1004,1028,1050,993,1050,1017,993,1016,1004,980,1004,969,980,1004,993,969,993,959,969,993,1017,959,1017,981,959,980,969,947,969,936,947,969,959,936,959,926,936,959,981,926,981,948,926,947,936,914,936,901,914,936,926,901,926,890,901,926,948,890,948,915,890,914,901,877,901,864,877,901,890,864,890,853,864,890,915,853,915,878,853,877,864,839,864,825,839,864,853,825,853,813,825,853,878,813,878,840,813,839,825,800,825,787,800,825,813,787,813,776,787,813,840,776,840,801,776,800,787,763,787,750,763,787,776,750,776,739,750,776,801,739,801,764,739,763,750,726,750,714,726,750,739,714,739,704,714,739,764,704,764,727,704,726,714,692,714,680,692,714,704,680,704,670,680,704,727,670,727,693,670,692,680,657,680,644,657,680,670,644,670,633,644,670,693,633,693,658,633,659,645,634,622,609,587,609,575,587,609,599,575,599,565,575,599,621,565,621,588,565,587,575,553,575,540,553,575,565,540,565,529,540,565,588,529,588,554,529,553,540,516,540,503,516,540,529,503,529,490,503,529,554,490,554,517,490,516,503,476,503,461,476,503,490,461,490,446,461,490,517,446,517,477,446,476,461,430,461,416,430,461,446,416,446,402,416,446,477,402,477,431,402,430,416,388,416,375,388,416,402,375,402,362,375,402,431,362,431,389,362,388,375,349,375,336,349,375,362,336,362,323,336,362,389,323,389,350,323,349,336,310,336,298,310,336,323,298,323,287,298,323,350,287,350,311,287,310,298,274,298,262,274,298,287,262,\n287,251,262,287,311,251,311,275,251,274,262,240,262,227,240,262,251,227,251,215,227,251,275,215,275,241,215,240,227,204,227,193,204,227,215,193,215,180,193,215,241,180,241,205,180,204,193,167,193,154,167,193,180,154,180,141,154,180,205,141,205,168,141,169,155,142,130,117,93,117,80,93,117,105,80,105,68,80,105,129,68,129,94,68,93,80,56,80,44,56,80,68,44,68,31,44,68,94,31,94,57,31,56,44,18,44,5,18,44,31,5,31,1126,5,31,57,1126,57,19,1126,18,5,1116,5,1105,1116,5,1126,1105,1126,1095,1105,1126,19,1095,19,1117,1095,1116,1105,1084,1105,1074,1084,1105,1095,1074,1095,1065,1074,1095,1117,1065,1117,1085,1065,1084,1074,1055,1074,1043,1055,1074,1065,1043,1065,1033,1043,1065,1085,1033,1085,1056,1033,1055,1043,1022,1043,1009,1022,1043,1033,1009,1033,998,1009,1033,1056,998,1056,1023,998,1022,1009,986,1009,974,986,1009,998,974,998,964,974,998,1023,964,1023,987,964,986,974,953,974,941,953,974,964,941,964,931,941,964,987,931,987,954,931,953,941,920,941,906,920,941,931,906,931,895,906,931,954,895,954,921,895,920,906,883,906,869,883,906,895,869,895,858,869,895,921,858,921,884,858,883,869,845,869,830,845,869,858,830,858,818,830,858,884,818,884,846,818,847,831,819,807,792,769,792,755,769,792,781,755,781,744,755,781,806,744,806,770,744,769,755,732,755,719,732,755,744,719,744,709,719,744,770,709,770,733,709,732,719,698,719,685,698,719,709,685,709,675,685,709,733,675,733,699,675,698,685,664,685,650,664,685,675,650,675,639,650,675,699,639,699,665,639,664,650,627,650,614,627,650,639,614,639,604,614,639,665,604,665,628,604,627,614,593,614,580,593,614,604,580,604,570,580,604,628,570,628,594,570,593,580,559,580,545,559,580,570,545,570,534,545,570,594,534,594,560,534,559,545,522,545,508,522,545,534,508,534,497,508,534,560,497,560,523,497,522,508,483,508,467,483,508,497,467,497,453,467,497,523,453,523,484,453,483,467,437,467,422,437,467,453,422,453,409,422,453,484,409,484,438,409,437,422,1047,422,1037,1047,422,409,1037,409,1027,1037,409,438,1027,438,1048,1027,1047,1037,1013,1037,1002,1013,1037,1027,1002,1027,991,1002,1027,1048,991,1048,1014,991,1015,\n1003,992,979,968,945,968,935,945,968,958,935,958,925,935,958,978,925,978,946,925,945,935,912,935,900,912,935,925,900,925,889,900,925,946,889,946,913,889,912,900,875,900,863,875,900,889,863,889,852,863,889,913,852,913,876,852,875,863,837,863,824,837,863,852,824,852,812,824,852,876,812,876,838,812,837,824,798,824,786,798,824,812,786,812,775,786,812,838,775,838,799,775,798,786,761,786,749,761,786,775,749,775,738,749,775,799,738,799,762,738,761,749,724,749,713,724,749,738,713,738,703,713,738,762,703,762,725,703,724,713,690,713,679,690,713,703,679,703,669,679,703,725,669,725,691,669,690,679,655,679,643,655,679,669,643,669,632,643,669,691,632,691,656,632,655,643,619,643,608,619,643,632,608,632,598,608,632,656,598,656,620,598,619,608,585,608,574,585,608,598,574,598,564,574,598,620,564,620,586,564,585,574,550,574,538,550,574,564,538,564,527,538,564,586,527,586,552,527,551,539,528,513,414,501,414,428,501,428,444,501,444,459,501,459,474,501,474,488,501,399,515,386,515,502,386,386,502,373,502,489,373,373,489,360,489,475,360,360,475,347,475,460,347,347,460,334,460,445,334,334,445,321,445,429,321,321,429,308,429,415,308,308,415,401,415,514,401,426,512,1068,273,526,1059,261,542,412,250,537,1046,239,549,1036,226,352,505,214,942,932,203,244,393,192,577,397,179,406,569,166,579,718,153,601,384,140,731,882,128,894,1032,116,624,371,104,1054,43,92,213,202,79,442,358,67,297,922,55,238,372,42,556,345,30,1088,232,17,1098,219,4,531,286,332,426,1026,426,1068,1026,1115,273,1012,273,1059,1012,1104,261,319,261,412,319,1094,250,1001,250,1046,1001,1083,239,990,239,1036,990,1073,226,492,226,505,492,1064,214,907,214,932,907,1053,203,379,203,393,379,1042,192,306,192,397,306,1031,179,558,179,569,558,1021,166,708,166,718,708,1008,153,295,153,384,295,997,140,868,140,882,868,985,128,1020,128,1032,1020,973,116,284,116,371,284,963,104,29,104,43,29,952,92,191,92,202,191,940,79,271,79,358,271,930,67,896,67,922,896,919,55,359,55,372,359,905,42,259,42,345,259,893,30,208,30,232,208,881,17,196,17,219,196,867,4,1125,4,286,1125,248,332,977,332,1026,977,844,1115,\n967,1115,1012,967,829,1104,237,1104,319,237,817,1094,957,1094,1001,957,805,1083,944,1083,990,944,791,1073,479,1073,492,479,780,1064,885,1064,907,885,768,1053,366,1053,379,366,754,1042,224,1042,306,224,743,1031,544,1031,558,544,730,1021,697,1021,708,697,717,1008,212,1008,295,212,707,997,857,997,868,857,696,985,1007,985,1020,1007,684,973,201,973,284,201,674,963,16,963,29,16,663,952,178,952,191,178,649,940,190,940,271,190,638,930,870,930,896,870,626,919,346,919,359,346,613,905,177,905,259,177,603,893,185,893,208,185,592,881,173,881,196,173,578,867,856,867,1125,856,164,248,934,248,977,934,557,844,924,844,967,924,543,829,151,829,237,151,533,817,911,817,957,911,521,805,899,805,944,899,507,791,463,791,479,463,494,780,859,780,885,859,481,768,354,768,366,354,465,754,138,754,224,138,450,743,532,743,544,532,435,730,683,730,697,683,420,717,126,717,212,126,405,707,843,707,857,843,392,696,996,696,1007,996,378,684,114,684,201,114,365,674,3,674,16,3,353,663,165,663,178,165,340,649,102,649,190,102,327,638,848,638,870,848,315,626,333,626,346,333,301,613,90,613,177,90,290,603,159,603,185,159,280,592,146,592,173,146,266,578,568,578,856,568,77,164,888,164,934,888,243,557,874,557,924,874,231,543,65,543,151,65,218,533,862,533,911,862,207,521,851,521,899,851,195,507,448,507,463,448,184,494,832,494,859,832,172,481,339,481,354,339,158,465,53,465,138,53,145,450,520,450,532,520,134,435,673,435,683,673,121,420,41,420,126,41,109,405,828,405,843,828,98,392,984,392,996,984,85,378,28,378,114,28,72,365,1124,365,3,1124,61,353,152,353,165,152,48,340,15,340,102,15,35,327,820,327,848,820,23,315,320,315,333,320,9,301,2,301,90,2,1130,290,133,290,159,133,1120,280,120,280,146,120,1108,266,254,266,568,254,1123,77,836,77,888,836,1087,243,823,243,874,823,1077,231,1113,231,65,1113,1067,218,811,218,862,811,1058,207,797,207,851,797,1045,195,433,195,448,433,1035,184,808,184,832,808,1025,172,326,172,339,326,1011,158,1102,158,53,1102,1000,145,506,145,520,506,989,134,662,134,673,662,976,121,1092,121,41,1092,966,109,816,109,828,816,956,98,972,98,984,972,943,85,1081,\n85,28,1081,933,72,1114,72,1124,1114,923,61,139,61,152,139,910,48,1071,48,15,1071,898,35,793,35,820,793,887,23,307,23,320,307,873,9,1062,9,2,1062,861,1130,108,1130,133,108,850,1120,97,1120,120,97,835,1108,1097,1108,254,1097,1052,1123,785,1123,836,785,810,1087,774,1087,823,774,796,1077,1040,1077,1113,1040,784,1067,760,1067,811,760,773,1058,748,1058,797,748,759,1045,418,1045,433,418,747,1035,782,1035,808,782,737,1025,314,1025,326,314,723,1011,1030,1011,1102,1030,712,1000,493,1000,506,493,702,989,648,989,662,648,689,976,1019,976,1092,1019,678,966,804,966,816,804,668,956,962,956,972,962,654,943,1006,943,1081,1006,642,933,1103,933,1114,1103,631,923,127,923,139,127,618,910,995,910,1071,995,607,898,771,898,793,771,597,887,296,887,307,296,584,873,983,873,1062,983,573,861,84,861,108,84,563,850,71,850,97,71,548,835,822,835,1097,822,971,1052,736,1052,785,736,525,810,722,810,774,722,511,796,961,796,1040,961,500,784,711,784,760,711,487,773,701,773,748,701,472,759,404,759,418,404,457,747,756,747,782,756,441,737,300,737,314,300,425,723,950,723,1030,950,411,712,480,712,493,480,396,702,637,702,648,637,383,689,938,689,1019,938,370,678,790,678,804,790,357,668,951,668,962,951,344,654,928,654,1006,928,331,642,1093,642,1103,1093,318,631,115,631,127,115,305,618,917,618,995,917,294,607,745,607,771,745,283,597,285,597,296,285,270,584,903,584,983,903,258,573,60,573,84,60,247,563,47,563,71,47,236,548,536,548,822,536,892,971,688,971,736,688,211,525,677,525,722,677,200,511,880,511,961,880,189,500,667,500,711,667,176,487,653,487,701,653,163,472,391,472,404,391,150,457,734,457,756,734,137,441,289,441,300,289,125,425,866,425,950,866,113,411,464,411,480,464,101,396,625,396,637,625,89,383,855,383,938,855,76,370,779,370,790,779,64,357,939,357,951,939,52,344,842,344,928,842,40,331,1082,331,1093,1082,27,318,103,318,115,103,14,305,827,305,917,827,1,294,473,294,745,473,1122,283,272,283,285,272,1112,270,815,270,903,815,1101,258,34,258,60,34,1091,247,22,247,47,22,1080,236,223,236,536,223,803,892,641,892,688,641,1061,211,630,211,677,630,1051,200,789,200,880,\n789,1039,189,617,189,667,617,1029,176,606,176,653,606,1018,163,377,163,391,377,1005,150,458,150,734,458,994,137,279,137,289,279,982,125,778,125,866,778,970,113,449,113,464,449,960,101,612,101,625,612,949,89,766,89,855,766,937,76,767,76,779,767,927,64,929,64,939,929,916,52,752,52,842,752,902,40,1072,40,1082,1072,891,27,91,27,103,91,879,14,741,14,827,741,865,1,443,1,473,443,854,1122,260,1122,272,260,841,1112,729,1112,815,729,826,1101,8,1101,34,8,814,1091,1129,1091,22,1129,802,1080,1070,1080,223,1070,716,803,596,803,641,596,777,1061,583,1061,630,583,765,1051,706,1051,789,706,751,1039,572,1039,617,572,740,1029,562,1029,606,562,728,1018,364,1018,377,364,715,1005,427,1005,458,427,705,994,265,994,279,265,695,982,694,982,778,694,682,970,434,970,449,434,672,960,602,960,612,602,661,949,681,949,766,681,647,937,753,937,767,753,636,927,918,927,929,918,623,916,671,916,752,671,611,902,1063,902,1072,1063,600,891,78,891,91,78,590,879,660,879,741,660,576,865,413,865,443,413,567,854,249,854,260,249,555,841,646,841,729,646,541,826,1119,826,8,1119,530,814,519,814,1129,519,1107,802,788,802,1070,788,716,596,385,777,583,499,765,706,486,751,572,518,740,562,471,728,364,456,715,427,338,705,265,66,695,694,253,682,434,566,672,602,419,661,681,591,647,753,589,636,918,742,623,671,904,611,1063,610,600,78,1041,590,325,54,576,413,313,567,249,398,555,646,225,541,1119,635,530,519,1076,1107,788,504,361,447,374,447,462,374,361,348,447,348,432,447,335,417,348,417,432,348,335,322,417,322,403,417,309,390,322,390,403,322,309,400,390,400,491,390,387,478,400,478,491,400,387,374,478,374,462,478,403,390,299,390,288,299,390,491,288,491,376,288,491,478,376,478,363,376,478,462,363,462,351,363,462,447,351,447,337,351,447,432,337,432,324,337,432,417,324,417,312,324,417,403,312,403,299,312,276,263,242,263,252,242,228,216,278,216,264,278,216,206,264,206,252,264,206,194,252,194,242,252,194,230,242,230,277,242,229,194,217,194,206,217,81,181,69,181,170,69,69,170,58,170,156,58,58,156,45,156,143,45,45,143,32,143,131,32,32,131,20,131,118,20,20,118,6,118,106,6,6,106,1127,106,\n95,1127,1127,95,83,95,183,83,182,96,1118,96,1044,1118,96,107,1044,107,1057,1044,107,119,1057,119,1066,1057,119,132,1066,132,1075,1066,132,144,1075,144,1086,1075,144,157,1086,157,1096,1086,157,171,1096,171,1106,1096,171,182,1106,182,1118,1106,46,33,999,33,988,999,33,21,988,21,975,988,21,7,975,7,965,975,7,1128,965,1128,955,965,1128,82,955,82,1034,955,82,70,1034,70,1024,1034,70,59,1024,59,1010,1024,59,46,1010,46,999,1010,1034,1024,1118,1024,1106,1118,955,1034,1044,1034,1118,1044,965,955,1057,955,1044,1057,975,965,1066,965,1057,1066,988,975,1075,975,1066,1075,999,988,1086,988,1075,1086,1010,999,1096,999,1086,1096,1024,1010,1106,1010,1096,1106\n\t\t\t} \n\t\t}\n\t\tLayer: 0 {\n\t\t\tVersion: 100\n\t\t\tLayerElement:  {\n\t\t\t\tType: \"LayerElementNormal\"\n\t\t\t\tTypedIndex: 0\n\t\t\t}\n\t\t\tLayerElement:  {\n\t\t\t\tType: \"LayerElementColor\"\n\t\t\t\tTypedIndex: 0\n\t\t\t}\n\t\t\tLayerElement:  {\n\t\t\t\tType: \"LayerElementUV\"\n\t\t\t\tTypedIndex: 0\n\t\t\t}\n\t\t}\n\t}\n\tModel: 140409994328576, \"Model::balloon\", \"Mesh\" {\n\t\tVersion: 232\n\t\tProperties70:  {\n\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",0,0,0\n\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",0\n\t\t}\n\t\tShading: Y\n\t\tCulling: \"CullingOff\"\n\t}\n}\n\n; Object connections\n;------------------------------------------------------------------\n\nConnections:  {\n\t\n\t;Model::balloon, Model::RootNode\n\tC: \"OO\",140409994328576,0\n\t\n\t;Geometry::, Model::balloon\n\tC: \"OO\",140409716540784,140409994328576\n}\n;Takes section\n;----------------------------------------------------\n\nTakes:  {\n\tCurrent: \"\"\n}\n"
  },
  {
    "path": "resources/dae/balloon.dae",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n    <asset>\n        <contributor>\n            <authoring_tool>modo 1001 [Build 109580], Mac OS X Version 10.11.6 (Build 15G1004) (Version 10.11.6 (Build 15G1004))</authoring_tool>\n            <comments>\n                Plug-in: [Build 109580];\n                Use Absolute Path: No;\n                Merge Reference Items: No;\n                Save Hidden Items: Yes;\n                Save Cameras: Yes;\n                Save Lights: Yes;\n                Save Locators: Yes;\n                Save Triangles as Triangles: No;\n                Order Vertex Maps Alphabetically: Yes;\n                Bake Matrices: No;\n                Save Vertex Normals: Yes;\n                Save UV Texture Coordinates: Yes;\n                Save Vertex Colors: Yes;\n                Save Vertex Weights: Yes;\n                Save Animation: Yes;\n                Sample Animation: No;\n                Sample Animation Start: 0;\n                Sample Animation End: 120;\n                Save modo Profile: Yes;\n                Save Maya Profile: Yes;\n                Save 3ds Max Profile: Yes;\n                Formatted Arrays: Yes;\n            </comments>\n            <source_data>file:///Users/alexanderperrin/Projects/sunday-drive/resources/modo/balloon.lxo</source_data>\n        </contributor>\n        <created>2016-09-24T15:48:40Z</created>\n        <modified>2016-09-24T15:48:40Z</modified>\n        <up_axis>Y_UP</up_axis>\n    </asset>\n    <library_cameras>\n        <camera id=\"Camera-camera003\" name=\"Camera\">\n            <optics>\n                <technique_common>\n                    <perspective>\n                        <xfov sid=\"HFOV\">39.5978</xfov>\n                        <yfov sid=\"YFOV\">26.9915</yfov>\n                        <znear sid=\"near_clip\">0.01</znear>\n                        <zfar sid=\"far_clip\">10000</zfar>\n                    </perspective>\n                </technique_common>\n                <technique profile=\"modo401\">\n                    <param sid=\"projType\" name=\"Projection_Type\" type=\"Name\">persp</param>\n                    <param sid=\"focalLen\" name=\"Focal_Length\" type=\"float\">0.05</param>\n                    <param sid=\"distort\" name=\"Lens_Distortion\" type=\"float\">0</param>\n                    <param sid=\"squeeze\" name=\"Lens_Squeeze\" type=\"float\">1</param>\n                    <param sid=\"focusDist\" name=\"Focus_Distance\" type=\"float\">4</param>\n                    <param sid=\"fStop\" name=\"F-Stop\" type=\"float\">4</param>\n                    <param sid=\"blurLen\" name=\"Blur_Length\" type=\"float\">0.5</param>\n                    <param sid=\"blurOff\" name=\"Blur_Offset\" type=\"float\">0</param>\n                    <param sid=\"ioDist\" name=\"Interocular_Distance\" type=\"float\">0.065</param>\n                    <param sid=\"convDist\" name=\"Convergence_Distance\" type=\"float\">2</param>\n                </technique>\n            </optics>\n            <imager>\n                <technique profile=\"modo401\">\n                    <param sid=\"apertureX\" name=\"Film_Width\" type=\"float\">0.036</param>\n                    <param sid=\"apertureY\" name=\"Film_Height\" type=\"float\">0.024</param>\n                    <param sid=\"offsetX\" name=\"Film_Offset_X\" type=\"float\">0</param>\n                    <param sid=\"offsetY\" name=\"Film_Offset_Y\" type=\"float\">0</param>\n                    <param sid=\"filmFit\" name=\"Film_Fit\" type=\"Name\">fill</param>\n                </technique>\n            </imager>\n        </camera>\n    </library_cameras>\n    <library_materials>\n        <material id=\"Material-Default\" name=\"Default\">\n            <instance_effect url=\"#Effect-Default\" />\n        </material>\n    </library_materials>\n    <library_effects>\n        <effect id=\"Effect-Default\" name=\"Default\">\n            <profile_COMMON>\n                <technique sid=\"common\">\n                    <phong>\n                        <diffuse>\n                            <color sid=\"diffuse_effect_rgb\">0.48 0.48 0.48 1</color>\n                        </diffuse>\n                        <specular>\n                            <color sid=\"specular_effect_rgb\">0.04 0.04 0.04 1</color>\n                        </specular>\n                        <shininess>\n                            <float sid=\"specular_effect_rgb\">256</float>\n                        </shininess>\n                    </phong>\n                </technique>\n            </profile_COMMON>\n        </effect>\n    </library_effects>\n    <library_geometries>\n        <geometry id=\"Geometry-mesh068\" name=\"balloon\">\n            <mesh>\n                <source id=\"Geometry-mesh068-positions\" name=\"positions\">\n                    <float_array id=\"Geometry-mesh068-positions-array\" count=\"2883\">\n                        -0.00064486 22.2034 0.000827374\n                        -0.000644853 22.0541 -0.0870133\n                        -0.000644852 22.0527 0.0861859\n                        -2.35098 21.894 0.000827374\n                        -2.31235 21.7498 -0.0870133\n                        -2.31197 21.7484 0.0861859\n                        -4.54175 20.9865 0.000827374\n                        -4.46711 20.8573 -0.0870133\n                        -4.46639 20.856 0.0861859\n                        -6.423 19.543 0.000827374\n                        -6.31745 19.4374 -0.0870133\n                        -6.31643 19.4364 0.0861859\n                        -7.86654 17.6617 0.000827374\n                        -7.73726 17.5871 -0.0870133\n                        -7.73602 17.5864 0.0861859\n                        -8.77398 15.471 0.000827374\n                        -8.62979 15.4323 -0.0870133\n                        -8.62841 15.432 0.0861859\n                        -9.0835 13.12 0.000827374\n                        -8.93422 13.12 -0.0870133\n                        -8.93279 13.12 0.0861859\n                        -8.77398 10.769 0.000827374\n                        -8.62979 10.8077 -0.0870133\n                        -8.62841 10.808 0.0861859\n                        -7.86654 8.57825 0.000827374\n                        -7.73726 8.65289 -0.0870133\n                        -7.73602 8.65361 0.0861859\n                        -6.42919 6.70378 0.000827374\n                        -6.3144 6.79922 -0.0870133\n                        -6.3133 6.80013 0.0861859\n                        -1.18195 0.882643 0.000827374\n                        -1.04258 0.936119 -0.0870133\n                        -1.04124 0.936633 0.0861859\n                        -1.18808 0.591517 0.000827374\n                        -1.03955 0.576616 -0.0870133\n                        -1.03813 0.576473 0.0861859\n                        -1.444 -0.668691 0.000827374\n                        -1.29815 -0.700502 -0.0870133\n                        -1.29675 -0.700807 0.0861859\n                        0.000129057 22.2034 0.00104103\n                        -0.0619836 22.0541 -0.0610717\n                        0.0604867 22.0527 0.0613986\n                        -1.66181 21.894 1.66298\n                        -1.6966 21.7498 1.57355\n                        -1.57387 21.7484 1.69576\n                        -3.21092 20.9865 3.21209\n                        -3.22025 20.8573 3.0972\n                        -3.09727 20.856 3.21916\n                        -4.54116 19.543 4.54233\n                        -4.52864 19.4374 4.40558\n                        -4.40545 19.4364 4.52734\n                        -5.5619 17.6617 5.56307\n                        -5.5326 17.5871 5.40954\n                        -5.40925 17.5864 5.53113\n                        -6.20356 15.471 6.20473\n                        -6.16371 15.4323 6.04066\n                        -6.04026 15.432 6.16215\n                        -6.42242 13.12 6.42359\n                        -6.37897 13.12 6.25592\n                        -6.25549 13.12 6.37738\n                        -6.20356 10.769 6.20473\n                        -6.16371 10.8077 6.04066\n                        -6.04026 10.808 6.16215\n                        -5.5619 8.57825 5.56307\n                        -5.5326 8.65289 5.40954\n                        -5.40925 8.65361 5.53113\n                        -4.54554 6.70378 4.54671\n                        -4.52648 6.79922 4.40343\n                        -4.40323 6.80013 4.52512\n                        -0.835178 0.882643 0.836348\n                        -0.798741 0.936119 0.675685\n                        -0.675324 0.936633 0.79721\n                        -0.839518 0.591517 0.840688\n                        -0.796602 0.576616 0.673547\n                        -0.673123 0.576473 0.795009\n                        -1.02048 -0.668691 1.02165\n                        -0.979459 -0.700502 0.856403\n                        -0.855998 -0.700807 0.977884\n                        0.000827374 22.2034 0.00064486\n                        -0.0870133 22.0541 0.000644853\n                        0.0861859 22.0527 0.000644852\n                        0.000827374 21.894 2.35098\n                        -0.0870133 21.7498 2.31235\n                        0.0861859 21.7484 2.31197\n                        0.000827374 20.9865 4.54175\n                        -0.0870133 20.8573 4.46711\n                        0.0861859 20.856 4.46639\n                        0.000827374 19.543 6.423\n                        -0.0870133 19.4374 6.31745\n                        0.0861859 19.4364 6.31643\n                        0.000827374 17.6617 7.86654\n                        -0.0870133 17.5871 7.73726\n                        0.0861859 17.5864 7.73602\n                        0.000827374 15.471 8.77398\n                        -0.0870133 15.4323 8.62979\n                        0.0861859 15.432 8.62841\n                        0.000827374 13.12 9.0835\n                        -0.0870133 13.12 8.93422\n                        0.0861859 13.12 8.93279\n                        0.000827374 10.769 8.77398\n                        -0.0870133 10.8077 8.62979\n                        0.0861859 10.808 8.62841\n                        0.000827374 8.57825 7.86654\n                        -0.0870133 8.65289 7.73726\n                        0.0861859 8.65361 7.73602\n                        0.000827374 6.70378 6.42919\n                        -0.0870133 6.79922 6.3144\n                        0.0861859 6.80013 6.3133\n                        0.000827374 0.882643 1.18195\n                        -0.0870133 0.936119 1.04258\n                        0.0861859 0.936633 1.04124\n                        0.000827374 0.591517 1.18808\n                        -0.0870133 0.576616 1.03955\n                        0.0861859 0.576473 1.03813\n                        0.000827374 -0.668691 1.444\n                        -0.0870133 -0.700502 1.29815\n                        0.0861859 -0.700807 1.29675\n                        0.00104103 22.2034 -0.000129057\n                        -0.0610717 22.0541 0.0619836\n                        0.0613986 22.0527 -0.0604867\n                        1.66298 21.894 1.66181\n                        1.57355 21.7498 1.6966\n                        1.69576 21.7484 1.57387\n                        3.21209 20.9865 3.21092\n                        3.0972 20.8573 3.22025\n                        3.21916 20.856 3.09727\n                        4.54233 19.543 4.54116\n                        4.40558 19.4374 4.52864\n                        4.52734 19.4364 4.40545\n                        5.56307 17.6617 5.5619\n                        5.40954 17.5871 5.5326\n                        5.53113 17.5864 5.40925\n                        6.20473 15.471 6.20356\n                        6.04066 15.4323 6.16371\n                        6.16215 15.432 6.04026\n                        6.42359 13.12 6.42242\n                        6.25592 13.12 6.37897\n                        6.37738 13.12 6.25549\n                        6.20473 10.769 6.20356\n                        6.04066 10.8077 6.16371\n                        6.16215 10.808 6.04026\n                        5.56307 8.57825 5.5619\n                        5.40954 8.65289 5.5326\n                        5.53113 8.65361 5.40925\n                        4.54671 6.70378 4.54554\n                        4.40343 6.79922 4.52648\n                        4.52512 6.80013 4.40323\n                        0.836348 0.882643 0.835178\n                        0.675685 0.936119 0.798741\n                        0.79721 0.936633 0.675324\n                        0.840688 0.591517 0.839518\n                        0.673547 0.576616 0.796602\n                        0.795009 0.576473 0.673123\n                        1.02165 -0.668691 1.02048\n                        0.856403 -0.700502 0.979459\n                        0.977884 -0.700807 0.855998\n                        0.00064486 22.2034 -0.000827374\n                        0.000644853 22.0541 0.0870133\n                        0.000644852 22.0527 -0.0861859\n                        2.35098 21.894 -0.000827374\n                        2.31235 21.7498 0.0870133\n                        2.31197 21.7484 -0.0861859\n                        4.54175 20.9865 -0.000827374\n                        4.46711 20.8573 0.0870133\n                        4.46639 20.856 -0.0861859\n                        6.423 19.543 -0.000827374\n                        6.31745 19.4374 0.0870133\n                        6.31643 19.4364 -0.0861859\n                        7.86654 17.6617 -0.000827374\n                        7.73726 17.5871 0.0870133\n                        7.73602 17.5864 -0.0861859\n                        8.77398 15.471 -0.000827374\n                        8.62979 15.4323 0.0870133\n                        8.62841 15.432 -0.0861859\n                        9.0835 13.12 -0.000827374\n                        8.93422 13.12 0.0870133\n                        8.93279 13.12 -0.0861859\n                        8.77398 10.769 -0.000827374\n                        8.62979 10.8077 0.0870133\n                        8.62841 10.808 -0.0861859\n                        7.86654 8.57825 -0.000827374\n                        7.73726 8.65289 0.0870133\n                        7.73602 8.65361 -0.0861859\n                        6.42919 6.70378 -0.000827374\n                        6.3144 6.79922 0.0870133\n                        6.3133 6.80013 -0.0861859\n                        1.18195 0.882643 -0.000827374\n                        1.04258 0.936119 0.0870133\n                        1.04124 0.936633 -0.0861859\n                        1.18808 0.591517 -0.000827374\n                        1.03955 0.576616 0.0870133\n                        1.03813 0.576473 -0.0861859\n                        1.444 -0.668691 -0.000827374\n                        1.29815 -0.700502 0.0870133\n                        1.29675 -0.700807 -0.0861859\n                        -0.000129057 22.2034 -0.00104103\n                        0.0619836 22.0541 0.0610717\n                        -0.0604867 22.0527 -0.0613986\n                        1.66181 21.894 -1.66298\n                        1.6966 21.7498 -1.57355\n                        1.57387 21.7484 -1.69576\n                        3.21092 20.9865 -3.21209\n                        3.22025 20.8573 -3.0972\n                        3.09727 20.856 -3.21916\n                        4.54116 19.543 -4.54233\n                        4.52864 19.4374 -4.40558\n                        4.40545 19.4364 -4.52734\n                        5.5619 17.6617 -5.56307\n                        5.5326 17.5871 -5.40954\n                        5.40925 17.5864 -5.53113\n                        6.20356 15.471 -6.20473\n                        6.16371 15.4323 -6.04066\n                        6.04026 15.432 -6.16215\n                        6.42242 13.12 -6.42359\n                        6.37897 13.12 -6.25592\n                        6.25549 13.12 -6.37738\n                        6.20356 10.769 -6.20473\n                        6.16371 10.8077 -6.04066\n                        6.04026 10.808 -6.16215\n                        5.5619 8.57825 -5.56307\n                        5.5326 8.65289 -5.40954\n                        5.40925 8.65361 -5.53113\n                        4.54554 6.70378 -4.54671\n                        4.52648 6.79922 -4.40343\n                        4.40323 6.80013 -4.52512\n                        0.835178 0.882643 -0.836348\n                        0.798741 0.936119 -0.675685\n                        0.675324 0.936633 -0.79721\n                        0.839518 0.591517 -0.840688\n                        0.796602 0.576616 -0.673547\n                        0.673123 0.576473 -0.795009\n                        1.02048 -0.668691 -1.02165\n                        0.979459 -0.700502 -0.856403\n                        0.855998 -0.700807 -0.977884\n                        -0.000827374 22.2034 -0.00064486\n                        0.0870133 22.0541 -0.000644853\n                        -0.0861859 22.0527 -0.000644852\n                        -0.000827374 21.894 -2.35098\n                        0.0870133 21.7498 -2.31235\n                        -0.0861859 21.7484 -2.31197\n                        -0.000827374 20.9865 -4.54175\n                        0.0870133 20.8573 -4.46711\n                        -0.0861859 20.856 -4.46639\n                        -0.000827374 19.543 -6.423\n                        0.0870133 19.4374 -6.31745\n                        -0.0861859 19.4364 -6.31643\n                        -0.000827374 17.6617 -7.86654\n                        0.0870133 17.5871 -7.73726\n                        -0.0861859 17.5864 -7.73602\n                        -0.000827374 15.471 -8.77398\n                        0.0870133 15.4323 -8.62979\n                        -0.0861859 15.432 -8.62841\n                        -0.000827374 13.12 -9.0835\n                        0.0870133 13.12 -8.93422\n                        -0.0861859 13.12 -8.93279\n                        -0.000827374 10.769 -8.77398\n                        0.0870133 10.8077 -8.62979\n                        -0.0861859 10.808 -8.62841\n                        -0.000827374 8.57825 -7.86654\n                        0.0870133 8.65289 -7.73726\n                        -0.0861859 8.65361 -7.73602\n                        -0.000827374 6.70378 -6.42919\n                        0.0870133 6.79922 -6.3144\n                        -0.0861859 6.80013 -6.3133\n                        -0.000827374 0.882643 -1.18195\n                        0.0870133 0.936119 -1.04258\n                        -0.0861859 0.936633 -1.04124\n                        -0.000827374 0.591517 -1.18808\n                        0.0870133 0.576616 -1.03955\n                        -0.0861859 0.576473 -1.03813\n                        -0.000827374 -0.668691 -1.444\n                        0.0870133 -0.700502 -1.29815\n                        -0.0861859 -0.700807 -1.29675\n                        -0.00104103 22.2034 0.000129057\n                        0.0610717 22.0541 -0.0619836\n                        -0.0613986 22.0527 0.0604867\n                        -1.66298 21.894 -1.66181\n                        -1.57355 21.7498 -1.6966\n                        -1.69576 21.7484 -1.57387\n                        -3.21209 20.9865 -3.21092\n                        -3.0972 20.8573 -3.22025\n                        -3.21916 20.856 -3.09727\n                        -4.54233 19.543 -4.54116\n                        -4.40558 19.4374 -4.52864\n                        -4.52734 19.4364 -4.40545\n                        -5.56307 17.6617 -5.5619\n                        -5.40954 17.5871 -5.5326\n                        -5.53113 17.5864 -5.40925\n                        -6.20473 15.471 -6.20356\n                        -6.04066 15.4323 -6.16371\n                        -6.16215 15.432 -6.04026\n                        -6.42359 13.12 -6.42242\n                        -6.25592 13.12 -6.37897\n                        -6.37738 13.12 -6.25549\n                        -6.20473 10.769 -6.20356\n                        -6.04066 10.8077 -6.16371\n                        -6.16215 10.808 -6.04026\n                        -5.56307 8.57825 -5.5619\n                        -5.40954 8.65289 -5.5326\n                        -5.53113 8.65361 -5.40925\n                        -4.54671 6.70378 -4.54554\n                        -4.40343 6.79922 -4.52648\n                        -4.52512 6.80013 -4.40323\n                        -0.836348 0.882643 -0.835178\n                        -0.675685 0.936119 -0.798741\n                        -0.79721 0.936633 -0.675324\n                        -0.840688 0.591517 -0.839518\n                        -0.673547 0.576616 -0.796602\n                        -0.795009 0.576473 -0.673123\n                        -1.02165 -0.668691 -1.02048\n                        -0.856403 -0.700502 -0.979459\n                        -0.977884 -0.700807 -0.855998\n                        0 -3 -1.2225\n                        -0.864438 -3 -0.864438\n                        -1.2225 -3 0\n                        -0.864438 -3 0.864438\n                        0 -3 1.2225\n                        0.864438 -3 0.864438\n                        1.2225 -3 0\n                        0.864438 -3 -0.864438\n                        0 -0.7 -1.5\n                        -1.06066 -0.7 -1.06066\n                        -1.5 -0.7 0\n                        -1.06066 -0.7 1.06066\n                        0 -0.7 1.5\n                        1.06066 -0.7 1.06066\n                        1.5 -0.7 0\n                        1.06066 -0.7 -1.06066\n                        0 4.1365 0\n                        0 4.44261 -2.3251\n                        -0.60178 4.44261 -2.24587\n                        -1.16255 4.44261 -2.0136\n                        -1.64409 4.44261 -1.64409\n                        -2.0136 4.44261 -1.16255\n                        -2.24587 4.44261 -0.60178\n                        -2.3251 4.44261 0\n                        -2.24587 4.44261 0.60178\n                        -2.0136 4.44261 1.16255\n                        -1.64409 4.44261 1.64409\n                        -1.16255 4.44261 2.0136\n                        -0.60178 4.44261 2.24587\n                        0 4.44261 2.3251\n                        0.60178 4.44261 2.24587\n                        1.16255 4.44261 2.0136\n                        1.64409 4.44261 1.64409\n                        2.0136 4.44261 1.16255\n                        2.24587 4.44261 0.60178\n                        2.3251 4.44261 0\n                        2.24587 4.44261 -0.60178\n                        2.0136 4.44261 -1.16255\n                        1.64409 4.44261 -1.64409\n                        1.16255 4.44261 -2.0136\n                        0.60178 4.44261 -2.24587\n                        0 5.34006 -4.49175\n                        -1.16255 5.34006 -4.3387\n                        -2.24587 5.34006 -3.88997\n                        -3.17615 5.34006 -3.17615\n                        -3.88997 5.34006 -2.24587\n                        -4.3387 5.34006 -1.16255\n                        -4.49175 5.34006 0\n                        -4.3387 5.34006 1.16255\n                        -3.88997 5.34006 2.24587\n                        -3.17615 5.34006 3.17615\n                        -2.24587 5.34006 3.88997\n                        -1.16255 5.34006 4.3387\n                        0 5.34006 4.49175\n                        1.16255 5.34006 4.3387\n                        2.24587 5.34006 3.88997\n                        3.17615 5.34006 3.17615\n                        3.88997 5.34006 2.24587\n                        4.3387 5.34006 1.16255\n                        4.49175 5.34006 0\n                        4.3387 5.34006 -1.16255\n                        3.88997 5.34006 -2.24587\n                        3.17615 5.34006 -3.17615\n                        2.24587 5.34006 -3.88997\n                        1.16255 5.34006 -4.3387\n                        0 6.76771 -6.35229\n                        -1.64409 6.76771 -6.13584\n                        -3.17615 6.76771 -5.50125\n                        -4.49175 6.76771 -4.49175\n                        -5.50125 6.76771 -3.17615\n                        -6.13584 6.76771 -1.64409\n                        -6.35229 6.76771 0\n                        -6.13584 6.76771 1.64409\n                        -5.50125 6.76771 3.17615\n                        -4.49175 6.76771 4.49175\n                        -3.17615 6.76771 5.50125\n                        -1.64409 6.76771 6.13584\n                        0 6.76771 6.35229\n                        1.64409 6.76771 6.13584\n                        3.17615 6.76771 5.50125\n                        4.49175 6.76771 4.49175\n                        5.50125 6.76771 3.17615\n                        6.13584 6.76771 1.64409\n                        6.35229 6.76771 0\n                        6.13584 6.76771 -1.64409\n                        5.50125 6.76771 -3.17615\n                        4.49175 6.76771 -4.49175\n                        3.17615 6.76771 -5.50125\n                        1.64409 6.76771 -6.13584\n                        0 8.62825 -7.77994\n                        -2.0136 8.62825 -7.51484\n                        -3.88997 8.62825 -6.73763\n                        -5.50125 8.62825 -5.50125\n                        -6.73763 8.62825 -3.88997\n                        -7.51484 8.62825 -2.0136\n                        -7.77994 8.62825 0\n                        -7.51484 8.62825 2.0136\n                        -6.73763 8.62825 3.88997\n                        -5.50125 8.62825 5.50125\n                        -3.88997 8.62825 6.73763\n                        -2.0136 8.62825 7.51484\n                        0 8.62825 7.77994\n                        2.0136 8.62825 7.51484\n                        3.88997 8.62825 6.73763\n                        5.50125 8.62825 5.50125\n                        6.73763 8.62825 3.88997\n                        7.51484 8.62825 2.0136\n                        7.77994 8.62825 0\n                        7.51484 8.62825 -2.0136\n                        6.73763 8.62825 -3.88997\n                        5.50125 8.62825 -5.50125\n                        3.88997 8.62825 -6.73763\n                        2.0136 8.62825 -7.51484\n                        0 10.7949 -8.67739\n                        -2.24587 10.7949 -8.38172\n                        -4.3387 10.7949 -7.51484\n                        -6.13584 10.7949 -6.13584\n                        -7.51484 10.7949 -4.3387\n                        -8.38172 10.7949 -2.24587\n                        -8.67739 10.7949 0\n                        -8.38172 10.7949 2.24587\n                        -7.51484 10.7949 4.3387\n                        -6.13584 10.7949 6.13584\n                        -4.3387 10.7949 7.51484\n                        -2.24587 10.7949 8.38172\n                        0 10.7949 8.67739\n                        2.24587 10.7949 8.38172\n                        4.3387 10.7949 7.51484\n                        6.13584 10.7949 6.13584\n                        7.51484 10.7949 4.3387\n                        8.38172 10.7949 2.24587\n                        8.67739 10.7949 0\n                        8.38172 10.7949 -2.24587\n                        7.51484 10.7949 -4.3387\n                        6.13584 10.7949 -6.13584\n                        4.3387 10.7949 -7.51484\n                        2.24587 10.7949 -8.38172\n                        0 13.12 -8.9835\n                        -2.3251 13.12 -8.67739\n                        -4.49175 13.12 -7.77994\n                        -6.35229 13.12 -6.35229\n                        -7.77994 13.12 -4.49175\n                        -8.67739 13.12 -2.3251\n                        -8.9835 13.12 0\n                        -8.67739 13.12 2.3251\n                        -7.77994 13.12 4.49175\n                        -6.35229 13.12 6.35229\n                        -4.49175 13.12 7.77994\n                        -2.3251 13.12 8.67739\n                        0 13.12 8.9835\n                        2.3251 13.12 8.67739\n                        4.49175 13.12 7.77994\n                        6.35229 13.12 6.35229\n                        7.77994 13.12 4.49175\n                        8.67739 13.12 2.3251\n                        8.9835 13.12 0\n                        8.67739 13.12 -2.3251\n                        7.77994 13.12 -4.49175\n                        6.35229 13.12 -6.35229\n                        4.49175 13.12 -7.77994\n                        2.3251 13.12 -8.67739\n                        0 15.4451 -8.67739\n                        -2.24587 15.4451 -8.38172\n                        -4.3387 15.4451 -7.51484\n                        -6.13584 15.4451 -6.13584\n                        -7.51484 15.4451 -4.3387\n                        -8.38172 15.4451 -2.24587\n                        -8.67739 15.4451 0\n                        -8.38172 15.4451 2.24587\n                        -7.51484 15.4451 4.3387\n                        -6.13584 15.4451 6.13584\n                        -4.3387 15.4451 7.51484\n                        -2.24587 15.4451 8.38172\n                        0 15.4451 8.67739\n                        2.24587 15.4451 8.38172\n                        4.3387 15.4451 7.51484\n                        6.13584 15.4451 6.13584\n                        7.51484 15.4451 4.3387\n                        8.38172 15.4451 2.24587\n                        8.67739 15.4451 0\n                        8.38172 15.4451 -2.24587\n                        7.51484 15.4451 -4.3387\n                        6.13584 15.4451 -6.13584\n                        4.3387 15.4451 -7.51484\n                        2.24587 15.4451 -8.38172\n                        0 17.6118 -7.77994\n                        -2.0136 17.6118 -7.51484\n                        -3.88997 17.6118 -6.73763\n                        -5.50125 17.6118 -5.50125\n                        -6.73763 17.6118 -3.88997\n                        -7.51484 17.6118 -2.0136\n                        -7.77994 17.6118 0\n                        -7.51484 17.6118 2.0136\n                        -6.73763 17.6118 3.88997\n                        -5.50125 17.6118 5.50125\n                        -3.88997 17.6118 6.73763\n                        -2.0136 17.6118 7.51484\n                        0 17.6118 7.77994\n                        2.0136 17.6118 7.51484\n                        3.88997 17.6118 6.73763\n                        5.50125 17.6118 5.50125\n                        6.73763 17.6118 3.88997\n                        7.51484 17.6118 2.0136\n                        7.77994 17.6118 0\n                        7.51484 17.6118 -2.0136\n                        6.73763 17.6118 -3.88997\n                        5.50125 17.6118 -5.50125\n                        3.88997 17.6118 -6.73763\n                        2.0136 17.6118 -7.51484\n                        0 19.4723 -6.35229\n                        -1.64409 19.4723 -6.13584\n                        -3.17615 19.4723 -5.50125\n                        -4.49175 19.4723 -4.49175\n                        -5.50125 19.4723 -3.17615\n                        -6.13584 19.4723 -1.64409\n                        -6.35229 19.4723 0\n                        -6.13584 19.4723 1.64409\n                        -5.50125 19.4723 3.17615\n                        -4.49175 19.4723 4.49175\n                        -3.17615 19.4723 5.50125\n                        -1.64409 19.4723 6.13584\n                        0 19.4723 6.35229\n                        1.64409 19.4723 6.13584\n                        3.17615 19.4723 5.50125\n                        4.49175 19.4723 4.49175\n                        5.50125 19.4723 3.17615\n                        6.13584 19.4723 1.64409\n                        6.35229 19.4723 0\n                        6.13584 19.4723 -1.64409\n                        5.50125 19.4723 -3.17615\n                        4.49175 19.4723 -4.49175\n                        3.17615 19.4723 -5.50125\n                        1.64409 19.4723 -6.13584\n                        0 20.8999 -4.49175\n                        -1.16255 20.8999 -4.3387\n                        -2.24588 20.8999 -3.88997\n                        -3.17615 20.8999 -3.17615\n                        -3.88997 20.8999 -2.24588\n                        -4.3387 20.8999 -1.16255\n                        -4.49175 20.8999 0\n                        -4.3387 20.8999 1.16255\n                        -3.88997 20.8999 2.24588\n                        -3.17615 20.8999 3.17615\n                        -2.24588 20.8999 3.88997\n                        -1.16255 20.8999 4.3387\n                        0 20.8999 4.49175\n                        1.16255 20.8999 4.3387\n                        2.24588 20.8999 3.88997\n                        3.17615 20.8999 3.17615\n                        3.88997 20.8999 2.24588\n                        4.3387 20.8999 1.16255\n                        4.49175 20.8999 0\n                        4.3387 20.8999 -1.16255\n                        3.88997 20.8999 -2.24588\n                        3.17615 20.8999 -3.17615\n                        2.24588 20.8999 -3.88997\n                        1.16255 20.8999 -4.3387\n                        0 21.7974 -2.3251\n                        -0.60178 21.7974 -2.24587\n                        -1.16255 21.7974 -2.0136\n                        -1.64409 21.7974 -1.64409\n                        -2.0136 21.7974 -1.16255\n                        -2.24587 21.7974 -0.60178\n                        -2.3251 21.7974 0\n                        -2.24587 21.7974 0.60178\n                        -2.0136 21.7974 1.16255\n                        -1.64409 21.7974 1.64409\n                        -1.16255 21.7974 2.0136\n                        -0.60178 21.7974 2.24587\n                        0 21.7974 2.3251\n                        0.60178 21.7974 2.24587\n                        1.16255 21.7974 2.0136\n                        1.64409 21.7974 1.64409\n                        2.0136 21.7974 1.16255\n                        2.24587 21.7974 0.60178\n                        2.3251 21.7974 0\n                        2.24587 21.7974 -0.60178\n                        2.0136 21.7974 -1.16255\n                        1.64409 21.7974 -1.64409\n                        1.16255 21.7974 -2.0136\n                        0.60178 21.7974 -2.24587\n                        0 22.1035 1.10016e-15\n                        0 -0.69 -1.3463\n                        -0.951978 -0.69 -0.951978\n                        -1.3463 -0.69 0\n                        -0.951978 -0.69 0.951978\n                        0 -0.69 1.3463\n                        0.951978 -0.69 0.951978\n                        1.3463 -0.69 0\n                        0.951978 -0.69 -0.951978\n                        0 -2.64 -0.873412\n                        -0.617596 -2.64 -0.617596\n                        -0.873412 -2.64 0\n                        -0.617596 -2.64 0.617596\n                        0 -2.64 0.873412\n                        0.617596 -2.64 0.617596\n                        0.873412 -2.64 0\n                        0.617596 -2.64 -0.617596\n                        -0.25 2.7 -0.25\n                        0.25 2.7 -0.25\n                        0.25 2.7 0.25\n                        -0.25 2.7 0.25\n                        -0.25 4.3 -0.25\n                        0.25 4.3 -0.25\n                        0.25 4.3 0.25\n                        -0.25 4.3 0.25\n                        0 0.581535 -1.22931\n                        -0.869253 0.581535 -0.869253\n                        -1.22931 0.581535 0\n                        -0.869253 0.581535 0.869253\n                        0 0.581535 1.22931\n                        0.869253 0.581535 0.869253\n                        1.22931 0.581535 0\n                        0.869253 0.581535 -0.869253\n                        0 0.918465 -1.22931\n                        -0.869253 0.918465 -0.869253\n                        -1.22931 0.918465 0\n                        -0.869253 0.918465 0.869253\n                        0 0.918465 1.22931\n                        0.869253 0.918465 0.869253\n                        1.22931 0.918465 0\n                        0.869253 0.918465 -0.869253\n                        0 0.581535 -1.08859\n                        -0.769748 0.581535 -0.769748\n                        -1.08859 0.581535 0\n                        -0.769748 0.581535 0.769748\n                        0 0.581535 1.08859\n                        0.769748 0.581535 0.769748\n                        1.08859 0.581535 0\n                        0.769748 0.581535 -0.769748\n                        0 0.918465 -1.08859\n                        -0.769748 0.918465 -0.769748\n                        -1.08859 0.918465 0\n                        -0.769748 0.918465 0.769748\n                        0 0.918465 1.08859\n                        0.769748 0.918465 0.769748\n                        1.08859 0.918465 0\n                        0.769748 0.918465 -0.769748\n                        0 4.1365 0\n                        -2.24587 4.44261 0.60178\n                        2.24587 4.44261 -0.60178\n                        -4.3387 5.34006 1.16255\n                        4.3387 5.34006 -1.16255\n                        -6.13584 6.76771 1.64409\n                        6.13584 6.76771 -1.64409\n                        -7.51484 8.62825 2.0136\n                        7.51484 8.62825 -2.0136\n                        -8.38172 10.7949 2.24587\n                        8.38172 10.7949 -2.24587\n                        -8.67739 13.12 2.3251\n                        8.67739 13.12 -2.3251\n                        -8.38172 15.4451 2.24587\n                        8.38172 15.4451 -2.24587\n                        -7.51484 17.6118 2.0136\n                        7.51484 17.6118 -2.0136\n                        -6.13584 19.4723 1.64409\n                        6.13584 19.4723 -1.64409\n                        -4.3387 20.8999 1.16255\n                        4.3387 20.8999 -1.16255\n                        -2.24587 21.7974 0.60178\n                        2.24587 21.7974 -0.60178\n                        0 22.1035 1.10016e-15\n                        0 22.1035 1.10016e-15\n                        2.0136 4.44261 -1.16255\n                        3.88997 5.34006 -2.24587\n                        5.50125 6.76771 -3.17615\n                        6.73763 8.62825 -3.88997\n                        7.51484 10.7949 -4.3387\n                        7.77994 13.12 -4.49175\n                        7.51484 15.4451 -4.3387\n                        6.73763 17.6118 -3.88997\n                        5.50125 19.4723 -3.17615\n                        3.88997 20.8999 -2.24588\n                        2.0136 21.7974 -1.16255\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        2.24587 4.44261 0.60178\n                        4.3387 5.34006 1.16255\n                        6.13584 6.76771 1.64409\n                        7.51484 8.62825 2.0136\n                        8.38172 10.7949 2.24587\n                        8.67739 13.12 2.3251\n                        8.38172 15.4451 2.24587\n                        7.51484 17.6118 2.0136\n                        6.13584 19.4723 1.64409\n                        4.3387 20.8999 1.16255\n                        2.24587 21.7974 0.60178\n                        0 22.1035 1.10016e-15\n                        0 22.1035 1.10016e-15\n                        2.0136 4.44261 1.16255\n                        3.88997 5.34006 2.24587\n                        5.50125 6.76771 3.17615\n                        6.73763 8.62825 3.88997\n                        7.51484 10.7949 4.3387\n                        7.77994 13.12 4.49175\n                        7.51484 15.4451 4.3387\n                        6.73763 17.6118 3.88997\n                        5.50125 19.4723 3.17615\n                        3.88997 20.8999 2.24588\n                        2.0136 21.7974 1.16255\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        1.16255 4.44261 2.0136\n                        2.24587 5.34006 3.88997\n                        3.17615 6.76771 5.50125\n                        3.88997 8.62825 6.73763\n                        4.3387 10.7949 7.51484\n                        4.49175 13.12 7.77994\n                        4.3387 15.4451 7.51484\n                        3.88997 17.6118 6.73763\n                        3.17615 19.4723 5.50125\n                        2.24588 20.8999 3.88997\n                        1.16255 21.7974 2.0136\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        0.60178 4.44261 2.24587\n                        1.16255 5.34006 4.3387\n                        1.64409 6.76771 6.13584\n                        2.0136 8.62825 7.51484\n                        2.24587 10.7949 8.38172\n                        2.3251 13.12 8.67739\n                        2.24587 15.4451 8.38172\n                        2.0136 17.6118 7.51484\n                        1.64409 19.4723 6.13584\n                        1.16255 20.8999 4.3387\n                        0.60178 21.7974 2.24587\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        -0.60178 4.44261 2.24587\n                        -1.16255 5.34006 4.3387\n                        -1.64409 6.76771 6.13584\n                        -2.0136 8.62825 7.51484\n                        -2.24587 10.7949 8.38172\n                        -2.3251 13.12 8.67739\n                        -2.24587 15.4451 8.38172\n                        -2.0136 17.6118 7.51484\n                        -1.64409 19.4723 6.13584\n                        -1.16255 20.8999 4.3387\n                        -0.60178 21.7974 2.24587\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        -1.16255 4.44261 2.0136\n                        -2.24587 5.34006 3.88997\n                        -3.17615 6.76771 5.50125\n                        -3.88997 8.62825 6.73763\n                        -4.3387 10.7949 7.51484\n                        -4.49175 13.12 7.77994\n                        -4.3387 15.4451 7.51484\n                        -3.88997 17.6118 6.73763\n                        -3.17615 19.4723 5.50125\n                        -2.24588 20.8999 3.88997\n                        -1.16255 21.7974 2.0136\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        -2.0136 4.44261 1.16255\n                        -3.88997 5.34006 2.24587\n                        -5.50125 6.76771 3.17615\n                        -6.73763 8.62825 3.88997\n                        -7.51484 10.7949 4.3387\n                        -7.77994 13.12 4.49175\n                        -7.51484 15.4451 4.3387\n                        -6.73763 17.6118 3.88997\n                        -5.50125 19.4723 3.17615\n                        -3.88997 20.8999 2.24588\n                        -2.0136 21.7974 1.16255\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        1.16255 4.44261 -2.0136\n                        0.60178 4.44261 -2.24587\n                        2.24587 5.34006 -3.88997\n                        1.16255 5.34006 -4.3387\n                        3.17615 6.76771 -5.50125\n                        1.64409 6.76771 -6.13584\n                        3.88997 8.62825 -6.73763\n                        2.0136 8.62825 -7.51484\n                        4.3387 10.7949 -7.51484\n                        2.24587 10.7949 -8.38172\n                        4.49175 13.12 -7.77994\n                        2.3251 13.12 -8.67739\n                        4.3387 15.4451 -7.51484\n                        2.24587 15.4451 -8.38172\n                        3.88997 17.6118 -6.73763\n                        2.0136 17.6118 -7.51484\n                        3.17615 19.4723 -5.50125\n                        1.64409 19.4723 -6.13584\n                        2.24588 20.8999 -3.88997\n                        1.16255 20.8999 -4.3387\n                        1.16255 21.7974 -2.0136\n                        0.60178 21.7974 -2.24587\n                        0 4.1365 0\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        -0.60178 4.44261 -2.24587\n                        -1.16255 4.44261 -2.0136\n                        -2.0136 4.44261 -1.16255\n                        -2.24587 4.44261 -0.60178\n                        -1.16255 5.34006 -4.3387\n                        -2.24587 5.34006 -3.88997\n                        -3.88997 5.34006 -2.24587\n                        -4.3387 5.34006 -1.16255\n                        -1.64409 6.76771 -6.13584\n                        -3.17615 6.76771 -5.50125\n                        -5.50125 6.76771 -3.17615\n                        -6.13584 6.76771 -1.64409\n                        -2.0136 8.62825 -7.51484\n                        -3.88997 8.62825 -6.73763\n                        -6.73763 8.62825 -3.88997\n                        -7.51484 8.62825 -2.0136\n                        -2.24587 10.7949 -8.38172\n                        -4.3387 10.7949 -7.51484\n                        -7.51484 10.7949 -4.3387\n                        -8.38172 10.7949 -2.24587\n                        -2.3251 13.12 -8.67739\n                        -4.49175 13.12 -7.77994\n                        -7.77994 13.12 -4.49175\n                        -8.67739 13.12 -2.3251\n                        -2.24587 15.4451 -8.38172\n                        -4.3387 15.4451 -7.51484\n                        -7.51484 15.4451 -4.3387\n                        -8.38172 15.4451 -2.24587\n                        -2.0136 17.6118 -7.51484\n                        -3.88997 17.6118 -6.73763\n                        -6.73763 17.6118 -3.88997\n                        -7.51484 17.6118 -2.0136\n                        -1.64409 19.4723 -6.13584\n                        -3.17615 19.4723 -5.50125\n                        -5.50125 19.4723 -3.17615\n                        -6.13584 19.4723 -1.64409\n                        -1.16255 20.8999 -4.3387\n                        -2.24588 20.8999 -3.88997\n                        -3.88997 20.8999 -2.24588\n                        -4.3387 20.8999 -1.16255\n                        -0.60178 21.7974 -2.24587\n                        -1.16255 21.7974 -2.0136\n                        -2.0136 21.7974 -1.16255\n                        -2.24587 21.7974 -0.60178\n                        0 4.1365 0\n                        0 4.1365 0\n                        0 4.1365 0\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        0 22.1035 1.10016e-15\n                        0 22.1035 1.10016e-15\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        0 4.44261 -2.3251\n                        -1.64409 4.44261 -1.64409\n                        -1.64409 4.44261 1.64409\n                        0 4.44261 2.3251\n                        1.64409 4.44261 1.64409\n                        2.3251 4.44261 0\n                        1.64409 4.44261 -1.64409\n                        0 5.34006 -4.49175\n                        -3.17615 5.34006 -3.17615\n                        -3.17615 5.34006 3.17615\n                        0 5.34006 4.49175\n                        3.17615 5.34006 3.17615\n                        4.49175 5.34006 0\n                        3.17615 5.34006 -3.17615\n                        0 6.76771 -6.35229\n                        -4.49175 6.76771 -4.49175\n                        -4.49175 6.76771 4.49175\n                        0 6.76771 6.35229\n                        4.49175 6.76771 4.49175\n                        6.35229 6.76771 0\n                        4.49175 6.76771 -4.49175\n                        0 8.62825 -7.77994\n                        -5.50125 8.62825 -5.50125\n                        -5.50125 8.62825 5.50125\n                        0 8.62825 7.77994\n                        5.50125 8.62825 5.50125\n                        7.77994 8.62825 0\n                        5.50125 8.62825 -5.50125\n                        0 10.7949 -8.67739\n                        -6.13584 10.7949 -6.13584\n                        -6.13584 10.7949 6.13584\n                        0 10.7949 8.67739\n                        6.13584 10.7949 6.13584\n                        8.67739 10.7949 0\n                        6.13584 10.7949 -6.13584\n                        0 13.12 -8.9835\n                        -6.35229 13.12 -6.35229\n                        -6.35229 13.12 6.35229\n                        0 13.12 8.9835\n                        6.35229 13.12 6.35229\n                        8.9835 13.12 0\n                        6.35229 13.12 -6.35229\n                        0 15.4451 -8.67739\n                        -6.13584 15.4451 -6.13584\n                        -6.13584 15.4451 6.13584\n                        0 15.4451 8.67739\n                        6.13584 15.4451 6.13584\n                        8.67739 15.4451 0\n                        6.13584 15.4451 -6.13584\n                        0 17.6118 -7.77994\n                        -5.50125 17.6118 -5.50125\n                        -5.50125 17.6118 5.50125\n                        0 17.6118 7.77994\n                        5.50125 17.6118 5.50125\n                        7.77994 17.6118 0\n                        5.50125 17.6118 -5.50125\n                        0 19.4723 -6.35229\n                        -4.49175 19.4723 -4.49175\n                        -4.49175 19.4723 4.49175\n                        0 19.4723 6.35229\n                        4.49175 19.4723 4.49175\n                        6.35229 19.4723 0\n                        4.49175 19.4723 -4.49175\n                        0 20.8999 -4.49175\n                        -3.17615 20.8999 -3.17615\n                        -3.17615 20.8999 3.17615\n                        0 20.8999 4.49175\n                        3.17615 20.8999 3.17615\n                        4.49175 20.8999 0\n                        3.17615 20.8999 -3.17615\n                        0 21.7974 -2.3251\n                        -1.64409 21.7974 -1.64409\n                        -1.64409 21.7974 1.64409\n                        0 21.7974 2.3251\n                        1.64409 21.7974 1.64409\n                        2.3251 21.7974 0\n                        1.64409 21.7974 -1.64409\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        0 4.1365 0\n                        0 4.1365 0\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        -2.3251 4.44261 0\n                        -4.49175 5.34006 0\n                        -6.35229 6.76771 0\n                        -7.77994 8.62825 0\n                        -8.67739 10.7949 0\n                        -8.9835 13.12 0\n                        -8.67739 15.4451 0\n                        -7.77994 17.6118 0\n                        -6.35229 19.4723 0\n                        -4.49175 20.8999 0\n                        -2.3251 21.7974 0\n                        0 4.1365 0\n                        0 22.1035 1.10016e-15\n                        2.3251 21.7974 0\n                        0 22.1035 1.10016e-15\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"961\" source=\"#Geometry-mesh068-positions-array\" stride=\"3\">\n                            <param name=\"X\" type=\"float\" />\n                            <param name=\"Y\" type=\"float\" />\n                            <param name=\"Z\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh068-normals\" name=\"normals\">\n                    <float_array id=\"Geometry-mesh068-normals-array\" count=\"2043\">\n                        -0.0666188 0.506021 -0.859945\n                        -0.13126 0.489867 -0.861859\n                        0.130521 -0.991412 -0.00819933\n                        0.25881 -0.965893 -0.0082731\n                        -0.0647447 0.491784 0.868306\n                        -0.127551 0.476025 0.870133\n                        -0.253575 0.439204 -0.861858\n                        0.499983 -0.865996 -0.00827666\n                        -0.246409 0.426792 0.870133\n                        -0.358609 0.358609 -0.861858\n                        0.707083 -0.707083 -0.00827444\n                        -0.348476 0.348476 0.870132\n                        -0.439204 0.253575 -0.861858\n                        0.865996 -0.499983 -0.00827254\n                        -0.426794 0.24641 0.870132\n                        -0.489868 0.13126 -0.861859\n                        0.965893 -0.25881 -0.00827231\n                        -0.476026 0.127551 0.870132\n                        -0.507148 2.24015e-08 -0.861859\n                        0.999966 1.27753e-07 -0.00827066\n                        -0.492819 -2.23987e-08 0.870132\n                        -0.489867 -0.131259 -0.861859\n                        0.965893 0.25881 -0.0082708\n                        -0.476026 -0.127551 0.870132\n                        -0.439246 -0.253501 -0.861859\n                        0.865955 0.500054 -0.0082741\n                        -0.426772 -0.246445 0.870133\n                        -0.391044 -0.325227 -0.860995\n                        0.768984 0.639215 -0.00824257\n                        -0.380148 -0.31592 0.8693\n                        -0.465339 -0.167373 -0.869164\n                        0.743582 0.668594 -0.00826702\n                        -0.449324 -0.169834 0.877077\n                        -0.5182 0.056375 -0.853399\n                        0.999935 0.00841299 -0.00774967\n                        0.995394 -0.0955365 -0.00803452\n                        -0.501859 0.0469188 0.863676\n                        -0.498867 0.101307 -0.860737\n                        0.980076 -0.198452 -0.00823239\n                        -0.484841 0.0981709 0.869075\n                        -0.213096 -0.977031 8.96166e-08\n                        -0.655179 0.506021 -0.560966\n                        -0.702241 0.489867 -0.516612\n                        0.0864948 -0.991412 -0.0980904\n                        0.177157 -0.965893 -0.188856\n                        0.568204 0.491784 0.659767\n                        0.525085 0.476025 0.705469\n                        -0.78873 0.439204 -0.430121\n                        0.347689 -0.865996 -0.359394\n                        0.44104 0.426792 0.789514\n                        -0.863 0.358609 -0.355851\n                        0.494132 -0.707083 -0.505834\n                        0.368866 0.348476 0.861686\n                        -0.91999 0.253574 -0.298863\n                        0.606502 -0.499983 -0.618201\n                        0.313487 0.24641 0.917065\n                        -0.955815 0.131259 -0.263038\n                        0.67714 -0.25881 -0.688839\n                        0.278675 0.127551 0.951878\n                        -0.968034 -2.24015e-08 -0.250819\n                        0.701235 1.35268e-07 -0.712931\n                        0.266801 -8.58618e-08 0.963752\n                        -0.955815 -0.131259 -0.263038\n                        0.677141 0.25881 -0.688837\n                        0.278676 -0.127551 0.951877\n                        -0.92002 -0.2535 -0.298833\n                        0.606471 0.500054 -0.618174\n                        0.313504 -0.246445 0.91705\n                        -0.885325 -0.325227 -0.332306\n                        0.537925 0.639215 -0.549583\n                        0.345883 -0.31592 0.883493\n                        -0.943636 -0.167373 -0.285548\n                        0.519945 0.668594 -0.531638\n                        0.302468 -0.169834 0.937907\n                        -0.969867 0.056375 -0.237022\n                        0.701581 0.00841291 -0.71254\n                        0.698168 -0.0955366 -0.709531\n                        0.255843 0.0469188 0.965579\n                        -0.961385 0.101307 -0.255881\n                        0.687197 -0.198452 -0.69884\n                        0.271694 0.0981709 0.957363\n                        -0.150681 -0.977031 0.150681\n                        -0.859945 0.506021 0.0666188\n                        -0.861859 0.489867 0.13126\n                        -0.00819933 -0.991412 -0.130521\n                        -0.0082731 -0.965893 -0.25881\n                        0.868306 0.491784 0.0647447\n                        0.870133 0.476025 0.127551\n                        -0.861858 0.439204 0.253575\n                        -0.00827666 -0.865996 -0.499983\n                        0.870133 0.426792 0.246409\n                        -0.861858 0.358609 0.358609\n                        -0.00827444 -0.707083 -0.707083\n                        0.870132 0.348476 0.348476\n                        -0.861858 0.253575 0.439204\n                        -0.00827254 -0.499983 -0.865996\n                        0.870132 0.24641 0.426794\n                        -0.861859 0.13126 0.489868\n                        -0.00827231 -0.25881 -0.965893\n                        0.870132 0.127551 0.476026\n                        -0.861859 2.24015e-08 0.507148\n                        -0.00827066 1.35268e-07 -0.999966\n                        0.870132 -2.23987e-08 0.492819\n                        -0.861859 -0.131259 0.489867\n                        -0.0082708 0.25881 -0.965893\n                        0.870132 -0.127551 0.476026\n                        -0.861859 -0.253501 0.439246\n                        -0.0082741 0.500054 -0.865955\n                        0.870133 -0.246445 0.426772\n                        -0.860995 -0.325227 0.391044\n                        -0.00824257 0.639215 -0.768984\n                        0.8693 -0.31592 0.380148\n                        -0.869164 -0.167373 0.465339\n                        -0.00826702 0.668594 -0.743582\n                        0.877077 -0.169834 0.449324\n                        -0.853399 0.056375 0.5182\n                        -0.00774967 0.00841299 -0.999935\n                        -0.00803452 -0.0955365 -0.995394\n                        0.863676 0.0469188 0.501859\n                        -0.860737 0.101307 0.498867\n                        -0.00823239 -0.198452 -0.980076\n                        0.869075 0.0981709 0.484841\n                        8.96166e-08 -0.977031 0.213096\n                        -0.560966 0.506021 0.655179\n                        -0.516612 0.489867 0.702241\n                        -0.0980904 -0.991412 -0.0864948\n                        -0.188856 -0.965893 -0.177157\n                        0.659767 0.491784 -0.568204\n                        0.705469 0.476025 -0.525085\n                        -0.430121 0.439204 0.78873\n                        -0.359394 -0.865996 -0.347689\n                        0.789514 0.426792 -0.44104\n                        -0.355851 0.358609 0.863\n                        -0.505834 -0.707083 -0.494132\n                        0.861686 0.348476 -0.368866\n                        -0.298863 0.253574 0.91999\n                        -0.618201 -0.499983 -0.606502\n                        0.917065 0.24641 -0.313487\n                        -0.263038 0.131259 0.955815\n                        -0.688839 -0.25881 -0.67714\n                        0.951878 0.127551 -0.278675\n                        -0.250819 -2.24015e-08 0.968034\n                        -0.712931 1.35268e-07 -0.701235\n                        0.963752 -8.58618e-08 -0.266801\n                        -0.263038 -0.131259 0.955815\n                        -0.688837 0.25881 -0.677141\n                        0.951877 -0.127551 -0.278676\n                        -0.298833 -0.2535 0.92002\n                        -0.618174 0.500054 -0.606471\n                        0.91705 -0.246445 -0.313504\n                        -0.332306 -0.325227 0.885325\n                        -0.549583 0.639215 -0.537925\n                        0.883493 -0.31592 -0.345883\n                        -0.285548 -0.167373 0.943636\n                        -0.531638 0.668594 -0.519945\n                        0.937907 -0.169834 -0.302468\n                        -0.237022 0.056375 0.969867\n                        -0.71254 0.00841291 -0.701581\n                        -0.709531 -0.0955366 -0.698168\n                        0.965579 0.0469188 -0.255843\n                        -0.255881 0.101307 0.961385\n                        -0.69884 -0.198452 -0.687197\n                        0.957363 0.0981709 -0.271694\n                        0.150681 -0.977031 0.150681\n                        0.0666188 0.506021 0.859945\n                        0.13126 0.489867 0.861859\n                        -0.130521 -0.991412 0.00819933\n                        -0.25881 -0.965893 0.0082731\n                        0.0647447 0.491784 -0.868306\n                        0.127551 0.476025 -0.870133\n                        0.253575 0.439204 0.861858\n                        -0.499983 -0.865996 0.00827666\n                        0.246409 0.426792 -0.870133\n                        0.358609 0.358609 0.861858\n                        -0.707083 -0.707083 0.00827444\n                        0.348476 0.348476 -0.870132\n                        0.439204 0.253575 0.861858\n                        -0.865996 -0.499983 0.00827254\n                        0.426794 0.24641 -0.870132\n                        0.489868 0.13126 0.861859\n                        -0.965893 -0.25881 0.00827231\n                        0.476026 0.127551 -0.870132\n                        0.507148 2.24015e-08 0.861859\n                        -0.999966 1.27753e-07 0.00827066\n                        0.492819 -2.23987e-08 -0.870132\n                        0.489867 -0.131259 0.861859\n                        -0.965893 0.25881 0.0082708\n                        0.476026 -0.127551 -0.870132\n                        0.439246 -0.253501 0.861859\n                        -0.865955 0.500054 0.0082741\n                        0.426772 -0.246445 -0.870133\n                        0.391044 -0.325227 0.860995\n                        -0.768984 0.639215 0.00824257\n                        0.380148 -0.31592 -0.8693\n                        0.465339 -0.167373 0.869164\n                        -0.743582 0.668594 0.00826702\n                        0.449324 -0.169834 -0.877077\n                        0.5182 0.056375 0.853399\n                        -0.999935 0.00841299 0.00774967\n                        -0.995394 -0.0955365 0.00803452\n                        0.501859 0.0469188 -0.863676\n                        0.498867 0.101307 0.860737\n                        -0.980076 -0.198452 0.00823239\n                        0.484841 0.0981709 -0.869075\n                        0.213096 -0.977031 -8.96166e-08\n                        0.655179 0.506021 0.560966\n                        0.702241 0.489867 0.516612\n                        -0.0864948 -0.991412 0.0980904\n                        -0.177157 -0.965893 0.188856\n                        -0.568204 0.491784 -0.659767\n                        -0.525085 0.476025 -0.705469\n                        0.78873 0.439204 0.430121\n                        -0.347689 -0.865996 0.359394\n                        -0.44104 0.426792 -0.789514\n                        0.863 0.358609 0.355851\n                        -0.494132 -0.707083 0.505834\n                        -0.368866 0.348476 -0.861686\n                        0.91999 0.253574 0.298863\n                        -0.606502 -0.499983 0.618201\n                        -0.313487 0.24641 -0.917065\n                        0.955815 0.131259 0.263038\n                        -0.67714 -0.25881 0.688839\n                        -0.278675 0.127551 -0.951878\n                        0.968034 -2.24015e-08 0.250819\n                        -0.701235 1.35268e-07 0.712931\n                        -0.266801 -8.58618e-08 -0.963752\n                        0.955815 -0.131259 0.263038\n                        -0.677141 0.25881 0.688837\n                        -0.278676 -0.127551 -0.951877\n                        0.92002 -0.2535 0.298833\n                        -0.606471 0.500054 0.618174\n                        -0.313504 -0.246445 -0.91705\n                        0.885325 -0.325227 0.332306\n                        -0.537925 0.639215 0.549583\n                        -0.345883 -0.31592 -0.883493\n                        0.943636 -0.167373 0.285548\n                        -0.519945 0.668594 0.531638\n                        -0.302468 -0.169834 -0.937907\n                        0.969867 0.056375 0.237022\n                        -0.701581 0.00841291 0.71254\n                        -0.698168 -0.0955366 0.709531\n                        -0.255843 0.0469188 -0.965579\n                        0.961385 0.101307 0.255881\n                        -0.687197 -0.198452 0.69884\n                        -0.271694 0.0981709 -0.957363\n                        0.150681 -0.977031 -0.150681\n                        0.859945 0.506021 -0.0666188\n                        0.861859 0.489867 -0.13126\n                        0.00819933 -0.991412 0.130521\n                        0.0082731 -0.965893 0.25881\n                        -0.868306 0.491784 -0.0647447\n                        -0.870133 0.476025 -0.127551\n                        0.861858 0.439204 -0.253575\n                        0.00827666 -0.865996 0.499983\n                        -0.870133 0.426792 -0.246409\n                        0.861858 0.358609 -0.358609\n                        0.00827444 -0.707083 0.707083\n                        -0.870132 0.348476 -0.348476\n                        0.861858 0.253575 -0.439204\n                        0.00827254 -0.499983 0.865996\n                        -0.870132 0.24641 -0.426794\n                        0.861859 0.13126 -0.489868\n                        0.00827231 -0.25881 0.965893\n                        -0.870132 0.127551 -0.476026\n                        0.861859 2.24015e-08 -0.507148\n                        0.00827066 1.35268e-07 0.999966\n                        -0.870132 -2.23987e-08 -0.492819\n                        0.861859 -0.131259 -0.489867\n                        0.0082708 0.25881 0.965893\n                        -0.870132 -0.127551 -0.476026\n                        0.861859 -0.253501 -0.439246\n                        0.0082741 0.500054 0.865955\n                        -0.870133 -0.246445 -0.426772\n                        0.860995 -0.325227 -0.391044\n                        0.00824257 0.639215 0.768984\n                        -0.8693 -0.31592 -0.380148\n                        0.869164 -0.167373 -0.465339\n                        0.00826702 0.668594 0.743582\n                        -0.877077 -0.169834 -0.449324\n                        0.853399 0.056375 -0.5182\n                        0.00774967 0.00841299 0.999935\n                        0.00803452 -0.0955365 0.995394\n                        -0.863676 0.0469188 -0.501859\n                        0.860737 0.101307 -0.498867\n                        0.00823239 -0.198452 0.980076\n                        -0.869075 0.0981709 -0.484841\n                        -8.96166e-08 -0.977031 -0.213096\n                        0.560966 0.506021 -0.655179\n                        0.516612 0.489867 -0.702241\n                        0.0980904 -0.991412 0.0864948\n                        0.188856 -0.965893 0.177157\n                        -0.659767 0.491784 0.568204\n                        -0.705469 0.476025 0.525085\n                        0.430121 0.439204 -0.78873\n                        0.359394 -0.865996 0.347689\n                        -0.789514 0.426792 0.44104\n                        0.355851 0.358609 -0.863\n                        0.505834 -0.707083 0.494132\n                        -0.861686 0.348476 0.368866\n                        0.298863 0.253574 -0.91999\n                        0.618201 -0.499983 0.606502\n                        -0.917065 0.24641 0.313487\n                        0.263038 0.131259 -0.955815\n                        0.688839 -0.25881 0.67714\n                        -0.951878 0.127551 0.278675\n                        0.250819 -2.24015e-08 -0.968034\n                        0.712931 1.35268e-07 0.701235\n                        -0.963752 -8.58618e-08 0.266801\n                        0.263038 -0.131259 -0.955815\n                        0.688837 0.25881 0.677141\n                        -0.951877 -0.127551 0.278676\n                        0.298833 -0.2535 -0.92002\n                        0.618174 0.500054 0.606471\n                        -0.91705 -0.246445 0.313504\n                        0.332306 -0.325227 -0.885325\n                        0.549583 0.639215 0.537925\n                        -0.883493 -0.31592 0.345883\n                        0.285548 -0.167373 -0.943636\n                        0.531638 0.668594 0.519945\n                        -0.937907 -0.169834 0.302468\n                        0.237022 0.056375 -0.969867\n                        0.71254 0.00841291 0.701581\n                        0.709531 -0.0955366 0.698168\n                        -0.965579 0.0469188 0.255843\n                        0.255881 0.101307 -0.961385\n                        0.69884 -0.198452 0.687197\n                        -0.957363 0.0981709 0.271694\n                        -0.150681 -0.977031 -0.150681\n                        0 -1 0\n                        -0.380328 -0.110782 -0.918193\n                        -0.918193 -0.110782 -0.380328\n                        -0.918193 -0.110782 0.380328\n                        -0.380328 -0.110782 0.918193\n                        0.380328 -0.110782 0.918193\n                        0.918193 -0.110782 0.380328\n                        0.918193 -0.110782 -0.380328\n                        0.380328 -0.110782 -0.918193\n                        -0.034045 -0.965385 -0.258598\n                        -0.0171816 -0.991298 -0.130507\n                        -0.0998151 -0.965385 -0.240975\n                        -0.0503739 -0.991298 -0.121613\n                        -0.158783 -0.965385 -0.20693\n                        -0.0801333 -0.991298 -0.104432\n                        -0.20693 -0.965385 -0.158783\n                        -0.104432 -0.991298 -0.0801333\n                        -0.240975 -0.965385 -0.0998152\n                        -0.121613 -0.991298 -0.0503739\n                        -0.258598 -0.965385 -0.034045\n                        -0.130507 -0.991298 -0.0171816\n                        -0.258598 -0.965385 0.034045\n                        -0.130507 -0.991298 0.0171816\n                        -0.240975 -0.965385 0.0998151\n                        -0.121613 -0.991298 0.0503739\n                        -0.20693 -0.965385 0.158783\n                        -0.104432 -0.991298 0.0801333\n                        -0.158783 -0.965385 0.20693\n                        -0.0801333 -0.991298 0.104432\n                        -0.0998152 -0.965385 0.240975\n                        -0.0503739 -0.991298 0.121613\n                        -0.034045 -0.965385 0.258598\n                        -0.0171816 -0.991298 0.130507\n                        0.034045 -0.965385 0.258598\n                        0.0171816 -0.991298 0.130507\n                        0.0998151 -0.965385 0.240975\n                        0.0503739 -0.991298 0.121613\n                        0.158783 -0.965385 0.20693\n                        0.0801333 -0.991298 0.104432\n                        0.20693 -0.965385 0.158783\n                        0.104432 -0.991298 0.0801333\n                        0.240975 -0.965385 0.0998152\n                        0.121613 -0.991298 0.0503739\n                        0.258598 -0.965385 0.034045\n                        0.130507 -0.991298 0.0171816\n                        0.258598 -0.965385 -0.034045\n                        0.130507 -0.991298 -0.0171816\n                        0.240975 -0.965385 -0.0998151\n                        0.121613 -0.991298 -0.0503739\n                        0.20693 -0.965385 -0.158783\n                        0.104432 -0.991298 -0.0801333\n                        0.158783 -0.965385 -0.20693\n                        0.0801333 -0.991298 -0.104432\n                        0.0998152 -0.965385 -0.240975\n                        0.0503739 -0.991298 -0.121613\n                        0.034045 -0.965385 -0.258598\n                        0.0171816 -0.991298 -0.130507\n                        -0.0656695 -0.86422 -0.498811\n                        -0.192534 -0.86422 -0.464817\n                        -0.306277 -0.86422 -0.399148\n                        -0.399148 -0.86422 -0.306277\n                        -0.464817 -0.86422 -0.192534\n                        -0.498811 -0.86422 -0.0656696\n                        -0.498811 -0.86422 0.0656695\n                        -0.464817 -0.86422 0.192534\n                        -0.399148 -0.86422 0.306277\n                        -0.306277 -0.86422 0.399148\n                        -0.192534 -0.86422 0.464817\n                        -0.0656696 -0.86422 0.498811\n                        0.0656695 -0.86422 0.498811\n                        0.192534 -0.86422 0.464817\n                        0.306277 -0.86422 0.399148\n                        0.399148 -0.86422 0.306277\n                        0.464817 -0.86422 0.192534\n                        0.498811 -0.86422 0.0656696\n                        0.498811 -0.86422 -0.0656695\n                        0.464817 -0.86422 -0.192534\n                        0.399148 -0.86422 -0.306277\n                        0.306277 -0.86422 -0.399148\n                        0.192534 -0.86422 -0.464817\n                        0.0656696 -0.86422 -0.498811\n                        -0.0926783 -0.704167 -0.70396\n                        -0.271718 -0.704167 -0.655987\n                        -0.432242 -0.704167 -0.563308\n                        -0.563308 -0.704167 -0.432242\n                        -0.655987 -0.704167 -0.271718\n                        -0.70396 -0.704167 -0.0926783\n                        -0.70396 -0.704167 0.0926783\n                        -0.655987 -0.704167 0.271719\n                        -0.563308 -0.704167 0.432242\n                        -0.432242 -0.704167 0.563308\n                        -0.271719 -0.704167 0.655987\n                        -0.0926783 -0.704167 0.70396\n                        0.0926783 -0.704167 0.70396\n                        0.271718 -0.704167 0.655987\n                        0.432242 -0.704167 0.563308\n                        0.563308 -0.704167 0.432242\n                        0.655987 -0.704167 0.271718\n                        0.70396 -0.704167 0.0926783\n                        0.70396 -0.704167 -0.0926783\n                        0.655987 -0.704167 -0.271718\n                        0.563308 -0.704167 -0.432242\n                        0.432242 -0.704167 -0.563308\n                        0.271718 -0.704167 -0.655987\n                        0.0926783 -0.704167 -0.70396\n                        -0.113272 -0.496891 -0.860389\n                        -0.332098 -0.496891 -0.801755\n                        -0.528291 -0.496891 -0.688483\n                        -0.688483 -0.496891 -0.528291\n                        -0.801755 -0.496891 -0.332098\n                        -0.860389 -0.496891 -0.113272\n                        -0.860389 -0.496891 0.113272\n                        -0.801755 -0.496891 0.332098\n                        -0.688483 -0.496891 0.528291\n                        -0.528291 -0.496891 0.688483\n                        -0.332098 -0.496891 0.801755\n                        -0.113272 -0.496891 0.860389\n                        0.113272 -0.496891 0.860389\n                        0.332098 -0.496891 0.801755\n                        0.528291 -0.496891 0.688483\n                        0.688483 -0.496891 0.528291\n                        0.801755 -0.496891 0.332098\n                        0.860389 -0.496891 0.113272\n                        0.860389 -0.496891 -0.113272\n                        0.801755 -0.496891 -0.332098\n                        0.688483 -0.496891 -0.528291\n                        0.528291 -0.496891 -0.688483\n                        0.332098 -0.496891 -0.801755\n                        0.113272 -0.496891 -0.860389\n                        -0.126148 -0.256821 -0.958191\n                        -0.369848 -0.256821 -0.892892\n                        -0.588343 -0.256821 -0.766744\n                        -0.766744 -0.256821 -0.588343\n                        -0.892892 -0.256821 -0.369848\n                        -0.958191 -0.256821 -0.126148\n                        -0.958191 -0.256821 0.126148\n                        -0.892892 -0.256821 0.369848\n                        -0.766744 -0.256821 0.588343\n                        -0.588343 -0.256821 0.766744\n                        -0.369848 -0.256821 0.892892\n                        -0.126148 -0.256821 0.958191\n                        0.126148 -0.256821 0.958191\n                        0.369848 -0.256821 0.892892\n                        0.588343 -0.256821 0.766744\n                        0.766744 -0.256821 0.588343\n                        0.892892 -0.256821 0.369848\n                        0.958191 -0.256821 0.126148\n                        0.958191 -0.256821 -0.126148\n                        0.892892 -0.256821 -0.369848\n                        0.766744 -0.256821 -0.588343\n                        0.588343 -0.256821 -0.766744\n                        0.369848 -0.256821 -0.892892\n                        0.126148 -0.256821 -0.958191\n                        -0.130526 -4.50827e-08 -0.991445\n                        -0.382683 -5.25965e-08 -0.92388\n                        -0.608761 -5.25965e-08 -0.793353\n                        -0.793353 -5.25965e-08 -0.608761\n                        -0.92388 -4.50827e-08 -0.382683\n                        -0.991445 -5.25965e-08 -0.130526\n                        -0.991445 -5.25965e-08 0.130526\n                        -0.92388 -5.25965e-08 0.382683\n                        -0.793353 -5.25965e-08 0.608761\n                        -0.608761 -5.25965e-08 0.793353\n                        -0.382683 -4.50827e-08 0.92388\n                        -0.130526 -5.25965e-08 0.991445\n                        0.130526 -4.50827e-08 0.991445\n                        0.382683 -5.25965e-08 0.92388\n                        0.608761 -5.25965e-08 0.793353\n                        0.793353 -5.25965e-08 0.608761\n                        0.92388 -4.50827e-08 0.382683\n                        0.991445 -5.25965e-08 0.130526\n                        0.991445 -5.25965e-08 -0.130526\n                        0.92388 -5.25965e-08 -0.382683\n                        0.793353 -5.25965e-08 -0.608761\n                        0.608761 -5.25965e-08 -0.793353\n                        0.382683 -4.50827e-08 -0.92388\n                        0.130526 -5.25965e-08 -0.991445\n                        -0.126148 0.256821 -0.958191\n                        -0.369848 0.256821 -0.892892\n                        -0.588343 0.256821 -0.766744\n                        -0.766743 0.256821 -0.588343\n                        -0.892892 0.256821 -0.369848\n                        -0.958191 0.256821 -0.126148\n                        -0.958191 0.256821 0.126148\n                        -0.892892 0.256821 0.369848\n                        -0.766744 0.256821 0.588343\n                        -0.588343 0.256821 0.766743\n                        -0.369848 0.256821 0.892892\n                        -0.126148 0.256821 0.958191\n                        0.126148 0.256821 0.958191\n                        0.369848 0.256821 0.892892\n                        0.588343 0.256821 0.766744\n                        0.766743 0.256821 0.588343\n                        0.892892 0.256821 0.369848\n                        0.958191 0.256821 0.126148\n                        0.958191 0.256821 -0.126148\n                        0.892892 0.256821 -0.369848\n                        0.766744 0.256821 -0.588343\n                        0.588343 0.256821 -0.766743\n                        0.369848 0.256821 -0.892892\n                        0.126148 0.256821 -0.958191\n                        -0.113272 0.496891 -0.860389\n                        -0.332098 0.496891 -0.801755\n                        -0.528291 0.496891 -0.688482\n                        -0.688482 0.496891 -0.528291\n                        -0.801755 0.496891 -0.332098\n                        -0.860389 0.496891 -0.113272\n                        -0.860389 0.496891 0.113272\n                        -0.801755 0.496891 0.332098\n                        -0.688482 0.496891 0.528291\n                        -0.528291 0.496891 0.688482\n                        -0.332098 0.496891 0.801755\n                        -0.113272 0.496891 0.860389\n                        0.113272 0.496891 0.860389\n                        0.332098 0.496891 0.801755\n                        0.528291 0.496891 0.688482\n                        0.688482 0.496891 0.528291\n                        0.801755 0.496891 0.332098\n                        0.860389 0.496891 0.113272\n                        0.860389 0.496891 -0.113272\n                        0.801755 0.496891 -0.332098\n                        0.688482 0.496891 -0.528291\n                        0.528291 0.496891 -0.688482\n                        0.332098 0.496891 -0.801755\n                        0.113272 0.496891 -0.860389\n                        -0.0926781 0.704167 -0.70396\n                        -0.271719 0.704167 -0.655987\n                        -0.432242 0.704167 -0.563308\n                        -0.563308 0.704167 -0.432242\n                        -0.655986 0.704167 -0.271719\n                        -0.70396 0.704167 -0.0926781\n                        -0.70396 0.704167 0.0926781\n                        -0.655987 0.704167 0.271719\n                        -0.563308 0.704167 0.432242\n                        -0.432242 0.704167 0.563308\n                        -0.271719 0.704167 0.655986\n                        -0.0926781 0.704167 0.70396\n                        0.0926781 0.704167 0.70396\n                        0.271719 0.704167 0.655987\n                        0.432242 0.704167 0.563308\n                        0.563308 0.704167 0.432242\n                        0.655986 0.704167 0.271719\n                        0.70396 0.704167 0.0926781\n                        0.70396 0.704167 -0.0926781\n                        0.655987 0.704167 -0.271719\n                        0.563308 0.704167 -0.432242\n                        0.432242 0.704167 -0.563308\n                        0.271719 0.704167 -0.655986\n                        0.0926781 0.704167 -0.70396\n                        -0.0656696 0.864219 -0.498811\n                        -0.192534 0.864219 -0.464818\n                        -0.306277 0.864219 -0.399148\n                        -0.399148 0.864219 -0.306277\n                        -0.464818 0.864219 -0.192534\n                        -0.498811 0.864219 -0.0656696\n                        -0.498811 0.864219 0.0656696\n                        -0.464818 0.864219 0.192534\n                        -0.399148 0.864219 0.306277\n                        -0.306277 0.864219 0.399148\n                        -0.192534 0.864219 0.464818\n                        -0.0656696 0.864219 0.498811\n                        0.0656696 0.864219 0.498811\n                        0.192534 0.864219 0.464818\n                        0.306277 0.864219 0.399148\n                        0.399148 0.864219 0.306277\n                        0.464818 0.864219 0.192534\n                        0.498811 0.864219 0.0656696\n                        0.498811 0.864219 -0.0656696\n                        0.464818 0.864219 -0.192534\n                        0.399148 0.864219 -0.306277\n                        0.306277 0.864219 -0.399148\n                        0.192534 0.864219 -0.464818\n                        0.0656696 0.864219 -0.498811\n                        -0.034045 0.965385 -0.258598\n                        -0.0998151 0.965385 -0.240975\n                        -0.158783 0.965385 -0.20693\n                        -0.20693 0.965385 -0.158783\n                        -0.240975 0.965385 -0.0998151\n                        -0.258598 0.965385 -0.034045\n                        -0.258598 0.965385 0.034045\n                        -0.240975 0.965385 0.0998151\n                        -0.20693 0.965385 0.158783\n                        -0.158783 0.965385 0.20693\n                        -0.0998151 0.965385 0.240975\n                        -0.034045 0.965385 0.258598\n                        0.034045 0.965385 0.258598\n                        0.0998151 0.965385 0.240975\n                        0.158783 0.965385 0.20693\n                        0.20693 0.965385 0.158783\n                        0.240975 0.965385 0.0998151\n                        0.258598 0.965385 0.034045\n                        0.382199 0.922709 0.0503174\n                        0.258598 0.965385 -0.034045\n                        0.240975 0.965385 -0.0998151\n                        0.20693 0.965385 -0.158783\n                        0.158783 0.965385 -0.20693\n                        0.0998151 0.965385 -0.240975\n                        0.034045 0.965385 -0.258598\n                        -0.0171815 0.991299 -0.130507\n                        -0.0503737 0.991299 -0.121613\n                        -0.080133 0.991299 -0.104431\n                        -0.104431 0.991299 -0.080133\n                        -0.121613 0.991299 -0.0503737\n                        -0.130507 0.991299 -0.0171815\n                        -0.130507 0.991299 0.0171815\n                        -0.121613 0.991299 0.0503737\n                        -0.104431 0.991299 0.080133\n                        -0.080133 0.991299 0.104431\n                        -0.0503737 0.991299 0.121613\n                        -0.0171815 0.991299 0.130507\n                        0.0171815 0.991299 0.130507\n                        0.0503737 0.991299 0.121613\n                        0.080133 0.991299 0.104431\n                        0.104431 0.991299 0.080133\n                        0.121613 0.991299 0.0503737\n                        0.130507 0.991299 0.0171815\n                        0.130507 0.991299 -0.0171815\n                        0.121613 0.991299 -0.0503737\n                        0.104431 0.991299 -0.080133\n                        0.080133 0.991299 -0.104431\n                        0.0503737 0.991299 -0.121613\n                        0.0171815 0.991299 -0.130507\n                        -0.0459086 0.99789 0.0459086\n                        -0.0649246 0.99789 0\n                        0 0.99789 0.0649246\n                        0.0459086 0.99789 0.0459086\n                        0.0649246 0.99789 0\n                        0.0459086 0.99789 -0.0459086\n                        0 0.99789 -0.0649246\n                        -0.0459086 0.99789 -0.0459086\n                        -0.901529 0.218627 0.373426\n                        -0.373426 0.218627 0.901529\n                        0.373426 0.218627 0.901529\n                        0.901529 0.218627 0.373426\n                        0.901529 0.218627 -0.373426\n                        0.373426 0.218627 -0.901529\n                        -0.373426 0.218627 -0.901529\n                        -0.901529 0.218627 -0.373426\n                        0 0 -1\n                        1 0 0\n                        0 0 1\n                        -1 0 0\n                        0 1 0\n                        -0.382684 0 -0.92388\n                        -0.92388 0 -0.382684\n                        -0.92388 0 0.382684\n                        -0.382684 0 0.92388\n                        0.382684 0 0.92388\n                        0.92388 0 0.382684\n                        0.92388 0 -0.382684\n                        0.382684 0 -0.92388\n                        0.258598 0.965385 -0.034045\n                        0.0171815 0.991299 -0.130507\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"681\" source=\"#Geometry-mesh068-normals-array\" stride=\"3\">\n                            <param name=\"X\" type=\"float\" />\n                            <param name=\"Y\" type=\"float\" />\n                            <param name=\"Z\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh068-Texture\" name=\"Texture\">\n                    <float_array id=\"Geometry-mesh068-Texture-array\" count=\"818\">\n                        0 0.166667\n                        0.333333 0.166667\n                        0.333333 0.194444\n                        0 0.194444\n                        0.666667 0.166667\n                        0.666667 0.194444\n                        1 0.166667\n                        1 0.194444\n                        0.333333 0.222222\n                        0 0.222222\n                        0.666667 0.222222\n                        1 0.222222\n                        0.333333 0.25\n                        0 0.25\n                        0.666667 0.25\n                        1 0.25\n                        0.333333 0.277778\n                        0 0.277778\n                        0.666667 0.277778\n                        1 0.277778\n                        0.333333 0.305556\n                        0 0.305556\n                        0.666667 0.305556\n                        1 0.305556\n                        0.333333 0.333333\n                        0 0.333333\n                        0.666667 0.333333\n                        1 0.333333\n                        0.333333 0.361111\n                        0 0.361111\n                        0.666667 0.361111\n                        1 0.361111\n                        0.333333 0.388889\n                        0 0.388889\n                        0.666667 0.388889\n                        1 0.388889\n                        0.333333 0.416667\n                        0 0.416667\n                        0.666667 0.416667\n                        1 0.416667\n                        0.333333 0.444444\n                        0 0.444444\n                        0.666667 0.444444\n                        1 0.444444\n                        0.333333 0.472222\n                        0 0.472222\n                        0.666667 0.472222\n                        1 0.472222\n                        0.333333 0.5\n                        0 0.5\n                        0.666667 0.5\n                        1 0.5\n                        0.8725 0.962176\n                        0.505 0.75\n                        0.8725 0.537824\n                        0.98097 0.654329\n                        0.98097 0.845671\n                        0.845671 0.98097\n                        0.654329 0.98097\n                        0.51903 0.845671\n                        0.51903 0.654329\n                        0.654329 0.51903\n                        0.845671 0.51903\n                        0 0\n                        0.125 0\n                        0.125 0.5\n                        0.25 0\n                        0.25 0.5\n                        0.375 0\n                        0.375 0.5\n                        0.5 0\n                        0.5 0.5\n                        0.625 0\n                        0.625 0.5\n                        0.75 0\n                        0.75 0.5\n                        0.875 0\n                        0.875 0.5\n                        1 0\n                        0 0.0833333\n                        0.0208333 0\n                        0.0416667 0.0833333\n                        0.0625 0\n                        0.0833333 0.0833333\n                        0.104167 0\n                        0.125 0.0833333\n                        0.145833 0\n                        0.166667 0.0833333\n                        0.1875 0\n                        0.208333 0.0833333\n                        0.229167 0\n                        0.25 0.0833333\n                        0.270833 0\n                        0.291667 0.0833333\n                        0.3125 0\n                        0.333333 0.0833333\n                        0.354167 0\n                        0.375 0.0833333\n                        0.395833 0\n                        0.416667 0.0833333\n                        0.4375 0\n                        0.458333 0.0833333\n                        0.479167 0\n                        0.5 0.0833333\n                        0.520833 0\n                        0.541667 0.0833333\n                        0.5625 0\n                        0.583333 0.0833333\n                        0.604167 0\n                        0.625 0.0833333\n                        0.645833 0\n                        0.666667 0.0833333\n                        0.6875 0\n                        0.708333 0.0833333\n                        0.729167 0\n                        0.75 0.0833333\n                        0.770833 0\n                        0.791667 0.0833333\n                        0.8125 0\n                        0.833333 0.0833333\n                        0.854167 0\n                        0.875 0.0833333\n                        0.895833 0\n                        0.916667 0.0833333\n                        0.9375 0\n                        0.958333 0.0833333\n                        0.979167 0\n                        1 0.0833333\n                        0.0416667 0.166667\n                        0.0833333 0.166667\n                        0.125 0.166667\n                        0.166667 0.166667\n                        0.208333 0.166667\n                        0.25 0.166667\n                        0.291667 0.166667\n                        0.375 0.166667\n                        0.416667 0.166667\n                        0.458333 0.166667\n                        0.5 0.166667\n                        0.541667 0.166667\n                        0.583333 0.166667\n                        0.625 0.166667\n                        0.708333 0.166667\n                        0.75 0.166667\n                        0.791667 0.166667\n                        0.833333 0.166667\n                        0.875 0.166667\n                        0.916667 0.166667\n                        0.958333 0.166667\n                        0.0416667 0.25\n                        0.0833333 0.25\n                        0.125 0.25\n                        0.166667 0.25\n                        0.208333 0.25\n                        0.25 0.25\n                        0.291667 0.25\n                        0.375 0.25\n                        0.416667 0.25\n                        0.458333 0.25\n                        0.5 0.25\n                        0.541667 0.25\n                        0.583333 0.25\n                        0.625 0.25\n                        0.708333 0.25\n                        0.75 0.25\n                        0.791667 0.25\n                        0.833333 0.25\n                        0.875 0.25\n                        0.916667 0.25\n                        0.958333 0.25\n                        0.0416667 0.333333\n                        0.0833333 0.333333\n                        0.125 0.333333\n                        0.166667 0.333333\n                        0.208333 0.333333\n                        0.25 0.333333\n                        0.291667 0.333333\n                        0.375 0.333333\n                        0.416667 0.333333\n                        0.458333 0.333333\n                        0.5 0.333333\n                        0.541667 0.333333\n                        0.583333 0.333333\n                        0.625 0.333333\n                        0.708333 0.333333\n                        0.75 0.333333\n                        0.791667 0.333333\n                        0.833333 0.333333\n                        0.875 0.333333\n                        0.916667 0.333333\n                        0.958333 0.333333\n                        0.0416667 0.416667\n                        0.0833333 0.416667\n                        0.125 0.416667\n                        0.166667 0.416667\n                        0.208333 0.416667\n                        0.25 0.416667\n                        0.291667 0.416667\n                        0.375 0.416667\n                        0.416667 0.416667\n                        0.458333 0.416667\n                        0.5 0.416667\n                        0.541667 0.416667\n                        0.583333 0.416667\n                        0.625 0.416667\n                        0.708333 0.416667\n                        0.75 0.416667\n                        0.791667 0.416667\n                        0.833333 0.416667\n                        0.875 0.416667\n                        0.916667 0.416667\n                        0.958333 0.416667\n                        0.0416667 0.5\n                        0.0833333 0.5\n                        0.166667 0.5\n                        0.208333 0.5\n                        0.291667 0.5\n                        0.416667 0.5\n                        0.458333 0.5\n                        0.541667 0.5\n                        0.583333 0.5\n                        0.708333 0.5\n                        0.791667 0.5\n                        0.833333 0.5\n                        0.916667 0.5\n                        0.958333 0.5\n                        0 0.583333\n                        0.0416667 0.583333\n                        0.0833333 0.583333\n                        0.125 0.583333\n                        0.166667 0.583333\n                        0.208333 0.583333\n                        0.25 0.583333\n                        0.291667 0.583333\n                        0.333333 0.583333\n                        0.375 0.583333\n                        0.416667 0.583333\n                        0.458333 0.583333\n                        0.5 0.583333\n                        0.541667 0.583333\n                        0.583333 0.583333\n                        0.625 0.583333\n                        0.666667 0.583333\n                        0.708333 0.583333\n                        0.75 0.583333\n                        0.791667 0.583333\n                        0.833333 0.583333\n                        0.875 0.583333\n                        0.916667 0.583333\n                        0.958333 0.583333\n                        1 0.583333\n                        0 0.666667\n                        0.0416667 0.666667\n                        0.0833333 0.666667\n                        0.125 0.666667\n                        0.166667 0.666667\n                        0.208333 0.666667\n                        0.25 0.666667\n                        0.291667 0.666667\n                        0.333333 0.666667\n                        0.375 0.666667\n                        0.416667 0.666667\n                        0.458333 0.666667\n                        0.5 0.666667\n                        0.541667 0.666667\n                        0.583333 0.666667\n                        0.625 0.666667\n                        0.666667 0.666667\n                        0.708333 0.666667\n                        0.75 0.666667\n                        0.791667 0.666667\n                        0.833333 0.666667\n                        0.875 0.666667\n                        0.916667 0.666667\n                        0.958333 0.666667\n                        1 0.666667\n                        0 0.75\n                        0.0416667 0.75\n                        0.0833333 0.75\n                        0.125 0.75\n                        0.166667 0.75\n                        0.208333 0.75\n                        0.25 0.75\n                        0.291667 0.75\n                        0.333333 0.75\n                        0.375 0.75\n                        0.416667 0.75\n                        0.458333 0.75\n                        0.5 0.75\n                        0.541667 0.75\n                        0.583333 0.75\n                        0.625 0.75\n                        0.666667 0.75\n                        0.708333 0.75\n                        0.75 0.75\n                        0.791667 0.75\n                        0.833333 0.75\n                        0.875 0.75\n                        0.916667 0.75\n                        0.958333 0.75\n                        1 0.75\n                        0 0.833333\n                        0.0416667 0.833333\n                        0.0833333 0.833333\n                        0.125 0.833333\n                        0.166667 0.833333\n                        0.208333 0.833333\n                        0.25 0.833333\n                        0.291667 0.833333\n                        0.333333 0.833333\n                        0.375 0.833333\n                        0.416667 0.833333\n                        0.458333 0.833333\n                        0.5 0.833333\n                        0.541667 0.833333\n                        0.583333 0.833333\n                        0.625 0.833333\n                        0.666667 0.833333\n                        0.708333 0.833333\n                        0.75 0.833333\n                        0.791667 0.833333\n                        0.833333 0.833333\n                        0.875 0.833333\n                        0.916667 0.833333\n                        0.958333 0.833333\n                        1 0.833333\n                        0 0.916667\n                        0.0416667 0.916667\n                        0.0833333 0.916667\n                        0.125 0.916667\n                        0.166667 0.916667\n                        0.208333 0.916667\n                        0.25 0.916667\n                        0.291667 0.916667\n                        0.333333 0.916667\n                        0.375 0.916667\n                        0.416667 0.916667\n                        0.458333 0.916667\n                        0.5 0.916667\n                        0.541667 0.916667\n                        0.583333 0.916667\n                        0.625 0.916667\n                        0.666667 0.916667\n                        0.708333 0.916667\n                        0.75 0.916667\n                        0.791667 0.916667\n                        0.833333 0.916667\n                        0.875 0.916667\n                        0.916667 0.916667\n                        0.958333 0.916667\n                        1 0.916667\n                        0.0208333 1\n                        0.0625 1\n                        0.104167 1\n                        0.145833 1\n                        0.1875 1\n                        0.229167 1\n                        0.270833 1\n                        0.3125 1\n                        0.354167 1\n                        0.395833 1\n                        0.4375 1\n                        0.479167 1\n                        0.520833 1\n                        0.5625 1\n                        0.604167 1\n                        0.645833 1\n                        0.6875 1\n                        0.729167 1\n                        0.770833 1\n                        0.8125 1\n                        0.854167 1\n                        0.895833 1\n                        0.9375 1\n                        0.979167 1\n                        0.0190301 0.845671\n                        0.0408953 0.836614\n                        0.163386 0.959105\n                        0.154329 0.98097\n                        0.0190301 0.654329\n                        0.0408953 0.663386\n                        0.154329 0.51903\n                        0.163386 0.540895\n                        0.345671 0.51903\n                        0.336614 0.540895\n                        0.48097 0.654329\n                        0.459105 0.663386\n                        0.48097 0.845671\n                        0.459105 0.836614\n                        0.345671 0.98097\n                        0.336614 0.959105\n                        0.25 1\n                        0.5 1\n                        0.920508 0.820627\n                        0.920508 0.679373\n                        0.820627 0.920508\n                        0.679373 0.920508\n                        0.579492 0.820627\n                        0.579492 0.679373\n                        0.679373 0.579492\n                        0.820627 0.579492\n                        0.0794921 0.679373\n                        0.0794921 0.820627\n                        0.179373 0.579492\n                        0.320627 0.579492\n                        0.420508 0.679373\n                        0.420508 0.820627\n                        0.320627 0.920508\n                        0.179373 0.920508\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"409\" source=\"#Geometry-mesh068-Texture-array\" stride=\"2\">\n                            <param name=\"S\" type=\"float\" />\n                            <param name=\"T\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh068-Color\" name=\"Color\">\n                    <float_array id=\"Geometry-mesh068-Color-array\" count=\"32\">\n                        0.586806 0.477733 0.312645 1\n                        0.4468 0.36379 0.237963 1\n                        0.345 0.248568 0.103668 1\n                        0.375 0.270065 0.112612 1\n                        0.64 0.27 0.25 1\n                        0.78 0.78 0.78 1\n                        0.205 0.147655 0.0615547 1\n                        0.41 0.41 0.48 1\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"8\" source=\"#Geometry-mesh068-Color-array\" stride=\"4\">\n                            <param name=\"R\" type=\"float\" />\n                            <param name=\"G\" type=\"float\" />\n                            <param name=\"B\" type=\"float\" />\n                            <param name=\"A\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <vertices id=\"Geometry-mesh068-vertices\">\n                    <input semantic=\"POSITION\" source=\"#Geometry-mesh068-positions\" />\n                </vertices>\n                <polylist count=\"650\" material=\"Material-Default\">\n                    <input semantic=\"VERTEX\" source=\"#Geometry-mesh068-vertices\" offset=\"0\" />\n                    <input semantic=\"NORMAL\" source=\"#Geometry-mesh068-normals\" offset=\"1\" />\n                    <input semantic=\"TEXCOORD\" source=\"#Geometry-mesh068-Texture\" offset=\"2\" set=\"0\" />\n                    <input semantic=\"COLOR\" source=\"#Geometry-mesh068-Color\" offset=\"3\" set=\"0\" />\n                    <vcount>4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 8 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 2 2</vcount>\n                    <p>0 0 0 0 1 0 1 0 4 1 2 0 3 1 3 0 1 2 1 0 2 2 4 0 5 3 5 0 4 3 2 0 2 4 4 0 0 4 6 0 3 5 7 0 5 5 5 0 3 1 3 0 4 1 2 0 7 6 8 0 6 6 9 0 4 3 2 0 5 3 5 0 8 7 10 0 7 7 8 0 5 5 5 0 3 5 7 0 6 8 11 0 8 8 10 0 6 6 9 0 7 6 8 0 10 9 12 0 9 9 13 0 7 7 8 0 8 7 10 0 11 10 14 0 10 10 12 0 8 8 10 0 6 8 11 0 9 11 15 0 11 11 14 0 9 9 13 0 10 9 12 0 13 12 16 0 12 12 17 0 10 10 12 0 11 10 14 0 14 13 18 0 13 13 16 0 11 11 14 0 9 11 15 0 12 14 19 0 14 14 18 0 12 12 17 0 13 12 16 0 16 15 20 0 15 15 21 0 13 13 16 0 14 13 18 0 17 16 22 0 16 16 20 0 14 14 18 0 12 14 19 0 15 17 23 0 17 17 22 0 15 15 21 0 16 15 20 0 19 18 24 0 18 18 25 0 16 16 20 0 17 16 22 0 20 19 26 0 19 19 24 0 17 17 22 0 15 17 23 0 18 20 27 0 20 20 26 0 18 18 25 0 19 18 24 0 22 21 28 0 21 21 29 0 19 19 24 0 20 19 26 0 23 22 30 0 22 22 28 0 20 20 26 0 18 20 27 0 21 23 31 0 23 23 30 0 21 21 29 0 22 21 28 0 25 24 32 0 24 24 33 0 22 22 28 0 23 22 30 0 26 25 34 0 25 25 32 0 23 23 30 0 21 23 31 0 24 26 35 0 26 26 34 0 24 24 33 0 25 24 32 0 28 27 36 0 27 27 37 0 25 25 32 0 26 25 34 0 29 28 38 0 28 28 36 0 26 26 34 0 24 26 35 0 27 29 39 0 29 29 38 0 27 27 37 0 28 27 36 0 31 30 40 1 30 30 41 1 28 28 36 0 29 28 38 0 32 31 42 1 31 31 40 1 29 29 38 0 27 29 39 0 30 32 43 1 32 32 42 1 30 30 41 1 31 30 40 1 34 33 44 1 33 33 45 1 31 34 40 1 32 34 42 1 35 35 46 1 34 35 44 1 32 32 42 1 30 32 43 1 33 36 47 1 35 36 46 1 33 33 45 1 34 33 44 1 37 37 48 0 36 37 49 0 34 35 44 1 35 35 46 1 38 38 50 0 37 38 48 0 35 36 46 1 33 36 47 1 36 39 51 0 38 39 50 0 36 40 52 0 37 40 53 0 38 40 54 0 39 41 0 0 40 41 1 0 43 42 2 0 42 42 3 0 40 43 1 0 41 43 4 0 44 44 5 0 43 44 2 0 41 45 4 0 39 45 6 0 42 46 7 0 44 46 5 0 42 42 3 0 43 42 2 0 46 47 8 0 45 47 9 0 43 44 2 0 44 44 5 0 47 48 10 0 46 48 8 0 44 46 5 0 42 46 7 0 45 49 11 0 47 49 10 0 45 47 9 0 46 47 8 0 49 50 12 0 48 50 13 0 46 48 8 0 47 48 10 0 50 51 14 0 49 51 12 0 47 49 10 0 45 49 11 0 48 52 15 0 50 52 14 0 48 50 13 0 49 50 12 0 52 53 16 0 51 53 17 0 49 51 12 0 50 51 14 0 53 54 18 0 52 54 16 0 50 52 14 0 48 52 15 0 51 55 19 0 53 55 18 0 51 53 17 0 52 53 16 0 55 56 20 0 54 56 21 0 52 54 16 0 53 54 18 0 56 57 22 0 55 57 20 0 53 55 18 0 51 55 19 0 54 58 23 0 56 58 22 0 54 56 21 0 55 56 20 0 58 59 24 0 57 59 25 0 55 57 20 0 56 57 22 0 59 60 26 0 58 60 24 0 56 58 22 0 54 58 23 0 57 61 27 0 59 61 26 0 57 59 25 0 58 59 24 0 61 62 28 0 60 62 29 0 58 60 24 0 59 60 26 0 62 63 30 0 61 63 28 0 59 61 26 0 57 61 27 0 60 64 31 0 62 64 30 0 60 62 29 0 61 62 28 0 64 65 32 0 63 65 33 0 61 63 28 0 62 63 30 0 65 66 34 0 64 66 32 0 62 64 30 0 60 64 31 0 63 67 35 0 65 67 34 0 63 65 33 0 64 65 32 0 67 68 36 0 66 68 37 0 64 66 32 0 65 66 34 0 68 69 38 0 67 69 36 0 65 67 34 0 63 67 35 0 66 70 39 0 68 70 38 0 66 68 37 0 67 68 36 0 70 71 40 1 69 71 41 1 67 69 36 0 68 69 38 0 71 72 42 1 70 72 40 1 68 70 38 0 66 70 39 0 69 73 43 1 71 73 42 1 69 71 41 1 70 71 40 1 73 74 44 1 72 74 45 1 70 75 40 1 71 75 42 1 74 76 46 1 73 76 44 1 71 73 42 1 69 73 43 1 72 77 47 1 74 77 46 1 72 74 45 1 73 74 44 1 76 78 48 0 75 78 49 0 73 76 44 1 74 76 46 1 77 79 50 0 76 79 48 0 74 77 46 1 72 77 47 1 75 80 51 0 77 80 50 0 75 81 52 0 76 81 53 0 77 81 54 0 78 82 0 0 79 82 1 0 82 83 2 0 81 83 3 0 79 84 1 0 80 84 4 0 83 85 5 0 82 85 2 0 80 86 4 0 78 86 6 0 81 87 7 0 83 87 5 0 81 83 3 0 82 83 2 0 85 88 8 0 84 88 9 0 82 85 2 0 83 85 5 0 86 89 10 0 85 89 8 0 83 87 5 0 81 87 7 0 84 90 11 0 86 90 10 0 84 88 9 0 85 88 8 0 88 91 12 0 87 91 13 0 85 89 8 0 86 89 10 0 89 92 14 0 88 92 12 0 86 90 10 0 84 90 11 0 87 93 15 0 89 93 14 0 87 91 13 0 88 91 12 0 91 94 16 0 90 94 17 0 88 92 12 0 89 92 14 0 92 95 18 0 91 95 16 0 89 93 14 0 87 93 15 0 90 96 19 0 92 96 18 0 90 94 17 0 91 94 16 0 94 97 20 0 93 97 21 0 91 95 16 0 92 95 18 0 95 98 22 0 94 98 20 0 92 96 18 0 90 96 19 0 93 99 23 0 95 99 22 0 93 97 21 0 94 97 20 0 97 100 24 0 96 100 25 0 94 98 20 0 95 98 22 0 98 101 26 0 97 101 24 0 95 99 22 0 93 99 23 0 96 102 27 0 98 102 26 0 96 100 25 0 97 100 24 0 100 103 28 0 99 103 29 0 97 101 24 0 98 101 26 0 101 104 30 0 100 104 28 0 98 102 26 0 96 102 27 0 99 105 31 0 101 105 30 0 99 103 29 0 100 103 28 0 103 106 32 0 102 106 33 0 100 104 28 0 101 104 30 0 104 107 34 0 103 107 32 0 101 105 30 0 99 105 31 0 102 108 35 0 104 108 34 0 102 106 33 0 103 106 32 0 106 109 36 0 105 109 37 0 103 107 32 0 104 107 34 0 107 110 38 0 106 110 36 0 104 108 34 0 102 108 35 0 105 111 39 0 107 111 38 0 105 109 37 0 106 109 36 0 109 112 40 1 108 112 41 1 106 110 36 0 107 110 38 0 110 113 42 1 109 113 40 1 107 111 38 0 105 111 39 0 108 114 43 1 110 114 42 1 108 112 41 1 109 112 40 1 112 115 44 1 111 115 45 1 109 116 40 1 110 116 42 1 113 117 46 1 112 117 44 1 110 114 42 1 108 114 43 1 111 118 47 1 113 118 46 1 111 115 45 1 112 115 44 1 115 119 48 0 114 119 49 0 112 117 44 1 113 117 46 1 116 120 50 0 115 120 48 0 113 118 46 1 111 118 47 1 114 121 51 0 116 121 50 0 114 122 52 0 115 122 53 0 116 122 54 0 117 123 0 0 118 123 1 0 121 124 2 0 120 124 3 0 118 125 1 0 119 125 4 0 122 126 5 0 121 126 2 0 119 127 4 0 117 127 6 0 120 128 7 0 122 128 5 0 120 124 3 0 121 124 2 0 124 129 8 0 123 129 9 0 121 126 2 0 122 126 5 0 125 130 10 0 124 130 8 0 122 128 5 0 120 128 7 0 123 131 11 0 125 131 10 0 123 129 9 0 124 129 8 0 127 132 12 0 126 132 13 0 124 130 8 0 125 130 10 0 128 133 14 0 127 133 12 0 125 131 10 0 123 131 11 0 126 134 15 0 128 134 14 0 126 132 13 0 127 132 12 0 130 135 16 0 129 135 17 0 127 133 12 0 128 133 14 0 131 136 18 0 130 136 16 0 128 134 14 0 126 134 15 0 129 137 19 0 131 137 18 0 129 135 17 0 130 135 16 0 133 138 20 0 132 138 21 0 130 136 16 0 131 136 18 0 134 139 22 0 133 139 20 0 131 137 18 0 129 137 19 0 132 140 23 0 134 140 22 0 132 138 21 0 133 138 20 0 136 141 24 0 135 141 25 0 133 139 20 0 134 139 22 0 137 142 26 0 136 142 24 0 134 140 22 0 132 140 23 0 135 143 27 0 137 143 26 0 135 141 25 0 136 141 24 0 139 144 28 0 138 144 29 0 136 142 24 0 137 142 26 0 140 145 30 0 139 145 28 0 137 143 26 0 135 143 27 0 138 146 31 0 140 146 30 0 138 144 29 0 139 144 28 0 142 147 32 0 141 147 33 0 139 145 28 0 140 145 30 0 143 148 34 0 142 148 32 0 140 146 30 0 138 146 31 0 141 149 35 0 143 149 34 0 141 147 33 0 142 147 32 0 145 150 36 0 144 150 37 0 142 148 32 0 143 148 34 0 146 151 38 0 145 151 36 0 143 149 34 0 141 149 35 0 144 152 39 0 146 152 38 0 144 150 37 0 145 150 36 0 148 153 40 1 147 153 41 1 145 151 36 0 146 151 38 0 149 154 42 1 148 154 40 1 146 152 38 0 144 152 39 0 147 155 43 1 149 155 42 1 147 153 41 1 148 153 40 1 151 156 44 1 150 156 45 1 148 157 40 1 149 157 42 1 152 158 46 1 151 158 44 1 149 155 42 1 147 155 43 1 150 159 47 1 152 159 46 1 150 156 45 1 151 156 44 1 154 160 48 0 153 160 49 0 151 158 44 1 152 158 46 1 155 161 50 0 154 161 48 0 152 159 46 1 150 159 47 1 153 162 51 0 155 162 50 0 153 163 52 0 154 163 53 0 155 163 54 0 156 164 0 0 157 164 1 0 160 165 2 0 159 165 3 0 157 166 1 0 158 166 4 0 161 167 5 0 160 167 2 0 158 168 4 0 156 168 6 0 159 169 7 0 161 169 5 0 159 165 3 0 160 165 2 0 163 170 8 0 162 170 9 0 160 167 2 0 161 167 5 0 164 171 10 0 163 171 8 0 161 169 5 0 159 169 7 0 162 172 11 0 164 172 10 0 162 170 9 0 163 170 8 0 166 173 12 0 165 173 13 0 163 171 8 0 164 171 10 0 167 174 14 0 166 174 12 0 164 172 10 0 162 172 11 0 165 175 15 0 167 175 14 0 165 173 13 0 166 173 12 0 169 176 16 0 168 176 17 0 166 174 12 0 167 174 14 0 170 177 18 0 169 177 16 0 167 175 14 0 165 175 15 0 168 178 19 0 170 178 18 0 168 176 17 0 169 176 16 0 172 179 20 0 171 179 21 0 169 177 16 0 170 177 18 0 173 180 22 0 172 180 20 0 170 178 18 0 168 178 19 0 171 181 23 0 173 181 22 0 171 179 21 0 172 179 20 0 175 182 24 0 174 182 25 0 172 180 20 0 173 180 22 0 176 183 26 0 175 183 24 0 173 181 22 0 171 181 23 0 174 184 27 0 176 184 26 0 174 182 25 0 175 182 24 0 178 185 28 0 177 185 29 0 175 183 24 0 176 183 26 0 179 186 30 0 178 186 28 0 176 184 26 0 174 184 27 0 177 187 31 0 179 187 30 0 177 185 29 0 178 185 28 0 181 188 32 0 180 188 33 0 178 186 28 0 179 186 30 0 182 189 34 0 181 189 32 0 179 187 30 0 177 187 31 0 180 190 35 0 182 190 34 0 180 188 33 0 181 188 32 0 184 191 36 0 183 191 37 0 181 189 32 0 182 189 34 0 185 192 38 0 184 192 36 0 182 190 34 0 180 190 35 0 183 193 39 0 185 193 38 0 183 191 37 0 184 191 36 0 187 194 40 1 186 194 41 1 184 192 36 0 185 192 38 0 188 195 42 1 187 195 40 1 185 193 38 0 183 193 39 0 186 196 43 1 188 196 42 1 186 194 41 1 187 194 40 1 190 197 44 1 189 197 45 1 187 198 40 1 188 198 42 1 191 199 46 1 190 199 44 1 188 196 42 1 186 196 43 1 189 200 47 1 191 200 46 1 189 197 45 1 190 197 44 1 193 201 48 0 192 201 49 0 190 199 44 1 191 199 46 1 194 202 50 0 193 202 48 0 191 200 46 1 189 200 47 1 192 203 51 0 194 203 50 0 192 204 52 0 193 204 53 0 194 204 54 0 195 205 0 0 196 205 1 0 199 206 2 0 198 206 3 0 196 207 1 0 197 207 4 0 200 208 5 0 199 208 2 0 197 209 4 0 195 209 6 0 198 210 7 0 200 210 5 0 198 206 3 0 199 206 2 0 202 211 8 0 201 211 9 0 199 208 2 0 200 208 5 0 203 212 10 0 202 212 8 0 200 210 5 0 198 210 7 0 201 213 11 0 203 213 10 0 201 211 9 0 202 211 8 0 205 214 12 0 204 214 13 0 202 212 8 0 203 212 10 0 206 215 14 0 205 215 12 0 203 213 10 0 201 213 11 0 204 216 15 0 206 216 14 0 204 214 13 0 205 214 12 0 208 217 16 0 207 217 17 0 205 215 12 0 206 215 14 0 209 218 18 0 208 218 16 0 206 216 14 0 204 216 15 0 207 219 19 0 209 219 18 0 207 217 17 0 208 217 16 0 211 220 20 0 210 220 21 0 208 218 16 0 209 218 18 0 212 221 22 0 211 221 20 0 209 219 18 0 207 219 19 0 210 222 23 0 212 222 22 0 210 220 21 0 211 220 20 0 214 223 24 0 213 223 25 0 211 221 20 0 212 221 22 0 215 224 26 0 214 224 24 0 212 222 22 0 210 222 23 0 213 225 27 0 215 225 26 0 213 223 25 0 214 223 24 0 217 226 28 0 216 226 29 0 214 224 24 0 215 224 26 0 218 227 30 0 217 227 28 0 215 225 26 0 213 225 27 0 216 228 31 0 218 228 30 0 216 226 29 0 217 226 28 0 220 229 32 0 219 229 33 0 217 227 28 0 218 227 30 0 221 230 34 0 220 230 32 0 218 228 30 0 216 228 31 0 219 231 35 0 221 231 34 0 219 229 33 0 220 229 32 0 223 232 36 0 222 232 37 0 220 230 32 0 221 230 34 0 224 233 38 0 223 233 36 0 221 231 34 0 219 231 35 0 222 234 39 0 224 234 38 0 222 232 37 0 223 232 36 0 226 235 40 1 225 235 41 1 223 233 36 0 224 233 38 0 227 236 42 1 226 236 40 1 224 234 38 0 222 234 39 0 225 237 43 1 227 237 42 1 225 235 41 1 226 235 40 1 229 238 44 1 228 238 45 1 226 239 40 1 227 239 42 1 230 240 46 1 229 240 44 1 227 237 42 1 225 237 43 1 228 241 47 1 230 241 46 1 228 238 45 1 229 238 44 1 232 242 48 0 231 242 49 0 229 240 44 1 230 240 46 1 233 243 50 0 232 243 48 0 230 241 46 1 228 241 47 1 231 244 51 0 233 244 50 0 231 245 52 0 232 245 53 0 233 245 54 0 234 246 0 0 235 246 1 0 238 247 2 0 237 247 3 0 235 248 1 0 236 248 4 0 239 249 5 0 238 249 2 0 236 250 4 0 234 250 6 0 237 251 7 0 239 251 5 0 237 247 3 0 238 247 2 0 241 252 8 0 240 252 9 0 238 249 2 0 239 249 5 0 242 253 10 0 241 253 8 0 239 251 5 0 237 251 7 0 240 254 11 0 242 254 10 0 240 252 9 0 241 252 8 0 244 255 12 0 243 255 13 0 241 253 8 0 242 253 10 0 245 256 14 0 244 256 12 0 242 254 10 0 240 254 11 0 243 257 15 0 245 257 14 0 243 255 13 0 244 255 12 0 247 258 16 0 246 258 17 0 244 256 12 0 245 256 14 0 248 259 18 0 247 259 16 0 245 257 14 0 243 257 15 0 246 260 19 0 248 260 18 0 246 258 17 0 247 258 16 0 250 261 20 0 249 261 21 0 247 259 16 0 248 259 18 0 251 262 22 0 250 262 20 0 248 260 18 0 246 260 19 0 249 263 23 0 251 263 22 0 249 261 21 0 250 261 20 0 253 264 24 0 252 264 25 0 250 262 20 0 251 262 22 0 254 265 26 0 253 265 24 0 251 263 22 0 249 263 23 0 252 266 27 0 254 266 26 0 252 264 25 0 253 264 24 0 256 267 28 0 255 267 29 0 253 265 24 0 254 265 26 0 257 268 30 0 256 268 28 0 254 266 26 0 252 266 27 0 255 269 31 0 257 269 30 0 255 267 29 0 256 267 28 0 259 270 32 0 258 270 33 0 256 268 28 0 257 268 30 0 260 271 34 0 259 271 32 0 257 269 30 0 255 269 31 0 258 272 35 0 260 272 34 0 258 270 33 0 259 270 32 0 262 273 36 0 261 273 37 0 259 271 32 0 260 271 34 0 263 274 38 0 262 274 36 0 260 272 34 0 258 272 35 0 261 275 39 0 263 275 38 0 261 273 37 0 262 273 36 0 265 276 40 1 264 276 41 1 262 274 36 0 263 274 38 0 266 277 42 1 265 277 40 1 263 275 38 0 261 275 39 0 264 278 43 1 266 278 42 1 264 276 41 1 265 276 40 1 268 279 44 1 267 279 45 1 265 280 40 1 266 280 42 1 269 281 46 1 268 281 44 1 266 278 42 1 264 278 43 1 267 282 47 1 269 282 46 1 267 279 45 1 268 279 44 1 271 283 48 0 270 283 49 0 268 281 44 1 269 281 46 1 272 284 50 0 271 284 48 0 269 282 46 1 267 282 47 1 270 285 51 0 272 285 50 0 270 286 52 0 271 286 53 0 272 286 54 0 273 287 0 0 274 287 1 0 277 288 2 0 276 288 3 0 274 289 1 0 275 289 4 0 278 290 5 0 277 290 2 0 275 291 4 0 273 291 6 0 276 292 7 0 278 292 5 0 276 288 3 0 277 288 2 0 280 293 8 0 279 293 9 0 277 290 2 0 278 290 5 0 281 294 10 0 280 294 8 0 278 292 5 0 276 292 7 0 279 295 11 0 281 295 10 0 279 293 9 0 280 293 8 0 283 296 12 0 282 296 13 0 280 294 8 0 281 294 10 0 284 297 14 0 283 297 12 0 281 295 10 0 279 295 11 0 282 298 15 0 284 298 14 0 282 296 13 0 283 296 12 0 286 299 16 0 285 299 17 0 283 297 12 0 284 297 14 0 287 300 18 0 286 300 16 0 284 298 14 0 282 298 15 0 285 301 19 0 287 301 18 0 285 299 17 0 286 299 16 0 289 302 20 0 288 302 21 0 286 300 16 0 287 300 18 0 290 303 22 0 289 303 20 0 287 301 18 0 285 301 19 0 288 304 23 0 290 304 22 0 288 302 21 0 289 302 20 0 292 305 24 0 291 305 25 0 289 303 20 0 290 303 22 0 293 306 26 0 292 306 24 0 290 304 22 0 288 304 23 0 291 307 27 0 293 307 26 0 291 305 25 0 292 305 24 0 295 308 28 0 294 308 29 0 292 306 24 0 293 306 26 0 296 309 30 0 295 309 28 0 293 307 26 0 291 307 27 0 294 310 31 0 296 310 30 0 294 308 29 0 295 308 28 0 298 311 32 0 297 311 33 0 295 309 28 0 296 309 30 0 299 312 34 0 298 312 32 0 296 310 30 0 294 310 31 0 297 313 35 0 299 313 34 0 297 311 33 0 298 311 32 0 301 314 36 0 300 314 37 0 298 312 32 0 299 312 34 0 302 315 38 0 301 315 36 0 299 313 34 0 297 313 35 0 300 316 39 0 302 316 38 0 300 314 37 0 301 314 36 0 304 317 40 1 303 317 41 1 301 315 36 0 302 315 38 0 305 318 42 1 304 318 40 1 302 316 38 0 300 316 39 0 303 319 43 1 305 319 42 1 303 317 41 1 304 317 40 1 307 320 44 1 306 320 45 1 304 321 40 1 305 321 42 1 308 322 46 1 307 322 44 1 305 319 42 1 303 319 43 1 306 323 47 1 308 323 46 1 306 320 45 1 307 320 44 1 310 324 48 0 309 324 49 0 307 322 44 1 308 322 46 1 311 325 50 0 310 325 48 0 308 323 46 1 306 323 47 1 309 326 51 0 311 326 50 0 309 327 52 0 310 327 53 0 311 327 54 0 312 328 55 2 319 328 56 2 318 328 57 2 317 328 58 2 316 328 59 2 315 328 60 2 314 328 61 2 313 328 62 2 320 329 49 3 312 329 63 2 313 329 64 2 321 329 65 3 321 330 65 3 313 330 64 2 314 330 66 2 322 330 67 3 322 331 67 3 314 331 66 2 315 331 68 2 323 331 69 3 323 332 69 3 315 332 68 2 316 332 70 2 324 332 71 3 324 333 71 3 316 333 70 2 317 333 72 2 325 333 73 3 325 334 73 3 317 334 72 2 318 334 74 2 326 334 75 3 326 335 75 3 318 335 74 2 319 335 76 2 327 335 77 3 327 336 77 3 319 336 76 2 312 336 78 2 320 336 51 3 858 337 79 4 852 338 80 4 805 337 81 4 330 339 81 5 851 340 82 5 806 339 83 5 331 341 83 4 943 342 84 4 859 341 85 4 332 343 85 5 850 344 86 5 807 343 87 5 333 345 87 4 849 346 88 4 808 345 89 4 334 347 89 5 957 348 90 5 946 347 91 5 335 349 91 4 650 350 92 4 651 349 93 4 336 351 93 5 779 352 94 5 767 351 95 5 337 353 95 4 940 354 96 4 860 353 97 4 338 355 97 5 766 356 98 5 754 355 99 5 339 357 99 4 753 358 100 4 741 357 101 4 340 359 101 5 938 360 102 5 861 359 103 5 341 361 103 4 740 362 104 4 728 361 105 4 342 363 105 5 727 364 106 5 715 363 107 5 343 365 107 4 936 366 108 4 862 365 109 4 344 367 109 5 713 368 110 5 702 367 111 5 345 369 111 4 688 370 112 4 689 369 113 4 346 371 113 5 857 372 114 5 863 371 115 5 347 373 115 4 328 374 116 4 652 373 117 4 348 375 117 5 686 376 118 5 675 375 119 5 349 377 119 4 942 378 120 4 864 377 121 4 350 379 121 5 803 380 122 5 780 379 123 5 351 381 123 4 802 382 124 4 781 381 125 4 352 383 125 5 944 384 126 5 329 383 127 5 865 385 0 4 858 337 79 4 805 337 81 4 809 385 128 4 354 386 128 5 330 339 81 5 806 339 83 5 810 386 129 5 355 387 129 4 331 341 83 4 859 341 85 4 866 387 130 4 356 388 130 5 332 343 85 5 807 343 87 5 811 388 131 5 357 389 131 4 333 345 87 4 808 345 89 4 812 389 132 4 358 390 132 5 334 347 89 5 946 347 91 5 947 390 133 5 359 391 133 4 335 349 91 4 651 349 93 4 653 391 134 4 360 392 134 5 336 351 93 5 767 351 95 5 768 392 1 5 361 393 1 4 337 353 95 4 860 353 97 4 867 393 135 4 362 394 135 5 338 355 97 5 754 355 99 5 755 394 136 5 363 395 136 4 339 357 99 4 741 357 101 4 742 395 137 4 364 396 137 5 340 359 101 5 861 359 103 5 868 396 138 5 365 397 138 4 341 361 103 4 728 361 105 4 729 397 139 4 366 398 139 5 342 363 105 5 715 363 107 5 716 398 140 5 367 399 140 4 343 365 107 4 862 365 109 4 869 399 141 4 368 400 141 5 344 367 109 5 702 367 111 5 703 400 4 5 369 401 4 4 345 369 111 4 689 369 113 4 690 401 142 4 370 402 142 5 346 371 113 5 863 371 115 5 870 402 143 5 371 403 143 4 347 373 115 4 652 373 117 4 654 403 144 4 372 404 144 5 348 375 117 5 675 375 119 5 676 404 145 5 373 405 145 4 349 377 119 4 864 377 121 4 871 405 146 4 374 406 146 5 350 379 121 5 780 379 123 5 782 406 147 5 375 407 147 4 351 381 123 4 781 381 125 4 783 407 148 4 376 408 148 5 352 383 125 5 329 383 127 5 353 408 6 5 872 409 13 4 865 385 0 4 809 385 128 4 813 409 149 4 378 410 149 5 354 386 128 5 810 386 129 5 814 410 150 5 379 411 150 4 355 387 129 4 866 387 130 4 873 411 151 4 380 412 151 5 356 388 130 5 811 388 131 5 815 412 152 5 381 413 152 4 357 389 131 4 812 389 132 4 816 413 153 4 382 414 153 5 358 390 132 5 947 390 133 5 948 414 154 5 383 415 154 4 359 391 133 4 653 391 134 4 655 415 155 4 384 416 155 5 360 392 134 5 768 392 1 5 769 416 12 5 385 417 12 4 361 393 1 4 867 393 135 4 874 417 156 4 386 418 156 5 362 394 135 5 755 394 136 5 756 418 157 5 387 419 157 4 363 395 136 4 742 395 137 4 743 419 158 4 388 420 158 5 364 396 137 5 868 396 138 5 875 420 159 5 389 421 159 4 365 397 138 4 729 397 139 4 730 421 160 4 390 422 160 5 366 398 139 5 716 398 140 5 717 422 161 5 391 423 161 4 367 399 140 4 869 399 141 4 876 423 162 4 392 424 162 5 368 400 141 5 703 400 4 5 704 424 14 5 393 425 14 4 369 401 4 4 690 401 142 4 691 425 163 4 394 426 163 5 370 402 142 5 870 402 143 5 877 426 164 5 395 427 164 4 371 403 143 4 654 403 144 4 656 427 165 4 396 428 165 5 372 404 144 5 676 404 145 5 677 428 166 5 397 429 166 4 373 405 145 4 871 405 146 4 878 429 167 4 398 430 167 5 374 406 146 5 782 406 147 5 784 430 168 5 399 431 168 4 375 407 147 4 783 407 148 4 785 431 169 4 400 432 169 5 376 408 148 5 353 408 6 5 377 432 15 5 879 433 25 4 872 409 13 4 813 409 149 4 817 433 170 4 402 434 170 5 378 410 149 5 814 410 150 5 818 434 171 5 403 435 171 4 379 411 150 4 873 411 151 4 880 435 172 4 404 436 172 5 380 412 151 5 815 412 152 5 819 436 173 5 405 437 173 4 381 413 152 4 816 413 153 4 820 437 174 4 406 438 174 5 382 414 153 5 948 414 154 5 949 438 175 5 407 439 175 4 383 415 154 4 655 415 155 4 657 439 176 4 408 440 176 5 384 416 155 5 769 416 12 5 770 440 24 5 409 441 24 4 385 417 12 4 874 417 156 4 881 441 177 4 410 442 177 5 386 418 156 5 756 418 157 5 757 442 178 5 411 443 178 4 387 419 157 4 743 419 158 4 744 443 179 4 412 444 179 5 388 420 158 5 875 420 159 5 882 444 180 5 413 445 180 4 389 421 159 4 730 421 160 4 731 445 181 4 414 446 181 5 390 422 160 5 717 422 161 5 718 446 182 5 415 447 182 4 391 423 161 4 876 423 162 4 883 447 183 4 416 448 183 5 392 424 162 5 704 424 14 5 705 448 26 5 417 449 26 4 393 425 14 4 691 425 163 4 692 449 184 4 418 450 184 5 394 426 163 5 877 426 164 5 884 450 185 5 419 451 185 4 395 427 164 4 656 427 165 4 658 451 186 4 420 452 186 5 396 428 165 5 677 428 166 5 678 452 187 5 421 453 187 4 397 429 166 4 878 429 167 4 885 453 188 4 422 454 188 5 398 430 167 5 784 430 168 5 786 454 189 5 423 455 189 4 399 431 168 4 785 431 169 4 787 455 190 4 424 456 190 5 400 432 169 5 377 432 15 5 401 456 27 5 886 457 37 4 879 433 25 4 817 433 170 4 821 457 191 4 426 458 191 5 402 434 170 5 818 434 171 5 822 458 192 5 427 459 192 4 403 435 171 4 880 435 172 4 887 459 193 4 428 460 193 5 404 436 172 5 819 436 173 5 823 460 194 5 429 461 194 4 405 437 173 4 820 437 174 4 824 461 195 4 430 462 195 5 406 438 174 5 949 438 175 5 950 462 196 5 431 463 196 4 407 439 175 4 657 439 176 4 659 463 197 4 432 464 197 5 408 440 176 5 770 440 24 5 771 464 36 5 433 465 36 4 409 441 24 4 881 441 177 4 888 465 198 4 434 466 198 5 410 442 177 5 757 442 178 5 758 466 199 5 435 467 199 4 411 443 178 4 744 443 179 4 745 467 200 4 436 468 200 5 412 444 179 5 882 444 180 5 889 468 201 5 437 469 201 4 413 445 180 4 731 445 181 4 732 469 202 4 438 470 202 5 414 446 181 5 718 446 182 5 719 470 203 5 439 471 203 4 415 447 182 4 883 447 183 4 890 471 204 4 440 472 204 5 416 448 183 5 705 448 26 5 706 472 38 5 441 473 38 4 417 449 26 4 692 449 184 4 693 473 205 4 442 474 205 5 418 450 184 5 884 450 185 5 891 474 206 5 443 475 206 4 419 451 185 4 658 451 186 4 660 475 207 4 444 476 207 5 420 452 186 5 678 452 187 5 679 476 208 5 445 477 208 4 421 453 187 4 885 453 188 4 892 477 209 4 446 478 209 5 422 454 188 5 786 454 189 5 788 478 210 5 447 479 210 4 423 455 189 4 787 455 190 4 789 479 211 4 448 480 211 5 424 456 190 5 401 456 27 5 425 480 39 5 893 481 49 4 886 457 37 4 821 457 191 4 825 481 212 4 450 482 212 5 426 458 191 5 822 458 192 5 826 482 213 5 451 483 213 4 427 459 192 4 887 459 193 4 894 483 65 4 452 484 65 5 428 460 193 5 823 460 194 5 827 484 214 5 453 485 214 4 429 461 194 4 824 461 195 4 828 485 215 4 454 486 215 5 430 462 195 5 950 462 196 5 951 486 67 5 455 487 67 4 431 463 196 4 659 463 197 4 661 487 216 4 456 488 216 5 432 464 197 5 771 464 36 5 772 488 48 5 457 489 48 4 433 465 36 4 888 465 198 4 895 489 69 4 458 490 69 5 434 466 198 5 758 466 199 5 759 490 217 5 459 491 217 4 435 467 199 4 745 467 200 4 746 491 218 4 460 492 218 5 436 468 200 5 889 468 201 5 896 492 71 5 461 493 71 4 437 469 201 4 732 469 202 4 733 493 219 4 462 494 219 5 438 470 202 5 719 470 203 5 720 494 220 5 463 495 220 4 439 471 203 4 890 471 204 4 897 495 73 4 464 496 73 5 440 472 204 5 706 472 38 5 707 496 50 5 465 497 50 4 441 473 38 4 693 473 205 4 694 497 221 4 466 498 221 5 442 474 205 5 891 474 206 5 898 498 75 5 467 499 75 4 443 475 206 4 660 475 207 4 662 499 222 4 468 500 222 5 444 476 207 5 679 476 208 5 680 500 223 5 469 501 223 4 445 477 208 4 892 477 209 4 899 501 77 4 470 502 77 5 446 478 209 5 788 478 210 5 790 502 224 5 471 503 224 4 447 479 210 4 789 479 211 4 791 503 225 4 472 504 225 5 448 480 211 5 425 480 39 5 449 504 51 5 900 505 226 4 893 481 49 4 825 481 212 4 829 505 227 4 474 506 227 5 450 482 212 5 826 482 213 5 830 506 228 5 475 507 228 4 451 483 213 4 894 483 65 4 901 507 229 4 476 508 229 5 452 484 65 5 827 484 214 5 831 508 230 5 477 509 230 4 453 485 214 4 828 485 215 4 832 509 231 4 478 510 231 5 454 486 215 5 951 486 67 5 952 510 232 5 479 511 232 4 455 487 67 4 661 487 216 4 663 511 233 4 480 512 233 5 456 488 216 5 772 488 48 5 773 512 234 5 481 513 234 4 457 489 48 4 895 489 69 4 902 513 235 4 482 514 235 5 458 490 69 5 759 490 217 5 760 514 236 5 483 515 236 4 459 491 217 4 746 491 218 4 747 515 237 4 484 516 237 5 460 492 218 5 896 492 71 5 903 516 238 5 485 517 238 4 461 493 71 4 733 493 219 4 734 517 239 4 486 518 239 5 462 494 219 5 720 494 220 5 721 518 240 5 487 519 240 4 463 495 220 4 897 495 73 4 904 519 241 4 488 520 241 5 464 496 73 5 707 496 50 5 708 520 242 5 489 521 242 4 465 497 50 4 694 497 221 4 695 521 243 4 490 522 243 5 466 498 221 5 898 498 75 5 905 522 244 5 491 523 244 4 467 499 75 4 662 499 222 4 664 523 245 4 492 524 245 5 468 500 222 5 680 500 223 5 681 524 246 5 493 525 246 4 469 501 223 4 899 501 77 4 906 525 247 4 494 526 247 5 470 502 77 5 790 502 224 5 792 526 248 5 495 527 248 4 471 503 224 4 791 503 225 4 793 527 249 4 496 528 249 5 472 504 225 5 449 504 51 5 473 528 250 5 907 529 251 4 900 505 226 4 829 505 227 4 833 529 252 4 498 530 252 5 474 506 227 5 830 506 228 5 834 530 253 5 499 531 253 4 475 507 228 4 901 507 229 4 908 531 254 4 500 532 254 5 476 508 229 5 831 508 230 5 835 532 255 5 501 533 255 4 477 509 230 4 832 509 231 4 836 533 256 4 502 534 256 5 478 510 231 5 952 510 232 5 953 534 257 5 503 535 257 4 479 511 232 4 663 511 233 4 665 535 258 4 504 536 258 5 480 512 233 5 773 512 234 5 774 536 259 5 505 537 259 4 481 513 234 4 902 513 235 4 909 537 260 4 506 538 260 5 482 514 235 5 760 514 236 5 761 538 261 5 507 539 261 4 483 515 236 4 747 515 237 4 748 539 262 4 508 540 262 5 484 516 237 5 903 516 238 5 910 540 263 5 509 541 263 4 485 517 238 4 734 517 239 4 735 541 264 4 510 542 264 5 486 518 239 5 721 518 240 5 722 542 265 5 511 543 265 4 487 519 240 4 904 519 241 4 911 543 266 4 512 544 266 5 488 520 241 5 708 520 242 5 709 544 267 5 513 545 267 4 489 521 242 4 695 521 243 4 696 545 268 4 514 546 268 5 490 522 243 5 905 522 244 5 912 546 269 5 515 547 269 4 491 523 244 4 664 523 245 4 666 547 270 4 516 548 270 5 492 524 245 5 681 524 246 5 682 548 271 5 517 549 271 4 493 525 246 4 906 525 247 4 913 549 272 4 518 550 272 5 494 526 247 5 792 526 248 5 794 550 273 5 519 551 273 4 495 527 248 4 793 527 249 4 795 551 274 4 520 552 274 5 496 528 249 5 473 528 250 5 497 552 275 5 914 553 276 4 907 529 251 4 833 529 252 4 837 553 277 4 522 554 277 5 498 530 252 5 834 530 253 5 838 554 278 5 523 555 278 4 499 531 253 4 908 531 254 4 915 555 279 4 524 556 279 5 500 532 254 5 835 532 255 5 839 556 280 5 525 557 280 4 501 533 255 4 836 533 256 4 840 557 281 4 526 558 281 5 502 534 256 5 953 534 257 5 954 558 282 5 527 559 282 4 503 535 257 4 665 535 258 4 667 559 283 4 528 560 283 5 504 536 258 5 774 536 259 5 775 560 284 5 529 561 284 4 505 537 259 4 909 537 260 4 916 561 285 4 530 562 285 5 506 538 260 5 761 538 261 5 762 562 286 5 531 563 286 4 507 539 261 4 748 539 262 4 749 563 287 4 532 564 287 5 508 540 262 5 910 540 263 5 917 564 288 5 533 565 288 4 509 541 263 4 735 541 264 4 736 565 289 4 534 566 289 5 510 542 264 5 722 542 265 5 723 566 290 5 535 567 290 4 511 543 265 4 911 543 266 4 918 567 291 4 536 568 291 5 512 544 266 5 709 544 267 5 710 568 292 5 537 569 292 4 513 545 267 4 696 545 268 4 697 569 293 4 538 570 293 5 514 546 268 5 912 546 269 5 919 570 294 5 539 571 294 4 515 547 269 4 666 547 270 4 668 571 295 4 540 572 295 5 516 548 270 5 682 548 271 5 683 572 296 5 541 573 296 4 517 549 271 4 913 549 272 4 920 573 297 4 542 574 297 5 518 550 272 5 794 550 273 5 796 574 298 5 543 575 298 4 519 551 273 4 795 551 274 4 797 575 299 4 544 576 299 5 520 552 274 5 497 552 275 5 521 576 300 5 921 577 301 4 914 553 276 4 837 553 277 4 841 577 302 4 546 578 302 5 522 554 277 5 838 554 278 5 842 578 303 5 547 579 303 4 523 555 278 4 915 555 279 4 922 579 304 4 548 580 304 5 524 556 279 5 839 556 280 5 843 580 305 5 549 581 305 4 525 557 280 4 840 557 281 4 844 581 306 4 550 582 306 5 526 558 281 5 954 558 282 5 955 582 307 5 551 583 307 4 527 559 282 4 667 559 283 4 669 583 308 4 552 584 308 5 528 560 283 5 775 560 284 5 776 584 309 5 553 585 309 4 529 561 284 4 916 561 285 4 923 585 310 4 554 586 310 5 530 562 285 5 762 562 286 5 763 586 311 5 555 587 311 4 531 563 286 4 749 563 287 4 750 587 312 4 556 588 312 5 532 564 287 5 917 564 288 5 924 588 313 5 557 589 313 4 533 565 288 4 736 565 289 4 737 589 314 4 558 590 314 5 534 566 289 5 723 566 290 5 724 590 315 5 559 591 315 4 535 567 290 4 918 567 291 4 925 591 316 4 560 592 316 5 536 568 291 5 710 568 292 5 711 592 317 5 561 593 317 4 537 569 292 4 697 569 293 4 698 593 318 4 562 594 318 5 538 570 293 5 919 570 294 5 926 594 319 5 563 595 319 4 539 571 294 4 668 571 295 4 670 595 320 4 564 596 320 5 540 572 295 5 683 572 296 5 684 596 321 5 565 597 321 4 541 573 296 4 920 573 297 4 927 597 322 4 566 598 322 5 542 574 297 5 796 574 298 5 798 598 323 5 567 599 323 4 543 575 298 4 797 575 299 4 799 599 324 4 568 600 324 5 544 576 299 5 521 576 300 5 545 600 325 5 928 601 326 4 921 577 301 4 841 577 302 4 845 601 327 4 570 602 327 5 546 578 302 5 842 578 303 5 846 602 328 5 571 603 328 4 547 579 303 4 922 579 304 4 929 603 329 4 572 604 329 5 548 580 304 5 843 580 305 5 847 604 330 5 573 605 330 4 549 581 305 4 844 581 306 4 848 605 331 4 574 606 331 5 550 582 306 5 955 582 307 5 956 606 332 5 575 607 332 4 551 583 307 4 669 583 308 4 671 607 333 4 576 608 333 5 552 584 308 5 776 584 309 5 777 608 334 5 577 609 334 4 553 585 309 4 923 585 310 4 930 609 335 4 578 610 335 5 554 586 310 5 763 586 311 5 764 610 336 5 579 611 336 4 555 587 311 4 750 587 312 4 751 611 337 4 580 612 337 5 556 588 312 5 924 588 313 5 931 612 338 5 581 613 338 4 557 589 313 4 737 589 314 4 738 613 339 4 582 614 339 5 558 590 314 5 724 590 315 5 725 614 340 5 583 615 340 4 559 591 315 4 925 591 316 4 932 615 341 4 584 616 341 5 560 592 316 5 711 592 317 5 712 616 342 5 585 617 342 4 561 593 317 4 698 593 318 4 699 617 343 4 586 618 343 5 562 594 318 5 926 594 319 5 933 619 344 5 587 620 344 4 563 595 319 4 670 595 320 4 672 620 345 4 588 621 345 5 564 596 320 5 684 596 321 5 685 621 346 5 589 622 346 4 565 597 321 4 927 597 322 4 934 622 347 4 590 623 347 5 566 598 322 5 798 598 323 5 800 623 348 5 591 624 348 4 567 599 323 4 799 599 324 4 592 624 349 4 801 625 349 5 568 600 324 5 545 600 325 5 569 625 350 5 928 601 326 4 845 601 327 4 674 626 351 4 570 602 327 5 846 602 328 5 853 627 352 5 571 603 328 4 929 603 329 4 854 628 353 4 572 604 329 5 847 604 330 5 945 629 354 5 573 605 330 4 848 605 331 4 855 630 355 4 574 606 331 5 956 606 332 5 856 631 356 5 575 607 332 4 671 607 333 4 958 632 357 4 576 608 333 5 777 608 334 5 700 633 358 5 577 609 334 4 930 609 335 4 778 634 359 4 578 610 335 5 764 610 336 5 941 635 360 5 579 611 336 4 751 611 337 4 765 636 361 4 580 612 337 5 931 612 338 5 752 637 362 5 581 613 338 4 738 613 339 4 939 638 363 4 582 614 339 5 725 614 340 5 739 639 364 5 583 615 340 4 932 615 341 4 726 640 365 4 584 616 341 5 712 616 342 5 937 641 366 5 585 617 342 4 699 617 343 4 714 642 367 4 586 618 343 5 959 643 344 5 701 643 368 5 587 620 344 4 672 620 345 4 960 644 369 4 588 621 345 5 685 621 346 5 673 645 370 5 589 622 346 4 934 622 347 4 687 646 371 4 590 623 347 5 800 623 348 5 935 647 372 5 591 624 348 4 592 624 349 4 804 648 373 4 801 625 349 5 569 625 350 5 593 649 374 5 323 650 375 3 597 650 376 3 596 651 377 3 322 651 378 3 323 650 375 3 324 652 379 3 598 652 380 3 597 650 376 3 325 653 381 3 599 653 382 3 598 652 380 3 324 652 379 3 325 653 381 3 326 654 383 3 600 654 384 3 599 653 382 3 327 655 385 3 601 655 386 3 600 654 384 3 326 654 383 3 327 655 385 3 320 656 387 3 594 656 388 3 601 655 386 3 321 657 389 3 595 657 390 3 594 656 388 3 320 656 387 3 321 657 389 3 322 651 378 3 596 651 377 3 595 657 390 3 600 658 384 3 601 658 386 3 609 658 386 6 608 658 384 6 601 659 386 3 594 659 388 3 602 659 388 6 609 659 386 6 594 660 388 3 595 660 390 3 603 660 390 6 602 660 388 6 595 661 390 3 596 661 377 3 604 661 377 6 603 661 390 6 596 662 377 3 597 662 376 3 605 662 376 6 604 662 377 6 597 663 376 3 598 663 380 3 606 663 380 6 605 663 376 6 598 664 380 3 599 664 382 3 607 664 382 6 606 664 380 6 599 665 382 3 600 665 384 3 608 665 384 6 607 665 382 6 610 328 66 7 611 328 70 7 612 328 180 7 613 328 175 7 614 666 275 7 615 666 269 7 611 666 185 7 610 666 27 7 615 667 269 7 616 667 263 7 612 667 180 7 611 667 185 7 616 668 263 7 617 668 257 7 613 668 175 7 612 668 180 7 617 669 257 7 614 669 251 7 610 669 25 7 613 669 175 7 614 670 391 7 617 670 257 7 616 670 263 7 615 670 392 7 626 671 49 7 618 671 63 7 619 671 64 7 627 671 65 7 627 672 65 7 619 672 64 7 620 672 66 7 628 672 67 7 628 673 67 7 620 673 66 7 621 673 68 7 629 673 69 7 629 674 69 7 621 674 68 7 622 674 70 7 630 674 71 7 630 675 71 7 622 675 70 7 623 675 72 7 631 675 73 7 631 676 73 7 623 676 72 7 624 676 74 7 632 676 75 7 632 677 75 7 624 677 74 7 625 677 76 7 633 677 77 7 633 678 77 7 625 678 76 7 618 678 78 7 626 678 51 7 618 328 55 7 625 328 56 7 641 328 393 7 634 328 394 7 625 328 56 7 624 328 57 7 640 328 395 7 641 328 393 7 624 328 57 7 623 328 58 7 639 328 396 7 640 328 395 7 623 328 58 7 622 328 59 7 638 328 397 7 639 328 396 7 622 328 59 7 621 328 60 7 637 328 398 7 638 328 397 7 621 328 60 7 620 328 61 7 636 328 399 7 637 328 398 7 620 328 61 7 619 328 62 7 635 328 400 7 636 328 399 7 619 328 62 7 618 328 55 7 634 328 394 7 635 328 400 7 629 670 375 7 630 670 379 7 646 670 401 7 645 670 402 7 630 670 379 7 631 670 381 7 647 670 403 7 646 670 401 7 631 670 381 7 632 670 383 7 648 670 404 7 647 670 403 7 632 670 383 7 633 670 385 7 649 670 405 7 648 670 404 7 633 670 385 7 626 670 387 7 642 670 406 7 649 670 405 7 626 670 387 7 627 670 389 7 643 670 407 7 642 670 406 7 627 670 389 7 628 670 378 7 644 670 408 7 643 670 407 7 628 670 378 7 629 670 375 7 645 670 402 7 644 670 408 7 642 675 406 7 643 675 407 7 635 675 400 7 634 675 394 7 649 674 405 7 642 674 406 7 634 674 394 7 641 674 393 7 648 673 404 7 649 673 405 7 641 673 393 7 640 673 395 7 647 672 403 7 648 672 404 7 640 672 395 7 639 672 396 7 646 671 401 7 647 671 403 7 639 671 396 7 638 671 397 7 645 678 402 7 646 678 401 7 638 678 397 7 637 678 398 7 644 677 408 7 645 677 402 7 637 677 398 7 636 677 399 7 643 676 407 7 644 676 408 7 636 676 399 7 635 676 400 7 587 679 344 4 593 680 351 5 593 680 351 5 593 680 351 5 593 680 351 5 467 670 75 4 491 670 244 4 467 670 75 4 491 670 244 4</p>\n                </polylist>\n                <extra>\n                    <technique profile=\"modo401\">\n                        <param sid=\"render\" name=\"Render\" type=\"Name\">default</param>\n                        <param sid=\"dissolve\" name=\"Dissolve\" type=\"float\">0</param>\n                        <param sid=\"curves\" name=\"Render_Curves\" type=\"bool\">false</param>\n                        <param sid=\"radius\" name=\"Curve_Radius\" type=\"float\">0.05</param>\n                    </technique>\n                </extra>\n            </mesh>\n        </geometry>\n    </library_geometries>\n    <library_lights>\n        <light id=\"Light-polyRender006\" name=\"Render\">\n            <technique_common>\n                <ambient>\n                    <color sid=\"ambient_light_rgb\">0 0 0</color>\n                </ambient>\n            </technique_common>\n        </light>\n        <light id=\"Light-sunLight014\" name=\"Directional_Light\">\n            <technique_common>\n                <directional>\n                    <color sid=\"directional_light_rgb\">1 1 1</color>\n                </directional>\n            </technique_common>\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"lightType\" name=\"Light_Type\" type=\"Name\">sun_light</param>\n                    <param sid=\"render\" name=\"Render\" type=\"Name\">default</param>\n                    <param sid=\"visible\" name=\"Display_Visible\" type=\"Name\">default</param>\n                    <param sid=\"size\" name=\"Display_Size\" type=\"float\">1</param>\n                    <param sid=\"dissolve\" name=\"Dissolve\" type=\"float\">0</param>\n                    <param sid=\"radiance\" name=\"Radiant_Intensity\" type=\"float\">3</param>\n                    <param sid=\"samples\" name=\"Samples\" type=\"int\">64</param>\n                    <param sid=\"shadType\" name=\"Shadow_Type\" type=\"Name\">raytrace</param>\n                    <param sid=\"shadRes\" name=\"Shadow_Resolution\" type=\"int\">1024</param>\n                    <param sid=\"azimuth\" name=\"Azimuth\" type=\"float\">0</param>\n                    <param sid=\"clamp\" name=\"Clamp_Intensity\" type=\"bool\">true</param>\n                    <param sid=\"day\" name=\"Day\" type=\"int\">2014173</param>\n                    <param sid=\"elevation\" name=\"Elevation\" type=\"float\">0</param>\n                    <param sid=\"haze\" name=\"Haze\" type=\"float\">3</param>\n                    <param sid=\"height\" name=\"Height\" type=\"float\">10</param>\n                    <param sid=\"lat\" name=\"Latitude\" type=\"float\">0.655057</param>\n                    <param sid=\"lon\" name=\"Longitude\" type=\"float\">-2.13456</param>\n                    <param sid=\"mapSize\" name=\"Map_Size\" type=\"float\">2</param>\n                    <param sid=\"north\" name=\"North\" type=\"float\">0</param>\n                    <param sid=\"radius\" name=\"Radius\" type=\"float\">0.5</param>\n                    <param sid=\"spread\" name=\"Spread\" type=\"float\">0</param>\n                    <param sid=\"sunPos\" name=\"Sun_Position\" type=\"bool\">false</param>\n                    <param sid=\"time\" name=\"Time\" type=\"float\">12</param>\n                    <param sid=\"timeZone\" name=\"Time_Zone\" type=\"float\">-8</param>\n                    <param sid=\"volumetrics\" name=\"Volumetrics\" type=\"bool\">false</param>\n                    <param sid=\"vdissolve\" name=\"Volumetrics_Dissolve\" type=\"float\">0</param>\n                    <param sid=\"vsamples\" name=\"Volumetric_Samples\" type=\"int\">40</param>\n                </technique>\n            </extra>\n        </light>\n    </library_lights>\n    <library_nodes id=\"shader_tree\" name=\"Shader_Tree\">\n        <node sid=\"shader_tree_render\" name=\"Render\">\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"first\" name=\"Frame_Range_First\" type=\"int\">1</param>\n                    <param sid=\"last\" name=\"Frame_Range_Last\" type=\"int\">120</param>\n                    <param sid=\"dpi\" name=\"Frame_DPI\" type=\"float\">300</param>\n                    <param sid=\"resUnit\" name=\"Resolution_Unit\" type=\"Name\">pixels</param>\n                    <param sid=\"pAspect\" name=\"Frame_Pixel_Aspect_Ratio\" type=\"float\">1</param>\n                    <param sid=\"bucketX\" name=\"Bucket_Width\" type=\"int\">32</param>\n                    <param sid=\"bucketY\" name=\"Bucket_Height\" type=\"int\">32</param>\n                    <param sid=\"bktOrder\" name=\"Bucket_Order\" type=\"Name\">hilbert</param>\n                    <param sid=\"bktSkip\" name=\"Skip_Existing_Buckets\" type=\"bool\">false</param>\n                    <param sid=\"region\" name=\"Render_Region\" type=\"bool\">false</param>\n                    <param sid=\"regX0\" name=\"Render_Region_Left\" type=\"float\">0</param>\n                    <param sid=\"regX1\" name=\"Render_Region_Right\" type=\"float\">1</param>\n                    <param sid=\"regY0\" name=\"Render_Region_Top\" type=\"float\">0</param>\n                    <param sid=\"regY1\" name=\"Render_Region_Bottom\" type=\"float\">1</param>\n                    <param sid=\"aa\" name=\"Render_Antialiasing\" type=\"Name\">s8</param>\n                    <param sid=\"aaFilter\" name=\"Render_Antialiasing_Filter\" type=\"Name\">gaussian</param>\n                    <param sid=\"fineRate\" name=\"Refinement_Shading_Rate\" type=\"float\">0.25</param>\n                    <param sid=\"fineThresh\" name=\"Refinement_Threshold\" type=\"float\">0.1</param>\n                    <param sid=\"bktRefine\" name=\"Refine_Bucket_Borders\" type=\"bool\">false</param>\n                    <param sid=\"rayShadow\" name=\"Ray_Tracing_Shadows\" type=\"bool\">true</param>\n                    <param sid=\"reflDepth\" name=\"Reflection_Depth\" type=\"int\">8</param>\n                    <param sid=\"refrDepth\" name=\"Refraction_Depth\" type=\"int\">8</param>\n                    <param sid=\"rayThresh\" name=\"Ray_Threshold\" type=\"float\">0.001</param>\n                    <param sid=\"subdAdapt\" name=\"Adaptive_Subdivision\" type=\"bool\">false</param>\n                    <param sid=\"subdRate\" name=\"Subdivision_Rate\" type=\"float\">10</param>\n                    <param sid=\"dispEnable\" name=\"Micropoly_Displacement\" type=\"bool\">true</param>\n                    <param sid=\"dispRate\" name=\"Displacement_Rate\" type=\"float\">1</param>\n                    <param sid=\"dispRatio\" name=\"Displacement_Ratio\" type=\"float\">4</param>\n                    <param sid=\"edgeMin\" name=\"Minimum_Edge_Length\" type=\"float\">0.0001</param>\n                    <param sid=\"dispSmooth\" name=\"Smooth_Positions\" type=\"bool\">true</param>\n                    <param sid=\"ambRad\" name=\"Ambient_Intensity\" type=\"float\">0</param>\n                    <param sid=\"ambColor\" name=\"Ambient_Color\" type=\"color\">1 1 1</param>\n                    <param sid=\"globEnable\" name=\"Enable_Indirect_Illumination\" type=\"bool\">true</param>\n                    <param sid=\"globScope\" name=\"Indirect_Illumination_Scope\" type=\"Name\">all</param>\n                    <param sid=\"globRays\" name=\"Indirect_Rays\" type=\"int\">64</param>\n                    <param sid=\"globLimit\" name=\"Indirect_Bounces\" type=\"int\">1</param>\n                    <param sid=\"globRange\" name=\"Indirect_Range\" type=\"float\">0</param>\n                    <param sid=\"globSubs\" name=\"Subsurface_Scattering\" type=\"int\">1</param>\n                    <param sid=\"globVols\" name=\"Volumetrics_Affect_Indirect\" type=\"bool\">false</param>\n                    <param sid=\"irrCache\" name=\"Enable_Irradiance_Caching\" type=\"bool\">true</param>\n                    <param sid=\"irrRays\" name=\"Irradiance_Rays\" type=\"int\">256</param>\n                    <param sid=\"globSuper\" name=\"Indirect_Supersampling\" type=\"bool\">true</param>\n                    <param sid=\"irrRate\" name=\"Irradiance_Rate\" type=\"float\">2.5</param>\n                    <param sid=\"irrRatio\" name=\"Irradiance_Ratio\" type=\"float\">6</param>\n                    <param sid=\"irrVals\" name=\"Interpolation_Values\" type=\"int\">1</param>\n                    <param sid=\"irrGrads\" name=\"Irradiance_Gradients\" type=\"Name\">both</param>\n                    <param sid=\"irrWalk\" name=\"Walkthrough_Mode\" type=\"bool\">false</param>\n                    <param sid=\"irrLEnable\" name=\"Load_Irradiance_before_Render\" type=\"bool\">false</param>\n                    <param sid=\"irrLName\" name=\"Load_Irradiance_File\" type=\"Name\"></param>\n                    <param sid=\"irrSEnable\" name=\"Save_Irradiance_after_Render\" type=\"bool\">false</param>\n                    <param sid=\"irrSName\" name=\"Save_Irradiance_File\" type=\"Name\"></param>\n                    <param sid=\"causEnable\" name=\"Enable_Direct_Caustics\" type=\"bool\">false</param>\n                    <param sid=\"causTotal\" name=\"Caustics_Total_Photons\" type=\"int\">100000</param>\n                    <param sid=\"causLocal\" name=\"Caustics_Local_Photons\" type=\"int\">32</param>\n                    <param sid=\"globCaus\" name=\"Indirect_Caustics\" type=\"Name\">refraction</param>\n                </technique>\n            </extra>\n        </node>\n        <node sid=\"shader_tree_environment\" name=\"Environment\">\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"radiance\" name=\"Environment_Intensity\" type=\"float\">1</param>\n                    <param sid=\"visCam\" name=\"Environment_Visible_to_Camera\" type=\"bool\">true</param>\n                    <param sid=\"visInd\" name=\"Environment_Visible_to_Indirect_Rays\" type=\"bool\">true</param>\n                    <param sid=\"visRefl\" name=\"Environment_Visible_to_Reflection_Rays\" type=\"bool\">true</param>\n                    <param sid=\"visRefr\" name=\"Environment_Visible_to_Refraction_Rays\" type=\"bool\">true</param>\n                </technique>\n            </extra>\n        </node>\n    </library_nodes>\n    <library_visual_scenes>\n        <visual_scene id=\"DefaultScene\">\n            <node id=\"polyRender006\" name=\"Render\" type=\"NODE\">\n                <instance_light url=\"#Light-polyRender006\" />\n            </node>\n            <node id=\"Geometry-mesh068Node\" name=\"balloon\" type=\"NODE\">\n                <translate sid=\"translation947\">0 0 0</translate>\n                <rotate sid=\"rotation955Y\">0 1 0 0</rotate>\n                <rotate sid=\"rotation955X\">1 0 0 0</rotate>\n                <rotate sid=\"rotation955Z\">0 0 1 0</rotate>\n                <scale sid=\"scale963\">1 1 1</scale>\n                <instance_geometry url=\"#Geometry-mesh068\">\n                    <bind_material>\n                        <technique_common>\n                            <instance_material symbol=\"Material-Default\" target=\"#Material-Default\" />\n                        </technique_common>\n                    </bind_material>\n                </instance_geometry>\n            </node>\n            <node id=\"Camera-camera003Node\" name=\"Camera\" type=\"NODE\">\n                <translate sid=\"translation004\">0 0.75 4</translate>\n                <rotate sid=\"rotation005Y\">0 1 0 0</rotate>\n                <rotate sid=\"rotation005X\">1 0 0 -5</rotate>\n                <rotate sid=\"rotation005Z\">0 0 1 0</rotate>\n                <instance_camera url=\"#Camera-camera003\" />\n            </node>\n            <node id=\"groupLocator041Node\" name=\"Texture_Group\" type=\"NODE\" />\n            <node id=\"Light-sunLight014Node\" name=\"Directional_Light\" type=\"NODE\">\n                <translate sid=\"translation016\">-2 2 2</translate>\n                <rotate sid=\"rotation017Y\">0 1 0 -45</rotate>\n                <rotate sid=\"rotation017X\">1 0 0 -30</rotate>\n                <rotate sid=\"rotation017Z\">0 0 1 0</rotate>\n                <instance_light url=\"#Light-sunLight014\" />\n            </node>\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"fps\" name=\"Scene_FPS\" type=\"float\">24</param>\n                    <param sid=\"sceneS\" name=\"Scene_Start_Time\" type=\"float\">0</param>\n                    <param sid=\"sceneE\" name=\"Scene_End_Time\" type=\"float\">5</param>\n                    <param sid=\"currentS\" name=\"Scene_Current_Start_Time\" type=\"float\">0</param>\n                    <param sid=\"currentE\" name=\"Scene_Current_End_Time\" type=\"float\">5</param>\n                    <param sid=\"timeSys\" name=\"Scene_Time_System\" type=\"Name\">frames</param>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"MAX3D\">\n                    <frame_rate>24</frame_rate>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"MAYA\">\n                    <start_time>0</start_time>\n                    <end_time>5</end_time>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"OKINO\" />\n            </extra>\n            <extra>\n                <technique profile=\"XSI\">\n                    <SI_Scene>\n                        <frame_rate>24</frame_rate>\n                    </SI_Scene>\n                </technique>\n            </extra>\n        </visual_scene>\n    </library_visual_scenes>\n    <scene>\n        <instance_visual_scene url=\"#DefaultScene\" />\n    </scene>\n</COLLADA>\n"
  },
  {
    "path": "resources/dae/boat01.dae",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n  <asset>\n    <contributor>\n      <author>Blender User</author>\n      <authoring_tool>Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08</authoring_tool>\n    </contributor>\n    <created>2016-11-12T16:23:20</created>\n    <modified>2016-11-12T16:23:20</modified>\n    <unit name=\"meter\" meter=\"1\"/>\n    <up_axis>Z_UP</up_axis>\n  </asset>\n  <library_images/>\n  <library_effects>\n    <effect id=\"Material_001-effect\">\n      <profile_COMMON>\n        <technique sid=\"common\">\n          <phong>\n            <emission>\n              <color sid=\"emission\">0 0 0 1</color>\n            </emission>\n            <ambient>\n              <color sid=\"ambient\">0 0 0 1</color>\n            </ambient>\n            <diffuse>\n              <color sid=\"diffuse\">0.8 0.8 0.8 1</color>\n            </diffuse>\n            <specular>\n              <color sid=\"specular\">0.02 0.02 0.02 1</color>\n            </specular>\n            <shininess>\n              <float sid=\"shininess\">256</float>\n            </shininess>\n            <index_of_refraction>\n              <float sid=\"index_of_refraction\">1</float>\n            </index_of_refraction>\n          </phong>\n        </technique>\n      </profile_COMMON>\n    </effect>\n  </library_effects>\n  <library_materials>\n    <material id=\"Material_001-material\" name=\"Material_001\">\n      <instance_effect url=\"#Material_001-effect\"/>\n    </material>\n  </library_materials>\n  <library_geometries>\n    <geometry id=\"boat-mesh\" name=\"boat\">\n      <mesh>\n        <source id=\"boat-mesh-positions\">\n          <float_array id=\"boat-mesh-positions-array\" count=\"318\">-0.507119 -0.294181 1.34373 -0.314468 0.2524441 1.10834 0.507119 -0.294181 1.34373 0.314468 0.2524441 1.10834 0.507119 -0.294181 -1.34373 0.4366275 0.2524369 -1.25542 -0.507119 -0.294181 -1.34373 -0.3361271 0.2524369 -1.25542 0 5.63914 -0.557931 0 0.82333 -0.528437 0 0.140548 -4.03921 0.542676 2.51335 -2.32923 0.387764 2.43545 -0.523053 0.531553 3.47182 -1.72666 0.413393 3.42404 -0.5281 0 3.19296 1.25992 0 1.17768 3.1711 0 5.6329 -0.509839 0 0.870476 -0.448643 0 2.83871 -0.473935 0 0.879554 -0.513271 -0.03448098 0.820049 -0.508172 0.06896197 0.879554 -0.513271 0.06896197 0.879554 -0.513271 0.05287659 1.19763 3.19889 -0.03448098 0.820049 -0.508172 -0.03448098 0.939059 -0.51837 -0.03448098 0.939059 -0.51837 -0.0183956 1.23863 3.19538 -0.0183956 1.15663 3.20241 0 -0.762282 -0.519348 -0.04999995 -0.762282 -0.432746 0.1 -0.762282 -0.519348 0.1 -0.762282 -0.519348 0.06865 5.64355 -0.519348 -0.04999995 -0.762282 -0.432746 -0.04999995 -0.762282 -0.605951 -0.04999995 -0.762282 -0.605951 -0.01864999 5.64355 -0.569751 -0.01864999 5.64355 -0.468946 -0.106927 -0.115336 3.04463 -0.106927 0.198201 3.04463 0.106927 -0.115336 3.04463 0.106927 0.198201 3.04463 0.106927 -0.115336 -4.08332 0.106927 0.198201 -4.08332 -0.106927 -0.115336 -4.08332 -0.106927 0.198201 -4.08332 1.00627 0.198201 -2.01948 0.658882 -0.567525 -2.01948 -0.658882 -0.567525 -2.01948 -1.00627 0.198201 -2.01948 1.00627 0.198201 1.22898 0.658882 -0.567525 1.22898 -0.658882 -0.567525 1.22898 -1.00627 0.198201 1.22898 1.1645 0.198201 -0.393734 0.762488 -0.660387 -0.393734 -0.762488 -0.660387 -0.393734 -1.1645 0.198201 -0.393734 0 -0.115336 3.04463 0 -0.781668 1.22898 0 -0.874531 -0.393734 0 -0.781668 -2.01948 0 -0.115336 -4.08332 0 0.198201 -4.08332 0 -0.1902199 -1.86347 0 -0.1902199 -0.406798 0 -0.1902199 1.04715 0 0.198201 3.04463 -0.06968998 0.186043 2.98463 0 0.186043 2.98463 0.947622 0.186043 1.2122 0.06968998 0.186043 2.98463 0 0.186043 -4.02332 0.06762397 0.186043 -4.02332 -0.947473 0.186043 -2.00422 -0.06762397 0.186043 -4.02332 0.947473 0.186043 -2.00422 -1.10422 0.186043 -0.393734 1.10422 0.186043 -0.393734 -0.947622 0.186043 1.2122 -0.06244218 -0.1902199 2.62021 0 -0.1902199 2.62021 0.7871567 -0.1902199 1.03212 0.06244218 -0.1902199 2.62021 0 -0.1902199 -3.65891 0.0605911 -0.1902199 -3.65891 -0.8150833 -0.1902199 -1.84979 -0.0605911 -0.1902199 -3.65891 0.7870237 -0.1902199 -1.84979 -0.9555253 -0.1902199 -0.406798 0.9274657 -0.1902199 -0.406798 -0.8215168 -0.1902199 1.03212 0.02189028 5.638108 -0.5568025 0.5534433 3.470788 -1.725531 0.02189028 0.8222976 -0.5273085 0.5645663 2.512318 -2.328102 0.4096543 2.434418 -0.5219245 0.02189028 1.176648 3.172228 0.02189028 0.8694437 -0.4475145 0.4352833 3.423008 -0.5269715 0.02189028 3.191928 1.261049 0.02189028 5.631868 -0.5087105 0.02189028 2.837678 -0.4728065 0.02189028 0.1395156 -4.038081</float_array>\n          <technique_common>\n            <accessor source=\"#boat-mesh-positions-array\" count=\"106\" stride=\"3\">\n              <param name=\"X\" type=\"float\"/>\n              <param name=\"Y\" type=\"float\"/>\n              <param name=\"Z\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"boat-mesh-normals\">\n          <float_array id=\"boat-mesh-normals-array\" count=\"321\">0 0.3955115 0.9184612 0.9353296 0.3504599 0.04833686 0 0.1594891 -0.9871998 -0.9547589 0.2972525 0.008747518 0 1 -3.03217e-6 0.6282994 -0.3925077 0.6716977 -0.6404429 -0.3893625 0.6619894 -0.6550026 -0.4548884 -0.6033642 -0.7338674 -0.05017369 0.6774372 -0.6268568 0.7631233 0.1571415 -0.638042 0.3414834 -0.6901388 -0.6918119 -0.4209224 0.5867033 -0.5987512 0.5045086 -0.6220676 -0.5846826 -0.3989441 -0.7063923 -0.722605 0.1007747 0.683876 -0.6888873 -0.009308457 -0.7248088 -0.7255392 0.438229 0.5306114 -0.520924 0.8048092 -0.284465 -0.5733067 -0.2794355 0.7702177 -0.5728141 -0.5889588 -0.5700979 0 -0.0853613 -0.9963501 -0.499418 0.863727 -0.06750869 0.9999908 3.35711e-4 0.004272639 0.9999908 3.6623e-4 0.004272639 -0.4993931 -0.862638 0.08038872 -0.5005797 0.863059 -0.0674479 -0.5005764 -0.8619547 0.08035713 0 -1 0 -0.4992907 0.007324516 -0.8664036 0.9999881 0.00488305 0 -0.4992907 0.007324516 0.8664036 -0.5006643 0.007324516 -0.8656106 -0.5006643 0.007324516 0.8656106 0 0.7741517 0.6330001 -0.3989859 0.6538267 0.6429005 -0.4298975 -0.5188924 0.7388768 0.7898316 0.5852934 0.183297 0.3989859 0.6538267 0.6429005 0.4298975 -0.5188924 0.7388768 -0.4962102 -0.5149794 -0.6989791 -0.4637626 0.6384518 -0.6142504 0 0.7741517 -0.6330001 -0.7886508 0.5861243 0.1857103 0 1 0 0 -0.6063972 0.795162 -0.6487785 -0.7287085 0.2192503 0.4550701 -0.4953858 -0.7399353 0.4167117 0.649361 -0.6361461 0.7886521 0.591039 -0.1694132 -0.6575973 -0.7217182 -0.2160759 -0.01870834 -0.6037943 -0.7969206 0 1 0 0.6516115 -0.75855 -0.002105772 0.8052116 0.592983 0.00238043 -0.6516112 -0.7585498 0.00225836 0 -1 3.05194e-5 -0.8052118 0.5929831 -0.00225836 0 1 0 0.6532105 -0.731066 -0.1971259 0.00100708 -0.9837667 -0.1794493 -0.7876981 0.5855396 -0.1915073 0 1 0 0.6515899 -0.7254163 0.2218152 -0.003112912 -0.979568 0.2010896 0 1 -1.52931e-7 0.1836622 0.9208749 -0.3438861 0.5594786 0.8104688 -0.1735628 0 0.8772674 -0.4800022 0.5708644 0.8051308 0.1608675 0.1883965 0.9235185 0.3340964 0 0.8772674 0.4800022 0.6242074 0.7812587 -1.22076e-4 -0.1879687 0.9229971 0.335774 -0.5561596 0.8176214 0.1489359 -0.5995163 0.8003622 -9.46091e-4 -0.531554 0.8305512 -0.1662384 -0.1846098 0.9219201 -0.3405623 0 0.9207992 -0.3900372 0.3745639 0.8277761 -0.4177182 0.5716854 0.8092162 -0.1354441 0.4080091 0.8162624 0.4089552 0 0.9207882 0.3900631 0.5699474 0.8113548 0.1298595 0.5847733 0.8111932 0.002410948 -0.4003183 0.8193141 0.4104506 -0.5444023 0.830398 0.1185978 -0.5589184 0.829222 0.001068115 -0.5412639 0.830345 -0.1325158 -0.3905563 0.8222832 -0.4139036 0 0.3955115 0.918461 0.9917871 0.1279003 0 0 0.1594891 -0.9871998 -0.9431394 0.3323974 0 0 1 -3.06713e-6 0.606057 -0.5019854 -0.6170135 0.6731598 0.05838298 0.7371888 0.7742664 0.374712 -0.5100026 0.4539702 0.8553562 0.2495539 0.4680792 -0.5872277 0.6603527 0.5032888 -0.505242 -0.7010214 0.8005555 0.2549289 -0.5423305 0.6757258 -0.09341925 0.7312097 0.7248712 -0.008850634 -0.6888276 0.564696 0.7888287 -0.2426273 0.7189681 0.4456698 0.5333511 0.5263079 -0.3134958 0.7903927 0.5726078 -0.6248267 -0.5307655</float_array>\n          <technique_common>\n            <accessor source=\"#boat-mesh-normals-array\" count=\"107\" stride=\"3\">\n              <param name=\"X\" type=\"float\"/>\n              <param name=\"Y\" type=\"float\"/>\n              <param name=\"Z\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"boat-mesh-map-0\">\n          <float_array id=\"boat-mesh-map-0-array\" count=\"1044\">1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0.474324 0 0 0 0 0.816845 1 0 0.166063 1 1 1 0.678714 0 0 0.816845 0.166063 1 0.586715 1 0 0 0 1 1 0 0.586715 1 1 1 0.75 0.933013 0 0.5 0.5 0.5 0.333333 1 0 1 0 0 0 0.5 0.75 0.06698727 0.5 0.5 0.75 0.06698727 0.75 0.933013 0.5 0.5 0.666667 1 0.333333 1 0.333333 0 1 1 0.666667 1 0.666667 0 0.75 0.933013 0 0.5 0.5 0.5 0.333333 1 0 1 0 0 0 0.5 0.75 0.06698727 0.5 0.5 0.75 0.06698727 0.75 0.933013 0.5 0.5 0.666667 1 0.333333 1 0.333333 0 1 1 0.666667 1 0.666667 0 0.5 1 0 1 0 0 0.254723 1 0 1 0 0 1 0 1 1 0.5 1 1 0 1 1 0.745277 1 0.5 0.254723 0 0.254723 0.01408529 0.007175624 0.5 1 0 1 0 0.745277 1 0 1 1 0.710458 1 0 0.289542 0 0 0.5 0 0 1 0 0 0.289542 0 0.5 0.991582 0.01260697 0.9927 0 0.710458 0.482377 0 0.482377 1 0.254723 1 0 0.745277 0 0.517623 0.5 0.517623 0.517623 1 0.517623 0 0.745277 0 0.5 0.482377 0.02588409 0.482377 0 0.254723 0.710458 0 0.710458 1 0.482377 1 0 0.517623 0 0.289542 0.5 0.289542 0.289542 1 0.289542 0 0.517623 0 0.5 0.710458 0 0.710458 0.02588409 0.482377 1 0.745277 1 1 0.5 1 1 0.517623 1 0.745277 0.5 0.745277 1 0.289542 1 0.517623 0.5 0.517623 1 0 1 0.289542 0.5 0.289542 0 1 0 0 0.5 0 1 0.710458 0.987393 0.9927 0.5 0.991582 0.974116 0.482377 1 0.710458 0.5 0.710458 1 0.254723 0.974116 0.482377 0.5 0.482377 0.985915 0.007175624 1 0.254723 0.5 0.254723 1 0 1 1 0.5 1 0.01408529 0.007175624 0 0.254723 0 0.254723 0.5 0.008417606 0.01408529 0.007175624 0 0 0 0.710458 0.01260697 0.9927 0 1 0.01260697 0.9927 0.5 0.991582 0.5 1 0 0.254723 0.02588409 0.482377 0 0.482377 0.02588409 0.482377 0 0.710458 0 0.710458 0.5 0.991582 0.987393 0.9927 1 1 0.987393 0.9927 1 0.710458 1 0.710458 1 0.710458 0.974116 0.482377 1 0.482377 0.974116 0.482377 1 0.254723 1 0.254723 1 0.254723 0.985915 0.007175624 1 0 0.985915 0.007175624 0.5 0.008417606 0.5 0 0.5 0.008417606 0.01408529 0.007175624 0.01408529 0.007175624 0.01408529 0.007175624 0 0.254723 0 0.254723 0.01260697 0.9927 0.5 0.991582 0.5 0.991582 0 0.710458 0.01260697 0.9927 0.01260697 0.9927 0 0.254723 0.02588409 0.482377 0.02588409 0.482377 0.02588409 0.482377 0 0.710458 0 0.710458 0.987393 0.9927 1 0.710458 1 0.710458 0.5 0.991582 0.987393 0.9927 0.987393 0.9927 1 0.710458 0.974116 0.482377 0.974116 0.482377 0.974116 0.482377 1 0.254723 1 0.254723 0.985915 0.007175624 0.5 0.008417606 0.5 0.008417606 1 0.254723 0.985915 0.007175624 0.985915 0.007175624 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0.678714 0 0.166063 1 1 0 0.474324 0 0 0.816845 0.678714 0 0 0 0.586715 1 1 0 0.333333 0 0.333333 1 0 0 0.666667 0 0.666667 1 0.333333 0 1 0 1 1 0.666667 0 0.333333 0 0.333333 1 0 0 0.666667 0 0.666667 1 0.333333 0 1 0 1 1 0.666667 0 0.5 0 0.5 1 0 0 0.254723 0 0.254723 1 0 0 0.5 0 1 0 0.5 1 0.745277 0 1 0 0.745277 1 0.5 0.008417606 0.5 0.254723 0.01408529 0.007175624 0.5 0.745277 0.5 1 0 0.745277 0.710458 0 1 0 0.710458 1 0.5 0.289542 0 0.289542 0.5 0 0.289542 1 0 1 0.289542 0 0.5 0.710458 0.5 0.991582 0 0.710458 0.254723 0 0.482377 0 0.254723 1 0.5 0.745277 0 0.745277 0.5 0.517623 0.745277 1 0.517623 1 0.745277 0 0.5 0.254723 0.5 0.482377 0 0.254723 0.482377 0 0.710458 0 0.482377 1 0.5 0.517623 0 0.517623 0.5 0.289542 0.517623 1 0.289542 1 0.517623 0 0.5 0.482377 0.5 0.710458 0.02588409 0.482377 0.5 0.745277 1 0.745277 0.5 1 0.5 0.517623 1 0.517623 0.5 0.745277 0.5 0.289542 1 0.289542 0.5 0.517623 0.5 0 1 0 0.5 0.289542 0.5 1 0 1 0.5 0 0.5 0.710458 1 0.710458 0.5 0.991582 0.5 0.482377 0.974116 0.482377 0.5 0.710458 0.5 0.254723 1 0.254723 0.5 0.482377 0.5 0.008417606 0.985915 0.007175624 0.5 0.254723 0.5 0 1 0 0.5 1 0 0 0.01408529 0.007175624 0 0.254723 0.5 0 0.5 0.008417606 0 0 0 0.710458 0 0.710458 0 1 0 1 0.01260697 0.9927 0.5 1 0 0.254723 0 0.254723 0 0.482377 0 0.482377 0.02588409 0.482377 0 0.710458 0.5 1 0.5 0.991582 1 1 1 1 0.987393 0.9927 1 0.710458 1 0.710458 1 0.710458 1 0.482377 1 0.482377 0.974116 0.482377 1 0.254723 1 0.254723 1 0.254723 1 0 1 0 0.985915 0.007175624 0.5 0 0.5 0.008417606 0.5 0.008417606 0.01408529 0.007175624 0.01408529 0.007175624 0.01408529 0.007175624 0 0.254723 0.01260697 0.9927 0.01260697 0.9927 0.5 0.991582 0 0.710458 0 0.710458 0.01260697 0.9927 0 0.254723 0 0.254723 0.02588409 0.482377 0.02588409 0.482377 0.02588409 0.482377 0 0.710458 0.987393 0.9927 0.987393 0.9927 1 0.710458 0.5 0.991582 0.5 0.991582 0.987393 0.9927 1 0.710458 1 0.710458 0.974116 0.482377 0.974116 0.482377 0.974116 0.482377 1 0.254723 0.985915 0.007175624 0.985915 0.007175624 0.5 0.008417606 1 0.254723 1 0.254723 0.985915 0.007175624 0.474324 0 0 0.816845 0 0 1 0 1 1 0.166063 1 0.678714 0 0.166063 1 0 0.816845 0.586715 1 0 1 0 0 1 0 1 1 0.586715 1 0.678714 0 1 0 0.166063 1 0.474324 0 0.678714 0 0 0.816845 0 0 1 0 0.586715 1 0.586715 1 0 1 0.586715 1 0 0 0 1 0 1 0.678714 0 0.474324 0 0.474324 0 1 0 0 0 0 0 0.166063 1 1 1 1 1 0.166063 1 0 0.816845 0.166063 1 0.678714 0 1 0 0.678714 0 1 0 1 1 1 0 0 0.816845 0 0 0 0.816845 1 0 1 1 1 0 0.474324 0 0 0 0 0 1 1 0.586715 1 1 1 0.586715 1 0 1 0 1 0 0 0 0 0 1 0.678714 0 0.678714 0 0.474324 0 1 0 1 0 0 0 0.166063 1 0.166063 1 1 1 0.166063 1 0 0.816845 0 0.816845 0.678714 0 1 0 1 0 1 0 1 1 1 1 0 0.816845 0 0 0 0 1 0 1 1 1 1 0.474324 0 0.474324 0 0 0 1 1 0.586715 1 0.586715 1</float_array>\n          <technique_common>\n            <accessor source=\"#boat-mesh-map-0-array\" count=\"522\" stride=\"2\">\n              <param name=\"S\" type=\"float\"/>\n              <param name=\"T\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"boat-mesh-colors-Geometry-boat-Vertex_Color\" name=\"Geometry-boat-Vertex_Color\">\n          <float_array id=\"boat-mesh-colors-Geometry-boat-Vertex_Color-array\" count=\"1566\">1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</float_array>\n          <technique_common>\n            <accessor source=\"#boat-mesh-colors-Geometry-boat-Vertex_Color-array\" count=\"522\" stride=\"3\">\n              <param name=\"R\" type=\"float\"/>\n              <param name=\"G\" type=\"float\"/>\n              <param name=\"B\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <vertices id=\"boat-mesh-vertices\">\n          <input semantic=\"POSITION\" source=\"#boat-mesh-positions\"/>\n        </vertices>\n        <polylist material=\"Material_001-material\" count=\"174\">\n          <input semantic=\"VERTEX\" source=\"#boat-mesh-vertices\" offset=\"0\"/>\n          <input semantic=\"NORMAL\" source=\"#boat-mesh-normals\" offset=\"1\"/>\n          <input semantic=\"TEXCOORD\" source=\"#boat-mesh-map-0\" offset=\"2\" set=\"0\"/>\n          <input semantic=\"COLOR\" source=\"#boat-mesh-colors-Geometry-boat-Vertex_Color\" offset=\"3\" set=\"0\"/>\n          <vcount>3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>\n          <p>3 0 0 0 1 0 1 1 0 0 2 2 5 1 3 3 3 1 4 4 2 1 5 5 7 2 6 6 5 2 7 7 4 2 8 8 1 3 9 9 7 3 10 10 6 3 11 11 5 4 12 12 7 4 13 13 1 4 14 14 2 5 15 15 0 6 16 16 6 7 17 17 14 8 18 18 8 9 19 19 13 10 20 20 9 11 21 21 11 12 22 22 10 13 23 23 12 14 24 24 13 10 25 25 11 12 26 26 19 15 27 27 15 16 28 28 17 17 29 29 16 18 30 30 19 15 31 31 18 19 32 32 26 20 33 33 22 20 34 34 20 20 35 35 28 21 36 36 24 22 37 37 23 23 38 38 22 20 39 39 21 20 40 40 20 20 41 41 21 20 42 42 26 20 43 43 20 20 44 44 29 24 45 45 28 21 46 46 27 25 47 47 24 22 48 48 29 24 49 49 25 26 50 50 36 27 51 51 32 27 52 52 30 27 53 53 38 28 54 54 34 29 55 55 33 29 56 56 32 27 57 57 31 27 58 58 30 27 59 59 31 27 60 60 36 27 61 61 30 27 62 62 39 30 63 63 38 28 64 64 37 31 65 65 34 29 66 66 39 30 67 67 35 32 68 68 69 33 69 69 41 34 70 70 40 35 71 71 52 36 72 72 43 37 73 73 42 38 74 74 46 39 75 75 47 40 76 76 65 41 77 77 40 35 78 78 41 34 79 79 55 42 80 80 68 43 81 81 93 43 82 82 82 43 83 83 60 44 84 84 40 35 85 85 54 45 86 86 44 46 87 87 45 47 88 88 48 48 89 89 50 49 90 90 46 39 91 91 64 50 92 92 47 40 93 93 46 39 94 94 50 49 95 95 86 51 96 96 89 51 97 97 88 51 98 98 57 52 99 99 56 53 100 100 52 36 101 101 54 45 102 102 58 54 103 103 62 55 104 104 59 56 105 105 58 54 106 106 54 45 107 107 67 57 108 108 91 57 109 109 93 57 110 110 49 58 111 111 48 48 112 112 56 53 113 113 58 54 114 114 50 49 115 115 63 59 116 116 51 60 117 117 50 49 118 118 58 54 119 119 66 61 120 120 88 61 121 121 91 61 122 122 53 62 123 123 42 38 124 124 60 44 125 125 57 52 126 126 53 62 127 127 61 63 128 128 49 58 129 129 57 52 130 130 62 55 131 131 44 46 132 132 49 58 133 133 63 59 134 134 45 47 135 135 44 46 136 136 64 50 137 137 90 64 138 138 87 64 139 139 86 64 140 140 92 51 141 141 90 51 142 142 66 51 143 143 84 51 144 144 92 51 145 145 67 51 146 146 85 51 147 147 84 51 148 148 68 51 149 149 42 38 150 150 43 37 151 151 69 33 152 152 70 65 153 153 81 66 154 154 55 42 155 155 71 67 156 156 70 65 157 157 41 34 158 158 76 68 159 159 77 69 160 160 47 40 161 161 77 69 162 162 74 70 163 163 65 41 164 164 81 66 165 165 79 71 166 166 59 56 167 167 79 71 168 168 76 68 169 169 51 60 170 170 74 70 171 171 75 72 172 172 45 47 173 173 75 72 174 174 78 73 175 175 48 48 176 176 78 73 177 177 80 74 178 178 56 53 179 179 80 74 180 180 72 75 181 181 52 36 182 182 72 75 183 183 73 76 184 184 43 37 185 185 73 76 186 186 71 67 187 187 69 33 188 188 83 77 189 189 82 78 190 190 70 65 191 191 82 78 192 192 93 79 193 193 81 66 194 194 89 80 195 195 86 81 196 196 74 70 197 197 88 82 198 198 89 80 199 199 77 69 200 200 93 79 201 201 91 83 202 202 79 71 203 203 91 83 204 204 88 82 205 205 76 68 206 206 87 84 207 207 90 85 208 208 78 73 209 209 86 81 210 210 87 84 211 211 75 72 212 212 90 85 213 213 92 86 214 214 80 74 215 215 92 86 216 216 84 87 217 217 72 75 218 218 85 88 219 219 83 77 220 220 71 67 221 221 84 87 222 222 85 88 223 223 73 76 224 224 2 89 225 225 3 89 226 226 0 89 227 227 4 90 228 228 5 90 229 229 2 90 230 230 6 91 231 231 7 91 232 232 4 91 233 233 0 92 234 234 1 92 235 235 6 92 236 236 3 93 237 237 5 93 238 238 1 93 239 239 4 94 240 240 2 5 241 241 6 7 242 242 12 14 243 243 11 12 244 244 9 11 245 245 14 8 246 246 13 10 247 247 12 14 248 248 15 16 249 249 19 15 250 250 16 18 251 251 27 25 252 252 28 21 253 253 23 23 254 254 25 26 255 255 29 24 256 256 27 25 257 257 23 23 258 258 24 22 259 259 25 26 260 260 37 31 261 261 38 28 262 262 33 29 263 263 35 32 264 264 39 30 265 265 37 31 266 266 33 29 267 267 34 29 268 268 35 32 269 269 60 44 270 270 69 33 271 271 40 35 272 272 53 62 273 273 52 36 274 274 42 38 275 275 64 50 276 276 46 39 277 277 65 41 278 278 54 45 279 279 40 35 280 280 55 42 281 281 83 51 282 282 68 51 283 283 82 51 284 284 61 63 285 285 60 44 286 286 54 45 287 287 49 58 288 288 44 46 289 289 48 48 290 290 63 59 291 291 50 49 292 292 64 50 293 293 51 60 294 294 47 40 295 295 50 49 296 296 66 51 297 297 86 51 298 298 88 51 299 299 53 62 300 300 57 52 301 301 52 36 302 302 61 63 303 303 54 45 304 304 62 55 305 305 55 42 306 306 59 56 307 307 54 45 308 308 68 51 309 309 67 51 310 310 93 79 311 311 57 52 312 312 49 58 313 313 56 53 314 314 62 55 315 315 58 54 316 316 63 59 317 317 59 56 318 318 51 60 319 319 58 54 320 320 67 51 321 321 66 51 322 322 91 51 323 323 61 63 324 324 53 62 325 325 60 44 326 326 62 55 327 327 57 52 328 328 61 63 329 329 63 59 330 330 49 58 331 331 62 55 332 332 64 50 333 333 44 46 334 334 63 59 335 335 65 41 336 336 45 47 337 337 64 50 338 338 66 51 339 339 90 51 340 340 86 51 341 341 67 51 342 342 92 51 343 343 66 51 344 344 68 51 345 345 84 51 346 346 67 51 347 347 83 51 348 348 85 51 349 349 68 51 350 350 60 44 351 351 42 38 352 352 69 33 353 353 41 34 354 354 70 65 355 355 55 42 356 356 69 33 357 357 71 67 358 358 41 34 359 359 51 60 360 360 76 68 361 361 47 40 362 362 47 40 363 363 77 69 364 364 65 41 365 365 55 42 366 366 81 66 367 367 59 56 368 368 59 56 369 369 79 71 370 370 51 60 371 371 65 41 372 372 74 70 373 373 45 47 374 374 45 47 375 375 75 72 376 376 48 48 377 377 48 48 378 378 78 73 379 379 56 53 380 380 56 53 381 381 80 74 382 382 52 36 383 383 52 36 384 384 72 75 385 385 43 37 386 386 43 37 387 387 73 76 388 388 69 33 389 389 71 67 390 390 83 77 391 391 70 65 392 392 70 65 393 393 82 78 394 394 81 66 395 395 77 69 396 396 89 80 397 397 74 70 398 398 76 68 399 399 88 82 400 400 77 69 401 401 81 66 402 402 93 79 403 403 79 71 404 404 79 71 405 405 91 83 406 406 76 68 407 407 75 72 408 408 87 84 409 409 78 73 410 410 74 70 411 411 86 81 412 412 75 72 413 413 78 73 414 414 90 85 415 415 80 74 416 416 80 74 417 417 92 86 418 418 72 75 419 419 73 76 420 420 85 88 421 421 71 67 422 422 72 75 423 423 84 87 424 424 73 76 425 425 101 95 426 426 95 96 427 427 94 97 428 428 96 98 429 429 105 99 430 430 97 100 431 431 98 101 432 432 97 100 433 433 95 96 434 434 104 102 435 435 103 103 436 436 102 104 437 437 99 105 438 438 100 106 439 439 104 102 440 440 98 101 441 441 96 98 442 442 97 100 443 443 101 95 444 444 98 101 445 445 95 96 446 446 102 104 447 447 99 105 448 448 104 102 449 449 19 15 450 450 103 103 451 451 104 102 452 452 15 16 453 453 103 103 454 454 17 17 455 455 12 14 456 456 101 95 457 457 14 8 458 458 16 18 459 459 102 104 460 460 15 16 461 461 11 12 462 462 105 99 463 463 10 13 464 464 11 12 465 465 95 96 466 466 97 100 467 467 12 14 468 468 96 98 469 469 98 101 470 470 9 11 471 471 105 99 472 472 96 98 473 473 13 10 474 474 94 97 475 475 95 96 476 476 16 18 477 477 100 106 478 478 99 105 479 479 14 8 480 480 94 97 481 481 8 9 482 482 18 19 483 483 104 102 484 484 100 106 485 485 19 15 486 486 17 17 487 487 103 103 488 488 15 16 489 489 102 104 490 490 103 103 491 491 12 14 492 492 98 101 493 493 101 95 494 494 16 18 495 495 99 105 496 496 102 104 497 497 11 12 498 498 97 100 499 499 105 99 500 500 11 12 501 501 13 10 502 502 95 96 503 503 12 14 504 504 9 11 505 505 96 98 506 506 9 11 507 507 10 13 508 508 105 99 509 509 13 10 510 510 8 9 511 511 94 97 512 512 16 18 513 513 18 19 514 514 100 106 515 515 14 8 516 516 101 95 517 517 94 97 518 518 18 19 519 519 19 15 520 520 104 102 521 521</p>\n        </polylist>\n      </mesh>\n    </geometry>\n  </library_geometries>\n  <library_controllers/>\n  <library_visual_scenes>\n    <visual_scene id=\"Scene\" name=\"Scene\">\n      <node id=\"Boaty\" name=\"Boaty\" type=\"NODE\">\n        <matrix sid=\"transform\">1 0 0 0 0 -1.62921e-7 -1 0 0 1 -1.62921e-7 0 0 0 0 1</matrix>\n        <node id=\"boat\" name=\"boat\" type=\"NODE\">\n          <matrix sid=\"transform\">1 0 0 0 0 1 0 0.6603963 0 0 1 0.5193479 0 0 0 1</matrix>\n          <instance_geometry url=\"#boat-mesh\" name=\"boat\">\n            <bind_material>\n              <technique_common>\n                <instance_material symbol=\"Material_001-material\" target=\"#Material_001-material\"/>\n              </technique_common>\n            </bind_material>\n          </instance_geometry>\n        </node>\n      </node>\n    </visual_scene>\n  </library_visual_scenes>\n  <scene>\n    <instance_visual_scene url=\"#Scene\"/>\n  </scene>\n</COLLADA>"
  },
  {
    "path": "resources/dae/church01.dae",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n  <asset>\n    <contributor>\n      <author>Blender User</author>\n      <authoring_tool>Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08</authoring_tool>\n    </contributor>\n    <created>2016-11-13T21:15:54</created>\n    <modified>2016-11-13T21:15:54</modified>\n    <unit name=\"meter\" meter=\"1\"/>\n    <up_axis>Z_UP</up_axis>\n  </asset>\n  <library_images/>\n  <library_effects>\n    <effect id=\"Material-effect\">\n      <profile_COMMON>\n        <technique sid=\"common\">\n          <phong>\n            <emission>\n              <color sid=\"emission\">0 0 0 1</color>\n            </emission>\n            <ambient>\n              <color sid=\"ambient\">0 0 0 1</color>\n            </ambient>\n            <diffuse>\n              <color sid=\"diffuse\">0.64 0.64 0.64 1</color>\n            </diffuse>\n            <specular>\n              <color sid=\"specular\">0.5 0.5 0.5 1</color>\n            </specular>\n            <shininess>\n              <float sid=\"shininess\">50</float>\n            </shininess>\n            <index_of_refraction>\n              <float sid=\"index_of_refraction\">1</float>\n            </index_of_refraction>\n          </phong>\n        </technique>\n      </profile_COMMON>\n    </effect>\n  </library_effects>\n  <library_materials>\n    <material id=\"Material-material\" name=\"Material\">\n      <instance_effect url=\"#Material-effect\"/>\n    </material>\n  </library_materials>\n  <library_geometries>\n    <geometry id=\"church-mesh\" name=\"church\">\n      <mesh>\n        <source id=\"church-mesh-positions\">\n          <float_array id=\"church-mesh-positions-array\" count=\"189\">-25.3263 0 9.125511 25.3263 0 9.125511 -25.3263 0 -9.125511 25.3263 0 -9.125511 103.392 0 20.9582 218.998 0 20.9582 103.392 0 -20.9582 218.998 0 -20.9582 208.793 -240.483 -102.358 100.076 -240.483 -102.358 208.793 -275.137 -102.358 100.076 -275.137 -102.358 208.793 -240.483 102.358 100.076 -240.483 102.358 208.793 -275.137 102.358 100.076 -275.137 102.358 208.793 -346.434 -102.358 100.076 -346.434 -102.358 208.793 -381.087 -102.358 100.076 -381.087 -102.358 208.793 -346.434 102.358 100.076 -346.434 102.358 208.793 -381.087 102.358 100.076 -381.087 102.358 208.793 -136.388 -102.358 100.076 -136.388 -102.358 208.793 -171.041 -102.358 100.076 -171.041 -102.358 208.793 -136.388 102.358 100.076 -136.388 102.358 208.793 -171.041 102.358 100.076 -171.041 102.358 220.593 -105.094 52.242 -43.4548 -105.094 52.242 220.593 -3.38243 52.242 -43.4548 -3.38243 52.242 220.593 -3.38243 -52.242 -43.4548 -3.38243 -52.242 220.593 -105.094 -52.242 -43.4548 -105.094 -52.242 -264.962 -58.2559 -4.12712 220.593 -448.59 100 63.0301 -448.59 100 220.593 -59.0822 100 63.0301 -59.0822 100 220.593 -59.0822 -100 63.0301 -59.0822 -100 220.593 -448.59 -100 63.0301 -448.59 -100 -48.5046 -448.59 0 220.593 -448.59 0 220.593 -59.0822 0 -48.5046 -59.0822 0 -42.2469 -3.38243 -52.242 -42.2469 -105.094 -52.242 -42.2469 -105.094 52.242 -42.2469 -3.38243 52.242 65.058 -59.0822 -100 -45.0411 -59.0822 0 65.058 -59.0822 100 65.058 -448.59 100 -45.0411 -448.59 0 65.058 -448.59 -100</float_array>\n          <technique_common>\n            <accessor source=\"#church-mesh-positions-array\" count=\"63\" stride=\"3\">\n              <param name=\"X\" type=\"float\"/>\n              <param name=\"Y\" type=\"float\"/>\n              <param name=\"Z\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"church-mesh-normals\">\n          <float_array id=\"church-mesh-normals-array\" count=\"90\">0 1 0 0 1 0 0 0 -1 0 0 1 0 1 0 0 -1 0 -0.2068774 -0.9783669 0 -0.6675575 0 0.7445583 -0.2466196 0 0.9691124 -0.2404592 0.9706593 0 -0.2122659 0 -0.977212 0 -1 -4.87584e-5 -0.6675575 0 -0.7445582 0 1 -3.76222e-6 0 -1 -2.25567e-5 -0.1378554 -0.6998671 -0.7008438 0 0.7071068 -0.7071068 0 -0.7071068 -0.7071068 -0.1484439 -0.6958308 0.7026976 0 -0.7071068 0.7071068 -0.158211 0.6976668 0.6987349 0 0.7071068 0.7071068 -0.1481101 0.7017301 -0.6968775 0 1 0 0 -1 -2.94108e-7 -0.6675575 0 0.7445582 0 1 3.76222e-6 0 -1 2.25567e-5 -0.6675575 0 -0.7445583 0 -1 4.87584e-5</float_array>\n          <technique_common>\n            <accessor source=\"#church-mesh-normals-array\" count=\"30\" stride=\"3\">\n              <param name=\"X\" type=\"float\"/>\n              <param name=\"Y\" type=\"float\"/>\n              <param name=\"Z\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"church-mesh-map-0\">\n          <float_array id=\"church-mesh-map-0-array\" count=\"384\">0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</float_array>\n          <technique_common>\n            <accessor source=\"#church-mesh-map-0-array\" count=\"192\" stride=\"2\">\n              <param name=\"S\" type=\"float\"/>\n              <param name=\"T\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"church-mesh-colors-Col\" name=\"Col\">\n          <float_array id=\"church-mesh-colors-Col-array\" count=\"576\">0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1</float_array>\n          <technique_common>\n            <accessor source=\"#church-mesh-colors-Col-array\" count=\"192\" stride=\"3\">\n              <param name=\"R\" type=\"float\"/>\n              <param name=\"G\" type=\"float\"/>\n              <param name=\"B\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <vertices id=\"church-mesh-vertices\">\n          <input semantic=\"POSITION\" source=\"#church-mesh-positions\"/>\n        </vertices>\n        <polylist material=\"Material-material\" count=\"64\">\n          <input semantic=\"VERTEX\" source=\"#church-mesh-vertices\" offset=\"0\"/>\n          <input semantic=\"NORMAL\" source=\"#church-mesh-normals\" offset=\"1\"/>\n          <input semantic=\"TEXCOORD\" source=\"#church-mesh-map-0\" offset=\"2\" set=\"0\"/>\n          <input semantic=\"COLOR\" source=\"#church-mesh-colors-Col\" offset=\"3\" set=\"0\"/>\n          <vcount>3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>\n          <p>3 0 0 0 0 0 1 1 1 0 2 2 7 1 3 3 4 1 4 4 5 1 5 5 11 2 6 6 8 2 7 7 10 2 8 8 15 3 9 9 12 3 10 10 13 3 11 11 19 2 12 12 16 2 13 13 18 2 14 14 23 3 15 15 20 3 16 16 21 3 17 17 27 2 18 18 24 2 19 19 26 2 20 20 31 3 21 21 28 3 22 22 29 3 23 23 56 3 24 24 32 3 25 25 34 3 26 26 53 4 27 27 34 4 28 28 36 4 29 29 54 2 30 30 36 2 31 31 38 2 32 32 55 5 33 33 38 5 34 34 32 5 35 35 33 6 36 36 40 6 37 37 39 6 38 38 42 7 39 39 52 7 40 40 49 7 41 41 35 8 42 42 40 8 43 43 33 8 44 44 37 9 45 45 40 9 46 46 35 9 47 47 39 10 48 48 40 10 49 49 37 10 50 50 44 3 51 51 60 3 52 52 59 3 53 53 58 4 54 54 46 4 55 55 52 4 56 56 48 2 57 57 57 2 58 58 62 2 59 59 61 11 60 60 48 11 61 61 62 11 62 62 46 12 63 63 49 12 64 64 52 12 65 65 58 13 66 66 44 13 67 67 59 13 68 68 61 14 69 69 42 14 70 70 49 14 71 71 39 15 72 72 53 16 73 73 54 17 74 74 33 18 75 75 54 17 76 76 55 19 77 77 35 20 78 78 55 19 79 79 56 21 80 80 37 22 81 81 56 21 82 82 53 16 83 83 51 23 84 84 57 23 85 85 58 23 86 86 59 4 87 87 51 4 88 88 58 4 89 89 41 3 90 90 59 3 91 91 60 3 92 92 50 24 93 93 60 24 94 94 61 24 95 95 62 5 96 96 50 5 97 97 61 5 98 98 45 2 99 99 62 2 100 100 57 2 101 101 3 0 102 102 2 0 103 103 0 0 104 104 7 1 105 105 6 1 106 106 4 1 107 107 11 2 108 108 9 2 109 109 8 2 110 110 15 3 111 111 14 3 112 112 12 3 113 113 19 2 114 114 17 2 115 115 16 2 116 116 23 3 117 117 22 3 118 118 20 3 119 119 27 2 120 120 25 2 121 121 24 2 122 122 31 3 123 123 30 3 124 124 28 3 125 125 56 3 126 126 55 3 127 127 32 3 128 128 53 4 129 129 56 4 130 130 34 4 131 131 54 2 132 132 53 2 133 133 36 2 134 134 55 5 135 135 54 5 136 136 38 5 137 137 42 25 138 138 44 25 139 139 52 25 140 140 44 3 141 141 42 3 142 142 60 3 143 143 58 26 144 144 57 26 145 145 46 26 146 146 48 2 147 147 46 2 148 148 57 2 149 149 61 27 150 150 49 27 151 151 48 27 152 152 46 28 153 153 48 28 154 154 49 28 155 155 58 4 156 156 52 4 157 157 44 4 158 158 61 29 159 159 60 29 160 160 42 29 161 161 39 15 162 162 37 22 163 163 53 16 164 164 33 18 165 165 39 15 166 166 54 17 167 167 35 20 168 168 33 18 169 169 55 19 170 170 37 22 171 171 35 20 172 172 56 21 173 173 51 4 174 174 45 4 175 175 57 4 176 176 59 4 177 177 43 4 178 178 51 4 179 179 41 3 180 180 43 3 181 181 59 3 182 182 50 5 183 183 41 5 184 184 60 5 185 185 62 5 186 186 47 5 187 187 50 5 188 188 45 2 189 189 47 2 190 190 62 2 191 191</p>\n        </polylist>\n      </mesh>\n    </geometry>\n  </library_geometries>\n  <library_controllers/>\n  <library_visual_scenes>\n    <visual_scene id=\"Scene\" name=\"Scene\">\n      <node id=\"church\" name=\"church\" type=\"NODE\">\n        <matrix sid=\"transform\">1.94707e-9 0.01 -4.37114e-10 2.53836 0 -4.37114e-10 -0.009999999 -9.61607e-8 -0.01 1.94707e-9 0 2.1999 0 0 0 1</matrix>\n        <instance_geometry url=\"#church-mesh\" name=\"church\">\n          <bind_material>\n            <technique_common>\n              <instance_material symbol=\"Material-material\" target=\"#Material-material\"/>\n            </technique_common>\n          </bind_material>\n        </instance_geometry>\n      </node>\n    </visual_scene>\n  </library_visual_scenes>\n  <scene>\n    <instance_visual_scene url=\"#Scene\"/>\n  </scene>\n</COLLADA>"
  },
  {
    "path": "resources/dae/pier01.dae",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n  <asset>\n    <contributor>\n      <author>Blender User</author>\n      <authoring_tool>Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08</authoring_tool>\n    </contributor>\n    <created>2016-11-12T17:17:20</created>\n    <modified>2016-11-12T17:17:20</modified>\n    <unit name=\"meter\" meter=\"1\"/>\n    <up_axis>Z_UP</up_axis>\n  </asset>\n  <library_images/>\n  <library_effects>\n    <effect id=\"Material_001-effect\">\n      <profile_COMMON>\n        <technique sid=\"common\">\n          <phong>\n            <emission>\n              <color sid=\"emission\">0 0 0 1</color>\n            </emission>\n            <ambient>\n              <color sid=\"ambient\">0 0 0 1</color>\n            </ambient>\n            <diffuse>\n              <color sid=\"diffuse\">0.8 0.8 0.8 1</color>\n            </diffuse>\n            <specular>\n              <color sid=\"specular\">0.02 0.02 0.02 1</color>\n            </specular>\n            <shininess>\n              <float sid=\"shininess\">256</float>\n            </shininess>\n            <index_of_refraction>\n              <float sid=\"index_of_refraction\">1</float>\n            </index_of_refraction>\n          </phong>\n        </technique>\n      </profile_COMMON>\n    </effect>\n  </library_effects>\n  <library_materials>\n    <material id=\"Material_001-material\" name=\"Material_001\">\n      <instance_effect url=\"#Material_001-effect\"/>\n    </material>\n  </library_materials>\n  <library_geometries>\n    <geometry id=\"pier-mesh\" name=\"pier\">\n      <mesh>\n        <source id=\"pier-mesh-positions\">\n          <float_array id=\"pier-mesh-positions-array\" count=\"312\">-1 -1.381054 -1 -0.616654 -0.8839959 0.9504018 -1 1.404258 -1 -0.616654 0.01445859 0.9504018 1 -1.381054 -1 0.606172 -0.8839959 0.9386443 1 1.404258 -1 0.606172 0.01445859 0.9386444 -0.03044945 0.01445859 1.489152 -0.03044945 1.404258 -1 -0.03044945 -0.8839959 1.489152 -0.03044945 -1.381054 -1 -1 -1.381054 0.5980882 -1 1.404258 0.5980882 -0.03044945 1.404258 1.489152 1 1.404258 0.5980882 1 -1.381054 0.5980882 -0.03044945 -1.381054 1.489152 -0.04045706 0.01445859 2.018385 -0.04045706 -0.8839959 2.018385 -0.6266617 -0.8839959 1.348702 -0.6266617 0.01445859 1.348702 0.5961644 0.01445859 1.348702 0.5961644 -0.8839959 1.348702 -4.77377 -0.6730466 -0.7250887 -4.77377 0.6962504 -0.7250887 -0.9201492 -0.6730466 -0.7250886 -0.9201492 0.6962504 -0.7250886 -1.097868 1.307128 -1.866773 -1.097868 1.307128 0.5451117 -1.097868 1.507128 -1.866773 -1.097868 1.507128 0.5451117 -0.8978675 1.307128 -1.866773 -0.8978675 1.307128 0.5451117 -0.8978675 1.507128 -1.866773 -0.8978675 1.507128 0.5451117 -1.095511 -1.483392 -1.866773 -1.095511 -1.483392 0.5451117 -1.095511 -1.283391 -1.866773 -1.095511 -1.283391 0.5451117 -0.8955107 -1.483392 -1.866773 -0.8955107 -1.483392 0.5451117 -0.8955107 -1.283391 -1.866773 -0.8955107 -1.283391 0.5451117 -4.737718 -0.6317669 -0.5965046 -4.737718 -0.6317669 -1.866773 -4.737718 -0.7311501 -0.5965046 -4.737718 -0.7311501 -1.866773 -4.798905 -0.6317669 -0.5965046 -4.798905 -0.6317669 -1.866773 -4.798905 -0.7311501 -0.5965046 -4.798905 -0.7311501 -1.866773 -4.738439 0.7548864 -0.5965046 -4.738439 0.7548864 -1.866773 -4.738439 0.6555032 -0.5965046 -4.738439 0.6555032 -1.866773 -4.799626 0.7548864 -0.5965046 -4.799626 0.7548864 -1.866773 -4.799626 0.6555032 -0.5965046 -4.799626 0.6555032 -1.866773 -3.594975 -0.6317669 -0.5965046 -3.594975 -0.6317669 -1.866773 -3.594975 -0.7311501 -0.5965046 -3.594975 -0.7311501 -1.866773 -3.656162 -0.6317669 -0.5965046 -3.656162 -0.6317669 -1.866773 -3.656162 -0.7311501 -0.5965046 -3.656162 -0.7311501 -1.866773 -3.595696 0.7548864 -0.5965046 -3.595696 0.7548864 -1.866773 -3.595696 0.6555032 -0.5965046 -3.595696 0.6555032 -1.866773 -3.656883 0.7548864 -0.5965046 -3.656883 0.7548864 -1.866773 -3.656883 0.6555032 -0.5965046 -3.656883 0.6555032 -1.866773 -2.391988 -0.6317669 -0.5965046 -2.391988 -0.6317669 -1.866773 -2.391988 -0.7311501 -0.5965046 -2.391988 -0.7311501 -1.866773 -2.453176 -0.6317669 -0.5965046 -2.453176 -0.6317669 -1.866773 -2.453176 -0.7311501 -0.5965046 -2.453176 -0.7311501 -1.866773 -2.392709 0.7548864 -0.5965046 -2.392709 0.7548864 -1.866773 -2.392709 0.6555032 -0.5965046 -2.392709 0.6555032 -1.866773 -2.453897 0.7548864 -0.5965046 -2.453897 0.7548864 -1.866773 -2.453897 0.6555032 -0.5965046 -2.453897 0.6555032 -1.866773 -1 -1.381054 0.5907562 -1 1.404258 0.5907562 1 1.404258 0.5907562 1 -1.381054 0.5907562 -0.03044945 -1.381054 1.477732 -0.03044945 1.404258 1.477732 -0.6262063 -0.8839959 1.330579 -0.6262063 0.01445859 1.330579 0.5966197 -0.8839959 1.330045 -0.04000169 -0.8839959 1.994305 -0.04000169 0.01445859 1.994305 0.5966197 0.01445859 1.330045</float_array>\n          <technique_common>\n            <accessor source=\"#pier-mesh-positions-array\" count=\"104\" stride=\"3\">\n              <param name=\"X\" type=\"float\"/>\n              <param name=\"Y\" type=\"float\"/>\n              <param name=\"Z\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"pier-mesh-normals\">\n          <float_array id=\"pier-mesh-normals-array\" count=\"129\">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 -0.9996846 0 -0.0251165 -0.6766772 0 0.7362799 0.6540952 0 0.7564123 0.6540948 0 0.7564126 -0.6766769 0 0.7362802 -0.6766772 0 0.7362799 0.6540951 1.7605e-7 0.7564124 -0.7524475 0 0.6586523 0.7247711 0 0.6889898 0 -1 -1.69418e-6 0 1 0 0.9997024 0 0.02439707 0 0 1 0 0 1 0.9997024 0 0.02439832 0 1 0 0 1 0 0 -1 0 -0.9996845 0 -0.02511793 0 -1 -3.78147e-7 0 -1 1.59911e-6 -0.9996845 0 -0.02511686 -0.676677 0 0.73628 0.6540951 0 0.7564124 0.6540952 0 0.7564124 -0.6766773 0 0.7362797 -0.6766769 0 0.73628 -0.7524477 0 0.6586522 0.724771 0 0.6889899 0 1 0 0.9997024 0 0.02439707 0 0 1 0.9997024 0 0.02439814 0 1 0 0 1 0 0 -1 3.94128e-7 -0.9996845 0 -0.02511793 0 -1 0</float_array>\n          <technique_common>\n            <accessor source=\"#pier-mesh-normals-array\" count=\"43\" stride=\"3\">\n              <param name=\"X\" type=\"float\"/>\n              <param name=\"Y\" type=\"float\"/>\n              <param name=\"Z\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <source id=\"pier-mesh-colors-Col\" name=\"Col\">\n          <float_array id=\"pier-mesh-colors-Col-array\" count=\"1494\">1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</float_array>\n          <technique_common>\n            <accessor source=\"#pier-mesh-colors-Col-array\" count=\"498\" stride=\"3\">\n              <param name=\"R\" type=\"float\"/>\n              <param name=\"G\" type=\"float\"/>\n              <param name=\"B\" type=\"float\"/>\n            </accessor>\n          </technique_common>\n        </source>\n        <vertices id=\"pier-mesh-vertices\">\n          <input semantic=\"POSITION\" source=\"#pier-mesh-positions\"/>\n        </vertices>\n        <polylist material=\"Material_001-material\" count=\"166\">\n          <input semantic=\"VERTEX\" source=\"#pier-mesh-vertices\" offset=\"0\"/>\n          <input semantic=\"NORMAL\" source=\"#pier-mesh-normals\" offset=\"1\"/>\n          <input semantic=\"COLOR\" source=\"#pier-mesh-colors-Col\" offset=\"2\" set=\"0\"/>\n          <vcount>3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>\n          <p>93 0 0 0 0 1 92 0 2 94 1 3 9 1 4 97 1 5 95 2 6 6 2 7 94 2 8 92 3 9 11 3 10 96 3 11 9 4 12 4 4 13 11 4 14 101 3 15 23 3 16 19 3 17 98 5 18 21 5 19 99 5 20 2 4 21 11 4 22 0 4 23 95 3 24 11 3 25 4 3 26 93 1 27 9 1 28 2 1 29 3 6 30 12 6 31 1 6 32 7 7 33 14 7 34 8 7 35 7 8 36 16 8 37 15 8 38 1 9 39 17 9 40 10 9 41 3 10 42 14 10 43 13 10 44 5 11 45 17 11 46 16 11 47 18 12 48 20 12 49 19 12 50 22 13 51 19 13 52 23 13 53 101 14 54 20 14 55 98 14 56 102 15 57 22 15 58 103 15 59 102 1 60 21 1 61 18 1 62 103 16 63 23 16 64 100 16 65 27 17 66 24 17 67 26 17 68 31 0 69 28 0 70 29 0 71 35 1 72 30 1 73 31 1 74 33 2 75 34 2 76 35 2 77 29 3 78 32 3 79 33 3 80 30 4 81 32 4 82 28 4 83 35 18 84 29 18 85 33 18 86 39 0 87 36 0 88 37 0 89 43 1 90 38 1 91 39 1 92 41 2 93 42 2 94 43 2 95 37 3 96 40 3 97 41 3 98 38 4 99 40 4 100 36 4 101 43 18 102 37 18 103 41 18 104 49 4 105 47 4 106 51 4 107 44 1 108 49 1 109 48 1 110 48 0 111 51 0 112 50 0 113 44 18 114 50 18 115 46 18 116 50 3 117 47 3 118 46 3 119 46 2 120 45 2 121 44 2 122 57 4 123 55 4 124 59 4 125 52 1 126 57 1 127 56 1 128 56 0 129 59 0 130 58 0 131 52 18 132 58 18 133 54 18 134 58 3 135 55 3 136 54 3 137 54 2 138 53 2 139 52 2 140 65 4 141 63 4 142 67 4 143 60 1 144 65 1 145 64 1 146 64 0 147 67 0 148 66 0 149 60 18 150 66 18 151 62 18 152 66 3 153 63 3 154 62 3 155 62 2 156 61 2 157 60 2 158 73 4 159 71 4 160 75 4 161 68 1 162 73 1 163 72 1 164 72 0 165 75 0 166 74 0 167 68 18 168 74 18 169 70 18 170 74 3 171 71 3 172 70 3 173 70 2 174 69 2 175 68 2 176 81 4 177 79 4 178 83 4 179 76 1 180 81 1 181 80 1 182 80 0 183 83 0 184 82 0 185 76 18 186 82 18 187 78 18 188 82 3 189 79 3 190 78 3 191 78 2 192 77 2 193 76 2 194 89 4 195 87 4 196 91 4 197 84 1 198 89 1 199 88 1 200 88 0 201 91 0 202 90 0 203 84 18 204 90 18 205 86 18 206 90 3 207 87 3 208 86 3 209 86 2 210 85 2 211 84 2 212 13 1 213 97 1 214 93 1 215 16 3 216 96 3 217 95 3 218 12 3 219 96 3 220 17 3 221 16 2 222 94 2 223 15 2 224 15 1 225 97 1 226 14 1 227 13 0 228 92 0 229 12 0 230 7 19 231 100 19 232 5 19 233 8 20 234 99 20 235 102 20 236 8 21 237 103 21 238 7 21 239 10 22 240 98 22 241 1 22 242 1 23 243 99 23 244 3 23 245 10 24 246 100 24 247 101 24 248 93 0 249 2 0 250 0 0 251 94 1 252 6 1 253 9 1 254 95 2 255 4 2 256 6 2 257 92 3 258 0 3 259 11 3 260 9 4 261 6 4 262 4 4 263 101 25 264 100 25 265 23 25 266 98 26 267 20 26 268 21 26 269 2 4 270 9 4 271 11 4 272 95 3 273 96 3 274 11 3 275 93 1 276 97 1 277 9 1 278 3 27 279 13 27 280 12 27 281 7 28 282 15 28 283 14 28 284 7 29 285 5 29 286 16 29 287 1 30 288 12 30 289 17 30 290 3 31 291 8 31 292 14 31 293 5 7 294 10 7 295 17 7 296 18 32 297 21 32 298 20 32 299 22 33 300 18 33 301 19 33 302 101 3 303 19 3 304 20 3 305 102 1 306 18 1 307 22 1 308 102 34 309 99 34 310 21 34 311 103 35 312 22 35 313 23 35 314 27 36 315 25 36 316 24 36 317 31 0 318 30 0 319 28 0 320 35 1 321 34 1 322 30 1 323 33 2 324 32 2 325 34 2 326 29 3 327 28 3 328 32 3 329 30 4 330 34 4 331 32 4 332 35 18 333 31 18 334 29 18 335 39 0 336 38 0 337 36 0 338 43 1 339 42 1 340 38 1 341 41 2 342 40 2 343 42 2 344 37 3 345 36 3 346 40 3 347 38 4 348 42 4 349 40 4 350 43 18 351 39 18 352 37 18 353 49 4 354 45 4 355 47 4 356 44 1 357 45 1 358 49 1 359 48 0 360 49 0 361 51 0 362 44 18 363 48 18 364 50 18 365 50 3 366 51 3 367 47 3 368 46 2 369 47 2 370 45 2 371 57 4 372 53 4 373 55 4 374 52 1 375 53 1 376 57 1 377 56 0 378 57 0 379 59 0 380 52 18 381 56 18 382 58 18 383 58 3 384 59 3 385 55 3 386 54 2 387 55 2 388 53 2 389 65 4 390 61 4 391 63 4 392 60 1 393 61 1 394 65 1 395 64 0 396 65 0 397 67 0 398 60 18 399 64 18 400 66 18 401 66 3 402 67 3 403 63 3 404 62 2 405 63 2 406 61 2 407 73 4 408 69 4 409 71 4 410 68 1 411 69 1 412 73 1 413 72 0 414 73 0 415 75 0 416 68 18 417 72 18 418 74 18 419 74 3 420 75 3 421 71 3 422 70 2 423 71 2 424 69 2 425 81 4 426 77 4 427 79 4 428 76 1 429 77 1 430 81 1 431 80 0 432 81 0 433 83 0 434 76 18 435 80 18 436 82 18 437 82 3 438 83 3 439 79 3 440 78 2 441 79 2 442 77 2 443 89 4 444 85 4 445 87 4 446 84 1 447 85 1 448 89 1 449 88 0 450 89 0 451 91 0 452 84 18 453 88 18 454 90 18 455 90 3 456 91 3 457 87 3 458 86 2 459 87 2 460 85 2 461 13 1 462 14 1 463 97 1 464 16 3 465 17 3 466 96 3 467 12 3 468 92 3 469 96 3 470 16 2 471 95 2 472 94 2 473 15 1 474 94 1 475 97 1 476 13 0 477 93 0 478 92 0 479 7 37 480 103 37 481 100 37 482 8 38 483 3 38 484 99 38 485 8 39 486 102 39 487 103 39 488 10 40 489 101 40 490 98 40 491 1 41 492 98 41 493 99 41 494 10 42 495 5 42 496 100 42 497</p>\n        </polylist>\n      </mesh>\n    </geometry>\n  </library_geometries>\n  <library_controllers/>\n  <library_visual_scenes>\n    <visual_scene id=\"Scene\" name=\"Scene\">\n      <node id=\"pier\" name=\"pier\" type=\"NODE\">\n        <matrix sid=\"transform\">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>\n        <instance_geometry url=\"#pier-mesh\" name=\"pier\">\n          <bind_material>\n            <technique_common>\n              <instance_material symbol=\"Material_001-material\" target=\"#Material_001-material\"/>\n            </technique_common>\n          </bind_material>\n        </instance_geometry>\n      </node>\n    </visual_scene>\n  </library_visual_scenes>\n  <scene>\n    <instance_visual_scene url=\"#Scene\"/>\n  </scene>\n</COLLADA>"
  },
  {
    "path": "resources/dae/plane.dae",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n    <asset>\n        <contributor>\n            <authoring_tool>modo 1001 [Build 109580], Mac OS X Version 10.11.6 (Build 15G31) (Version 10.11.6 (Build 15G31))</authoring_tool>\n            <comments>\n                Plug-in: [Build 109580];\n                Use Absolute Path: No;\n                Merge Reference Items: No;\n                Save Hidden Items: Yes;\n                Save Cameras: Yes;\n                Save Lights: Yes;\n                Save Locators: Yes;\n                Save Triangles as Triangles: No;\n                Order Vertex Maps Alphabetically: Yes;\n                Bake Matrices: No;\n                Save Vertex Normals: Yes;\n                Save UV Texture Coordinates: Yes;\n                Save Vertex Colors: Yes;\n                Save Vertex Weights: Yes;\n                Save Animation: Yes;\n                Sample Animation: No;\n                Sample Animation Start: 0;\n                Sample Animation End: 120;\n                Save modo Profile: Yes;\n                Save Maya Profile: Yes;\n                Save 3ds Max Profile: Yes;\n                Formatted Arrays: Yes;\n            </comments>\n            <source_data>file:///Users/alexanderperrin/Projects/flight/resources/plane.lxo</source_data>\n        </contributor>\n        <created>2016-08-04T03:15:17Z</created>\n        <modified>2016-08-04T03:15:17Z</modified>\n        <up_axis>Y_UP</up_axis>\n    </asset>\n    <library_cameras>\n        <camera id=\"Camera-camera003\" name=\"Camera\">\n            <optics>\n                <technique_common>\n                    <perspective>\n                        <xfov sid=\"HFOV\">39.5978</xfov>\n                        <yfov sid=\"YFOV\">26.9915</yfov>\n                        <znear sid=\"near_clip\">0.01</znear>\n                        <zfar sid=\"far_clip\">10000</zfar>\n                    </perspective>\n                </technique_common>\n                <technique profile=\"modo401\">\n                    <param sid=\"projType\" name=\"Projection_Type\" type=\"Name\">persp</param>\n                    <param sid=\"focalLen\" name=\"Focal_Length\" type=\"float\">0.05</param>\n                    <param sid=\"distort\" name=\"Lens_Distortion\" type=\"float\">0</param>\n                    <param sid=\"squeeze\" name=\"Lens_Squeeze\" type=\"float\">1</param>\n                    <param sid=\"focusDist\" name=\"Focus_Distance\" type=\"float\">4</param>\n                    <param sid=\"fStop\" name=\"F-Stop\" type=\"float\">4</param>\n                    <param sid=\"blurLen\" name=\"Blur_Length\" type=\"float\">0.5</param>\n                    <param sid=\"blurOff\" name=\"Blur_Offset\" type=\"float\">0</param>\n                    <param sid=\"ioDist\" name=\"Interocular_Distance\" type=\"float\">0.065</param>\n                    <param sid=\"convDist\" name=\"Convergence_Distance\" type=\"float\">2</param>\n                </technique>\n            </optics>\n            <imager>\n                <technique profile=\"modo401\">\n                    <param sid=\"apertureX\" name=\"Film_Width\" type=\"float\">0.036</param>\n                    <param sid=\"apertureY\" name=\"Film_Height\" type=\"float\">0.024</param>\n                    <param sid=\"offsetX\" name=\"Film_Offset_X\" type=\"float\">0</param>\n                    <param sid=\"offsetY\" name=\"Film_Offset_Y\" type=\"float\">0</param>\n                    <param sid=\"filmFit\" name=\"Film_Fit\" type=\"Name\">fill</param>\n                </technique>\n            </imager>\n        </camera>\n    </library_cameras>\n    <library_materials>\n        <material id=\"Material-Default\" name=\"Default\">\n            <instance_effect url=\"#Effect-Default\" />\n        </material>\n    </library_materials>\n    <library_effects>\n        <effect id=\"Effect-Default\" name=\"Default\">\n            <profile_COMMON>\n                <technique sid=\"common\">\n                    <phong>\n                        <diffuse>\n                            <color sid=\"diffuse_effect_rgb\">0.48 0.48 0.48 1</color>\n                        </diffuse>\n                        <specular>\n                            <color sid=\"specular_effect_rgb\">0.04 0.04 0.04 1</color>\n                        </specular>\n                        <shininess>\n                            <float sid=\"specular_effect_rgb\">256</float>\n                        </shininess>\n                    </phong>\n                </technique>\n            </profile_COMMON>\n        </effect>\n    </library_effects>\n    <library_geometries>\n        <geometry id=\"Geometry-mesh064\" name=\"Mesh__2_\">\n            <mesh>\n                <source id=\"Geometry-mesh064-positions\" name=\"positions\">\n                    <float_array id=\"Geometry-mesh064-positions-array\" count=\"690\">\n                        2.18881 -1.57794 7.075\n                        2.19713 -1.64384 -6.675\n                        2.40021 0.119477 9.13165\n                        2.04277 1.20644 -6.675\n                        2.41343 -1.95324 -4.40444\n                        2.3713 1.63786 -4.40444\n                        2.21076 -2.03471 2.92319\n                        2.65319 1.82737 2.92319\n                        2.45794 -1.18063 9.16534\n                        2.35982 -0.104119 -6.675\n                        2.89921 -0.00505994 -4.40444\n                        3.18078 -0.00555137 2.92319\n                        13.6011 2.23826 -1.20307\n                        13.6011 2.23826 3.17182\n                        13.5427 1.51637 -1.20307\n                        13.5427 1.51637 3.17182\n                        25.1748 2.71607 1.88187\n                        25.1748 2.71607 3.88688\n                        25.4855 2.48507 1.88187\n                        25.4855 2.48507 3.88688\n                        25.5191 5.19547 1.88187\n                        25.5191 5.19547 3.88688\n                        25.6787 5.1985 1.88187\n                        25.6787 5.1985 3.88688\n                        -0.0045937 -2.632 -4.40444\n                        -0.00383972 -2.2 -6.675\n                        0.00244346 1.4 -6.675\n                        0.00319744 1.832 -4.40444\n                        -0.0045937 -2.632 2.92319\n                        -0.00383972 -2.2 7.075\n                        0.00500739 2.86902 2.94\n                        0.00128515 0.736333 9.90165\n                        -0.00137975 -0.79054 9.93534\n                        1.34599 1.05465 -12.6511\n                        1.62066 0.377172 -12.6511\n                        1.34281 -0.769345 -12.6511\n                        -0.00133867 -0.766999 -12.6511\n                        0.00221133 1.267 -12.6511\n                        0.520254 0.145243 -17.91\n                        0.000163799 0.0938497 -17.91\n                        0.753889 0.917146 -17.7292\n                        0.562722 1.55902 -17.49\n                        0.00275451 1.57821 -17.2374\n                        3.32803 0.574192 -4.22684\n                        2.9946 1.85063 -4.22684\n                        3.59398 0.573728 2.93698\n                        3.26054 1.85017 2.93698\n                        4.30522 0.772487 -3.84393\n                        4.33772 1.89972 -3.84393\n                        4.53749 0.772082 2.96672\n                        4.56999 1.89931 2.96672\n                        0.754487 1.25936 -18.4883\n                        0.521426 0.816758 -20.1161\n                        0.00136543 0.782332 -20.1639\n                        0.483115 1.78459 -17.7985\n                        0.00308349 1.76671 -17.5638\n                        0.523011 1.72459 -20.4845\n                        0.00300918 1.72413 -20.5926\n                        0.755328 1.74142 -19.123\n                        0.463388 1.94098 -17.8542\n                        0.00338778 1.94106 -17.6514\n                        0.111591 5.12782 -20.8259\n                        0.00913093 5.23163 -20.9341\n                        0.229452 5.44598 -20.0271\n                        0.0816227 5.31786 -18.6852\n                        0.00928039 5.31727 -18.6375\n                        1.4557 -2.46254 -4.40444\n                        1.26748 -2.20222 -6.675\n                        1.27376 1.39778 -6.675\n                        1.47871 1.82942 -4.40444\n                        1.74771 -2.22086 2.92319\n                        1.58658 -1.82004 7.075\n                        1.6543 1.92809 2.94\n                        1.65175 0.465342 9.42195\n                        1.64924 -0.968461 9.45564\n                        0.836054 -0.76846 -12.6511\n                        0.839604 1.26554 -12.6511\n                        0.324176 0.125867 -17.91\n                        0.289361 1.59497 -17.3024\n                        0.32536 0.803779 -20.1341\n                        0.28968 1.77787 -17.613\n                        0.326966 1.72442 -20.5253\n                        0.289965 1.94101 -17.6808\n                        0.073077 5.23237 -20.8667\n                        0.0543491 5.31764 -18.6618\n                        2.18901 0.601942 -6.675\n                        2.6148 0.880064 -4.40444\n                        2.89654 0.981935 2.92319\n                        2.64916 -0.483803 9.3085\n                        25.3181 2.60952 3.88688\n                        13.5741 1.90529 3.17182\n                        13.5741 1.90529 -1.20307\n                        25.3181 2.60952 1.88187\n                        25.5927 5.19687 3.88688\n                        25.5927 5.19687 1.88187\n                        1.47268 0.742164 -12.6511\n                        0.650785 1.19831 -17.6043\n                        3.1484 1.26187 -4.22684\n                        3.41434 1.26141 2.93698\n                        4.32273 1.37978 -3.84393\n                        4.555 1.37938 2.96672\n                        0.597511 1.54234 -18.1166\n                        0.598046 1.84893 -18.4394\n                        0.15004 5.50956 -19.1836\n                        1.65061 -0.185121 9.82864\n                        2.2398e-06 0.00128331 10.3083\n                        0.0896579 5.53348 -20.0329\n                        0.0545324 5.42264 -18.7268\n                        0.0752237 5.61469 -19.1836\n                        0.00979969 5.6148 -19.1836\n                        0.00965799 5.53362 -20.0329\n                        0.00946365 5.42227 -18.7625\n                        0.0789491 5.12738 -20.8481\n                        0.00896229 5.13501 -20.9186\n                        0.00936217 5.36412 -18.674\n                        -2.1943 -1.57029 7.075\n                        -2.20286 -1.63616 -6.675\n                        -2.39978 0.127854 9.13165\n                        -2.03855 1.21356 -6.675\n                        -2.42024 -1.9448 -4.40444\n                        -2.36556 1.64613 -4.40444\n                        -2.21785 -2.02698 2.92319\n                        -2.6468 1.83662 2.92319\n                        -2.46205 -1.17204 9.16534\n                        -2.36017 -0.0958809 -6.675\n                        -2.89921 0.00506023 -4.40444\n                        -3.18078 0.00555165 2.92319\n                        -13.5932 2.28573 -1.20307\n                        -13.5932 2.28573 3.17182\n                        -13.5373 1.56363 -1.20307\n                        -13.5373 1.56363 3.17182\n                        -25.1651 2.80393 1.88187\n                        -25.1651 2.80393 3.88688\n                        -25.4767 2.57402 1.88187\n                        -25.4767 2.57402 3.88688\n                        -25.5008 5.28451 1.88187\n                        -25.5008 5.28451 3.88688\n                        -25.6604 5.2881 1.88187\n                        -25.6604 5.2881 3.88688\n                        -0.0045937 -2.632 -4.40444\n                        -0.00383972 -2.2 -6.675\n                        0.00244346 1.4 -6.675\n                        0.00319744 1.832 -4.40444\n                        -0.0045937 -2.632 2.92319\n                        -0.00383972 -2.2 7.075\n                        0.00500739 2.86902 2.94\n                        0.00128515 0.736333 9.90165\n                        -0.00137975 -0.79054 9.93534\n                        -1.3423 1.05934 -12.6511\n                        -1.61933 0.382827 -12.6511\n                        -1.34548 -0.764653 -12.6511\n                        -0.00133867 -0.766999 -12.6511\n                        0.00221133 1.267 -12.6511\n                        -0.519744 0.147058 -17.91\n                        0.000163799 0.0938497 -17.91\n                        -0.750683 0.919772 -17.7292\n                        -0.557276 1.56098 -17.49\n                        0.00275451 1.57821 -17.2374\n                        -3.32601 0.585806 -4.22684\n                        -2.98812 1.86107 -4.22684\n                        -3.59196 0.58627 2.93698\n                        -3.25406 1.86154 2.93698\n                        -4.3025 0.787511 -3.84393\n                        -4.33107 1.91485 -3.84393\n                        -4.53477 0.787916 2.96672\n                        -4.56333 1.91525 2.96672\n                        -0.750086 1.26198 -18.4883\n                        -0.518572 0.818573 -20.1161\n                        0.00136543 0.782332 -20.1639\n                        -0.476883 1.78626 -17.7985\n                        0.00308349 1.76671 -17.5638\n                        -0.516988 1.72641 -20.4845\n                        0.00300918 1.72413 -20.5926\n                        -0.749245 1.74405 -19.123\n                        -0.45661 1.94258 -17.8542\n                        0.00338778 1.94106 -17.6514\n                        -0.0936909 5.12818 -20.8259\n                        0.00913093 5.23163 -20.9341\n                        -0.21044 5.44675 -20.0271\n                        -0.0630594 5.31812 -18.6852\n                        0.00928039 5.31727 -18.6375\n                        -1.46429 -2.45745 -4.40444\n                        -1.27516 -2.19778 -6.675\n                        -1.26887 1.40222 -6.675\n                        -1.47232 1.83457 -4.40444\n                        -1.75545 -2.21475 2.92319\n                        -1.59292 -1.81449 7.075\n                        -1.64756 1.93385 2.94\n                        -1.65011 0.471105 9.42195\n                        -1.65261 -0.962698 9.45564\n                        -0.838731 -0.765537 -12.6511\n                        -0.835181 1.26846 -12.6511\n                        -0.323735 0.126998 -17.91\n                        -0.283792 1.59597 -17.3024\n                        -0.322552 0.80491 -20.1341\n                        -0.283472 1.77887 -17.613\n                        -0.320945 1.72555 -20.5253\n                        -0.283188 1.94201 -17.6808\n                        -0.0548122 5.2326 -20.8667\n                        -0.0357868 5.3178 -18.6618\n                        -2.1869 0.60958 -6.675\n                        -2.61171 0.889186 -4.40444\n                        -2.8931 0.99204 2.92319\n                        -2.65083 -0.474553 9.3085\n                        -25.3089 2.69788 3.88688\n                        -13.5674 1.95266 3.17182\n                        -13.5674 1.95266 -1.20307\n                        -25.3089 2.69788 1.88187\n                        -25.5744 5.28617 3.88688\n                        -25.5744 5.28617 1.88187\n                        -1.47008 0.7473 -12.6511\n                        -0.646598 1.20057 -17.6043\n                        -3.14397 1.27286 -4.22684\n                        -3.40992 1.27332 2.93698\n                        -4.31789 1.39486 -3.84393\n                        -4.55016 1.39527 2.96672\n                        -0.592123 1.54442 -18.1166\n                        -0.591588 1.85101 -18.4394\n                        -0.130807 5.51005 -19.1836\n                        -1.65125 -0.179358 9.82864\n                        2.2398e-06 0.00128331 10.3083\n                        -0.0703419 5.53375 -20.0329\n                        -0.0356035 5.4228 -18.7268\n                        -0.0556243 5.61492 -19.1836\n                        0.00979969 5.6148 -19.1836\n                        0.00965799 5.53362 -20.0329\n                        0.00946365 5.42227 -18.7625\n                        -0.0610507 5.12762 -20.8481\n                        0.00896229 5.13501 -20.9186\n                        0.00936217 5.36412 -18.674\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"230\" source=\"#Geometry-mesh064-positions-array\" stride=\"3\">\n                            <param name=\"X\" type=\"float\" />\n                            <param name=\"Y\" type=\"float\" />\n                            <param name=\"Z\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh064-normals\" name=\"normals\">\n                    <float_array id=\"Geometry-mesh064-normals-array\" count=\"1002\">\n                        0.939597 -0.338227 -0.0525392\n                        0.976693 -0.172532 -0.127689\n                        0.987095 0.0670525 -0.145424\n                        0.957984 -0.272301 -0.0901042\n                        0.738107 -0.671914 0.0610734\n                        0.83016 -0.550757 -0.0866125\n                        0.903576 -0.426015 -0.0454055\n                        0.763737 -0.644836 0.0298737\n                        0.264364 -0.946017 0.18752\n                        0.56546 -0.822449 0.0619123\n                        0.205605 -0.951037 0.230772\n                        0.0816404 -0.996661 -0.00143532\n                        0.0808462 -0.996727 0\n                        -0.0390731 0.999236 0.000658911\n                        -0.0412482 0.999149 0\n                        0.997475 -0.0710207 0\n                        -0.990494 0.137556 0\n                        0.972789 -0.168195 -0.15935\n                        0.983995 0.110786 -0.13957\n                        0.956907 -0.247039 -0.152647\n                        0.995132 0.0622556 -0.076396\n                        0.807744 -0.588769 -0.0300244\n                        -0.0375369 0.999294 0.00139894\n                        0.137912 0.987692 -0.0737955\n                        0.0922838 0.993394 0.0681992\n                        0.142212 -0.989824 -0.00490886\n                        0.201473 -0.979469 -0.0069293\n                        -0.0372167 0.999306 0.0013287\n                        0.973395 -0.200596 -0.110742\n                        0.998985 0.0364148 0.0265069\n                        0.990358 -0.0201094 -0.137068\n                        0.997152 0.0754181 0.000129821\n                        0.248861 -0.95037 -0.186724\n                        0.243217 -0.968504 -0.0533436\n                        0.0569843 -0.997449 -0.0429857\n                        -0.00171883 -0.984781 -0.173792\n                        0.483414 -0.855036 -0.18768\n                        0.614181 -0.788329 -0.0363243\n                        0.240757 0.964345 -0.109888\n                        0.158692 0.980387 -0.116865\n                        0.00173569 0.994477 -0.104939\n                        0.257859 0.959998 -0.109147\n                        0.312043 0.941691 -0.12589\n                        0.273534 -0.959805 0.0628719\n                        0.171622 -0.98299 0.0653892\n                        0.420815 -0.905039 -0.0618022\n                        0.419554 -0.904852 0.0722318\n                        0.177736 -0.958758 0.221795\n                        0.224997 -0.950512 0.21425\n                        0.261274 0.960077 0.0999403\n                        0.3635 0.926487 0.0974098\n                        0.160419 0.962824 0.217339\n                        0.218737 0.95183 0.214881\n                        0.101536 0.970421 0.21903\n                        0.0487458 -0.94086 0.335271\n                        0.219878 -0.920351 0.32343\n                        0.152124 -0.96618 -0.208217\n                        0.0476297 -0.977617 -0.204931\n                        0.258532 -0.94308 -0.209193\n                        0.139875 0.990087 0.0127427\n                        0.0017448 0.999707 0.0241231\n                        0.276212 0.961096 0.00103689\n                        0.0699199 -0.970284 -0.231648\n                        0.0934274 -0.967839 -0.23358\n                        0.0463389 -0.972185 -0.229582\n                        0.168192 0.9441 0.283526\n                        0.0340741 0.954454 0.296404\n                        0.300281 0.916212 0.265303\n                        0.091917 -0.952518 -0.290278\n                        0.0897295 -0.952708 -0.290337\n                        0.0941041 -0.952323 -0.290217\n                        0.219747 0.714195 0.664558\n                        0.109077 0.653493 0.749032\n                        0.353346 0.625622 0.695517\n                        0.574257 0.558557 0.598534\n                        0.178291 -0.238086 -0.954739\n                        0.149138 -0.386883 -0.909989\n                        0.188297 -0.38432 -0.903794\n                        0.197779 -0.241639 -0.949997\n                        0.158673 -0.234424 -0.959098\n                        0.109743 -0.388836 -0.914747\n                        0.404771 0.314392 0.858672\n                        0.120156 0.33224 0.93551\n                        0.441752 0.515796 0.734037\n                        0.74537 0.458957 0.48351\n                        0.848892 0.235504 0.473202\n                        0.386521 0.38413 0.838478\n                        0.249591 0.43669 0.864295\n                        0.737921 0.437537 0.513842\n                        0.941413 0.264719 -0.208963\n                        0.945411 0.285054 -0.157931\n                        0.950178 0.266887 -0.16104\n                        0.930594 0.299025 -0.211137\n                        0.985362 -0.00514564 -0.170398\n                        0.931994 0.343742 0.115013\n                        0.902719 0.41038 0.129176\n                        0.956145 0.275215 0.100219\n                        -0.0407241 -0.0170164 0.999026\n                        -0.0293193 -0.0176476 0.999414\n                        -0.0305488 0.00247163 0.99953\n                        -0.0419288 0.00279931 0.999117\n                        -0.0395024 -0.0368393 0.99854\n                        -0.0280772 -0.0377726 0.998892\n                        0.122132 0.0717601 -0.989916\n                        0.260292 0.0636274 -0.963431\n                        0.253847 0.142229 -0.95673\n                        0.114692 0.154296 -0.981345\n                        0.12866 -0.0104101 -0.991634\n                        0.265052 -0.0142873 -0.964128\n                        0 0 1\n                        0 0 -1\n                        -0.0189774 0.99982 0\n                        -0.0189788 0.99982 0\n                        -0.0189761 0.99982 0\n                        0.932777 0.342651 -0.111878\n                        0.945681 0.304215 -0.114634\n                        0.942534 0.333838 -0.0135086\n                        0.953353 0.299782 -0.0353348\n                        0.285851 0.056027 -0.956635\n                        0.264829 0.0770026 -0.961216\n                        0.269336 0.0703574 -0.960473\n                        0.290363 0.0307289 -0.956423\n                        0.281153 0.0812685 -0.956216\n                        0.260304 0.0836429 -0.961897\n                        -0.0231959 -0.00636608 0.999711\n                        -0.0244769 -0.00465184 0.99969\n                        -0.0242134 -0.00663187 0.999685\n                        -0.0230509 -0.00663492 0.999712\n                        -0.023341 -0.00609724 0.999709\n                        -0.0247404 -0.00267178 0.99969\n                        0.291067 0.00992685 -0.956651\n                        0.293253 -0.0156327 -0.955907\n                        0.288687 0.0355019 -0.956765\n                        -0.024283 -0.000842562 0.999705\n                        -0.0240748 -0.00298611 0.999706\n                        -0.0244911 0.00130098 0.999699\n                        0.959991 0.241747 0.141337\n                        0.969745 0.212253 0.120594\n                        0.970644 0.174132 0.165916\n                        0.914255 0.246355 0.321631\n                        0.939778 0.309564 0.144874\n                        0.959495 0.281132 -0.0182897\n                        0.295216 0.462157 0.836217\n                        0.408017 0.461505 0.787741\n                        0.293579 -0.354476 0.887783\n                        0.209044 -0.420721 0.882777\n                        0.514667 0.453896 0.72739\n                        0.374721 -0.284134 0.882526\n                        0.873707 0.464216 0.145395\n                        0.748901 0.54564 0.376064\n                        0.893587 0.438561 -0.0957357\n                        0.686448 0.713964 -0.138\n                        -0.150953 0.978934 0.13748\n                        0.179773 0.950091 -0.254966\n                        0.00169889 0.975691 -0.219143\n                        0.267948 0.904447 -0.331932\n                        0.00163698 0.940543 -0.339671\n                        -0.291909 0.886337 0.359438\n                        0.980797 0.0980873 -0.16857\n                        0.471871 -0.0934713 -0.876699\n                        0.430387 -0.0946022 -0.897673\n                        0.702246 -0.0857748 -0.706749\n                        0.633681 -0.100282 -0.767067\n                        0.388922 -0.0955102 -0.916306\n                        0.365658 0.910595 -0.192643\n                        0.51489 0.802975 -0.3002\n                        0.463916 0.646624 0.605524\n                        0.527228 0.709975 0.466869\n                        -0.940772 -0.334945 -0.0525391\n                        -0.958929 -0.268955 -0.0901042\n                        -0.986855 0.0704976 -0.145423\n                        -0.977289 -0.169121 -0.127689\n                        -0.740448 -0.669334 0.0610734\n                        -0.765983 -0.642166 0.0298737\n                        -0.905057 -0.422859 -0.0454055\n                        -0.832077 -0.547855 -0.0866125\n                        -0.267665 -0.945088 0.18752\n                        -0.208924 -0.950313 0.230772\n                        -0.568328 -0.82047 0.0619123\n                        -0.0851189 -0.99637 -0.00143533\n                        -0.0843249 -0.996438 0\n                        0.0425608 0.999094 0.000658914\n                        0.0447356 0.998999 0\n                        -0.997717 -0.0675388 0\n                        0.990968 0.134097 0\n                        -0.983603 0.11422 -0.13957\n                        -0.97337 -0.164798 -0.15935\n                        -0.994909 0.0657288 -0.076396\n                        -0.957763 -0.243697 -0.152647\n                        -0.809794 -0.585946 -0.0300244\n                        0.0410249 0.999157 0.00139893\n                        -0.0888156 0.993711 0.0681992\n                        -0.134463 0.988167 -0.0737955\n                        -0.145666 -0.989322 -0.00490888\n                        -0.204891 -0.97876 -0.00692932\n                        0.0407047 0.99917 0.0013287\n                        -0.998852 0.0399017 0.0265069\n                        -0.974089 -0.197197 -0.110742\n                        -0.996883 0.0788983 0.000129825\n                        -0.990422 -0.0166523 -0.137068\n                        -0.252177 -0.949495 -0.186724\n                        -0.00171879 -0.984781 -0.173792\n                        -0.0604658 -0.997244 -0.0429858\n                        -0.246596 -0.967649 -0.0533437\n                        -0.616929 -0.78618 -0.0363243\n                        -0.486395 -0.853344 -0.18768\n                        -0.237389 0.965179 -0.109888\n                        -0.254506 0.960892 -0.109147\n                        0.00173565 0.994477 -0.104939\n                        -0.155269 0.980935 -0.116865\n                        -0.308754 0.942774 -0.12589\n                        -0.175053 -0.982385 0.0653892\n                        -0.276883 -0.958845 0.0628719\n                        -0.42271 -0.903382 0.0722318\n                        -0.423971 -0.903564 -0.0618023\n                        -0.228314 -0.949721 0.21425\n                        -0.181082 -0.958132 0.221795\n                        -0.257921 0.960983 0.0999403\n                        -0.360264 0.927751 0.0974098\n                        -0.157057 0.963378 0.217339\n                        -0.215413 0.952588 0.214881\n                        -0.0981474 0.970769 0.21903\n                        -0.223089 -0.919578 0.32343\n                        -0.0520298 -0.940684 0.335271\n                        -0.155495 -0.965643 -0.208217\n                        -0.051042 -0.977445 -0.204931\n                        -0.261822 -0.942172 -0.209193\n                        0.0017448 0.999707 0.0241231\n                        -0.136418 0.990569 0.0127427\n                        -0.272855 0.962055 0.0010369\n                        -0.0733064 -0.970034 -0.231648\n                        -0.0968052 -0.967507 -0.23358\n                        -0.0497322 -0.972018 -0.229582\n                        -0.0307423 0.954568 0.296404\n                        -0.164896 0.944681 0.283526\n                        -0.297081 0.917255 0.265303\n                        -0.0952414 -0.952191 -0.290278\n                        -0.0930546 -0.952389 -0.290337\n                        -0.0974277 -0.951988 -0.290217\n                        -0.106795 0.653869 0.749032\n                        -0.217253 0.714957 0.664558\n                        -0.35116 0.626852 0.695517\n                        -0.572304 0.560558 0.598534\n                        -0.179121 -0.237462 -0.954739\n                        -0.198621 -0.240947 -0.949997\n                        -0.189637 -0.38366 -0.903794\n                        -0.150487 -0.38636 -0.909989\n                        -0.1111 -0.388451 -0.914747\n                        -0.15949 -0.233869 -0.959098\n                        -0.118995 0.332657 0.93551\n                        -0.403671 0.315803 0.858672\n                        -0.848064 0.238466 0.473202\n                        -0.743764 0.461556 0.48351\n                        -0.439949 0.517334 0.734037\n                        -0.248065 0.437558 0.864295\n                        -0.385178 0.385477 0.838478\n                        -0.736389 0.44011 0.513843\n                        -0.940483 0.268003 -0.208963\n                        -0.929545 0.302272 -0.211137\n                        -0.94924 0.270202 -0.16104\n                        -0.94441 0.288352 -0.157931\n                        -0.985374 -0.00170623 -0.170398\n                        -0.930789 0.346994 0.115013\n                        -0.901281 0.413528 0.129176\n                        -0.955178 0.278551 0.100219\n                        0.0406644 -0.0171584 0.999026\n                        0.0419383 0.00265301 0.999117\n                        0.0305572 0.00236506 0.99953\n                        0.0292575 -0.0177498 0.999414\n                        0.0279451 -0.0378702 0.998892\n                        0.0393736 -0.0369769 0.99854\n                        -0.121881 0.0721864 -0.989916\n                        -0.114153 0.154697 -0.981345\n                        -0.253349 0.143115 -0.95673\n                        -0.260069 0.0645358 -0.963431\n                        -0.2651 -0.0133619 -0.964128\n                        -0.128696 -0.00996085 -0.991634\n                        0.0224685 0.999748 0\n                        0.022469 0.999748 0\n                        0.022468 0.999748 0\n                        -0.944613 0.307515 -0.114634\n                        -0.931576 0.345905 -0.111878\n                        -0.952301 0.303108 -0.0353348\n                        -0.941363 0.337126 -0.0135087\n                        -0.285653 0.0570245 -0.956635\n                        -0.290254 0.0317423 -0.956423\n                        -0.269089 0.0712971 -0.960473\n                        -0.264559 0.0779266 -0.961216\n                        -0.260011 0.0845511 -0.961897\n                        -0.280868 0.0822494 -0.956216\n                        0.0231735 -0.006447 0.999711\n                        0.0230276 -0.00671533 0.999712\n                        0.0241901 -0.00671635 0.999685\n                        0.0244605 -0.00473725 0.99969\n                        0.0247309 -0.00275813 0.99969\n                        0.0233195 -0.00617868 0.999709\n                        -0.29103 0.0109426 -0.956651\n                        -0.293306 -0.0146094 -0.955907\n                        -0.288561 0.0365094 -0.956765\n                        0.0240642 -0.00307013 0.999706\n                        0.0242799 -0.000927327 0.999705\n                        0.0244955 0.00121547 0.999699\n                        -0.968998 0.215637 0.120594\n                        -0.959141 0.245097 0.141337\n                        -0.91339 0.249544 0.321631\n                        -0.97003 0.17752 0.165916\n                        -0.938691 0.312842 0.144874\n                        -0.958508 0.28448 -0.0182897\n                        -0.293601 0.463184 0.836217\n                        -0.406403 0.462926 0.787741\n                        -0.294815 -0.353449 0.887783\n                        -0.210511 -0.419989 0.882777\n                        -0.513079 0.45569 0.72739\n                        -0.375711 -0.282824 0.882526\n                        -0.746991 0.548251 0.376065\n                        -0.872081 0.467263 0.145395\n                        -0.683951 0.716356 -0.138\n                        -0.892051 0.441678 -0.0957357\n                        0.154369 0.978401 0.13748\n                        0.00170537 0.975691 -0.219143\n                        -0.176457 0.950713 -0.254966\n                        0.00164258 0.940543 -0.33967\n                        -0.26479 0.905377 -0.331932\n                        0.295002 0.885312 0.359438\n                        -0.980449 0.10151 -0.16857\n                        -0.430715 -0.0930995 -0.897673\n                        -0.472194 -0.0918237 -0.876699\n                        -0.634026 -0.0980698 -0.767068\n                        -0.702541 -0.0833232 -0.706748\n                        -0.389253 -0.0941524 -0.916307\n                        -0.362477 0.911866 -0.192642\n                        -0.512083 0.804768 -0.3002\n                        -0.461655 0.64824 0.605524\n                        -0.524745 0.711811 0.46687\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"334\" source=\"#Geometry-mesh064-normals-array\" stride=\"3\">\n                            <param name=\"X\" type=\"float\" />\n                            <param name=\"Y\" type=\"float\" />\n                            <param name=\"Z\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh064-Texture\" name=\"Texture\">\n                    <float_array id=\"Geometry-mesh064-Texture-array\" count=\"152\">\n                        0.3475 0.333333\n                        0.25 0.333333\n                        0.25 0.533333\n                        0.3475 0.533333\n                        0.42375 0.333333\n                        0.42375 0.533333\n                        0.5 0.333333\n                        0.5 0.533333\n                        0.363311 0.549145\n                        0.369958 0.555792\n                        0.401292 0.555792\n                        0.407939 0.549145\n                        0.407939 0.650856\n                        0.401292 0.644208\n                        0.369958 0.644208\n                        0.363311 0.650856\n                        0 0\n                        0 1\n                        1 1\n                        1 0\n                        0.348377 0.534211\n                        0.422873 0.534211\n                        0.422873 0.66579\n                        0.348377 0.66579\n                        0.3475 0.666667\n                        0.42375 0.666667\n                        0.350268 0.536102\n                        0.420982 0.536102\n                        0.420982 0.663898\n                        0.350268 0.663898\n                        0.25 0.270499\n                        0.3475 0.270499\n                        0.3475 0.166667\n                        0.25 0.166667\n                        0.3475 0.729501\n                        0.25 0.729501\n                        0.25 0.833333\n                        0.3475 0.833333\n                        0.25 0.666667\n                        0.42375 0.270499\n                        0.42375 0.166667\n                        0.5 0.270499\n                        0.5 0.166667\n                        0.42375 0.729501\n                        0.42375 0.833333\n                        0.5 0.729501\n                        0.5 0.833333\n                        0.5 0.666667\n                        0.547126 0.333333\n                        0.547126 0.533333\n                        0.625 0.533333\n                        0.625 0.333333\n                        1 0.377007\n                        0 0.377007\n                        0 0.622993\n                        1 0.622993\n                        0.3475 0.605167\n                        0.25 0.605167\n                        0.5 0.605167\n                        0.42375 0.605167\n                        0.407939 0.603941\n                        0.401292 0.603426\n                        0.369958 0.603426\n                        0.363311 0.603941\n                        0 0.46125\n                        1 0.46125\n                        0.348377 0.605099\n                        0.422873 0.605099\n                        0.350268 0.604952\n                        0.420982 0.604952\n                        0.625 0.605167\n                        0.547126 0.605167\n                        0.547126 0.666667\n                        0.625 0.666667\n                        0.975 1\n                        0.97 0.377007\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"76\" source=\"#Geometry-mesh064-Texture-array\" stride=\"2\">\n                            <param name=\"S\" type=\"float\" />\n                            <param name=\"T\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <vertices id=\"Geometry-mesh064-vertices\">\n                    <input semantic=\"POSITION\" source=\"#Geometry-mesh064-positions\" />\n                </vertices>\n                <polylist count=\"204\" material=\"Material-Default\">\n                    <input semantic=\"VERTEX\" source=\"#Geometry-mesh064-vertices\" offset=\"0\" />\n                    <input semantic=\"NORMAL\" source=\"#Geometry-mesh064-normals\" offset=\"1\" />\n                    <input semantic=\"TEXCOORD\" source=\"#Geometry-mesh064-Texture\" offset=\"2\" set=\"0\" />\n                    <vcount>4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 4 4 4</vcount>\n                    <p>4 0 0 1 1 1 9 2 2 10 3 3 6 4 4 4 5 0 10 6 3 11 7 5 0 8 6 6 9 4 11 7 5 8 10 7 14 11 8 18 12 9 19 12 10 15 11 11 13 13 12 17 14 13 16 14 14 12 13 15 18 15 9 22 15 9 23 15 10 19 15 10 17 16 13 21 16 13 20 16 14 16 16 14 9 2 16 1 1 17 35 17 18 34 18 19 34 18 16 35 17 17 38 19 18 40 20 19 43 21 20 45 21 21 11 7 5 10 6 3 46 22 22 44 22 23 5 23 24 7 24 25 47 25 26 49 25 27 45 26 21 43 26 20 49 25 27 47 25 26 14 11 8 15 11 11 50 27 28 48 27 29 44 22 23 46 22 22 48 27 29 50 27 28 13 13 12 12 13 15 40 20 16 38 19 17 52 28 18 51 29 19 51 29 16 52 28 17 56 30 18 58 31 19 67 32 30 66 33 31 24 34 32 25 35 33 66 33 31 67 32 30 1 36 1 4 37 0 69 38 34 68 39 35 26 40 36 27 41 37 68 39 35 69 38 34 5 23 24 3 42 38 66 33 31 70 43 39 28 44 40 24 34 32 70 43 39 66 33 31 4 45 0 6 46 4 70 43 39 71 47 41 29 48 42 28 44 40 71 47 41 70 43 39 6 46 4 0 8 6 72 49 43 69 38 34 27 41 37 30 50 44 69 38 34 72 49 43 7 24 25 5 23 24 73 51 45 72 49 43 30 50 44 31 52 46 72 49 43 73 51 45 2 53 47 7 24 25 71 47 48 74 54 49 32 55 50 29 48 51 74 54 49 71 47 48 0 8 6 8 10 7 75 56 52 67 32 53 25 35 17 36 57 18 67 32 53 75 56 52 35 58 19 1 36 16 68 39 54 76 59 55 37 60 19 26 40 16 76 59 55 68 39 54 3 42 17 33 61 18 77 62 52 75 56 53 36 57 17 39 63 18 75 56 53 77 62 52 38 64 19 35 58 16 76 59 54 78 65 55 42 66 19 37 60 16 78 65 55 76 59 54 33 61 17 41 67 18 79 68 52 77 62 53 39 63 17 53 69 18 77 62 53 79 68 52 52 70 19 38 64 16 78 65 54 80 71 55 55 72 19 42 66 16 80 73 55 78 65 54 41 67 17 54 74 18 81 75 52 79 76 53 53 77 17 57 78 18 79 76 53 81 75 52 56 79 19 52 80 16 80 73 54 82 81 55 60 82 19 55 72 16 82 81 55 80 83 54 54 84 17 59 85 18 82 81 54 84 86 55 65 87 19 60 82 16 84 86 55 82 81 54 59 85 17 64 88 18 86 89 56 85 90 57 3 91 38 5 92 24 85 90 57 86 89 56 10 93 3 9 2 2 88 94 58 87 94 59 7 95 25 2 95 47 87 94 59 88 94 58 8 96 7 11 96 5 90 97 60 89 98 61 17 99 13 13 100 12 89 98 61 90 97 60 15 101 11 19 102 10 92 103 62 91 104 63 12 105 15 16 106 14 91 104 63 92 103 62 18 107 9 14 108 8 89 98 61 93 109 61 21 109 13 17 99 13 93 109 61 89 98 61 19 102 10 23 109 10 94 110 62 92 103 62 16 106 14 20 110 14 92 103 62 94 110 62 22 110 9 18 107 9 93 111 61 94 111 62 20 112 14 21 112 13 94 111 62 93 111 61 23 113 10 22 113 9 85 90 64 95 114 65 33 115 19 3 91 16 95 114 65 85 90 64 9 2 17 34 18 18 95 114 64 96 116 65 41 117 19 33 115 16 96 116 65 95 114 64 34 18 17 40 20 18 97 118 66 86 119 56 5 120 24 44 121 23 86 119 56 97 118 66 43 122 20 10 123 3 87 124 59 98 125 67 46 126 22 7 127 25 98 125 67 87 124 59 11 128 5 45 129 21 99 130 68 97 118 66 44 121 23 48 131 29 97 118 66 99 130 68 47 132 26 43 122 20 91 104 63 99 130 68 48 131 29 12 105 15 99 130 68 91 104 63 14 108 8 47 132 26 98 125 67 100 133 69 50 134 28 46 126 22 100 133 69 98 125 67 45 129 21 49 135 27 100 133 69 90 97 60 13 100 12 50 134 28 90 97 60 100 133 69 49 135 27 15 101 11 96 116 64 101 136 65 54 137 19 41 117 16 101 136 65 96 116 64 40 20 17 51 29 18 101 136 64 102 138 65 59 85 19 54 139 16 102 138 65 101 136 64 51 29 17 58 31 18 102 138 64 103 140 65 64 88 19 59 85 16 103 140 65 102 138 64 58 31 17 63 141 18 105 142 70 104 143 71 73 143 72 31 142 73 104 144 71 105 145 70 32 145 50 74 144 49 104 143 71 88 146 58 2 146 47 73 143 72 88 147 58 104 144 71 74 144 49 8 147 7 64 88 16 103 140 17 108 148 18 107 149 19 103 140 16 63 150 17 106 151 18 108 148 19 108 152 16 106 153 17 110 154 18 109 152 19 106 153 16 83 155 17 62 156 18 110 154 19 107 157 16 108 152 17 109 152 18 111 157 19 58 31 16 56 30 17 61 158 18 63 141 19 57 78 17 113 159 74 112 160 75 81 75 53 112 160 75 113 159 74 62 161 18 83 162 52 56 79 16 81 75 53 112 160 75 61 163 19 112 160 75 83 162 52 61 163 19 106 164 18 63 151 19 61 165 16 83 155 17 65 87 19 84 86 55 64 88 19 114 166 19 114 166 19 64 88 19 107 149 16 111 167 19 119 168 0 125 169 3 124 170 2 116 171 1 121 172 4 126 173 5 125 174 3 119 175 0 115 176 6 123 177 7 126 173 5 121 178 4 129 179 8 130 179 11 134 180 10 133 180 9 128 181 12 127 181 15 131 182 14 132 182 13 133 183 9 134 183 10 138 183 10 137 183 9 132 184 13 131 184 14 135 184 14 136 184 13 124 170 16 149 185 19 150 186 18 116 171 17 149 185 16 155 187 19 153 188 18 150 186 17 158 189 20 125 174 3 126 173 5 160 189 21 161 190 22 122 191 25 120 192 24 159 190 23 162 193 26 158 194 20 160 194 21 164 193 27 164 193 27 130 179 11 129 179 8 162 193 26 165 195 28 161 190 22 159 190 23 163 195 29 163 195 29 127 181 15 128 181 12 165 195 28 155 187 16 166 196 19 167 197 18 153 188 17 166 196 16 173 198 19 171 199 18 167 197 17 182 200 30 140 201 33 139 202 32 181 203 31 181 203 31 119 204 0 116 205 1 182 200 30 184 206 34 142 207 37 141 208 36 183 209 35 183 209 35 118 210 38 120 192 24 184 206 34 181 203 31 139 202 32 143 211 40 185 212 39 185 212 39 121 213 4 119 214 0 181 203 31 185 212 39 143 211 40 144 215 42 186 216 41 186 216 41 115 176 6 121 213 4 185 212 39 187 217 43 145 218 44 142 207 37 184 206 34 184 206 34 120 192 24 122 191 25 187 217 43 188 219 45 146 220 46 145 218 44 187 217 43 187 217 43 122 191 25 117 221 47 188 219 45 186 216 48 144 215 51 147 222 50 189 223 49 189 223 49 123 177 7 115 176 6 186 216 48 190 224 52 151 225 18 140 201 17 182 200 53 182 200 53 116 205 16 150 226 19 190 224 52 183 209 54 141 208 16 152 227 19 191 228 55 191 228 55 148 229 18 118 210 17 183 209 54 192 230 52 154 231 18 151 225 17 190 224 53 190 224 53 150 226 16 153 232 19 192 230 52 191 228 54 152 227 16 157 233 19 193 234 55 193 234 55 156 235 18 148 229 17 191 228 54 194 236 52 168 237 18 154 231 17 192 230 53 192 230 53 153 232 16 167 238 19 194 236 52 193 234 54 157 233 16 170 239 19 195 240 55 195 241 55 169 242 18 156 235 17 193 234 54 196 243 52 172 244 18 168 245 17 194 246 53 194 246 53 167 247 16 171 248 19 196 243 52 195 241 54 170 239 16 175 249 19 197 250 55 197 250 55 174 251 18 169 252 17 195 253 54 197 250 54 175 249 16 180 254 19 199 255 55 199 255 55 179 256 18 174 251 17 197 250 54 201 257 56 120 258 24 118 259 38 200 260 57 200 260 57 124 170 2 125 261 3 201 257 56 203 262 58 117 263 47 122 263 25 202 262 59 202 262 59 126 264 5 123 264 7 203 262 58 205 265 60 128 266 12 132 267 13 204 268 61 204 268 61 134 269 10 130 270 11 205 265 60 207 271 62 131 272 14 127 273 15 206 274 63 206 274 63 129 275 8 133 276 9 207 271 62 204 268 61 132 267 13 136 109 13 208 109 61 208 109 61 138 109 10 134 269 10 204 268 61 209 110 62 135 110 14 131 272 14 207 271 62 207 271 62 133 276 9 137 110 9 209 110 62 208 277 61 136 278 13 135 278 14 209 277 62 209 277 62 137 279 9 138 279 10 208 277 61 200 260 64 118 259 16 148 280 19 210 281 65 210 281 65 149 185 18 124 170 17 200 260 64 210 281 64 148 280 16 156 282 19 211 283 65 211 283 65 155 187 18 149 185 17 210 281 64 212 284 66 159 285 23 120 286 24 201 287 56 201 287 56 125 288 3 158 289 20 212 284 66 202 290 59 122 291 25 161 292 22 213 293 67 213 293 67 160 294 21 126 295 5 202 290 59 214 296 68 163 297 29 159 285 23 212 284 66 212 284 66 158 289 20 162 298 26 214 296 68 206 274 63 127 273 15 163 297 29 214 296 68 214 296 68 162 298 26 129 275 8 206 274 63 213 293 67 161 292 22 165 299 28 215 300 69 215 300 69 164 301 27 160 294 21 213 293 67 215 300 69 165 299 28 128 266 12 205 265 60 205 265 60 130 270 11 164 301 27 215 300 69 211 283 64 156 282 16 169 302 19 216 303 65 216 303 65 166 196 18 155 187 17 211 283 64 216 303 64 169 304 16 174 251 19 217 305 65 217 305 65 173 198 18 166 196 17 216 303 64 217 305 64 174 251 16 179 256 19 218 306 65 218 306 65 178 307 18 173 198 17 217 305 64 220 308 70 146 308 73 188 309 72 219 309 71 219 310 71 189 310 49 147 311 50 220 311 70 219 309 71 188 309 72 117 312 47 203 312 58 203 313 58 123 313 7 189 310 49 219 310 71 179 256 16 222 314 19 223 315 18 218 306 17 218 306 16 223 315 19 221 316 18 178 317 17 223 318 16 224 318 19 225 319 18 221 320 17 221 320 16 225 319 19 177 321 18 198 322 17 222 323 16 226 323 19 224 318 18 223 318 17 173 198 16 178 307 19 176 324 18 171 199 17 172 244 17 196 243 53 227 325 75 228 326 74 227 325 75 198 327 52 177 328 18 228 326 74 171 248 16 176 329 19 227 325 75 196 243 53 227 325 75 176 329 19 198 327 52 221 330 18 198 322 17 176 331 16 178 316 19 180 254 19 229 332 19 179 256 19 199 255 55 229 332 19 226 333 19 222 314 16 179 256 19</p>\n                </polylist>\n                <extra>\n                    <technique profile=\"modo401\">\n                        <param sid=\"render\" name=\"Render\" type=\"Name\">default</param>\n                        <param sid=\"dissolve\" name=\"Dissolve\" type=\"float\">0</param>\n                        <param sid=\"curves\" name=\"Render_Curves\" type=\"bool\">false</param>\n                        <param sid=\"radius\" name=\"Curve_Radius\" type=\"float\">0.05</param>\n                    </technique>\n                </extra>\n            </mesh>\n        </geometry>\n    </library_geometries>\n    <library_lights>\n        <light id=\"Light-polyRender006\" name=\"Render\">\n            <technique_common>\n                <ambient>\n                    <color sid=\"ambient_light_rgb\">0 0 0</color>\n                </ambient>\n            </technique_common>\n        </light>\n        <light id=\"Light-sunLight014\" name=\"Directional_Light\">\n            <technique_common>\n                <directional>\n                    <color sid=\"directional_light_rgb\">1 1 1</color>\n                </directional>\n            </technique_common>\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"lightType\" name=\"Light_Type\" type=\"Name\">sun_light</param>\n                    <param sid=\"render\" name=\"Render\" type=\"Name\">default</param>\n                    <param sid=\"visible\" name=\"Display_Visible\" type=\"Name\">default</param>\n                    <param sid=\"size\" name=\"Display_Size\" type=\"float\">1</param>\n                    <param sid=\"dissolve\" name=\"Dissolve\" type=\"float\">0</param>\n                    <param sid=\"radiance\" name=\"Radiant_Intensity\" type=\"float\">3</param>\n                    <param sid=\"samples\" name=\"Samples\" type=\"int\">64</param>\n                    <param sid=\"shadType\" name=\"Shadow_Type\" type=\"Name\">raytrace</param>\n                    <param sid=\"shadRes\" name=\"Shadow_Resolution\" type=\"int\">1024</param>\n                    <param sid=\"azimuth\" name=\"Azimuth\" type=\"float\">0</param>\n                    <param sid=\"clamp\" name=\"Clamp_Intensity\" type=\"bool\">true</param>\n                    <param sid=\"day\" name=\"Day\" type=\"int\">2014173</param>\n                    <param sid=\"elevation\" name=\"Elevation\" type=\"float\">0</param>\n                    <param sid=\"haze\" name=\"Haze\" type=\"float\">3</param>\n                    <param sid=\"height\" name=\"Height\" type=\"float\">10</param>\n                    <param sid=\"lat\" name=\"Latitude\" type=\"float\">0.655057</param>\n                    <param sid=\"lon\" name=\"Longitude\" type=\"float\">-2.13456</param>\n                    <param sid=\"mapSize\" name=\"Map_Size\" type=\"float\">2</param>\n                    <param sid=\"north\" name=\"North\" type=\"float\">0</param>\n                    <param sid=\"radius\" name=\"Radius\" type=\"float\">0.5</param>\n                    <param sid=\"spread\" name=\"Spread\" type=\"float\">0</param>\n                    <param sid=\"sunPos\" name=\"Sun_Position\" type=\"bool\">false</param>\n                    <param sid=\"time\" name=\"Time\" type=\"float\">12</param>\n                    <param sid=\"timeZone\" name=\"Time_Zone\" type=\"float\">-8</param>\n                    <param sid=\"volumetrics\" name=\"Volumetrics\" type=\"bool\">false</param>\n                    <param sid=\"vdissolve\" name=\"Volumetrics_Dissolve\" type=\"float\">0</param>\n                    <param sid=\"vsamples\" name=\"Volumetric_Samples\" type=\"int\">40</param>\n                </technique>\n            </extra>\n        </light>\n    </library_lights>\n    <library_nodes id=\"shader_tree\" name=\"Shader_Tree\">\n        <node sid=\"shader_tree_render\" name=\"Render\">\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"first\" name=\"Frame_Range_First\" type=\"int\">1</param>\n                    <param sid=\"last\" name=\"Frame_Range_Last\" type=\"int\">120</param>\n                    <param sid=\"dpi\" name=\"Frame_DPI\" type=\"float\">300</param>\n                    <param sid=\"resUnit\" name=\"Resolution_Unit\" type=\"Name\">pixels</param>\n                    <param sid=\"pAspect\" name=\"Frame_Pixel_Aspect_Ratio\" type=\"float\">1</param>\n                    <param sid=\"bucketX\" name=\"Bucket_Width\" type=\"int\">32</param>\n                    <param sid=\"bucketY\" name=\"Bucket_Height\" type=\"int\">32</param>\n                    <param sid=\"bktOrder\" name=\"Bucket_Order\" type=\"Name\">hilbert</param>\n                    <param sid=\"bktSkip\" name=\"Skip_Existing_Buckets\" type=\"bool\">false</param>\n                    <param sid=\"region\" name=\"Render_Region\" type=\"bool\">false</param>\n                    <param sid=\"regX0\" name=\"Render_Region_Left\" type=\"float\">0</param>\n                    <param sid=\"regX1\" name=\"Render_Region_Right\" type=\"float\">1</param>\n                    <param sid=\"regY0\" name=\"Render_Region_Top\" type=\"float\">0</param>\n                    <param sid=\"regY1\" name=\"Render_Region_Bottom\" type=\"float\">1</param>\n                    <param sid=\"aa\" name=\"Render_Antialiasing\" type=\"Name\">s8</param>\n                    <param sid=\"aaFilter\" name=\"Render_Antialiasing_Filter\" type=\"Name\">gaussian</param>\n                    <param sid=\"fineRate\" name=\"Refinement_Shading_Rate\" type=\"float\">0.25</param>\n                    <param sid=\"fineThresh\" name=\"Refinement_Threshold\" type=\"float\">0.1</param>\n                    <param sid=\"bktRefine\" name=\"Refine_Bucket_Borders\" type=\"bool\">false</param>\n                    <param sid=\"rayShadow\" name=\"Ray_Tracing_Shadows\" type=\"bool\">true</param>\n                    <param sid=\"reflDepth\" name=\"Reflection_Depth\" type=\"int\">8</param>\n                    <param sid=\"refrDepth\" name=\"Refraction_Depth\" type=\"int\">8</param>\n                    <param sid=\"rayThresh\" name=\"Ray_Threshold\" type=\"float\">0.001</param>\n                    <param sid=\"subdAdapt\" name=\"Adaptive_Subdivision\" type=\"bool\">false</param>\n                    <param sid=\"subdRate\" name=\"Subdivision_Rate\" type=\"float\">10</param>\n                    <param sid=\"dispEnable\" name=\"Micropoly_Displacement\" type=\"bool\">true</param>\n                    <param sid=\"dispRate\" name=\"Displacement_Rate\" type=\"float\">1</param>\n                    <param sid=\"dispRatio\" name=\"Displacement_Ratio\" type=\"float\">4</param>\n                    <param sid=\"edgeMin\" name=\"Minimum_Edge_Length\" type=\"float\">0.0001</param>\n                    <param sid=\"dispSmooth\" name=\"Smooth_Positions\" type=\"bool\">true</param>\n                    <param sid=\"ambRad\" name=\"Ambient_Intensity\" type=\"float\">0</param>\n                    <param sid=\"ambColor\" name=\"Ambient_Color\" type=\"color\">1 1 1</param>\n                    <param sid=\"globEnable\" name=\"Enable_Indirect_Illumination\" type=\"bool\">true</param>\n                    <param sid=\"globScope\" name=\"Indirect_Illumination_Scope\" type=\"Name\">all</param>\n                    <param sid=\"globRays\" name=\"Indirect_Rays\" type=\"int\">64</param>\n                    <param sid=\"globLimit\" name=\"Indirect_Bounces\" type=\"int\">1</param>\n                    <param sid=\"globRange\" name=\"Indirect_Range\" type=\"float\">0</param>\n                    <param sid=\"globSubs\" name=\"Subsurface_Scattering\" type=\"int\">1</param>\n                    <param sid=\"globVols\" name=\"Volumetrics_Affect_Indirect\" type=\"bool\">false</param>\n                    <param sid=\"irrCache\" name=\"Enable_Irradiance_Caching\" type=\"bool\">true</param>\n                    <param sid=\"irrRays\" name=\"Irradiance_Rays\" type=\"int\">256</param>\n                    <param sid=\"globSuper\" name=\"Indirect_Supersampling\" type=\"bool\">true</param>\n                    <param sid=\"irrRate\" name=\"Irradiance_Rate\" type=\"float\">2.5</param>\n                    <param sid=\"irrRatio\" name=\"Irradiance_Ratio\" type=\"float\">6</param>\n                    <param sid=\"irrVals\" name=\"Interpolation_Values\" type=\"int\">1</param>\n                    <param sid=\"irrGrads\" name=\"Irradiance_Gradients\" type=\"Name\">both</param>\n                    <param sid=\"irrWalk\" name=\"Walkthrough_Mode\" type=\"bool\">false</param>\n                    <param sid=\"irrLEnable\" name=\"Load_Irradiance_before_Render\" type=\"bool\">false</param>\n                    <param sid=\"irrLName\" name=\"Load_Irradiance_File\" type=\"Name\"></param>\n                    <param sid=\"irrSEnable\" name=\"Save_Irradiance_after_Render\" type=\"bool\">false</param>\n                    <param sid=\"irrSName\" name=\"Save_Irradiance_File\" type=\"Name\"></param>\n                    <param sid=\"causEnable\" name=\"Enable_Direct_Caustics\" type=\"bool\">false</param>\n                    <param sid=\"causTotal\" name=\"Caustics_Total_Photons\" type=\"int\">100000</param>\n                    <param sid=\"causLocal\" name=\"Caustics_Local_Photons\" type=\"int\">32</param>\n                    <param sid=\"globCaus\" name=\"Indirect_Caustics\" type=\"Name\">refraction</param>\n                </technique>\n            </extra>\n        </node>\n        <node sid=\"shader_tree_environment\" name=\"Environment\">\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"radiance\" name=\"Environment_Intensity\" type=\"float\">1</param>\n                    <param sid=\"visCam\" name=\"Environment_Visible_to_Camera\" type=\"bool\">true</param>\n                    <param sid=\"visInd\" name=\"Environment_Visible_to_Indirect_Rays\" type=\"bool\">true</param>\n                    <param sid=\"visRefl\" name=\"Environment_Visible_to_Reflection_Rays\" type=\"bool\">true</param>\n                    <param sid=\"visRefr\" name=\"Environment_Visible_to_Refraction_Rays\" type=\"bool\">true</param>\n                </technique>\n            </extra>\n        </node>\n    </library_nodes>\n    <library_visual_scenes>\n        <visual_scene id=\"DefaultScene\">\n            <node id=\"polyRender006\" name=\"Render\" type=\"NODE\">\n                <instance_light url=\"#Light-polyRender006\" />\n            </node>\n            <node id=\"Geometry-mesh064Node\" name=\"Mesh__2_\" type=\"NODE\">\n                <translate sid=\"translation145\">0 0 0</translate>\n                <translate sid=\"translation143\">0 0 0</translate>\n                <translate sid=\"translation058\">0 0 0</translate>\n                <rotate sid=\"rotation060Y\">0 1 0 0</rotate>\n                <rotate sid=\"rotation060X\">1 0 0 0</rotate>\n                <rotate sid=\"rotation060Z\">0 0 1 0</rotate>\n                <scale sid=\"scale062\">1 1 1</scale>\n                <translate sid=\"transform144\">-0 -0 -0</translate>\n                <instance_geometry url=\"#Geometry-mesh064\">\n                    <bind_material>\n                        <technique_common>\n                            <instance_material symbol=\"Material-Default\" target=\"#Material-Default\" />\n                        </technique_common>\n                    </bind_material>\n                </instance_geometry>\n                <extra>\n                    <technique profile=\"modo401\">\n                        <param sid=\"transform144\" type=\"Name\" semantic=\"inv\">translation143</param>\n                        <param sid=\"translation143\" type=\"Name\" semantic=\"piv\">transform144</param>\n                        <param sid=\"translation145\" type=\"Name\" semantic=\"pivc\" />\n                    </technique>\n                </extra>\n            </node>\n            <node id=\"Camera-camera003Node\" name=\"Camera\" type=\"NODE\">\n                <translate sid=\"translation004\">0 0.75 4</translate>\n                <rotate sid=\"rotation005Y\">0 1 0 0</rotate>\n                <rotate sid=\"rotation005X\">1 0 0 -5</rotate>\n                <rotate sid=\"rotation005Z\">0 0 1 0</rotate>\n                <instance_camera url=\"#Camera-camera003\" />\n            </node>\n            <node id=\"Light-sunLight014Node\" name=\"Directional_Light\" type=\"NODE\">\n                <translate sid=\"translation016\">-2 2 2</translate>\n                <rotate sid=\"rotation017Y\">0 1 0 -45</rotate>\n                <rotate sid=\"rotation017X\">1 0 0 -30</rotate>\n                <rotate sid=\"rotation017Z\">0 0 1 0</rotate>\n                <instance_light url=\"#Light-sunLight014\" />\n            </node>\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"fps\" name=\"Scene_FPS\" type=\"float\">24</param>\n                    <param sid=\"sceneS\" name=\"Scene_Start_Time\" type=\"float\">0</param>\n                    <param sid=\"sceneE\" name=\"Scene_End_Time\" type=\"float\">5</param>\n                    <param sid=\"currentS\" name=\"Scene_Current_Start_Time\" type=\"float\">0</param>\n                    <param sid=\"currentE\" name=\"Scene_Current_End_Time\" type=\"float\">5</param>\n                    <param sid=\"timeSys\" name=\"Scene_Time_System\" type=\"Name\">frames</param>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"MAX3D\">\n                    <frame_rate>24</frame_rate>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"MAYA\">\n                    <start_time>0</start_time>\n                    <end_time>5</end_time>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"OKINO\" />\n            </extra>\n            <extra>\n                <technique profile=\"XSI\">\n                    <SI_Scene>\n                        <frame_rate>24</frame_rate>\n                    </SI_Scene>\n                </technique>\n            </extra>\n        </visual_scene>\n    </library_visual_scenes>\n    <scene>\n        <instance_visual_scene url=\"#DefaultScene\" />\n    </scene>\n</COLLADA>\n"
  },
  {
    "path": "resources/dae/tree.dae",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<COLLADA xmlns=\"http://www.collada.org/2005/11/COLLADASchema\" version=\"1.4.1\">\n    <asset>\n        <contributor>\n            <authoring_tool>modo 1001 [Build 109580], Mac OS X Version 10.11.6 (Build 15G1004) (Version 10.11.6 (Build 15G1004))</authoring_tool>\n            <comments>\n                Plug-in: [Build 109580];\n                Use Absolute Path: No;\n                Merge Reference Items: No;\n                Save Hidden Items: Yes;\n                Save Cameras: Yes;\n                Save Lights: Yes;\n                Save Locators: Yes;\n                Save Triangles as Triangles: No;\n                Order Vertex Maps Alphabetically: Yes;\n                Bake Matrices: No;\n                Save Vertex Normals: Yes;\n                Save UV Texture Coordinates: Yes;\n                Save Vertex Colors: Yes;\n                Save Vertex Weights: Yes;\n                Save Animation: Yes;\n                Sample Animation: No;\n                Sample Animation Start: 0;\n                Sample Animation End: 120;\n                Save modo Profile: Yes;\n                Save Maya Profile: Yes;\n                Save 3ds Max Profile: Yes;\n                Formatted Arrays: Yes;\n            </comments>\n            <source_data>file:///Users/alexanderperrin/Projects/flight/resources/tree.lxo</source_data>\n        </contributor>\n        <created>2016-10-30T03:14:55Z</created>\n        <modified>2016-10-30T03:14:55Z</modified>\n        <up_axis>Y_UP</up_axis>\n    </asset>\n    <library_materials>\n        <material id=\"Material-Default\" name=\"Default\">\n            <instance_effect url=\"#Effect-Default\" />\n        </material>\n    </library_materials>\n    <library_effects>\n        <effect id=\"Effect-Default\" name=\"Default\">\n            <profile_COMMON>\n                <technique sid=\"common\">\n                    <phong>\n                        <diffuse>\n                            <color sid=\"diffuse_effect_rgb\">0.48 0.48 0.48 1</color>\n                        </diffuse>\n                        <specular>\n                            <color sid=\"specular_effect_rgb\">0.04 0.04 0.04 1</color>\n                        </specular>\n                        <shininess>\n                            <float sid=\"specular_effect_rgb\">256</float>\n                        </shininess>\n                    </phong>\n                </technique>\n            </profile_COMMON>\n        </effect>\n    </library_effects>\n    <library_geometries>\n        <geometry id=\"Geometry-mesh024\" name=\"tree\">\n            <mesh>\n                <source id=\"Geometry-mesh024-positions\" name=\"positions\">\n                    <float_array id=\"Geometry-mesh024-positions-array\" count=\"267\">\n                        -0.114694 2.17672 -2.03989\n                        -1.74518 2.16815 -1.36644\n                        -2.29039 2.16101 0.223067\n                        -1.42802 2.16061 1.82219\n                        0.300392 2.17083 2.37456\n                        1.90843 2.18579 1.61598\n                        2.46757 2.19395 0.054564\n                        1.67221 2.18817 -1.41259\n                        0.266709 4.24726 -3.38642\n                        -2.5391 4.08501 -2.59005\n                        -3.80202 3.96171 -0.0885428\n                        -2.78222 3.94221 2.69164\n                        -0.153397 4.04903 3.90675\n                        2.57438 4.22851 2.96148\n                        3.84001 4.37012 0.509051\n                        2.96066 4.37477 -2.02039\n                        -4.90481 7.00973 -0.635486\n                        -2.84196 7.09655 -3.74203\n                        0.931792 7.23515 -4.38757\n                        4.13706 7.34659 -2.24891\n                        4.84555 7.34799 1.18643\n                        2.81159 7.24705 4.25354\n                        -0.840735 7.11517 5.1171\n                        -4.03563 7.01916 3.15518\n                        -1.45995 10.7494 5.14537\n                        -4.40823 10.7095 2.74527\n                        -4.77498 10.6813 -1.24616\n                        -2.2317 10.6847 -4.18885\n                        1.69921 10.7191 -4.38023\n                        4.60296 10.7647 -1.81404\n                        4.81141 10.7861 1.82197\n                        2.30664 10.7779 4.72463\n                        -1.73194 14.5921 4.36564\n                        -3.99371 14.6357 1.89815\n                        -3.82299 14.6241 -1.6506\n                        -1.22343 14.56 -3.9789\n                        2.26415 14.4834 -3.72254\n                        4.47172 14.4429 -1.13285\n                        4.16819 14.4601 2.16001\n                        1.58461 14.522 4.44995\n                        -3.29519 18.1168 1.15839\n                        -2.78697 18.1617 -1.73382\n                        -0.405627 18.1121 -3.42767\n                        2.46827 17.9971 -2.92014\n                        4.04332 17.8869 -0.567531\n                        3.4368 17.848 2.20116\n                        1.03142 17.8976 3.86827\n                        -1.69983 18.0056 3.4453\n                        -2.38368 21.2896 0.664578\n                        -1.83107 21.3315 -1.42772\n                        0.0422468 21.3195 -2.54998\n                        2.15275 21.257 -2.01869\n                        3.17595 21.1809 -0.182976\n                        2.54306 21.1385 1.85564\n                        0.650891 21.1528 2.94736\n                        -1.34708 21.2148 2.45835\n                        0.246808 24.0236 -1.21571\n                        1.31247 24.0089 -0.90045\n                        1.7868 23.9762 0.0558336\n                        1.41095 23.949 1.07739\n                        0.427297 23.9406 1.58823\n                        -0.581444 23.954 1.2984\n                        -1.07209 23.9819 0.362658\n                        -0.740234 24.0101 -0.686355\n                        0.34121 26.801 0.197811\n                        -0.0333804 1.47695 -1.157\n                        -1.01167 1.4718 -0.752928\n                        -1.3388 1.46752 0.200775\n                        -0.821375 1.46728 1.16025\n                        0.215671 1.47341 1.49167\n                        1.1805 1.48239 1.03652\n                        1.51598 1.48728 0.0996727\n                        1.03876 1.48381 -0.780619\n                        0 -1.24 -0.7\n                        -0.494975 -1.24 -0.494975\n                        -0.7 -1.24 0\n                        -0.494975 -1.24 0.494975\n                        0 -1.24 0.7\n                        0.494975 -1.24 0.494975\n                        0.7 -1.24 0\n                        0.494975 -1.24 -0.494975\n                        0 2.02 -0.7\n                        -0.494975 2.02 -0.494975\n                        -0.7 2.02 0\n                        -0.494975 2.02 0.494975\n                        0 2.02 0.7\n                        0.494975 2.02 0.494975\n                        0.7 2.02 0\n                        0.494975 2.02 -0.494975\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"89\" source=\"#Geometry-mesh024-positions-array\" stride=\"3\">\n                            <param name=\"X\" type=\"float\" />\n                            <param name=\"Y\" type=\"float\" />\n                            <param name=\"Z\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh024-normals\" name=\"normals\">\n                    <float_array id=\"Geometry-mesh024-normals-array\" count=\"246\">\n                        -0.367974 -0.479155 -0.796872\n                        -0.79974 -0.511879 -0.31368\n                        -0.628153 -0.586258 0.51159\n                        -0.183088 -0.660604 0.728067\n                        0.196489 -0.721225 0.664249\n                        0.703129 -0.683916 0.1946\n                        0.642289 -0.545163 -0.53876\n                        0.378037 -0.56022 -0.73705\n                        -0.760748 -0.572242 -0.30627\n                        -0.324129 -0.617571 -0.716622\n                        0.40389 -0.435429 -0.804534\n                        0.73419 -0.355498 -0.578434\n                        0.842884 -0.475754 0.251406\n                        0.239208 -0.433479 0.868836\n                        -0.200159 -0.549532 0.811142\n                        -0.586735 -0.653253 0.478543\n                        -0.275974 -0.380489 0.882647\n                        -0.914286 -0.29738 0.275038\n                        -0.871716 -0.0091405 -0.489926\n                        -0.0190297 -0.404638 -0.914279\n                        0.591056 -0.151934 -0.792192\n                        0.89276 -0.119264 -0.434461\n                        0.794899 -0.16688 0.583341\n                        0.240819 -0.0963227 0.965779\n                        -0.54981 0.142454 0.823053\n                        -0.978332 0.190569 -0.0809342\n                        -0.838537 0.327044 -0.435773\n                        0.265747 -0.105767 -0.958223\n                        0.642331 -0.283137 -0.71221\n                        0.971672 -0.0628388 -0.227828\n                        0.673356 0.207158 0.709702\n                        0.340461 0.132274 0.930908\n                        -0.901639 0.298639 -0.312828\n                        -0.872217 0.170597 -0.458404\n                        0.195866 0.322005 -0.926255\n                        0.858419 0.240523 -0.453063\n                        0.931433 0.100632 0.349721\n                        0.67023 0.192945 0.716633\n                        0.12277 0.101411 0.98724\n                        -0.77566 0.332272 0.536607\n                        -0.976339 0.0830761 -0.199649\n                        -0.527235 0.303344 -0.793729\n                        0.415884 0.245246 -0.875725\n                        0.870912 0.131018 -0.473653\n                        0.876103 0.0592094 0.478474\n                        0.661793 0.0145185 0.749546\n                        -0.319926 0.261861 0.910536\n                        -0.874253 0.31793 0.366881\n                        0.410346 0.179957 -0.893997\n                        0.89571 0.262806 -0.35866\n                        0.839987 0.287922 0.459916\n                        0.426948 0.230877 0.874306\n                        -0.439294 0.254823 0.861444\n                        -0.842477 0.0498319 0.536423\n                        -0.848922 0.0222785 -0.528048\n                        -0.519314 -0.060697 -0.852425\n                        0.711436 0.621166 0.328652\n                        0.296991 0.550198 0.780435\n                        -0.277898 0.466254 0.839869\n                        -0.804707 0.400685 0.438063\n                        -0.826467 0.393711 -0.402421\n                        -0.367159 0.446228 -0.816134\n                        0.347307 0.556777 -0.754571\n                        0.726286 0.625463 -0.285139\n                        -0.00903199 -0.784063 -0.620616\n                        -0.423974 -0.807654 -0.409806\n                        -0.587436 -0.80769 0.0505482\n                        -0.386838 -0.791004 0.473993\n                        0.0445213 -0.786005 0.616615\n                        0.448086 -0.797126 0.404733\n                        0.594034 -0.802996 -0.0481832\n                        0.401617 -0.784754 -0.472085\n                        0 -1 0\n                        -0.382683 0 -0.92388\n                        -0.92388 0 -0.382683\n                        -0.92388 0 0.382683\n                        -0.382683 0 0.92388\n                        0.382683 0 0.92388\n                        0.92388 0 0.382683\n                        0.92388 0 -0.382683\n                        0.382683 0 -0.92388\n                        0 1 0\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"82\" source=\"#Geometry-mesh024-normals-array\" stride=\"3\">\n                            <param name=\"X\" type=\"float\" />\n                            <param name=\"Y\" type=\"float\" />\n                            <param name=\"Z\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh024-Texture\" name=\"Texture\">\n                    <float_array id=\"Geometry-mesh024-Texture-array\" count=\"74\">\n                        0 0.5\n                        0 0\n                        0.125 0\n                        0.125 0.5\n                        0.25 0\n                        0.25 0.5\n                        0.375 0\n                        0.375 0.5\n                        0.5 0\n                        0.5 0.5\n                        0.625 0\n                        0.625 0.5\n                        0.75 0\n                        0.75 0.5\n                        0.875 0\n                        0.875 0.5\n                        1 0\n                        1 0.5\n                        1 1\n                        0 1\n                        0.5 1\n                        0.98097 0.654329\n                        0.98097 0.845671\n                        0.845671 0.98097\n                        0.654329 0.98097\n                        0.51903 0.845671\n                        0.51903 0.654329\n                        0.654329 0.51903\n                        0.845671 0.51903\n                        0.48097 0.845671\n                        0.345671 0.98097\n                        0.154329 0.98097\n                        0.0190301 0.845671\n                        0.0190301 0.654329\n                        0.154329 0.51903\n                        0.345671 0.51903\n                        0.48097 0.654329\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"37\" source=\"#Geometry-mesh024-Texture-array\" stride=\"2\">\n                            <param name=\"S\" type=\"float\" />\n                            <param name=\"T\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh024-Color\" name=\"Color\">\n                    <float_array id=\"Geometry-mesh024-Color-array\" count=\"204\">\n                        0.320638 0.380634 0.135941 1.24537\n                        0.295108 0.350326 0.125116 1.41374\n                        0.29472 0.349865 0.124952 1.4163\n                        0.318156 0.377688 0.134889 1.26173\n                        0.294538 0.349649 0.124875 1.4175\n                        0.316421 0.375629 0.134153 1.27318\n                        0.294682 0.349821 0.124936 1.41655\n                        0.316358 0.375553 0.134126 1.27359\n                        0.295107 0.350325 0.125116 1.41375\n                        0.318127 0.377654 0.134876 1.26192\n                        0.29557 0.350874 0.125312 1.4107\n                        0.320807 0.380835 0.136012 1.24425\n                        0.295767 0.351108 0.125396 1.4094\n                        0.322767 0.383163 0.136844 1.23132\n                        0.295558 0.350861 0.125307 1.41077\n                        0.322672 0.38305 0.136803 1.23195\n                        0.353715 0.419903 0.149965 1.02721\n                        0.35514 0.421594 0.150569 1.01781\n                        0.357498 0.424394 0.151569 1.00226\n                        0.359424 0.42668 0.152386 0.989556\n                        0.359564 0.426846 0.152445 0.988633\n                        0.35797 0.424954 0.151769 0.999144\n                        0.355716 0.422278 0.150813 1.01401\n                        0.353982 0.420219 0.150078 1.02545\n                        0.400303 0.47521 0.169718 0.719944\n                        0.399301 0.47402 0.169293 0.726554\n                        0.398891 0.473534 0.169119 0.729257\n                        0.399373 0.474106 0.169324 0.726078\n                        0.400478 0.475418 0.169792 0.718791\n                        0.401542 0.476681 0.170243 0.711775\n                        0.40184 0.477035 0.170369 0.709809\n                        0.401306 0.4764 0.170143 0.713331\n                        0.447514 0.531258 0.189735 0.408569\n                        0.447659 0.531429 0.189796 0.407617\n                        0.447545 0.531294 0.189748 0.408366\n                        0.447207 0.530892 0.189604 0.410598\n                        0.446869 0.530492 0.189461 0.412822\n                        0.446753 0.530354 0.189412 0.413587\n                        0.446913 0.530543 0.18948 0.412537\n                        0.447227 0.530916 0.189613 0.410466\n                        0.49059 0.582395 0.207998 0.12447\n                        0.49123 0.583156 0.20827 0.120247\n                        0.491033 0.582922 0.208186 0.121545\n                        0.490116 0.581833 0.207797 0.127596\n                        0.489034 0.580549 0.207339 0.134729\n                        0.488451 0.579856 0.207092 0.138576\n                        0.488644 0.580086 0.207174 0.137301\n                        0.489499 0.581101 0.207536 0.131661\n                        0.509462 0.6048 0.216 3.0456\n                        0.291127 0.3456 0.123429 1.44\n                        0.27451 0.168963 0.0495673 1\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"51\" source=\"#Geometry-mesh024-Color-array\" stride=\"4\">\n                            <param name=\"R\" type=\"float\" />\n                            <param name=\"G\" type=\"float\" />\n                            <param name=\"B\" type=\"float\" />\n                            <param name=\"A\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <source id=\"Geometry-mesh024-Falloff\" name=\"Falloff\">\n                    <float_array id=\"Geometry-mesh024-Falloff-array\" count=\"10\">\n                        0.382513\n                        1\n                        0.388933\n                        0.388651\n                        0.384866\n                        0.387082\n                        0.39403\n                        0.390349\n                        0.380323\n                        0\n                    </float_array>\n                    <technique_common>\n                        <accessor count=\"10\" source=\"#Geometry-mesh024-Falloff-array\" stride=\"1\">\n                            <param name=\"WEIGHT\" type=\"float\" />\n                        </accessor>\n                    </technique_common>\n                </source>\n                <vertices id=\"Geometry-mesh024-vertices\">\n                    <input semantic=\"POSITION\" source=\"#Geometry-mesh024-positions\" />\n                </vertices>\n                <polylist count=\"82\" material=\"Material-Default\">\n                    <input semantic=\"VERTEX\" source=\"#Geometry-mesh024-vertices\" offset=\"0\" />\n                    <input semantic=\"NORMAL\" source=\"#Geometry-mesh024-normals\" offset=\"1\" />\n                    <input semantic=\"TEXCOORD\" source=\"#Geometry-mesh024-Texture\" offset=\"2\" set=\"0\" />\n                    <input semantic=\"COLOR\" source=\"#Geometry-mesh024-Color\" offset=\"3\" set=\"0\" />\n                    <input semantic=\"WEIGHT\" source=\"#Geometry-mesh024-Falloff\" offset=\"4\" set=\"0\" />\n                    <vcount>4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 8 4 4 4 4 4 4 4 4 8</vcount>\n                    <p>8 0 0 0 0 0 0 1 1 1 1 0 2 2 1 9 0 3 3 2 9 1 3 3 2 1 1 2 2 1 2 1 4 4 1 10 1 5 5 3 10 2 5 5 3 2 2 4 4 1 3 2 6 6 1 11 2 7 7 4 11 3 7 7 4 3 3 6 6 1 4 3 8 8 1 12 3 9 9 5 12 4 9 9 5 4 4 8 8 1 5 4 10 10 1 13 4 11 11 6 13 5 11 11 6 5 5 10 10 1 6 5 12 12 1 14 5 13 13 7 14 6 13 13 7 6 6 12 12 1 7 6 14 14 1 15 6 15 15 8 15 7 15 15 8 7 7 14 14 1 0 7 16 1 1 8 7 17 0 0 10 8 1 5 3 16 8 16 16 9 17 8 18 17 9 9 8 19 3 2 9 9 1 3 2 17 9 16 17 9 18 9 18 18 9 8 9 19 0 0 8 10 1 0 0 18 10 16 18 9 19 10 18 19 9 15 10 19 15 8 15 11 1 15 8 19 11 16 19 9 20 11 18 20 9 14 11 19 13 7 14 12 1 13 7 20 12 16 20 9 21 12 18 21 9 13 12 19 11 6 13 13 1 11 6 21 13 16 21 9 22 13 18 22 9 12 13 19 9 5 12 14 1 9 5 22 14 16 22 9 23 14 18 23 9 11 14 19 7 4 11 15 1 7 4 23 15 16 23 9 16 15 18 16 9 10 15 19 5 3 22 16 1 22 9 24 16 16 24 9 25 16 18 25 9 23 16 19 23 9 23 17 1 23 9 25 17 16 25 9 26 17 18 26 9 16 17 19 16 9 16 18 1 16 9 26 18 16 26 9 27 18 18 27 9 17 18 19 17 9 17 19 1 17 9 27 19 16 27 9 28 19 18 28 9 18 19 19 18 9 18 20 1 18 9 28 20 16 28 9 29 20 18 29 9 19 20 19 19 9 19 21 1 19 9 29 21 16 29 9 30 21 18 30 9 20 21 19 20 9 20 22 1 20 9 30 22 16 30 9 31 22 18 31 9 21 22 19 21 9 21 23 1 21 9 31 23 16 31 9 24 23 18 24 9 22 23 19 22 9 24 24 1 24 9 32 24 16 32 9 33 24 18 33 9 25 24 19 25 9 25 25 1 25 9 33 25 16 33 9 34 25 18 34 9 26 25 19 26 9 26 26 1 26 9 34 26 16 34 9 35 26 18 35 9 27 26 19 27 9 27 27 1 27 9 35 27 16 35 9 36 27 18 36 9 28 27 19 28 9 28 28 1 28 9 36 28 16 36 9 37 28 18 37 9 29 28 19 29 9 29 29 1 29 9 37 29 16 37 9 38 29 18 38 9 30 29 19 30 9 30 30 1 30 9 38 30 16 38 9 39 30 18 39 9 31 30 19 31 9 31 31 1 31 9 39 31 16 39 9 32 31 18 32 9 24 31 19 24 9 33 32 1 33 9 40 32 16 40 9 41 32 18 41 9 34 32 19 34 9 34 33 1 34 9 41 33 16 41 9 42 33 18 42 9 35 33 19 35 9 35 34 1 35 9 42 34 16 42 9 43 34 18 43 9 36 34 19 36 9 36 35 1 36 9 43 35 16 43 9 44 35 18 44 9 37 35 19 37 9 37 36 1 37 9 44 36 16 44 9 45 36 18 45 9 38 36 19 38 9 38 37 1 38 9 45 37 16 45 9 46 37 18 46 9 39 37 19 39 9 39 38 1 39 9 46 38 16 46 9 47 38 18 47 9 32 38 19 32 9 32 39 1 32 9 47 39 16 47 9 40 39 18 40 9 33 39 19 33 9 40 40 1 40 9 48 40 16 48 9 49 40 18 48 9 41 40 19 41 9 41 41 1 41 9 49 41 16 48 9 50 41 18 48 9 42 41 19 42 9 42 42 1 42 9 50 42 16 48 9 51 42 18 48 9 43 42 19 43 9 43 43 1 43 9 51 43 16 48 9 52 43 18 48 9 44 43 19 44 9 44 44 1 44 9 52 44 16 48 9 53 44 18 48 9 45 44 19 45 9 45 45 1 45 9 53 45 16 48 9 54 45 18 48 9 46 45 19 46 9 46 46 1 46 9 54 46 16 48 9 55 46 18 48 9 47 46 19 47 9 47 47 1 47 9 55 47 16 48 9 48 47 18 48 9 40 47 19 40 9 50 48 1 48 9 56 48 16 48 9 57 48 18 48 9 51 48 19 48 9 51 49 1 48 9 57 49 16 48 9 58 49 18 48 9 52 49 19 48 9 52 50 1 48 9 58 50 16 48 9 59 50 18 48 9 53 50 19 48 9 53 51 1 48 9 59 51 16 48 9 60 51 18 48 9 54 51 19 48 9 54 52 1 48 9 60 52 16 48 9 61 52 18 48 9 55 52 19 48 9 55 53 1 48 9 61 53 16 48 9 62 53 18 48 9 48 53 19 48 9 48 54 1 48 9 62 54 16 48 9 63 54 18 48 9 49 54 19 48 9 49 55 1 48 9 63 55 16 48 9 56 55 18 48 9 50 55 19 48 9 58 56 1 48 9 64 56 20 48 9 59 56 19 48 9 59 57 1 48 9 64 57 20 48 9 60 57 19 48 9 60 58 1 48 9 64 58 20 48 9 61 58 19 48 9 61 59 1 48 9 64 59 20 48 9 62 59 19 48 9 62 60 1 48 9 64 60 20 48 9 63 60 19 48 9 63 61 1 48 9 64 61 20 48 9 56 61 19 48 9 56 62 1 48 9 64 62 8 48 9 57 62 19 48 9 57 63 1 48 9 64 63 20 48 9 58 63 19 48 9 0 0 1 1 1 65 64 16 49 9 66 65 18 49 9 1 0 19 2 1 1 1 1 2 1 66 65 16 49 9 67 66 18 49 9 2 1 19 4 1 2 2 1 4 1 67 66 16 49 9 68 67 18 49 9 3 2 19 6 1 3 3 1 6 1 68 67 16 49 9 69 68 18 49 9 4 3 19 8 1 4 4 1 8 1 69 68 16 49 9 70 69 18 49 9 5 4 19 10 1 5 5 1 10 1 70 69 16 49 9 71 70 18 49 9 6 5 19 12 1 6 6 1 12 1 71 70 16 49 9 72 71 18 49 9 7 6 19 14 1 7 7 1 14 1 72 71 16 49 9 65 64 18 49 9 0 7 19 1 1 73 72 21 50 9 80 72 22 50 9 79 72 23 50 9 78 72 24 50 9 77 72 25 50 9 76 72 26 50 9 75 72 27 50 9 74 72 28 50 9 81 73 0 50 9 73 73 1 50 9 74 73 2 50 9 82 73 3 50 9 82 74 3 50 9 74 74 2 50 9 75 74 4 50 9 83 74 5 50 9 83 75 5 50 9 75 75 4 50 9 76 75 6 50 9 84 75 7 50 9 84 76 7 50 9 76 76 6 50 9 77 76 8 50 9 85 76 9 50 9 85 77 9 50 9 77 77 8 50 9 78 77 10 50 9 86 77 11 50 9 86 78 11 50 9 78 78 10 50 9 79 78 12 50 9 87 78 13 50 9 87 79 13 50 9 79 79 12 50 9 80 79 14 50 9 88 79 15 50 9 88 80 15 50 9 80 80 14 50 9 73 80 16 50 9 81 80 17 50 9 81 81 29 50 9 82 81 30 50 9 83 81 31 50 9 84 81 32 50 9 85 81 33 50 9 86 81 34 50 9 87 81 35 50 9 88 81 36 50 9</p>\n                </polylist>\n                <extra>\n                    <technique profile=\"modo401\">\n                        <param sid=\"render\" name=\"Render\" type=\"Name\">default</param>\n                        <param sid=\"dissolve\" name=\"Dissolve\" type=\"float\">0</param>\n                        <param sid=\"curves\" name=\"Render_Curves\" type=\"bool\">false</param>\n                        <param sid=\"radius\" name=\"Curve_Radius\" type=\"float\">0.05</param>\n                    </technique>\n                </extra>\n            </mesh>\n        </geometry>\n    </library_geometries>\n    <library_lights>\n        <light id=\"Light-polyRender006\" name=\"Render\">\n            <technique_common>\n                <ambient>\n                    <color sid=\"ambient_light_rgb\">0 0 0</color>\n                </ambient>\n            </technique_common>\n        </light>\n    </library_lights>\n    <library_nodes id=\"shader_tree\" name=\"Shader_Tree\">\n        <node sid=\"shader_tree_render\" name=\"Render\">\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"first\" name=\"Frame_Range_First\" type=\"int\">1</param>\n                    <param sid=\"last\" name=\"Frame_Range_Last\" type=\"int\">120</param>\n                    <param sid=\"dpi\" name=\"Frame_DPI\" type=\"float\">300</param>\n                    <param sid=\"resUnit\" name=\"Resolution_Unit\" type=\"Name\">pixels</param>\n                    <param sid=\"pAspect\" name=\"Frame_Pixel_Aspect_Ratio\" type=\"float\">1</param>\n                    <param sid=\"bucketX\" name=\"Bucket_Width\" type=\"int\">32</param>\n                    <param sid=\"bucketY\" name=\"Bucket_Height\" type=\"int\">32</param>\n                    <param sid=\"bktOrder\" name=\"Bucket_Order\" type=\"Name\">hilbert</param>\n                    <param sid=\"bktSkip\" name=\"Skip_Existing_Buckets\" type=\"bool\">false</param>\n                    <param sid=\"region\" name=\"Render_Region\" type=\"bool\">false</param>\n                    <param sid=\"regX0\" name=\"Render_Region_Left\" type=\"float\">0</param>\n                    <param sid=\"regX1\" name=\"Render_Region_Right\" type=\"float\">1</param>\n                    <param sid=\"regY0\" name=\"Render_Region_Top\" type=\"float\">0</param>\n                    <param sid=\"regY1\" name=\"Render_Region_Bottom\" type=\"float\">1</param>\n                    <param sid=\"aa\" name=\"Render_Antialiasing\" type=\"Name\">s8</param>\n                    <param sid=\"aaFilter\" name=\"Render_Antialiasing_Filter\" type=\"Name\">gaussian</param>\n                    <param sid=\"fineRate\" name=\"Refinement_Shading_Rate\" type=\"float\">0.25</param>\n                    <param sid=\"fineThresh\" name=\"Refinement_Threshold\" type=\"float\">0.1</param>\n                    <param sid=\"bktRefine\" name=\"Refine_Bucket_Borders\" type=\"bool\">false</param>\n                    <param sid=\"rayShadow\" name=\"Ray_Tracing_Shadows\" type=\"bool\">true</param>\n                    <param sid=\"reflDepth\" name=\"Reflection_Depth\" type=\"int\">8</param>\n                    <param sid=\"refrDepth\" name=\"Refraction_Depth\" type=\"int\">8</param>\n                    <param sid=\"rayThresh\" name=\"Ray_Threshold\" type=\"float\">0.001</param>\n                    <param sid=\"subdAdapt\" name=\"Adaptive_Subdivision\" type=\"bool\">false</param>\n                    <param sid=\"subdRate\" name=\"Subdivision_Rate\" type=\"float\">10</param>\n                    <param sid=\"dispEnable\" name=\"Micropoly_Displacement\" type=\"bool\">true</param>\n                    <param sid=\"dispRate\" name=\"Displacement_Rate\" type=\"float\">1</param>\n                    <param sid=\"dispRatio\" name=\"Displacement_Ratio\" type=\"float\">4</param>\n                    <param sid=\"edgeMin\" name=\"Minimum_Edge_Length\" type=\"float\">0.0001</param>\n                    <param sid=\"dispSmooth\" name=\"Smooth_Positions\" type=\"bool\">true</param>\n                    <param sid=\"ambRad\" name=\"Ambient_Intensity\" type=\"float\">0</param>\n                    <param sid=\"ambColor\" name=\"Ambient_Color\" type=\"color\">1 1 1</param>\n                    <param sid=\"globEnable\" name=\"Enable_Indirect_Illumination\" type=\"bool\">true</param>\n                    <param sid=\"globScope\" name=\"Indirect_Illumination_Scope\" type=\"Name\">all</param>\n                    <param sid=\"globRays\" name=\"Indirect_Rays\" type=\"int\">64</param>\n                    <param sid=\"globLimit\" name=\"Indirect_Bounces\" type=\"int\">1</param>\n                    <param sid=\"globRange\" name=\"Indirect_Range\" type=\"float\">0</param>\n                    <param sid=\"globSubs\" name=\"Subsurface_Scattering\" type=\"int\">1</param>\n                    <param sid=\"globVols\" name=\"Volumetrics_Affect_Indirect\" type=\"bool\">false</param>\n                    <param sid=\"irrCache\" name=\"Enable_Irradiance_Caching\" type=\"bool\">true</param>\n                    <param sid=\"irrRays\" name=\"Irradiance_Rays\" type=\"int\">256</param>\n                    <param sid=\"globSuper\" name=\"Indirect_Supersampling\" type=\"bool\">true</param>\n                    <param sid=\"irrRate\" name=\"Irradiance_Rate\" type=\"float\">2.5</param>\n                    <param sid=\"irrRatio\" name=\"Irradiance_Ratio\" type=\"float\">6</param>\n                    <param sid=\"irrVals\" name=\"Interpolation_Values\" type=\"int\">1</param>\n                    <param sid=\"irrGrads\" name=\"Irradiance_Gradients\" type=\"Name\">both</param>\n                    <param sid=\"irrWalk\" name=\"Walkthrough_Mode\" type=\"bool\">false</param>\n                    <param sid=\"irrLEnable\" name=\"Load_Irradiance_before_Render\" type=\"bool\">false</param>\n                    <param sid=\"irrLName\" name=\"Load_Irradiance_File\" type=\"Name\"></param>\n                    <param sid=\"irrSEnable\" name=\"Save_Irradiance_after_Render\" type=\"bool\">false</param>\n                    <param sid=\"irrSName\" name=\"Save_Irradiance_File\" type=\"Name\"></param>\n                    <param sid=\"causEnable\" name=\"Enable_Direct_Caustics\" type=\"bool\">false</param>\n                    <param sid=\"causTotal\" name=\"Caustics_Total_Photons\" type=\"int\">100000</param>\n                    <param sid=\"causLocal\" name=\"Caustics_Local_Photons\" type=\"int\">32</param>\n                    <param sid=\"globCaus\" name=\"Indirect_Caustics\" type=\"Name\">refraction</param>\n                </technique>\n            </extra>\n        </node>\n        <node sid=\"shader_tree_environment\" name=\"Environment\">\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"radiance\" name=\"Environment_Intensity\" type=\"float\">1</param>\n                    <param sid=\"visCam\" name=\"Environment_Visible_to_Camera\" type=\"bool\">true</param>\n                    <param sid=\"visInd\" name=\"Environment_Visible_to_Indirect_Rays\" type=\"bool\">true</param>\n                    <param sid=\"visRefl\" name=\"Environment_Visible_to_Reflection_Rays\" type=\"bool\">true</param>\n                    <param sid=\"visRefr\" name=\"Environment_Visible_to_Refraction_Rays\" type=\"bool\">true</param>\n                </technique>\n            </extra>\n        </node>\n    </library_nodes>\n    <library_visual_scenes>\n        <visual_scene id=\"DefaultScene\">\n            <node id=\"polyRender006\" name=\"Render\" type=\"NODE\">\n                <instance_light url=\"#Light-polyRender006\" />\n            </node>\n            <node id=\"Geometry-mesh024Node\" name=\"tree\" type=\"NODE\">\n                <instance_geometry url=\"#Geometry-mesh024\">\n                    <bind_material>\n                        <technique_common>\n                            <instance_material symbol=\"Material-Default\" target=\"#Material-Default\" />\n                        </technique_common>\n                    </bind_material>\n                </instance_geometry>\n            </node>\n            <extra>\n                <technique profile=\"modo401\">\n                    <param sid=\"fps\" name=\"Scene_FPS\" type=\"float\">24</param>\n                    <param sid=\"sceneS\" name=\"Scene_Start_Time\" type=\"float\">0</param>\n                    <param sid=\"sceneE\" name=\"Scene_End_Time\" type=\"float\">5</param>\n                    <param sid=\"currentS\" name=\"Scene_Current_Start_Time\" type=\"float\">0</param>\n                    <param sid=\"currentE\" name=\"Scene_Current_End_Time\" type=\"float\">5</param>\n                    <param sid=\"timeSys\" name=\"Scene_Time_System\" type=\"Name\">frames</param>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"MAX3D\">\n                    <frame_rate>24</frame_rate>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"MAYA\">\n                    <start_time>0</start_time>\n                    <end_time>5</end_time>\n                </technique>\n            </extra>\n            <extra>\n                <technique profile=\"OKINO\" />\n            </extra>\n            <extra>\n                <technique profile=\"XSI\">\n                    <SI_Scene>\n                        <frame_rate>24</frame_rate>\n                    </SI_Scene>\n                </technique>\n            </extra>\n        </visual_scene>\n    </library_visual_scenes>\n    <scene>\n        <instance_visual_scene url=\"#DefaultScene\" />\n    </scene>\n</COLLADA>\n"
  },
  {
    "path": "src/FBXLoader.js",
    "content": "/**\n * @author yamahigashi https://github.com/yamahigashi\n *\n * This loader loads FBX file in *ASCII and version 7 format*.\n *\n * Support\n *  - mesh\n *  - skinning\n *  - normal / uv\n *\n *  Not Support\n *  - material\n *  - texture\n *  - morph\n */\n\n( function () {\n\n  THREE.FBXLoader = function ( manager ) {\n\n    THREE.Loader.call( this );\n    this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n    this.textureLoader = null;\n    this.textureBasePath = null;\n\n  };\n\n  THREE.FBXLoader.prototype = Object.create( THREE.Loader.prototype );\n\n  THREE.FBXLoader.prototype.constructor = THREE.FBXLoader;\n\n  THREE.FBXLoader.prototype.load = function ( url, onLoad, onProgress, onError ) {\n\n    var scope = this;\n\n    var loader = new THREE.XHRLoader( scope.manager );\n    // loader.setCrossOrigin( this.crossOrigin );\n    loader.load( url, function ( text ) {\n\n      if ( !scope.isFbxFormatASCII( text ) ) {\n\n        console.warn( 'FBXLoader: !!! FBX Binary format not supported !!!' );\n\n      } else if ( !scope.isFbxVersionSupported( text ) ) {\n\n        console.warn( 'FBXLoader: !!! FBX Version below 7 not supported !!!' );\n\n      } else {\n\n        scope.textureBasePath = scope.extractUrlBase( url );\n        onLoad( scope.parse( text ) );\n\n      }\n\n    }, onProgress, onError );\n\n  };\n\n  THREE.FBXLoader.prototype.setCrossOrigin = function ( value ) {\n\n    this.crossOrigin = value;\n\n  };\n\n  THREE.FBXLoader.prototype.isFbxFormatASCII = function ( body ) {\n\n    CORRECT = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\\\', 'F', 'B', 'X', '\\\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\\\', '\\\\' ];\n\n    var cursor = 0;\n    var read = function ( offset ) {\n\n      var result = body[ offset - 1 ];\n      body = body.slice( cursor + offset );\n      cursor++;\n      return result;\n\n    };\n\n    for ( var i = 0; i < CORRECT.length; ++i ) {\n\n      num = read( 1 );\n      if ( num === CORRECT[ i ] ) {\n\n        return false;\n\n      }\n\n    }\n\n    return true;\n\n  };\n\n  THREE.FBXLoader.prototype.isFbxVersionSupported = function ( body ) {\n\n    var versionExp = /FBXVersion: (\\d+)/;\n    match = body.match( versionExp );\n    if ( match ) {\n\n      var version = parseInt( match[ 1 ] );\n      console.log( 'FBXLoader: FBX version ' + version );\n      return version >= 7000;\n\n    }\n    return false;\n\n  };\n\n  THREE.FBXLoader.prototype.parse = function ( text ) {\n\n    var scope = this;\n\n    console.time( 'FBXLoader' );\n\n    console.time( 'FBXLoader: TextParser' );\n    var nodes = new FBXParser().parse( text );\n    console.timeEnd( 'FBXLoader: TextParser' );\n\n    console.time( 'FBXLoader: ObjectParser' );\n    scope.hierarchy = ( new Bones() ).parseHierarchy( nodes );\n    scope.weights = ( new Weights() ).parse( nodes, scope.hierarchy );\n    scope.animations = ( new Animation() ).parse( nodes, scope.hierarchy );\n    scope.textures = ( new Textures() ).parse( nodes, scope.hierarchy );\n    console.timeEnd( 'FBXLoader: ObjectParser' );\n\n    console.time( 'FBXLoader: GeometryParser' );\n    geometries = this.parseGeometries( nodes );\n    console.timeEnd( 'FBXLoader: GeometryParser' );\n\n    var container = new THREE.Group();\n\n    for ( var i = 0; i < geometries.length; ++i ) {\n\n      if ( geometries[ i ] === undefined ) {\n\n        continue;\n\n      }\n\n      container.add( geometries[ i ] );\n\n      //wireframe = new THREE.WireframeHelper( geometries[i], 0x00ff00 );\n      //container.add( wireframe );\n\n      //vnh = new THREE.VertexNormalsHelper( geometries[i], 0.6 );\n      //container.add( vnh );\n\n      //skh = new THREE.SkeletonHelper( geometries[i] );\n      //container.add( skh );\n\n      // container.add( new THREE.BoxHelper( geometries[i] ) );\n\n    }\n\n    console.timeEnd( 'FBXLoader' );\n    return container;\n\n  };\n\n  THREE.FBXLoader.prototype.parseGeometries = function ( node ) {\n\n    // has not geo, return []\n    if ( !( 'Geometry' in node.Objects.subNodes ) ) {\n\n      return [];\n\n    }\n\n    // has many\n    var geoCount = 0;\n    for ( var geo in node.Objects.subNodes.Geometry ) {\n\n      if ( geo.match( /^\\d+$/ ) ) {\n\n        geoCount++;\n\n      }\n\n    }\n\n    var res = [];\n    if ( geoCount > 0 ) {\n\n      for ( geo in node.Objects.subNodes.Geometry ) {\n\n        if ( node.Objects.subNodes.Geometry[ geo ].attrType === 'Mesh' ) {\n\n          res.push( this.parseGeometry( node.Objects.subNodes.Geometry[ geo ], node ) );\n\n        }\n\n      }\n\n    } else {\n\n      res.push( this.parseGeometry( node.Objects.subNodes.Geometry, node ) );\n\n    }\n\n    return res;\n\n  };\n\n  THREE.FBXLoader.prototype.parseGeometry = function ( node, nodes ) {\n\n    geo = ( new Geometry() ).parse( node );\n    geo.addBones( this.hierarchy.hierarchy );\n\n    //*\n    var geometry = new THREE.BufferGeometry();\n    geometry.name = geo.name;\n    geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( geo.vertices ), 3 ) );\n\n    if ( geo.normals !== undefined && geo.normals.length > 0 ) {\n\n      geometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( geo.normals ), 3 ) );\n\n    }\n\n    if ( geo.uvs !== undefined && geo.uvs.length > 0 ) {\n\n      geometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( geo.uvs ), 2 ) );\n\n    }\n\n    if ( geo.indices !== undefined && geo.indices.length > 65535 ) {\n\n      geometry.setIndex( new THREE.BufferAttribute( new Uint32Array( geo.indices ), 1 ) );\n\n    } else if ( geo.indices !== undefined ) {\n\n      geometry.setIndex( new THREE.BufferAttribute( new Uint16Array( geo.indices ), 1 ) );\n\n    }\n\n    geometry.verticesNeedUpdate = true;\n    geometry.computeBoundingSphere();\n    geometry.computeBoundingBox();\n\n    // TODO: texture & material support\n    var texture;\n    var texs = this.textures.getById( nodes.searchConnectionParent( geo.id ) );\n    if ( texs !== undefined && texs.length > 0 ) {\n\n      if ( this.textureLoader === null ) {\n\n        this.textureLoader = new THREE.TextureLoader();\n\n      }\n      texture = this.textureLoader.load( this.textureBasePath + '/' + texs[ 0 ].fileName );\n\n    }\n\n    var material;\n    if ( texture !== undefined ) {\n\n      material = new THREE.MeshBasicMaterial( { map: texture } );\n\n    } else {\n\n      material = new THREE.MeshBasicMaterial( { color: 0x3300ff } );\n\n    }\n\n    geometry = new THREE.Geometry().fromBufferGeometry( geometry );\n    geometry.bones = geo.bones;\n    geometry.skinIndices = this.weights.skinIndices;\n    geometry.skinWeights = this.weights.skinWeights;\n\n    var mesh = null;\n    if ( geo.bones === undefined || geo.skins === undefined || this.animations === undefined || this.animations.length === 0 ) {\n\n      mesh = new THREE.Mesh( geometry, material );\n\n    } else {\n\n      material.skinning = true;\n      mesh = new THREE.SkinnedMesh( geometry, material );\n      this.addAnimation( mesh, this.weights.matrices, this.animations );\n\n    }\n\n    return mesh;\n\n  };\n\n  THREE.FBXLoader.prototype.addAnimation = function ( mesh, matrices, animations ) {\n\n    var animationdata = { \"name\": 'animationtest', \"fps\": 30, \"length\": animations.length, \"hierarchy\": [] };\n\n    for ( var i = 0; i < mesh.geometry.bones.length; ++i ) {\n\n      var name = mesh.geometry.bones[ i ].name;\n      name = name.replace( /.*:/, '' );\n      animationdata.hierarchy.push( { parent: mesh.geometry.bones[ i ].parent, name: name, keys: [] } );\n\n    }\n\n    var hasCurve = function ( animNode, attr ) {\n\n      if ( animNode === undefined ) {\n\n        return false;\n\n      }\n\n      var attrNode;\n      switch ( attr ) {\n\n        case 'S':\n          if ( animNode.S === undefined ) {\n\n            return false;\n\n          }\n          attrNode = animNode.S;\n          break;\n\n        case 'R':\n          if ( animNode.R === undefined ) {\n\n            return false;\n\n          }\n          attrNode = animNode.R;\n          break;\n\n        case 'T':\n          if ( animNode.T === undefined ) {\n\n            return false;\n\n          }\n          attrNode = animNode.T;\n          break;\n      }\n\n      if ( attrNode.curves.x === undefined ) {\n\n        return false;\n\n      }\n\n      if ( attrNode.curves.y === undefined ) {\n\n        return false;\n\n      }\n\n      if ( attrNode.curves.z === undefined ) {\n\n        return false;\n\n      }\n\n      return true;\n\n    };\n\n    var hasKeyOnFrame = function ( attrNode, frame ) {\n\n      var x = isKeyExistOnFrame( attrNode.curves.x, frame );\n      var y = isKeyExistOnFrame( attrNode.curves.y, frame );\n      var z = isKeyExistOnFrame( attrNode.curves.z, frame );\n\n      return x && y && z;\n\n    };\n\n    var isKeyExistOnFrame = function ( curve, frame ) {\n\n      var value = curve.values[ frame ];\n      return value !== undefined;\n\n    };\n\n    var genKey = function ( animNode, bone ) {\n\n      // key initialize with its bone's bind pose at first\n      var key = {};\n      key.time = frame / animations.fps; // TODO:\n      key.pos = bone.pos;\n      key.rot = bone.rotq;\n      key.scl = bone.scl;\n\n      if ( animNode === undefined ) {\n\n        return key;\n\n      }\n\n      try {\n\n        if ( hasCurve( animNode, 'T' ) && hasKeyOnFrame( animNode.T, frame ) ) {\n\n          var pos = new THREE.Vector3(\n            animNode.T.curves.x.values[ frame ],\n            animNode.T.curves.y.values[ frame ],\n            animNode.T.curves.z.values[ frame ] );\n          key.pos = [ pos.x, pos.y, pos.z ];\n\n        } else {\n\n          delete key.pos;\n\n        }\n\n        if ( hasCurve( animNode, 'R' ) && hasKeyOnFrame( animNode.R, frame ) ) {\n\n          var rx = degToRad( animNode.R.curves.x.values[ frame ] );\n          var ry = degToRad( animNode.R.curves.y.values[ frame ] );\n          var rz = degToRad( animNode.R.curves.z.values[ frame ] );\n          var eul = new THREE.Vector3( rx, ry, rz );\n          var rot = quatFromVec( eul.x, eul.y, eul.z );\n          key.rot = [ rot.x, rot.y, rot.z, rot.w ];\n\n        } else {\n\n          delete key.rot;\n\n        }\n\n        if ( hasCurve( animNode, 'S' ) && hasKeyOnFrame( animNode.S, frame ) ) {\n\n          var scl = new THREE.Vector3(\n            animNode.S.curves.x.values[ frame ],\n            animNode.S.curves.y.values[ frame ],\n            animNode.S.curves.z.values[ frame ] );\n          key.scl = [ scl.x, scl.y, scl.z ];\n\n        } else {\n\n          delete key.scl;\n\n        }\n\n      } catch ( e ) {\n\n        // curve is not full plotted\n        console.log( bone );\n        console.log( e );\n\n      }\n\n      return key;\n\n    };\n\n    var bones = mesh.geometry.bones;\n    for ( frame = 0; frame < animations.frames; frame++ ) {\n\n      for ( i = 0; i < bones.length; i++ ) {\n\n        var bone = bones[ i ];\n        var animNode = animations.curves[ i ];\n\n        for ( var j = 0; j < animationdata.hierarchy.length; j++ ) {\n\n          if ( animationdata.hierarchy[ j ].name === bone.name ) {\n\n            animationdata.hierarchy[ j ].keys.push( genKey( animNode, bone ) );\n\n          }\n\n        }\n\n      }\n\n    }\n\n    if ( mesh.geometry.animations === undefined ) {\n\n      mesh.geometry.animations = [];\n\n    }\n\n    mesh.geometry.animations.push( THREE.AnimationClip.parseAnimation( animationdata, mesh.geometry.bones ) );\n\n  };\n\n  THREE.FBXLoader.prototype.parseMaterials = function ( node ) {\n\n    // has not mat, return []\n    if ( !( 'Material' in node.subNodes ) ) {\n\n      return [];\n\n    }\n\n    // has many\n    var matCount = 0;\n    for ( var mat in node.subNodes.Materials ) {\n\n      if ( mat.match( /^\\d+$/ ) ) {\n\n        matCount++;\n\n      }\n\n    }\n\n    var res = [];\n    if ( matCount > 0 ) {\n\n      for ( mat in node.subNodes.Material ) {\n\n        res.push( parseMaterial( node.subNodes.Material[ mat ] ) );\n\n      }\n\n    } else {\n\n      res.push( parseMaterial( node.subNodes.Material ) );\n\n    }\n\n    return res;\n\n  };\n\n  // TODO\n  THREE.FBXLoader.prototype.parseMaterial = function ( node ) {\n\n    console.log( node );\n\n  };\n\n  THREE.FBXLoader.prototype.loadFile = function ( url, onLoad, onProgress, onError, responseType ) {\n\n    var loader = new THREE.XHRLoader( this.manager );\n\n    loader.setResponseType( responseType );\n\n    var request = loader.load( url, function ( result ) {\n\n      onLoad( result );\n\n    }, onProgress, onError );\n\n    return request;\n\n  };\n\n  THREE.FBXLoader.prototype.loadFileAsBuffer = function ( url, onload, onProgress, onError ) {\n\n    this.loadFile( url, onLoad, onProgress, onError, 'arraybuffer' );\n\n  };\n\n  THREE.FBXLoader.prototype.loadFileAsText = function ( url, onLoad, onProgress, onError ) {\n\n    this.loadFile( url, onLoad, onProgress, onError, 'text' );\n\n  };\n\n  /* ----------------------------------------------------------------- */\n\n  function FBXNodes() {}\n\n  FBXNodes.prototype.add = function ( key, val ) {\n\n    this[ key ] = val;\n\n  };\n\n  FBXNodes.prototype.searchConnectionParent = function ( id ) {\n\n    if ( this.__cache_search_connection_parent === undefined ) {\n\n      this.__cache_search_connection_parent = [];\n\n    }\n\n    if ( this.__cache_search_connection_parent[ id ] !== undefined ) {\n\n      return this.__cache_search_connection_parent[ id ];\n\n    } else {\n\n      this.__cache_search_connection_parent[ id ] = [];\n\n    }\n\n    var conns = this.Connections.properties.connections;\n\n    var results = [];\n    for ( var i = 0; i < conns.length; ++i ) {\n\n      if ( conns[ i ][ 0 ] === id ) {\n\n        // 0 means scene root\n        var res = conns[ i ][ 1 ] === 0 ? -1 : conns[ i ][ 1 ];\n        results.push( res );\n\n      }\n\n    }\n\n    if ( results.length > 0 ) {\n\n      this.__cache_search_connection_parent[ id ] = this.__cache_search_connection_parent[ id ].concat( results );\n      return results;\n\n    } else {\n\n      this.__cache_search_connection_parent[ id ] = [ -1 ];\n      return [ -1 ];\n\n    }\n\n  };\n\n  FBXNodes.prototype.searchConnectionChildren = function ( id ) {\n\n    if ( this.__cache_search_connection_children === undefined ) {\n\n      this.__cache_search_connection_children = [];\n\n    }\n\n    if ( this.__cache_search_connection_children[ id ] !== undefined ) {\n\n      return this.__cache_search_connection_children[ id ];\n\n    } else {\n\n      this.__cache_search_connection_children[ id ] = [];\n\n    }\n\n    var conns = this.Connections.properties.connections;\n\n    var res = [];\n    for ( var i = 0; i < conns.length; ++i ) {\n\n      if ( conns[ i ][ 1 ] === id ) {\n\n        // 0 means scene root\n        res.push( conns[ i ][ 0 ] === 0 ? -1 : conns[ i ][ 0 ] );\n        // there may more than one kid, then search to the end\n\n      }\n\n    }\n\n    if ( res.length > 0 ) {\n\n      this.__cache_search_connection_children[ id ] = this.__cache_search_connection_children[ id ].concat( res );\n      return res;\n\n    } else {\n\n      this.__cache_search_connection_children[ id ] = [ -1 ];\n      return [ -1 ];\n\n    }\n\n  };\n\n  FBXNodes.prototype.searchConnectionType = function ( id, to ) {\n\n    var key = id + ',' + to; // TODO: to hash\n    if ( this.__cache_search_connection_type === undefined ) {\n\n      this.__cache_search_connection_type = '';\n\n    }\n\n    if ( this.__cache_search_connection_type[ key ] !== undefined ) {\n\n      return this.__cache_search_connection_type[ key ];\n\n    } else {\n\n      this.__cache_search_connection_type[ key ] = '';\n\n    }\n\n    var conns = this.Connections.properties.connections;\n\n    for ( var i = 0; i < conns.length; ++i ) {\n\n      if ( conns[ i ][ 0 ] === id && conns[ i ][ 1 ] === to ) {\n\n        // 0 means scene root\n        this.__cache_search_connection_type[ key ] = conns[ i ][ 2 ];\n        return conns[ i ][ 2 ];\n\n      }\n\n    }\n\n    this.__cache_search_connection_type[ id ] = null;\n    return null;\n\n  };\n\n  function FBXParser() {}\n\n  FBXParser.prototype = {\n\n    // constructor: FBXParser,\n\n    // ------------ node stack manipulations ----------------------------------\n\n    getPrevNode: function () {\n\n      return this.nodeStack[ this.currentIndent - 2 ];\n\n    },\n\n    getCurrentNode: function () {\n\n      return this.nodeStack[ this.currentIndent - 1 ];\n\n    },\n\n    getCurrentProp: function () {\n\n      return this.currentProp;\n\n    },\n\n    pushStack: function ( node ) {\n\n      this.nodeStack.push( node );\n      this.currentIndent += 1;\n\n    },\n\n    popStack: function () {\n\n      this.nodeStack.pop();\n      this.currentIndent -= 1;\n\n    },\n\n    setCurrentProp: function ( val, name ) {\n\n      this.currentProp = val;\n      this.currentPropName = name;\n\n    },\n\n    // ----------parse ---------------------------------------------------\n    parse: function ( text ) {\n\n      this.currentIndent = 0;\n      this.allNodes = new FBXNodes();\n      this.nodeStack = [];\n      this.currentProp = [];\n      this.currentPropName = '';\n\n      var split = text.split( \"\\n\" );\n      for ( var line in split ) {\n\n        var l = split[ line ];\n\n        // short cut\n        if ( l.match( /^[\\s\\t]*;/ ) ) {\n\n          continue;\n\n        } // skip comment line\n        if ( l.match( /^[\\s\\t]*$/ ) ) {\n\n          continue;\n\n        } // skip empty line\n\n        // beginning of node\n        var beginningOfNodeExp = new RegExp( \"^\\\\t{\" + this.currentIndent + \"}(\\\\w+):(.*){\", '' );\n        match = l.match( beginningOfNodeExp );\n        if ( match ) {\n\n          var nodeName = match[ 1 ].trim().replace( /^\"/, '' ).replace( /\"$/, \"\" );\n          var nodeAttrs = match[ 2 ].split( ',' ).map( function ( element ) {\n\n            return element.trim().replace( /^\"/, '' ).replace( /\"$/, '' );\n\n          } );\n\n          this.parseNodeBegin( l, nodeName, nodeAttrs || null );\n          continue;\n\n        }\n\n        // node's property\n        var propExp = new RegExp( \"^\\\\t{\" + ( this.currentIndent ) + \"}(\\\\w+):[\\\\s\\\\t\\\\r\\\\n](.*)\" );\n        match = l.match( propExp );\n        if ( match ) {\n\n          var propName = match[ 1 ].replace( /^\"/, '' ).replace( /\"$/, \"\" ).trim();\n          var propValue = match[ 2 ].replace( /^\"/, '' ).replace( /\"$/, \"\" ).trim();\n\n          this.parseNodeProperty( l, propName, propValue );\n          continue;\n\n        }\n\n        // end of node\n        var endOfNodeExp = new RegExp( \"^\\\\t{\" + ( this.currentIndent - 1 ) + \"}}\" );\n        if ( l.match( endOfNodeExp ) ) {\n\n          this.nodeEnd();\n          continue;\n\n        }\n\n        // for special case,\n        //\n        //\t  Vertices: *8670 {\n        //\t\t  a: 0.0356229953467846,13.9599733352661,-0.399196773.....(snip)\n        // -0.0612030513584614,13.960485458374,-0.409748703241348,-0.10.....\n        // 0.12490539252758,13.7450733184814,-0.454119384288788,0.09272.....\n        // 0.0836158767342567,13.5432004928589,-0.435397416353226,0.028.....\n        //\n        // these case the lines must contiue with previous line\n        if ( l.match( /^[^\\s\\t}]/ ) ) {\n\n          this.parseNodePropertyContinued( l );\n\n        }\n\n      }\n\n      return this.allNodes;\n\n    },\n\n    parseNodeBegin: function ( line, nodeName, nodeAttrs ) {\n\n      // var nodeName = match[1];\n      var node = { 'name': nodeName, properties: {}, 'subNodes': {} };\n      var attrs = this.parseNodeAttr( nodeAttrs );\n      var currentNode = this.getCurrentNode();\n\n      // a top node\n      if ( this.currentIndent === 0 ) {\n\n        this.allNodes.add( nodeName, node );\n\n      } else {\n\n        // a subnode\n\n        // already exists subnode, then append it\n        if ( nodeName in currentNode.subNodes ) {\n\n          var tmp = currentNode.subNodes[ nodeName ];\n\n          // console.log( \"duped entry found\\nkey: \" + nodeName + \"\\nvalue: \" + propValue );\n          if ( this.isFlattenNode( currentNode.subNodes[ nodeName ] ) ) {\n\n            if ( attrs.id === '' ) {\n\n              currentNode.subNodes[ nodeName ] = [];\n              currentNode.subNodes[ nodeName ].push( tmp );\n\n            } else {\n\n              currentNode.subNodes[ nodeName ] = {};\n              currentNode.subNodes[ nodeName ][ tmp.id ] = tmp;\n\n            }\n\n          }\n\n          if ( attrs.id === '' ) {\n\n            currentNode.subNodes[ nodeName ].push( node );\n\n          } else {\n\n            currentNode.subNodes[ nodeName ][ attrs.id ] = node;\n\n          }\n\n        } else {\n\n          currentNode.subNodes[ nodeName ] = node;\n\n        }\n\n      }\n\n      // for this\t\t  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓\n      // NodeAttribute: 1001463072, \"NodeAttribute::\", \"LimbNode\" {\n      if ( nodeAttrs ) {\n\n        node.id = attrs.id;\n        node.attrName = attrs.name;\n        node.attrType = attrs.type;\n\n      }\n\n      this.pushStack( node );\n\n    },\n\n    parseNodeAttr: function ( attrs ) {\n\n      var id = attrs[ 0 ];\n\n      if ( attrs[ 0 ] !== \"\" ) {\n\n        id = parseInt( attrs[ 0 ] );\n\n        if ( isNaN( id ) ) {\n\n          // PolygonVertexIndex: *16380 {\n          id = attrs[ 0 ];\n\n        }\n\n      }\n\n      var name;\n      var type;\n      if ( attrs.length > 1 ) {\n\n        name = attrs[ 1 ].replace( /^(\\w+)::/, '' );\n        type = attrs[ 2 ];\n\n      }\n\n      return { id: id, name: name || '', type: type || '' };\n\n    },\n\n    parseNodeProperty: function ( line, propName, propValue ) {\n\n      var currentNode = this.getCurrentNode();\n      var parentName = currentNode.name;\n\n      // special case parent node's is like \"Properties70\"\n      // these chilren nodes must treat with careful\n      if ( parentName !== undefined ) {\n\n        var propMatch = parentName.match( /Properties(\\d)+/ );\n        if ( propMatch ) {\n\n          this.parseNodeSpecialProperty( line, propName, propValue );\n          return;\n\n        }\n\n      }\n\n      // special case Connections\n      if ( propName === 'C' ) {\n\n        var connProps = propValue.split( ',' ).slice( 1 );\n        var from = parseInt( connProps[ 0 ] );\n        var to = parseInt( connProps[ 1 ] );\n\n        var rest = propValue.split( ',' ).slice( 3 );\n\n        propName = 'connections';\n        propValue = [ from, to ];\n        propValue = propValue.concat( rest );\n\n        if ( currentNode.properties[ propName ] === undefined ) {\n\n          currentNode.properties[ propName ] = [];\n\n        }\n\n      }\n\n      // special case Connections\n      if ( propName === 'Node' ) {\n\n        var id = parseInt( propValue );\n        currentNode.properties.id = id;\n        currentNode.id = id;\n\n      }\n\n      // already exists in properties, then append this\n      if ( propName in currentNode.properties ) {\n\n        // console.log( \"duped entry found\\nkey: \" + propName + \"\\nvalue: \" + propValue );\n        if ( Array.isArray( currentNode.properties[ propName ] ) ) {\n\n          currentNode.properties[ propName ].push( propValue );\n\n        } else {\n\n          currentNode.properties[ propName ] += propValue;\n\n        }\n\n      } else {\n\n        // console.log( propName + \":  \" + propValue );\n        if ( Array.isArray( currentNode.properties[ propName ] ) ) {\n\n          currentNode.properties[ propName ].push( propValue );\n\n        } else {\n\n          currentNode.properties[ propName ] = propValue;\n\n        }\n\n      }\n\n      this.setCurrentProp( currentNode.properties, propName );\n\n    },\n\n    // TODO:\n    parseNodePropertyContinued: function ( line ) {\n\n      this.currentProp[ this.currentPropName ] += line;\n\n    },\n\n    parseNodeSpecialProperty: function ( line, propName, propValue ) {\n\n      // split this\n      // P: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",1,1,1\n      // into array like below\n      // [\"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\", \"1,1,1\" ]\n      var props = propValue.split( '\",' ).map( function ( element ) {\n\n        return element.trim().replace( /^\\\"/, '' ).replace( /\\s/, '_' );\n\n      } );\n\n      var innerPropName = props[ 0 ];\n      var innerPropType1 = props[ 1 ];\n      var innerPropType2 = props[ 2 ];\n      var innerPropFlag = props[ 3 ];\n      var innerPropValue = props[ 4 ];\n\n      /*\n      if ( innerPropValue === undefined ) {\n      \tinnerPropValue = props[3];\n      }\n      */\n\n      // cast value in its type\n      switch ( innerPropType1 ) {\n\n        case \"int\":\n          innerPropValue = parseInt( innerPropValue );\n          break;\n\n        case \"double\":\n          innerPropValue = parseFloat( innerPropValue );\n          break;\n\n        case \"ColorRGB\":\n        case \"Vector3D\":\n          var tmp = innerPropValue.split( ',' );\n          innerPropValue = new THREE.Vector3( tmp[ 0 ], tmp[ 1 ], tmp[ 2 ] );\n          break;\n\n      }\n\n      // CAUTION: these props must append to parent's parent\n      this.getPrevNode().properties[ innerPropName ] = {\n\n        'type': innerPropType1,\n        'type2': innerPropType2,\n        'flag': innerPropFlag,\n        'value': innerPropValue\n\n      };\n\n      this.setCurrentProp( this.getPrevNode().properties, innerPropName );\n\n    },\n\n    nodeEnd: function () {\n\n      this.popStack();\n\n    },\n\n    /* ---------------------------------------------------------------- */\n    /*\t\tutil\t\t\t\t\t\t\t\t\t\t\t\t\t  */\n    isFlattenNode: function ( node ) {\n\n      return ( 'subNodes' in node && 'properties' in node ) ? true : false;\n\n    }\n\n  };\n\n  function FBXAnalyzer() {}\n\n  FBXAnalyzer.prototype = {\n\n  };\n\n  // generate skinIndices, skinWeights\n  //\t  @skinIndices: per vertex data, this represents the bone indexes affects that vertex\n  //\t  @skinWeights: per vertex data, this represents the Weight Values affects that vertex\n  //\t  @matrices:\tper `bones` data\n  function Weights() {\n\n    this.skinIndices = [];\n    this.skinWeights = [];\n\n    this.matrices = [];\n\n  }\n\n  Weights.prototype.parseCluster = function ( node, id, entry ) {\n\n    var _p = node.searchConnectionParent( id );\n    var _indices = toInt( entry.subNodes.Indexes.properties.a.split( ',' ) );\n    var _weights = toFloat( entry.subNodes.Weights.properties.a.split( ',' ) );\n    var _transform = toMat44( toFloat( entry.subNodes.Transform.properties.a.split( ',' ) ) );\n    var _link = toMat44( toFloat( entry.subNodes.TransformLink.properties.a.split( ',' ) ) );\n\n    return {\n\n      'parent': _p,\n      'id': parseInt( id ),\n      'indices': _indices,\n      'weights': _weights,\n      'transform': _transform,\n      'transformlink': _link,\n      'linkMode': entry.properties.Mode\n\n    };\n\n  };\n\n  Weights.prototype.parse = function ( node, bones ) {\n\n    this.skinIndices = [];\n    this.skinWeights = [];\n\n    this.matrices = [];\n\n    var deformers = node.Objects.subNodes.Deformer;\n\n    var clusters = {};\n    for ( var id in deformers ) {\n\n      if ( deformers[ id ].attrType === 'Cluster' ) {\n\n        if ( !( 'Indexes' in deformers[ id ].subNodes ) ) {\n\n          continue;\n\n        }\n\n        //clusters.push( this.parseCluster( node, id, deformers[id] ) );\n        var cluster = this.parseCluster( node, id, deformers[ id ] );\n        var boneId = node.searchConnectionChildren( cluster.id )[ 0 ];\n        clusters[ boneId ] = cluster;\n\n      }\n\n    }\n\n    // this clusters is per Bone data, thus we make this into per vertex data\n    var weights = [];\n    var hi = bones.hierarchy;\n    for ( var b = 0; b < hi.length; ++b ) {\n\n      var bid = hi[ b ].internalId;\n      if ( clusters[ bid ] === undefined ) {\n\n        //console.log( bid );\n        this.matrices.push( new THREE.Matrix4() );\n        continue;\n\n      }\n\n      var clst = clusters[ bid ];\n      // store transform matrix per bones\n      this.matrices.push( clst.transform );\n      //this.matrices.push( clst.transformlink );\n      for ( var v = 0; v < clst.indices.length; ++v ) {\n\n        if ( weights[ clst.indices[ v ] ] === undefined ) {\n\n          weights[ clst.indices[ v ] ] = {};\n          weights[ clst.indices[ v ] ].joint = [];\n          weights[ clst.indices[ v ] ].weight = [];\n\n        }\n\n        // indices\n        var affect = node.searchConnectionChildren( clst.id );\n\n        if ( affect.length > 1 ) {\n\n          console.warn( \"FBXLoader: node \" + clst.id + \" have many weight kids: \" + affect );\n\n        }\n        weights[ clst.indices[ v ] ].joint.push( bones.getBoneIdfromInternalId( node, affect[ 0 ] ) );\n\n        // weight value\n        weights[ clst.indices[ v ] ].weight.push( clst.weights[ v ] );\n\n      }\n\n    }\n\n    // normalize the skin weights\n    // TODO -  this might be a good place to choose greatest 4 weights\n    for ( var i = 0; i < weights.length; i++ ) {\n\n      var indicies = new THREE.Vector4(\n        weights[ i ].joint[ 0 ] ? weights[ i ].joint[ 0 ] : 0,\n        weights[ i ].joint[ 1 ] ? weights[ i ].joint[ 1 ] : 0,\n        weights[ i ].joint[ 2 ] ? weights[ i ].joint[ 2 ] : 0,\n        weights[ i ].joint[ 3 ] ? weights[ i ].joint[ 3 ] : 0 );\n\n      var weight = new THREE.Vector4(\n        weights[ i ].weight[ 0 ] ? weights[ i ].weight[ 0 ] : 0,\n        weights[ i ].weight[ 1 ] ? weights[ i ].weight[ 1 ] : 0,\n        weights[ i ].weight[ 2 ] ? weights[ i ].weight[ 2 ] : 0,\n        weights[ i ].weight[ 3 ] ? weights[ i ].weight[ 3 ] : 0 );\n\n      this.skinIndices.push( indicies );\n      this.skinWeights.push( weight );\n\n    }\n\n    //console.log( this );\n    return this;\n\n  };\n\n  function Bones() {\n\n    // returns bones hierarchy tree.\n    //\t  [\n    //\t\t  {\n    //\t\t\t  \"parent\": id,\n    //\t\t\t  \"name\": name,\n    //\t\t\t  \"pos\": pos,\n    //\t\t\t  \"rotq\": quat\n    //\t\t  },\n    //\t\t  ...\n    //\t\t  {},\n    //\t\t  ...\n    //\t  ]\n    //\n    /* sample response\n\n       \"bones\" : [\n    \t{\"parent\":-1, \"name\":\"Fbx01\",\t\t\t\"pos\":[-0.002,\t 98.739,   1.6e-05],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":0,  \"name\":\"Fbx01_Pelvis\",\t \"pos\":[0.00015963, 0,\t\t7.33107e-08], \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":1,  \"name\":\"Fbx01_Spine\",\t  \"pos\":[6.577e-06,  10.216,   0.0106811],   \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":2,  \"name\":\"Fbx01_R_Thigh\",\t\"pos\":[14.6537,\t-10.216,  -0.00918758], \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":3,  \"name\":\"Fbx01_R_Calf\",\t \"pos\":[-3.70047,\t -42.9681,\t -7.78158],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":4,  \"name\":\"Fbx01_R_Foot\",\t \"pos\":[-2.0696,\t  -46.0488,\t 9.42052],\t  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":5,  \"name\":\"Fbx01_R_Toe0\",\t \"pos\":[-0.0234785,   -9.46233,\t -15.3187],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":2,  \"name\":\"Fbx01_L_Thigh\",\t\"pos\":[-14.6537,\t -10.216,\t  -0.00918314],  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":7,  \"name\":\"Fbx01_L_Calf\",\t \"pos\":[3.70037,\t  -42.968,\t  -7.78155],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":8,  \"name\":\"Fbx01_L_Foot\",\t \"pos\":[2.06954,\t  -46.0488,\t 9.42052],\t  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":9,  \"name\":\"Fbx01_L_Toe0\",\t \"pos\":[0.0234566,\t-9.46235,\t -15.3187],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":2,  \"name\":\"Fbx01_Spine1\",\t \"pos\":[-2.97523e-05, 11.5892,\t  -9.81027e-05], \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":11, \"name\":\"Fbx01_Spine2\",\t \"pos\":[-2.91292e-05, 11.4685,\t  8.27126e-05],  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":12, \"name\":\"Fbx01_Spine3\",\t \"pos\":[-4.48857e-05, 11.5783,\t  8.35108e-05],  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":13, \"name\":\"Fbx01_Neck\",\t   \"pos\":[1.22987e-05,  11.5582,\t  -0.0044775],   \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":14, \"name\":\"Fbx01_Head\",\t   \"pos\":[-3.50709e-05, 6.62915,\t  -0.00523254],  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":15, \"name\":\"Fbx01_R_Eye\",\t  \"pos\":[3.31681,\t  12.739,\t   -10.5267],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":15, \"name\":\"Fbx01_L_Eye\",\t  \"pos\":[-3.32038,\t 12.7391,\t  -10.5267],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":15, \"name\":\"Jaw\",\t\t\t  \"pos\":[-0.0017738,   7.43481,\t  -4.08114],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":14, \"name\":\"Fbx01_R_Clavicle\", \"pos\":[3.10919,\t  2.46577,\t  -0.0115284],   \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":19, \"name\":\"Fbx01_R_UpperArm\", \"pos\":[16.014,\t   4.57764e-05,  3.10405],\t  \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":20, \"name\":\"Fbx01_R_Forearm\",  \"pos\":[22.7068,\t  -1.66322,\t -2.13803],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":21, \"name\":\"Fbx01_R_Hand\",\t \"pos\":[25.5881,\t  -0.80249,\t -6.37307],\t \"rotq\":[0, 0, 0, 1]},\n    \t...\n    \t{\"parent\":27, \"name\":\"Fbx01_R_Finger32\", \"pos\":[2.15572,\t  -0.548737,\t-0.539604],\t\"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":22, \"name\":\"Fbx01_R_Finger2\",  \"pos\":[9.79318,\t  0.132553,\t -2.97845],\t \"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":29, \"name\":\"Fbx01_R_Finger21\", \"pos\":[2.74037,\t  0.0483093,\t-0.650531],\t\"rotq\":[0, 0, 0, 1]},\n    \t{\"parent\":55, \"name\":\"Fbx01_L_Finger02\", \"pos\":[-1.65308,\t -1.43208,\t -1.82885],\t \"rotq\":[0, 0, 0, 1]}\n    \t]\n    */\n    this.hierarchy = [];\n\n  }\n\n  Bones.prototype.parseHierarchy = function ( node ) {\n\n    var objects = node.Objects;\n    var models = objects.subNodes.Model;\n\n    var bones = [];\n    for ( var id in models ) {\n\n      if ( models[ id ].attrType === undefined ) {\n\n        continue;\n\n      }\n      bones.push( models[ id ] );\n\n    }\n\n    this.hierarchy = [];\n    for ( var i = 0; i < bones.length; ++i ) {\n\n      var bone = bones[ i ];\n\n      var p = node.searchConnectionParent( bone.id )[ 0 ];\n      var t = [ 0.0, 0.0, 0.0 ];\n      var r = [ 0.0, 0.0, 0.0, 1.0 ];\n      var s = [ 1.0, 1.0, 1.0 ];\n\n      if ( 'Lcl_Translation' in bone.properties ) {\n\n        t = toFloat( bone.properties.Lcl_Translation.value.split( ',' ) );\n\n      }\n\n      if ( 'Lcl_Rotation' in bone.properties ) {\n\n        r = toRad( toFloat( bone.properties.Lcl_Rotation.value.split( ',' ) ) );\n        var q = new THREE.Quaternion();\n        q.setFromEuler( new THREE.Euler( r[ 0 ], r[ 1 ], r[ 2 ], 'ZYX' ) );\n        r = [ q.x, q.y, q.z, q.w ];\n\n      }\n\n      if ( 'Lcl_Scaling' in bone.properties ) {\n\n        s = toFloat( bone.properties.Lcl_Scaling.value.split( ',' ) );\n\n      }\n\n      // replace unsafe character\n      var name = bone.attrName;\n      name = name.replace( /:/, '' );\n      name = name.replace( /_/, '' );\n      name = name.replace( /-/, '' );\n      this.hierarchy.push( { \"parent\": p, \"name\": name, \"pos\": t, \"rotq\": r, \"scl\": s, \"internalId\": bone.id } );\n\n    }\n\n    this.reindexParentId();\n\n    this.restoreBindPose( node );\n\n    return this;\n\n  };\n\n  Bones.prototype.reindexParentId = function () {\n\n    for ( var h = 0; h < this.hierarchy.length; h++ ) {\n\n      for ( var ii = 0; ii < this.hierarchy.length; ++ii ) {\n\n        if ( this.hierarchy[ h ].parent === this.hierarchy[ ii ].internalId ) {\n\n          this.hierarchy[ h ].parent = ii;\n          break;\n\n        }\n\n      }\n\n    }\n\n  };\n\n  Bones.prototype.restoreBindPose = function ( node ) {\n\n    var bindPoseNode = node.Objects.subNodes.Pose;\n    if ( bindPoseNode === undefined ) {\n\n      return;\n\n    }\n\n    var poseNode = bindPoseNode.subNodes.PoseNode;\n    var localMatrices = {}; // store local matrices, modified later( initialy world space )\n    var worldMatrices = {}; // store world matrices\n\n    for ( var i = 0; i < poseNode.length; ++i ) {\n\n      var rawMatLcl = toMat44( poseNode[ i ].subNodes.Matrix.properties.a.split( ',' ) );\n      var rawMatWrd = toMat44( poseNode[ i ].subNodes.Matrix.properties.a.split( ',' ) );\n\n      localMatrices[ poseNode[ i ].id ] = rawMatLcl;\n      worldMatrices[ poseNode[ i ].id ] = rawMatWrd;\n\n    }\n\n    for ( var h = 0; h < this.hierarchy.length; ++h ) {\n\n      var bone = this.hierarchy[ h ];\n      var inId = bone.internalId;\n\n      if ( worldMatrices[ inId ] === undefined ) {\n\n        // has no bind pose node, possibly be mesh\n        // console.log( bone );\n        continue;\n\n      }\n\n      var t = new THREE.Vector3( 0, 0, 0 );\n      var r = new THREE.Quaternion();\n      var s = new THREE.Vector3( 1, 1, 1 );\n\n      var parentId;\n      var parentNodes = node.searchConnectionParent( inId );\n      for ( var pn = 0; pn < parentNodes.length; ++pn ) {\n\n        if ( this.isBoneNode( parentNodes[ pn ] ) ) {\n\n          parentId = parentNodes[ pn ];\n          break;\n\n        }\n\n      }\n\n      if ( parentId !== undefined && localMatrices[ parentId ] !== undefined ) {\n\n        // convert world space matrix into local space\n        var inv = new THREE.Matrix4();\n        inv.getInverse( worldMatrices[ parentId ] );\n        inv.multiply( localMatrices[ inId ] );\n        localMatrices[ inId ] = inv;\n\n      } else {\n        //console.log( bone );\n      }\n\n      localMatrices[ inId ].decompose( t, r, s );\n      bone.pos = [ t.x, t.y, t.z ];\n      bone.rotq = [ r.x, r.y, r.z, r.w ];\n      bone.scl = [ s.x, s.y, s.z ];\n\n    }\n\n  };\n\n  Bones.prototype.searchRealId = function ( internalId ) {\n\n    for ( var h = 0; h < this.hierarchy.length; h++ ) {\n\n      if ( internalId === this.hierarchy[ h ].internalId ) {\n\n        return h;\n\n      }\n\n    }\n\n    // console.warn( 'FBXLoader: notfound internalId in bones: ' + internalId);\n    return -1;\n\n  };\n\n  Bones.prototype.getByInternalId = function ( internalId ) {\n\n    for ( var h = 0; h < this.hierarchy.length; h++ ) {\n\n      if ( internalId === this.hierarchy[ h ].internalId ) {\n\n        return this.hierarchy[ h ];\n\n      }\n\n    }\n\n    return null;\n\n  };\n\n  Bones.prototype.isBoneNode = function ( id ) {\n\n    for ( var i = 0; i < this.hierarchy.length; ++i ) {\n\n      if ( id === this.hierarchy[ i ].internalId ) {\n\n        return true;\n\n      }\n\n    }\n    return false;\n\n  };\n\n  Bones.prototype.getBoneIdfromInternalId = function ( node, id ) {\n\n    if ( node.__cache_get_boneid_from_internalid === undefined ) {\n\n      node.__cache_get_boneid_from_internalid = [];\n\n    }\n\n    if ( node.__cache_get_boneid_from_internalid[ id ] !== undefined ) {\n\n      return node.__cache_get_boneid_from_internalid[ id ];\n\n    }\n\n    for ( var i = 0; i < this.hierarchy.length; ++i ) {\n\n      if ( this.hierarchy[ i ].internalId === id ) {\n\n        var res = i;\n        node.__cache_get_boneid_from_internalid[ id ] = i;\n        return i;\n\n      }\n\n    }\n\n    // console.warn( 'FBXLoader: bone internalId(' + id + ') not found in bone hierarchy' );\n    return -1;\n\n  };\n\n  function Geometry() {\n\n    this.node = null;\n    this.name = null;\n    this.id = null;\n\n    this.vertices = [];\n    this.indices = [];\n    this.normals = [];\n    this.uvs = [];\n\n    this.bones = [];\n    this.skins = null;\n\n  }\n\n  Geometry.prototype.parse = function ( geoNode ) {\n\n    this.node = geoNode;\n    this.name = geoNode.attrName;\n    this.id = geoNode.id;\n\n    this.vertices = this.getVertices();\n\n    if ( this.vertices === undefined ) {\n\n      console.log( 'FBXLoader: Geometry.parse(): pass' + this.node.id );\n      return;\n\n    }\n\n    this.indices = this.getPolygonVertexIndices();\n    this.uvs = ( new UV() ).parse( this.node, this );\n    this.normals = ( new Normal() ).parse( this.node, this );\n\n    if ( this.getPolygonTopologyMax() > 3 ) {\n\n      this.indices = this.convertPolyIndicesToTri(\n        this.indices, this.getPolygonTopologyArray() );\n\n    }\n\n    return this;\n\n  };\n\n  Geometry.prototype.getVertices = function () {\n\n    if ( this.node.__cache_vertices ) {\n\n      return this.node.__cache_vertices;\n\n    }\n\n    if ( this.node.subNodes.Vertices === undefined ) {\n\n      console.warn( 'this.node: ' + this.node.attrName + \"(\" + this.node.id + \") does not have Vertices\" );\n      this.node.__cache_vertices = undefined;\n      return null;\n\n    }\n\n    var rawTextVert = this.node.subNodes.Vertices.properties.a;\n    var vertices = rawTextVert.split( ',' ).map( function ( element ) {\n\n      return parseFloat( element );\n\n    } );\n\n    this.node.__cache_vertices = vertices;\n    return this.node.__cache_vertices;\n\n  };\n\n  Geometry.prototype.getPolygonVertexIndices = function () {\n\n    if ( this.node.__cache_indices && this.node.__cache_poly_topology_max ) {\n\n      return this.node.__cache_indices;\n\n    }\n\n    if ( this.node.subNodes === undefined ) {\n\n      console.error( 'this.node.subNodes undefined' );\n      console.log( this.node );\n      return;\n\n    }\n\n    if ( this.node.subNodes.PolygonVertexIndex === undefined ) {\n\n      console.warn( 'this.node: ' + this.node.attrName + \"(\" + this.node.id + \") does not have PolygonVertexIndex \" );\n      this.node.__cache_indices = undefined;\n      return;\n\n    }\n\n    var rawTextIndices = this.node.subNodes.PolygonVertexIndex.properties.a;\n    var indices = rawTextIndices.split( ',' );\n\n    var currentTopo = 1;\n    var topologyN = null;\n    var topologyArr = [];\n\n    // The indices that make up the polygon are in order and a negative index\n    // means that it’s the last index of the polygon. That index needs\n    // to be made positive and then you have to subtract 1 from it!\n    for ( var i = 0; i < indices.length; ++i ) {\n\n      var tmpI = parseInt( indices[ i ] );\n      // found n\n      if ( tmpI < 0 ) {\n\n        if ( currentTopo > topologyN ) {\n\n          topologyN = currentTopo;\n\n        }\n\n        indices[ i ] = tmpI ^ -1;\n        topologyArr.push( currentTopo );\n        currentTopo = 1;\n\n      } else {\n\n        indices[ i ] = tmpI;\n        currentTopo++;\n\n      }\n\n    }\n\n    if ( topologyN === null ) {\n\n      console.warn( \"FBXLoader: topology N not found: \" + this.node.attrName );\n      console.warn( this.node );\n      topologyN = 3;\n\n    }\n\n    this.node.__cache_poly_topology_max = topologyN;\n    this.node.__cache_poly_topology_arr = topologyArr;\n    this.node.__cache_indices = indices;\n\n    return this.node.__cache_indices;\n\n  };\n\n  Geometry.prototype.getPolygonTopologyMax = function () {\n\n    if ( this.node.__cache_indices && this.node.__cache_poly_topology_max ) {\n\n      return this.node.__cache_poly_topology_max;\n\n    }\n\n    this.getPolygonVertexIndices( this.node );\n    return this.node.__cache_poly_topology_max;\n\n  };\n\n  Geometry.prototype.getPolygonTopologyArray = function () {\n\n    if ( this.node.__cache_indices && this.node.__cache_poly_topology_max ) {\n\n      return this.node.__cache_poly_topology_arr;\n\n    }\n\n    this.getPolygonVertexIndices( this.node );\n    return this.node.__cache_poly_topology_arr;\n\n  };\n\n  // a - d\n  // |   |\n  // b - c\n  //\n  // [( a, b, c, d ) ...........\n  // [( a, b, c ), (a, c, d )....\n  Geometry.prototype.convertPolyIndicesToTri = function ( indices, strides ) {\n\n    var res = [];\n\n    var i = 0;\n    var tmp = [];\n    var currentPolyNum = 0;\n    var currentStride = 0;\n\n    while ( i < indices.length ) {\n\n      currentStride = strides[ currentPolyNum ];\n\n      // CAUTIN: NG over 6gon\n      for ( var j = 0; j <= ( currentStride - 3 ); j++ ) {\n\n        res.push( indices[ i ] );\n        res.push( indices[ i + ( currentStride - 2 - j ) ] );\n        res.push( indices[ i + ( currentStride - 1 - j ) ] );\n\n      }\n\n      currentPolyNum++;\n      i += currentStride;\n\n    }\n\n    return res;\n\n  };\n\n  Geometry.prototype.addBones = function ( bones ) {\n\n    this.bones = bones;\n\n  };\n\n  function UV() {\n\n    this.uv = null;\n    this.map = null;\n    this.ref = null;\n    this.node = null;\n    this.index = null;\n\n  }\n\n  UV.prototype.getUV = function ( node ) {\n\n    if ( this.node && this.uv && this.map && this.ref ) {\n\n      return this.uv;\n\n    } else {\n\n      return this._parseText( node );\n\n    }\n\n  };\n\n  UV.prototype.getMap = function ( node ) {\n\n    if ( this.node && this.uv && this.map && this.ref ) {\n\n      return this.map;\n\n    } else {\n\n      this._parseText( node );\n      return this.map;\n\n    }\n\n  };\n\n  UV.prototype.getRef = function ( node ) {\n\n    if ( this.node && this.uv && this.map && this.ref ) {\n\n      return this.ref;\n\n    } else {\n\n      this._parseText( node );\n      return this.ref;\n\n    }\n\n  };\n\n  UV.prototype.getIndex = function ( node ) {\n\n    if ( this.node && this.uv && this.map && this.ref ) {\n\n      return this.index;\n\n    } else {\n\n      this._parseText( node );\n      return this.index;\n\n    }\n\n  };\n\n  UV.prototype.getNode = function ( topnode ) {\n\n    if ( this.node !== null ) {\n\n      return this.node;\n\n    }\n\n    this.node = topnode.subNodes.LayerElementUV;\n    return this.node;\n\n  };\n\n  UV.prototype._parseText = function ( node ) {\n\n    var uvNode = this.getNode( node );\n    if ( uvNode === undefined ) {\n\n      // console.log( node.attrName + \"(\" + node.id + \")\" + \" has no LayerElementUV.\" );\n      return [];\n\n    }\n\n    var count = 0;\n    var x = '';\n    for ( var n in uvNode ) {\n\n      if ( n.match( /^\\d+$/ ) ) {\n\n        count++;\n        x = n;\n\n      }\n\n    }\n\n    if ( count > 0 ) {\n\n      console.warn( 'multi uv not supported' );\n      uvNode = uvNode[ n ];\n\n    }\n\n    var uvIndex = uvNode.subNodes.UVIndex.properties.a;\n    var uvs = uvNode.subNodes.UV.properties.a;\n    var uvMap = uvNode.properties.MappingInformationType;\n    var uvRef = uvNode.properties.ReferenceInformationType;\n\n    this.uv = toFloat( uvs.split( ',' ) );\n    this.index = toInt( uvIndex.split( ',' ) );\n\n    this.map = uvMap; // TODO: normalize notation shaking... FOR BLENDER\n    this.ref = uvRef;\n\n    return this.uv;\n\n  };\n\n  UV.prototype.parse = function ( node, geo ) {\n\n    this.uvNode = this.getNode( node );\n\n    this.uv = this.getUV( node );\n    var mappingType = this.getMap( node );\n    var refType = this.getRef( node );\n    var indices = this.getIndex( node );\n\n    var strides = geo.getPolygonTopologyArray();\n\n    // it means that there is a normal for every vertex of every polygon of the model.\n    // For example, if the models has 8 vertices that make up four quads, then there\n    // will be 16 normals (one normal * 4 polygons * 4 vertices of the polygon). Note\n    // that generally a game engine needs the vertices to have only one normal defined.\n    // So, if you find a vertex has more tha one normal, you can either ignore the normals\n    // you find after the first, or calculate the mean from all of them (normal smoothing).\n    //if ( mappingType == \"ByPolygonVertex\" ){\n    switch ( mappingType ) {\n      case \"ByPolygonVertex\":\n\n        switch ( refType ) {\n\n          // Direct\n          // The this.uv are in order.\n          case \"Direct\":\n            this.uv = this.parseUV_ByPolygonVertex_Direct( this.uv, indices, strides, 2 );\n            break;\n\n            // IndexToDirect\n            // The order of the this.uv is given by the uvsIndex property.\n          case \"IndexToDirect\":\n            this.uv = this.parseUV_ByPolygonVertex_IndexToDirect( this.uv, indices );\n            break;\n\n        }\n\n        // convert from by polygon(vert) data into by verts data\n        this.uv = mapByPolygonVertexToByVertex( this.uv, geo.getPolygonVertexIndices( node ), 2 );\n        break;\n\n      case \"ByPolygon\":\n\n        switch ( refType ) {\n\n          // Direct\n          // The this.uv are in order.\n          case \"Direct\":\n            this.uv = this.parseUV_ByPolygon_Direct();\n            break;\n\n            // IndexToDirect\n            // The order of the this.uv is given by the uvsIndex property.\n          case \"IndexToDirect\":\n            this.uv = this.parseUV_ByPolygon_IndexToDirect();\n            break;\n\n        }\n        break;\n    }\n\n    return this.uv;\n\n  };\n\n  UV.prototype.parseUV_ByPolygonVertex_Direct = function ( node, indices, strides, itemSize ) {\n\n    return parse_Data_ByPolygonVertex_Direct( node, indices, strides, itemSize );\n\n  };\n\n  UV.prototype.parseUV_ByPolygonVertex_IndexToDirect = function ( node, indices ) {\n\n    return parse_Data_ByPolygonVertex_IndexToDirect( node, indices, 2 );\n\n  };\n\n  UV.prototype.parseUV_ByPolygon_Direct = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  UV.prototype.parseUV_ByPolygon_IndexToDirect = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  UV.prototype.parseUV_ByVertex_Direct = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  function Normal() {\n\n    this.normal = null;\n    this.map = null;\n    this.ref = null;\n    this.node = null;\n    this.index = null;\n\n  }\n\n  Normal.prototype.getNormal = function ( node ) {\n\n    if ( this.node && this.normal && this.map && this.ref ) {\n\n      return this.normal;\n\n    } else {\n\n      this._parseText( node );\n      return this.normal;\n\n    }\n\n  };\n\n  // mappingType: possible variant\n  //\t  ByPolygon\n  //\t  ByPolygonVertex\n  //\t  ByVertex (or also ByVertice, as the Blender exporter writes)\n  //\t  ByEdge\n  //\t  AllSame\n  //\tvar mappingType = node.properties.MappingInformationType;\n  Normal.prototype.getMap = function ( node ) {\n\n    if ( this.node && this.normal && this.map && this.ref ) {\n\n      return this.map;\n\n    } else {\n\n      this._parseText( node );\n      return this.map;\n\n    }\n\n  };\n\n  // refType: possible variants\n  //\t  Direct\n  //\t  IndexToDirect (or Index for older versions)\n  // var refType\t = node.properties.ReferenceInformationType;\n  Normal.prototype.getRef = function ( node ) {\n\n    if ( this.node && this.normal && this.map && this.ref ) {\n\n      return this.ref;\n\n    } else {\n\n      this._parseText( node );\n      return this.ref;\n\n    }\n\n  };\n\n  Normal.prototype.getNode = function ( node ) {\n\n    if ( this.node ) {\n\n      return this.node;\n\n    }\n\n    this.node = node.subNodes.LayerElementNormal;\n    return this.node;\n\n  };\n\n  Normal.prototype._parseText = function ( node ) {\n\n    var normalNode = this.getNode( node );\n\n    if ( normalNode === undefined ) {\n\n      console.warn( 'node: ' + node.attrName + \"(\" + node.id + \") does not have LayerElementNormal\" );\n      return;\n\n    }\n\n    var mappingType = normalNode.properties.MappingInformationType;\n    var refType = normalNode.properties.ReferenceInformationType;\n\n    var rawTextNormals = normalNode.subNodes.Normals.properties.a;\n    this.normal = toFloat( rawTextNormals.split( ',' ) );\n\n    // TODO: normalize notation shaking, vertex / vertice... blender...\n    this.map = mappingType;\n    this.ref = refType;\n\n  };\n\n  Normal.prototype.parse = function ( topnode, geo ) {\n\n    var normals = this.getNormal( topnode );\n    var normalNode = this.getNode( topnode );\n    var mappingType = this.getMap( topnode );\n    var refType = this.getRef( topnode );\n\n    var indices = geo.getPolygonVertexIndices( topnode );\n    var strides = geo.getPolygonTopologyArray( topnode );\n\n    // it means that there is a normal for every vertex of every polygon of the model.\n    // For example, if the models has 8 vertices that make up four quads, then there\n    // will be 16 normals (one normal * 4 polygons * 4 vertices of the polygon). Note\n    // that generally a game engine needs the vertices to have only one normal defined.\n    // So, if you find a vertex has more tha one normal, you can either ignore the normals\n    // you find after the first, or calculate the mean from all of them (normal smoothing).\n    //if ( mappingType == \"ByPolygonVertex\" ){\n    switch ( mappingType ) {\n\n      case \"ByPolygonVertex\":\n\n        switch ( refType ) {\n\n          // Direct\n          // The normals are in order.\n          case \"Direct\":\n            normals = this.parseNormal_ByPolygonVertex_Direct( normals, indices, strides, 3 );\n            break;\n\n            // IndexToDirect\n            // The order of the normals is given by the NormalsIndex property.\n          case \"IndexToDirect\":\n            normals = this.parseNormal_ByPolygonVertex_IndexToDirect();\n            break;\n\n        }\n        break;\n\n      case \"ByPolygon\":\n\n        switch ( refType ) {\n\n          // Direct\n          // The normals are in order.\n          case \"Direct\":\n            normals = this.parseNormal_ByPolygon_Direct();\n            break;\n\n            // IndexToDirect\n            // The order of the normals is given by the NormalsIndex property.\n          case \"IndexToDirect\":\n            normals = this.parseNormal_ByPolygon_IndexToDirect();\n            break;\n\n        }\n        break;\n    }\n\n    return normals;\n\n  };\n\n  Normal.prototype.parseNormal_ByPolygonVertex_Direct = function ( node, indices, strides, itemSize ) {\n\n    return parse_Data_ByPolygonVertex_Direct( node, indices, strides, itemSize );\n\n  };\n\n  Normal.prototype.parseNormal_ByPolygonVertex_IndexToDirect = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  Normal.prototype.parseNormal_ByPolygon_Direct = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  Normal.prototype.parseNormal_ByPolygon_IndexToDirect = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  Normal.prototype.parseNormal_ByVertex_Direct = function ( node ) {\n\n    console.warn( \"not implemented\" );\n    return node;\n\n  };\n\n  function AnimationCurve() {\n\n    this.version = null;\n\n    this.id = null;\n    this.internalId = null;\n    this.times = null;\n    this.values = null;\n\n    this.attrFlag = null; // tangeant\n    this.attrData = null; // slope, weight\n\n  }\n\n  AnimationCurve.prototype.fromNode = function ( curveNode ) {\n\n    this.id = curveNode.id;\n    this.internalId = curveNode.id;\n    this.times = curveNode.subNodes.KeyTime.properties.a;\n    this.values = curveNode.subNodes.KeyValueFloat.properties.a;\n\n    this.attrFlag = curveNode.subNodes.KeyAttrFlags.properties.a;\n    this.attrData = curveNode.subNodes.KeyAttrDataFloat.properties.a;\n\n    this.times = toFloat( this.times.split( ',' ) );\n    this.values = toFloat( this.values.split( ',' ) );\n    this.attrData = toFloat( this.attrData.split( ',' ) );\n    this.attrFlag = toInt( this.attrFlag.split( ',' ) );\n\n    this.times = this.times.map( function ( element ) {\n\n      return FBXTimeToSeconds( element );\n\n    } );\n\n    return this;\n\n  };\n\n  AnimationCurve.prototype.getLength = function () {\n\n    return this.times[ this.times.length - 1 ];\n\n  };\n\n  function AnimationNode() {\n\n    this.id = null;\n    this.attr = null; // S, R, T\n    this.attrX = false;\n    this.attrY = false;\n    this.attrZ = false;\n    this.internalId = null;\n    this.containerInternalId = null; // bone, null etc Id\n    this.containerBoneId = null; // bone, null etc Id\n    this.curveIdx = null; // AnimationCurve's indices\n    this.curves = []; // AnimationCurve refs\n\n  }\n\n  AnimationNode.prototype.fromNode = function ( allNodes, node, bones ) {\n\n    this.id = node.id;\n    this.attr = node.attrName;\n    this.internalId = node.id;\n\n    if ( this.attr.match( /S|R|T/ ) ) {\n\n      for ( var attrKey in node.properties ) {\n\n        if ( attrKey.match( /X/ ) ) {\n\n          this.attrX = true;\n\n        }\n        if ( attrKey.match( /Y/ ) ) {\n\n          this.attrY = true;\n\n        }\n        if ( attrKey.match( /Z/ ) ) {\n\n          this.attrZ = true;\n\n        }\n\n      }\n\n    } else {\n\n      // may be deform percent nodes\n      return null;\n\n    }\n\n    this.containerIndices = allNodes.searchConnectionParent( this.id );\n    this.curveIdx = allNodes.searchConnectionChildren( this.id );\n\n    for ( var i = this.containerIndices.length - 1; i >= 0; --i ) {\n\n      var boneId = bones.searchRealId( this.containerIndices[ i ] );\n      if ( boneId >= 0 ) {\n\n        this.containerBoneId = boneId;\n        this.containerId = this.containerIndices[ i ];\n\n      }\n\n      if ( boneId >= 0 ) {\n\n        break;\n\n      }\n\n    }\n    // this.containerBoneId = bones.searchRealId( this.containerIndices );\n\n    return this;\n\n  };\n\n  AnimationNode.prototype.setCurve = function ( curve ) {\n\n    this.curves.push( curve );\n\n  };\n\n  function Animation() {\n\n    this.curves = {};\n    this.length = 0.0;\n    this.fps = 30.0;\n    this.frames = 0.0;\n\n  }\n\n  Animation.prototype.parse = function ( node, bones ) {\n\n    var rawNodes = node.Objects.subNodes.AnimationCurveNode;\n    var rawCurves = node.Objects.subNodes.AnimationCurve;\n\n    // first: expand AnimationCurveNode into curve nodes\n    var curveNodes = [];\n    for ( var key in rawNodes ) {\n\n      if ( key.match( /\\d+/ ) ) {\n\n        var a = ( new AnimationNode() ).fromNode( node, rawNodes[ key ], bones );\n        curveNodes.push( a );\n\n      }\n\n    }\n\n    // second: gen dict, mapped by internalId\n    var tmp = {};\n    for ( var i = 0; i < curveNodes.length; ++i ) {\n\n      if ( curveNodes[ i ] === null ) {\n\n        continue;\n\n      }\n\n      tmp[ curveNodes[ i ].id ] = curveNodes[ i ];\n\n    }\n\n    // third: insert curves into the dict\n    var ac = [];\n    var max = 0.0;\n    for ( key in rawCurves ) {\n\n      if ( key.match( /\\d+/ ) ) {\n\n        var c = ( new AnimationCurve() ).fromNode( rawCurves[ key ] );\n        ac.push( c );\n        max = c.getLength() ? c.getLength() : max;\n\n        var parentId = node.searchConnectionParent( c.id )[ 0 ];\n        var axis = node.searchConnectionType( c.id, parentId );\n\n        if ( axis.match( /X/ ) ) {\n\n          axis = 'x';\n\n        }\n        if ( axis.match( /Y/ ) ) {\n\n          axis = 'y';\n\n        }\n        if ( axis.match( /Z/ ) ) {\n\n          axis = 'z';\n\n        }\n\n        tmp[ parentId ].curves[ axis ] = c;\n\n      }\n\n    }\n\n    // forth:\n    for ( var t in tmp ) {\n\n      var id = tmp[ t ].containerBoneId;\n      if ( this.curves[ id ] === undefined ) {\n\n        this.curves[ id ] = {};\n\n      }\n\n      this.curves[ id ][ tmp[ t ].attr ] = tmp[ t ];\n\n    }\n\n    this.length = max;\n    this.frames = this.length * this.fps;\n\n    return this;\n\n  };\n\n  function Textures() {\n\n    this.textures = [];\n    this.perGeoMap = {};\n\n  }\n\n  Textures.prototype.add = function ( tex ) {\n\n    if ( this.textures === undefined ) {\n\n      this.textures = [];\n\n    }\n\n    this.textures.push( tex );\n\n    for ( var i = 0; i < tex.parentIds.length; ++i ) {\n\n      if ( this.perGeoMap[ tex.parentIds[ i ] ] === undefined ) {\n\n        this.perGeoMap[ tex.parentIds[ i ] ] = [];\n\n      }\n\n      this.perGeoMap[ tex.parentIds[ i ] ].push( this.textures[ this.textures.length - 1 ] );\n\n    }\n\n  };\n\n  Textures.prototype.parse = function ( node, bones ) {\n\n    var rawNodes = node.Objects.subNodes.Texture;\n\n    for ( var n in rawNodes ) {\n\n      var tex = ( new Texture() ).parse( rawNodes[ n ], node );\n      this.add( tex );\n\n    }\n\n    return this;\n\n  };\n\n  Textures.prototype.getById = function ( id ) {\n\n    return this.perGeoMap[ id ];\n\n  };\n\n  function Texture() {\n\n    this.fileName = \"\";\n    this.name = \"\";\n    this.id = null;\n    this.parentIds = [];\n\n  }\n\n  Texture.prototype.parse = function ( node, nodes ) {\n\n    this.id = node.id;\n    this.name = node.attrName;\n    this.fileName = this.parseFileName( node.properties.FileName );\n\n    this.parentIds = this.searchParents( this.id, nodes );\n\n    return this;\n\n  };\n\n  // TODO: support directory\n  Texture.prototype.parseFileName = function ( fname ) {\n\n    if ( fname === undefined ) {\n\n      return \"\";\n\n    }\n\n    // ignore directory structure, flatten path\n    var splitted = fname.split( /[\\\\\\/]/ );\n    if ( splitted.length > 0 ) {\n\n      return splitted[ splitted.length - 1 ];\n\n    } else {\n\n      return fname;\n\n    }\n\n  };\n\n  Texture.prototype.searchParents = function ( id, nodes ) {\n\n    var p = nodes.searchConnectionParent( id );\n\n    return p;\n\n  };\n\n  /* --------------------------------------------------------------------- */\n  /* --------------------------------------------------------------------- */\n  /* --------------------------------------------------------------------- */\n  /* --------------------------------------------------------------------- */\n\n  function loadTextureImage( texture, url ) {\n\n    var loader = new THREE.ImageLoader();\n\n    loader.load( url, function ( image ) {\n\n    } );\n\n    loader.load( url, function ( image ) {\n\n        texture.image = image;\n        texture.needUpdate = true;\n        console.log( 'tex load done' );\n\n      },\n\n      // Function called when download progresses\n      function ( xhr ) {\n\n        console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );\n\n      },\n\n      // Function called when download errors\n      function ( xhr ) {\n\n        console.log( 'An error happened' );\n\n      }\n    );\n\n  }\n\n  // LayerElementUV: 0 {\n  // \tVersion: 101\n  //\tName: \"Texture_Projection\"\n  //\tMappingInformationType: \"ByPolygonVertex\"\n  //\tReferenceInformationType: \"IndexToDirect\"\n  //\tUV: *1746 {\n  //\tUVIndex: *7068 {\n  //\n  //\tThe order of the uvs is given by the UVIndex property.\n  function parse_Data_ByPolygonVertex_IndexToDirect( node, indices, itemSize ) {\n\n    var res = [];\n\n    for ( var i = 0; i < indices.length; ++i ) {\n\n      for ( var j = 0; j < itemSize; ++j ) {\n\n        res.push( node[ ( indices[ i ] * itemSize ) + j ] );\n\n      }\n\n    }\n\n    return res;\n\n  }\n\n  // what want:　normal per vertex, order vertice\n  // i have: normal per polygon\n  // i have: indice per polygon\n  parse_Data_ByPolygonVertex_Direct = function ( node, indices, strides, itemSize ) {\n\n    // *21204 > 3573\n    // Geometry: 690680816, \"Geometry::\", \"Mesh\" {\n    //  Vertices: *3573 {\n    //  PolygonVertexIndex: *7068 {\n\n    var tmp = [];\n    var currentIndex = 0;\n\n    // first: sort to per vertex\n    for ( var i = 0; i < indices.length; ++i ) {\n\n      tmp[ indices[ i ] ] = [];\n\n      // TODO: duped entry? blend or something?\n      for ( var s = 0; s < itemSize; ++s ) {\n\n        tmp[ indices[ i ] ][ s ] = node[ currentIndex + s ];\n\n      }\n\n      currentIndex += itemSize;\n\n    }\n\n    // second: expand x,y,z into serial array\n    var res = [];\n    for ( var jj = 0; jj < tmp.length; ++jj ) {\n\n      if ( tmp[ jj ] === undefined ) {\n\n        continue;\n\n      }\n\n      for ( var t = 0; t < itemSize; ++t ) {\n\n        if ( tmp[ jj ][ t ] === undefined ) {\n\n          continue;\n\n        }\n        res.push( tmp[ jj ][ t ] );\n\n      }\n\n    }\n\n    return res;\n\n  };\n\n  // convert from by polygon(vert) data into by verts data\n  function mapByPolygonVertexToByVertex( data, indices, stride ) {\n\n    var tmp = {};\n    var res = [];\n    var max = 0;\n\n    for ( var i = 0; i < indices.length; ++i ) {\n\n      if ( indices[ i ] in tmp ) {\n\n        continue;\n\n      }\n\n      tmp[ indices[ i ] ] = {};\n\n      for ( var j = 0; j < stride; ++j ) {\n\n        tmp[ indices[ i ] ][ j ] = data[ i * stride + j ];\n\n      }\n\n      max = max < indices[ i ] ? indices[ i ] : max;\n\n    }\n\n    try {\n\n      for ( i = 0; i <= max; i++ ) {\n\n        for ( var s = 0; s < stride; s++ ) {\n\n          res.push( tmp[ i ][ s ] );\n\n        }\n\n      }\n\n    } catch ( e ) {\n      //console.log( max );\n      //console.log( tmp );\n      //console.log( i );\n      //console.log( e );\n    }\n\n    return res;\n\n  }\n\n  // AUTODESK uses broken clock. i guess\n  var FBXTimeToSeconds = function ( adskTime ) {\n\n    return adskTime / 46186158000;\n\n  };\n\n  degToRad = function ( degrees ) {\n\n    return degrees * Math.PI / 180;\n\n  };\n\n  radToDeg = function ( radians ) {\n\n    return radians * 180 / Math.PI;\n\n  };\n\n  quatFromVec = function ( x, y, z ) {\n\n    var euler = new THREE.Euler( x, y, z, 'ZYX' );\n    var quat = new THREE.Quaternion();\n    quat.setFromEuler( euler );\n\n    return quat;\n\n  };\n\n  // extend Array.prototype ?  ....uuuh\n  toInt = function ( arr ) {\n\n    return arr.map( function ( element ) {\n\n      return parseInt( element );\n\n    } );\n\n  };\n\n  toFloat = function ( arr ) {\n\n    return arr.map( function ( element ) {\n\n      return parseFloat( element );\n\n    } );\n\n  };\n\n  toRad = function ( arr ) {\n\n    return arr.map( function ( element ) {\n\n      return degToRad( element );\n\n    } );\n\n  };\n\n  toMat44 = function ( arr ) {\n\n    var mat = new THREE.Matrix4();\n    mat.set(\n      arr[ 0 ], arr[ 4 ], arr[ 8 ], arr[ 12 ],\n      arr[ 1 ], arr[ 5 ], arr[ 9 ], arr[ 13 ],\n      arr[ 2 ], arr[ 6 ], arr[ 10 ], arr[ 14 ],\n      arr[ 3 ], arr[ 7 ], arr[ 11 ], arr[ 15 ]\n    );\n\n    /*\n    mat.set(\n    \tarr[ 0], arr[ 1], arr[ 2], arr[ 3],\n    \tarr[ 4], arr[ 5], arr[ 6], arr[ 7],\n    \tarr[ 8], arr[ 9], arr[10], arr[11],\n    \tarr[12], arr[13], arr[14], arr[15]\n    );\n    // */\n\n    return mat;\n\n  };\n\n} )();\n"
  },
  {
    "path": "src/ImprovedNoise.js",
    "content": "// http://mrl.nyu.edu/~perlin/noise/\n\nvar ImprovedNoise = function () {\n\n  var p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,\n\t\t 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,\n\t\t 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,\n\t\t 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208,\n\t\t 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5,\n\t\t 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,\n\t\t 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232,\n\t\t 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,\n\t\t 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205,\n\t\t 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ];\n\n  for ( var i = 0; i < 256; i++ ) {\n\n    p[ 256 + i ] = p[ i ];\n\n  }\n\n  function fade( t ) {\n\n    return t * t * t * ( t * ( t * 6 - 15 ) + 10 );\n\n  }\n\n  function lerp( t, a, b ) {\n\n    return a + t * ( b - a );\n\n  }\n\n  function grad( hash, x, y, z ) {\n\n    var h = hash & 15;\n    var u = h < 8 ? x : y,\n      v = h < 4 ? y : h === 12 || h === 14 ? x : z;\n    return ( ( h & 1 ) === 0 ? u : -u ) + ( ( h & 2 ) === 0 ? v : -v );\n\n  }\n\n  return {\n\n    noise: function ( x, y, z ) {\n\n      var floorX = ~~x,\n        floorY = ~~y,\n        floorZ = ~~z;\n\n      var X = floorX & 255,\n        Y = floorY & 255,\n        Z = floorZ & 255;\n\n      x -= floorX;\n      y -= floorY;\n      z -= floorZ;\n\n      var xMinus1 = x - 1,\n        yMinus1 = y - 1,\n        zMinus1 = z - 1;\n\n      var u = fade( x ),\n        v = fade( y ),\n        w = fade( z );\n\n      var A = p[ X ] + Y,\n        AA = p[ A ] + Z,\n        AB = p[ A + 1 ] + Z,\n        B = p[ X + 1 ] + Y,\n        BA = p[ B ] + Z,\n        BB = p[ B + 1 ] + Z;\n\n      return lerp( w, lerp( v, lerp( u, grad( p[ AA ], x, y, z ),\n            grad( p[ BA ], xMinus1, y, z ) ),\n          lerp( u, grad( p[ AB ], x, yMinus1, z ),\n            grad( p[ BB ], xMinus1, yMinus1, z ) ) ),\n        lerp( v, lerp( u, grad( p[ AA + 1 ], x, y, zMinus1 ),\n            grad( p[ BA + 1 ], xMinus1, y, z - 1 ) ),\n          lerp( u, grad( p[ AB + 1 ], x, yMinus1, zMinus1 ),\n            grad( p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) );\n\n    }\n  };\n};\n\nexport default ImprovedNoise;\n"
  },
  {
    "path": "src/classes/bird.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nconst FLIGHT_SPEED = 30;\nconst FLOCK_DIST = 16;\nconst PLAYER_SEP_DIST = 80;\nconst SEPARATION_FORCE = 100;\n\nclass Bird extends THREE.Mesh {\n  constructor() {\n    let geometry = new THREE.Geometry();\n    geometry.vertices.push(\n      new THREE.Vector3(0, 0, 0.5),\n      new THREE.Vector3(1.2, 0, 0),\n      new THREE.Vector3(0, 0, -0.5),\n      new THREE.Vector3(0, 0, -0.5),\n      new THREE.Vector3(-1.2, 0, 0),\n      new THREE.Vector3(0, 0, 0.5),\n    );\n    geometry.faces.push(new THREE.Face3(0, 1, 2));\n    geometry.faces.push(new THREE.Face3(3, 4, 5));\n    geometry.computeBoundingSphere();\n    super(\n      geometry,\n      new THREE.MeshBasicMaterial({\n        color: 0xffffff,\n      }),\n    );\n    this.velocity = new THREE.Vector3(0, 0, FLIGHT_SPEED);\n  }\n\n  update(dt, center, player) {\n    this.velocity.z = FLIGHT_SPEED;\n    // Add veloctity\n    this.position.add(this.velocity.clone().multiplyScalar(dt));\n\n    let balloonPos = player.position.clone();\n    balloonPos.y += 16;\n\n    // Difference between player and this position\n    let pv = balloonPos.sub(this.position);\n    let pDist = pv.lengthSq();\n    let pvN = pv.clone().normalize();\n    // this.position.x += dt * Math.sin( this.position.z / 10 ) * 2;\n    if (Math.sqrt(pDist) < PLAYER_SEP_DIST) {\n      // Separate from player\n      let force = 1.0 / (pDist * 0.02);\n      // window.flight.debug.drawRay( this.position, pvN.multiplyScalar( -force ), new THREE.Color( 0x00ff00 ) );\n      let separation = pvN.multiplyScalar(-force * SEPARATION_FORCE * dt);\n      this.position.add(new THREE.Vector3(separation.x, separation.y, 0));\n    } else {\n      // Difference between center and this position\n      let v = center.clone().sub(this.position);\n      // Distance to center\n      let dist = v.length();\n      let vN = v.clone().normalize();\n      if (dist > FLOCK_DIST) {\n        this.position.add(vN.multiplyScalar(dt));\n      }\n    }\n    // Do some flappin\n    let geo = this.geometry;\n    geo.vertices[1].y = Math.sin(this.position.z * 0.65);\n    geo.vertices[4].y = Math.sin(this.position.z * 0.65);\n    geo.verticesNeedUpdate = true;\n  }\n}\n\nexport default Bird;\n"
  },
  {
    "path": "src/classes/heightmap.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport ImprovedNoise from '../ImprovedNoise';\n\nconst VALLEY_01_SCALE = 0.025;\nconst VALLEY_02_SCALE = 0.01;\nconst VALLEY_01_MULT = 1.0;\nconst VALLEY_02_MULT = 0.5;\nconst HEIGHT_MULT = 10.0;\nconst RIVER_WIDTH = 100.0;\n\nclass Heightmap {\n\n  constructor( opts ) {\n    this.noise = new ImprovedNoise();\n    this.scale = opts.hasOwnProperty( 'scale' ) ? opts.scale : 100;\n    this.height = opts.hasOwnProperty( 'height' ) ? opts.height : 0;\n    this.noiseOffset = opts.hasOwnProperty( 'noiseOffset' ) ? opts.noiseOffset : 0;\n    this.rScale = 1 / this.scale;\n  }\n\n  lerp( from, to, t ) {\n    return ( 1 - t ) * from + t * to;\n  }\n\n  clamp( val, min, max ) {\n    let t = val < min ? min : val;\n    return t > max ? max : t;\n  }\n\n  getHeight( x, y ) {\n    let n1 = this.clamp( this.perlinNoise( x, y, 0.5 ) + 0.2, 0, 1 );\n    let n2 = this.perlinNoise( x, y, 2 );\n    let height = n1 + n2;\n    height *= this.clamp( Math.pow( height + 0.5, 5 ), 0, 1 );\n    height = this.lerp( height, this.step( height, 5 ), this.perlinNoise( x, 0.2, 1 ) );\n    height *= 0.3;\n    height *= Math.pow( Math.abs( VALLEY_01_SCALE * x ), 2 ) * VALLEY_01_MULT + 0.5;\n    height += Math.pow( Math.abs( VALLEY_02_SCALE * x ), 2 ) * VALLEY_02_MULT;\n\n    // River\n    let river = RIVER_WIDTH / Math.abs( x - ( this.perlinNoise( x, y, 0.5 ) - 0.5 ) * 200 );\n    height -= 0.5 * this.clamp( river, 0, 5 );\n\n    return height * HEIGHT_MULT;\n  }\n\n  perlinNoise( x, y, frequency ) {\n    x += this.noiseOffset.x;\n    y += this.noiseOffset.y;\n    x = x < 0 ? 0 : x;\n    y = y < 0 ? 0 : y;\n    return this.noise.noise( x * this.rScale * frequency, 0, y * this.rScale * frequency ) + 0.5;\n  }\n\n  step( height, steps ) {\n    return Math.floor( height * steps ) / steps;\n  }\n}\n\nexport default Heightmap;\n"
  },
  {
    "path": "src/classes/mathf.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport SeedRandom from 'seedrandom';\n\nlet rnd = new SeedRandom( 'gh3jf023ja84' );\nlet rnd2 = new SeedRandom( 'aowjdiao8q2u' );\nlet count = 0;\n\nclass Mathf {\n  static clamp( num, min, max ) {\n    return num < min ? min : num > max ? max : num;\n  }\n\n  static getCount() {\n    return count;\n  }\n\n  static lerp( from, to, t ) {\n    return from + t * ( to - from );\n  }\n\n  static inverseLerp( from, to, t ) {\n    let v = from;\n    if ( t <= from ) {\n      v = from;\n    } else if ( t >= to ) {\n      v = to;\n    }\n    v = ( t - from ) / ( to - from );\n    return v;\n  }\n\n  static randRange( min, max ) {\n    return rnd.quick() * ( max - min ) + min;\n  }\n\n  static randRange2( min, max ) {\n    return rnd2.quick() * ( max - min ) + min;\n  }\n\n  static moveTowards( current, target, maxDelta ) {\n    let delta = target - current;\n    if ( Math.abs( delta ) > maxDelta ) {\n      delta = maxDelta * Math.sign( delta );\n    }\n    return current + delta;\n  }\n}\n\nexport default Mathf;\n"
  },
  {
    "path": "src/classes/player.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport Mathf from \"./mathf\";\n\nconst FLIGHT_SPEED = 12;\nconst BANK_SPEED = 0.5;\nconst SPIN_SPEED = 1;\nconst SIDEWAYS_SPEED = 5;\nconst FLAG_ADJUST_SPEED = 55;\nconst SCARF_SEG_DIST = 0.3;\n\nclass Player extends THREE.Object3D {\n  constructor() {\n    super();\n    this.angularVelocity = new THREE.Vector3();\n    this.bankVelocity = 0.0;\n    this.velocity = new THREE.Vector3();\n    this.bankVelocity = 0.0;\n    this.rotation.set(0, 0, 0, \"ZXY\");\n    this.scarf = null;\n    this.spin = 0.0;\n    this.gridPos = {\n      x: 0,\n      y: 0,\n    };\n    this.initScarf();\n  }\n\n  initScarf() {\n    let geometry = new THREE.Geometry();\n    for (let i = 0; i < 20; ++i) {\n      geometry.vertices.push(\n        new THREE.Vector3(\n          this.position.x,\n          this.position.y,\n          this.position.z + i * SCARF_SEG_DIST,\n        ),\n      );\n    }\n    let line = new THREE.MeshLine();\n    let material = new THREE.MeshLineMaterial({\n      color: new THREE.Color(0x663322),\n    });\n    line.setGeometry(geometry, function(v) {\n      return 0.3;\n    });\n    let mesh = new THREE.Mesh(line.geometry, material); // this syntax could definitely be improved!\n    this.scarf = line;\n    window.flight.scene.add(mesh);\n  }\n\n  update() {\n    let dt = window.flight.deltaTime;\n    let input = window.flight.input;\n\n    // Twist\n    this.angularVelocity.y += dt * input.x * SPIN_SPEED;\n    this.rotation.y += this.angularVelocity.y * dt;\n    this.rotation.y += dt * 0.1;\n    this.angularVelocity.y -= this.angularVelocity.y * dt;\n\n    // Move left and right\n    this.velocity.x += dt * -input.x * SIDEWAYS_SPEED;\n    this.position.add(this.velocity.clone().multiplyScalar(dt));\n    this.velocity.x -= this.velocity.x * dt * 0.3;\n\n    // Move forward\n    this.position.z += dt * FLIGHT_SPEED;\n\n    // Bank\n    this.bankVelocity += input.x * BANK_SPEED * dt;\n    this.bankVelocity -= this.bankVelocity * dt;\n    this.rotation.z += this.bankVelocity * dt;\n    this.rotation.z -=\n      Math.sign(this.rotation.z) * Math.pow(this.rotation.z, 2) * dt * 5;\n\n    // Positions array is interleved vector3\n    let positions = this.scarf.positions;\n    let numPoints = positions.length;\n    for (let i = 0; i < numPoints; i += 3) {\n      if (i === 0) {\n        // Position first scarf point at balloon position\n        positions[i] = this.position.x;\n        positions[i + 1] = this.position.y - 3;\n        positions[i + 2] = this.position.z;\n      } else {\n        // i - 3 for previous point\n        positions[i] = Mathf.moveTowards(\n          positions[i],\n          positions[i - 3],\n          (FLAG_ADJUST_SPEED / numPoints) *\n            Math.abs(positions[i] - positions[i - 3]),\n        );\n        positions[i + 1] = positions[i - 2];\n        if (Math.abs(positions[i + 2] - positions[i - 1]) > SCARF_SEG_DIST) {\n          positions[i + 2] +=\n            positions[i - 1] - positions[i + 2] - SCARF_SEG_DIST;\n        }\n        positions[i] += (Math.sin(positions[i + 2] * 0.2) * 0.3) / (i + 1);\n      }\n    }\n    this.scarf.process();\n    this.scarf.geometry.computeBoundingBox();\n    this.scarf.geometry.computeBoundingSphere();\n  }\n}\n\nexport default Player;\n"
  },
  {
    "path": "src/classes/random.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport SeedRandom from 'seedrandom';\n\nclass Random {\n  constructor( seed ) {\n    this.seed = seed;\n    this.generator = new SeedRandom( seed );\n  }\n\n  range( min, max ) {\n    return this.generator.quick() * ( max - min ) + min;\n  }\n}\n\nexport default Random;\n"
  },
  {
    "path": "src/classes/terrain-patch.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport Mathf from \"./mathf\";\n\nconst SEGS_X = 8;\nconst SEGS_Y = 8;\nconst VERTS_X = SEGS_X + 1;\n\nclass TerrainPatch extends THREE.Mesh {\n  constructor(opts) {\n    super();\n    this.objects = [];\n    this.width = opts.hasOwnProperty(\"width\") ? opts.width : 0;\n    this.height = opts.hasOwnProperty(\"height\") ? opts.height : 0;\n    this.heightmap = opts.hasOwnProperty(\"heightmap\")\n      ? opts.heightmap\n      : undefined;\n    this.debug = opts.hasOwnProperty(\"debug\") ? opts.debug : false;\n    let position = opts.hasOwnProperty(\"position\")\n      ? opts.position\n      : new THREE.Vector3();\n    this.position.set(position.x, position.y, position.z);\n    this.material = opts.hasOwnProperty(\"material\") ? opts.material : undefined;\n    this.verts = null;\n    this.verts3 = [];\n    this.normals = [];\n    this.geometry = this.createGeometry();\n    this.geometry.computeBoundingBox();\n    this.geometry.computeBoundingSphere();\n    this.scatters = [];\n\n    this.axisHelper = null;\n    this.boundingBoxHelper = null;\n\n    // Add debug helpers\n    if (this.debug) {\n      this.boundingBoxHelper = new THREE.BoundingBoxHelper(this, 0xffaa00);\n      this.boundingBoxHelper.update();\n      this.axisHelper = new THREE.AxisHelper(this.width / 2);\n      this.axisHelper.position.copy(this.position);\n      window.flight.scene.add(this.axisHelper);\n      window.flight.scene.add(this.boundingBoxHelper);\n    }\n  }\n\n  /**\n   * @description Rebuilds the terrain heightmap and scatter geometry.\n   */\n  rebuild(scene) {\n    let vertsX = SEGS_X + 1;\n    let vertsY = SEGS_Y + 1;\n    let v = 0;\n    for (let i = 0; i < vertsY; ++i) {\n      for (let j = 0; j < vertsX; ++j, v += 3) {\n        this.verts[v + 1] = 0.0;\n        let noise = this.heightmap.getHeight(\n          this.verts[v] + this.position.x,\n          this.verts[v + 2] + this.position.z,\n        );\n        this.verts[v + 1] = noise;\n      }\n    }\n    this.geometry.attributes.position.needsUpdate = true;\n    this.geometry.computeBoundingBox();\n    this.geometry.computeBoundingSphere();\n    this.geometry.computeVertexNormals();\n\n    // Regenerate scatter\n    this.scatters.forEach(v => {\n      scene.remove(v.scatterMesh);\n      v.scatterMesh.geometry.dispose();\n      v.scatterMesh = this.createScatterGeometry(v.opts);\n      window.flight.scene.add(v.scatterMesh);\n    });\n\n    if (this.debug) {\n      this.boundingBoxHelper.update();\n      this.axisHelper.position.copy(this.position);\n    }\n  }\n\n  /**\n   * Returns normal and position data as nice object array.\n   */\n  getNiceHeightmapData() {\n    let vertsX = SEGS_X + 1;\n    let vertsY = SEGS_Y + 1;\n    let v = 0;\n    let points = [];\n    let norms = this.geometry.attributes.normal.array;\n    for (let i = 0; i < vertsY; ++i) {\n      for (let j = 0; j < vertsX; ++j, v += 3) {\n        points.push({\n          position: new THREE.Vector3(\n            this.verts[v] + this.position.x,\n            this.verts[v + 1] + this.position.y,\n            this.verts[v + 2] + this.position.z,\n          ),\n          normal: new THREE.Vector3(norms[v], norms[v + 1], norms[v + 2]),\n        });\n      }\n    }\n    return points;\n  }\n\n  /**\n   * @description Adds a mesh to scatter on to the terrain.\n   */\n  addScatterObject(opts) {\n    let scatterMesh = this.createScatterGeometry(opts);\n\n    // Store data for terrain to be able to rebuild scatter when regenerated\n    this.scatters.push({\n      scatterMesh: scatterMesh, // The batched scatter mesh\n      opts: opts,\n    });\n\n    window.flight.scene.add(scatterMesh);\n  }\n\n  /**\n   * @description Creates the scatter geometry mesh.\n   */\n  createScatterGeometry(opts) {\n    let mesh = opts.hasOwnProperty(\"mesh\") ? opts.mesh : null;\n    let count = opts.hasOwnProperty(\"count\") ? opts.count : 0;\n    let minSize = opts.hasOwnProperty(\"minSize\") ? opts.minSize : null;\n    let maxSize = opts.hasOwnProperty(\"maxSize\") ? opts.maxSize : null;\n    let minHeight = opts.hasOwnProperty(\"minHeight\") ? opts.minHeight : 0;\n    let maxHeight = opts.hasOwnProperty(\"maxHeight\") ? opts.maxHeight : 128;\n    let lockXZScale = opts.hasOwnProperty(\"lockXZScale\")\n      ? opts.lockXZScale\n      : false;\n    let maxSlope = opts.hasOwnProperty(\"maxSlope\") ? opts.maxSlope : 0;\n\n    let meshGeo = mesh.geometry;\n    let vertCount = meshGeo.attributes.position.count;\n\n    let matrix = new THREE.Matrix4();\n    let rotation = new THREE.Quaternion();\n    let position = new THREE.Vector3();\n    let scale = new THREE.Vector3();\n\n    // Scatter geometry\n    let geometry = new THREE.BufferGeometry();\n\n    // Vertex positions\n    let posAttrib = new THREE.Float32Attribute(\n      new Float32Array(\n        vertCount * meshGeo.attributes.position.itemSize * count,\n      ),\n      meshGeo.attributes.position.itemSize,\n    );\n\n    // Vertex normals\n    let normAttrib = new THREE.Float32Attribute(\n      new Float32Array(\n        vertCount * meshGeo.attributes.position.itemSize * count,\n      ),\n      meshGeo.attributes.position.itemSize,\n    );\n\n    // Vertex colours\n    let colorAttrib = new THREE.Float32Attribute(\n      new Float32Array(vertCount * meshGeo.attributes.color.itemSize * count),\n      meshGeo.attributes.color.itemSize,\n    );\n\n    geometry.addAttribute(\"position\", posAttrib);\n    geometry.addAttribute(\"normal\", normAttrib);\n    geometry.addAttribute(\"color\", colorAttrib);\n\n    let size;\n    let sway = 0.05;\n\n    // Create individual objects for the scatter\n    for (let i = 0; i < count; ++i) {\n      let coord = {\n        x: Mathf.randRange(this.position.x, this.position.x + this.width),\n        y: 0,\n        z: Mathf.randRange(this.position.z, this.position.z + this.height),\n      };\n\n      let pos = this.getPosition(coord);\n      let normal = this.getNormal(coord);\n\n      // Min height for spawn\n      if (pos.y < minHeight || pos.y > maxHeight || normal.y < maxSlope) {\n        continue;\n      }\n\n      position.set(pos.x, pos.y, pos.z);\n\n      rotation.setFromEuler(\n        new THREE.Euler(\n          Mathf.randRange(-sway, sway),\n          Mathf.randRange(0, Math.PI * 2),\n          Mathf.randRange(-sway, sway),\n          THREE.Euler.DefaultOrder,\n        ),\n      );\n\n      let pScale = Mathf.lerp(\n        0.5,\n        1.0,\n        this.heightmap.perlinNoise(\n          pos.x + this.position.x,\n          pos.z + this.position.z,\n          3,\n        ),\n      );\n\n      let xScale = Mathf.randRange(minSize.x, maxSize.x);\n      size = {\n        x: xScale,\n        y: Mathf.randRange(minSize.y, maxSize.y),\n        z: lockXZScale ? xScale : Mathf.randRange(minSize.z, maxSize.z),\n      };\n\n      scale.set(size.x * pScale, size.y * pScale, size.z * pScale);\n      matrix.compose(\n        position,\n        rotation,\n        scale,\n      );\n      meshGeo.applyMatrix(matrix);\n      geometry.merge(meshGeo, i * vertCount);\n      meshGeo.applyMatrix(matrix.getInverse(matrix));\n    }\n\n    let scatterMesh = new THREE.Mesh(geometry, mesh.material);\n    scatterMesh.castShadow = true; // mesh.castShadow;\n    return scatterMesh;\n  }\n\n  /**\n   * @description Gets an object space position on the landscape based on world coordinates.\n   * @returns {Vector3} The position.\n   */\n  getPosition(coord) {\n    let localCoord = {\n      x: (coord.x - this.position.x) / this.width,\n      y: (coord.z - this.position.z) / this.height,\n    };\n\n    // Base vertex index\n    let ix1 = Math.floor(localCoord.x * SEGS_X);\n    let iy1 = Math.floor(localCoord.y * SEGS_Y);\n\n    let i1 = (VERTS_X * iy1 + ix1) * 3; // Bottom right\n    let i2 = i1 + 3; // Bottom left\n    let i3 = i1 + VERTS_X * 3; // Top right\n    let i4 = i3 + 3; // Top left\n\n    // Grid index interpolant time values collected from remainder\n    let rx1 = localCoord.x * SEGS_X - ix1;\n    let ry1 = localCoord.y * SEGS_Y - iy1;\n\n    let h1, h2, h;\n\n    // Interpolate heights of each vert using bilinear interpolation\n    h1 = Mathf.lerp(this.verts[i1 + 1], this.verts[i2 + 1], rx1); // Bottom left to bottom right\n    h2 = Mathf.lerp(this.verts[i3 + 1], this.verts[i4 + 1], rx1); // Top left to top right\n    h = Mathf.lerp(h1, h2, ry1);\n\n    return new THREE.Vector3(coord.x, h, coord.z);\n  }\n\n  /**\n   * {bool} Does this terrain patch contains a given world position?\n   */\n  containsWorldPosition(coord) {\n    let localCoord = {\n      x: (coord.x - this.position.x) / this.width,\n      y: (coord.z - this.position.z) / this.height,\n    };\n    return (\n      localCoord.x <= 1.0 &&\n      localCoord.x >= 0 &&\n      localCoord.y <= 1 &&\n      localCoord.y >= 0\n    );\n  }\n\n  /**\n   * Gets the normal of the terrain at the given world coordinates.\n   * @return {Vector3} The normal.\n   */\n  getNormal(coord) {\n    let localCoord = {\n      x: (coord.x - this.position.x) / this.width,\n      y: (coord.z - this.position.z) / this.height,\n    };\n\n    // Base vertex index\n    let ix1 = Math.floor(localCoord.x * SEGS_X);\n    let iy1 = Math.floor(localCoord.y * SEGS_Y);\n\n    let i1 = (VERTS_X * iy1 + ix1) * 3; // Bottom right\n    let i2 = i1 + 3; // Bottom left\n    let i3 = i1 + VERTS_X * 3; // Top right\n    let i4 = i3 + 3; // Top left\n\n    // Grid index interpolant time values collected from remainder\n    let rx1 = localCoord.x * SEGS_X - ix1;\n    let ry1 = localCoord.y * SEGS_Y - iy1;\n\n    let norms = this.geometry.attributes.normal.array;\n\n    // Interpolate heights of each vert using bilinear interpolation\n    let v1 = new THREE.Vector3();\n    v1.lerpVectors(\n      new THREE.Vector3(norms[i1], norms[i1 + 1], norms[i1 + 2]),\n      new THREE.Vector3(norms[i2], norms[i2 + 1], norms[i2 + 2]),\n      rx1,\n    );\n    let v2 = new THREE.Vector3();\n    v2.lerpVectors(\n      new THREE.Vector3(norms[i3], norms[i3 + 1], norms[i3 + 2]),\n      new THREE.Vector3(norms[i4], norms[i4 + 1], norms[i4 + 2]),\n      rx1,\n    );\n    let n = new THREE.Vector3();\n    n.lerpVectors(v1, v2, ry1);\n    return n;\n  }\n\n  /**\n   * Creates terrain geometry data and heightmap.\n   */\n  createGeometry() {\n    let geo = new THREE.BufferGeometry();\n    let vertsX = SEGS_X + 1;\n    let vertsY = SEGS_Y + 1;\n\n    this.verts = new Float32Array(vertsX * vertsY * 3);\n    this.uvs = new Float32Array(vertsX * vertsY * 2);\n    let v = 0;\n    let uv = 0;\n    let stepX = this.width / SEGS_X;\n    let stepY = this.height / SEGS_Y;\n    for (let j = 0; j < vertsY; ++j) {\n      for (let i = 0; i < vertsX; ++i, v += 3, uv += 2) {\n        let pos = {\n          x: i * stepX,\n          y: 0,\n          z: j * stepY,\n        };\n        let noise = this.heightmap.getHeight(\n          pos.x + this.position.x,\n          pos.z + this.position.z,\n        );\n        pos.y = noise;\n        if (pos.y < -15) {\n          // let helper = new THREE.AxisHelper( 10 );\n          // helper.position.set( pos.x + this.position.x, -15, pos.z + this.position.z );\n          // window.flight.scene.add( helper );\n        }\n        this.verts[v] = pos.x;\n        this.verts[v + 1] = pos.y;\n        this.verts[v + 2] = pos.z;\n        this.uvs[uv] = i / (vertsX - 1);\n        this.uvs[uv + 1] = j / (vertsY - 1);\n      }\n    }\n\n    let indices = new Uint32Array(SEGS_X * SEGS_Y * 6);\n\n    for (let i = 0, t = 0, j = 0, v = 0; i < SEGS_Y; ++i, v = i * vertsX) {\n      for (j = 0; j < SEGS_X; ++j, t += 6, v++) {\n        indices[t] = v;\n        indices[t + 1] = v + vertsX;\n        indices[t + 2] = v + vertsX + 1;\n        indices[t + 3] = v;\n        indices[t + 4] = v + vertsX + 1;\n        indices[t + 5] = v + 1;\n      }\n    }\n\n    geo.addAttribute(\"position\", new THREE.BufferAttribute(this.verts, 3));\n    geo.addAttribute(\"uv\", new THREE.BufferAttribute(this.uvs, 2));\n    geo.setIndex(new THREE.BufferAttribute(indices, 1));\n    geo.computeVertexNormals();\n    return geo;\n  }\n}\n\nexport default TerrainPatch;\n"
  },
  {
    "path": "src/index.js",
    "content": "// Copyright (c) 2019 Alexander Perrin contact@alexperrin.com\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nrequire(\"../node_modules/three/src/loaders/ObjectLoader\");\nrequire(\"../node_modules/three/examples/js/controls/OrbitControls\");\nrequire(\"../lib/THREE.MeshLine\");\n\nimport Detector from \"../lib/Detector\";\nimport Player from \"./classes/player\";\nimport * as THREE from \"three\";\nimport TerrainPatch from \"./classes/terrain-patch\";\nimport Heightmap from \"./classes/heightmap\";\nimport Bird from \"./classes/bird\";\nimport Random from \"./classes/random\";\nimport $ from \"jquery\";\n\n(function() {\n  if (\"performance\" in window == false) {\n    window.performance = {};\n  }\n\n  Date.now =\n    Date.now ||\n    function() {\n      // thanks IE8\n      return new Date().getTime();\n    };\n\n  if (\"now\" in window.performance == false) {\n    var nowOffset = Date.now();\n\n    if (performance.timing && performance.timing.navigationStart) {\n      nowOffset = performance.timing.navigationStart;\n    }\n\n    window.performance.now = function now() {\n      return Date.now() - nowOffset;\n    };\n  }\n})();\n\n(function() {\n  // Rendering\n  const SHADOW_MAP_WIDTH = 1024;\n  const SHADOW_MAP_HEIGHT = 1024;\n  const SHADOW_CAM_SIZE = 512;\n  const SHADOW_CAM_STEP = 16;\n\n  // File\n  const IMAGE_PATH = \"static/images/\";\n  const MESH_PATH = \"static/meshes/\";\n\n  let meshFiles = [\n    \"tree.json\",\n    \"balloon.json\",\n    \"boat01.json\",\n    \"pier01.json\",\n    \"church01.json\",\n  ];\n  let imageFiles = [];\n\n  let objectLoader = new THREE.ObjectLoader();\n\n  // Data storage\n  let meshes = {};\n  let textures = {};\n\n  // Birds\n  const BIRD_COUNT = 40;\n  const BIRD_SPAWN_DISTANCE = -200;\n  let birds = [];\n\n  // Lights, camera and helpers\n  let renderer,\n    scene,\n    cameraControls,\n    sun, // Directional light\n    cameraAnchor, // Camera base rotator\n    gameCamera, // Game view camera\n    renderCamera, // Currently rendering camera\n    editorCamera, // Utility view camera\n    lightAnchor, // Used for containing sun object and target in more managable unit\n    lightPosIndex, // Used for tracking movment of light\n    lightShadowOffset, // Used for offsetting shadow camera matrix\n    clock,\n    _this,\n    loadingMessage,\n    player;\n\n  // Boats\n  const DEPTH_FOR_BOAT = -21;\n\n  // Random object spawn chances\n  const CHANCE_FOR_DOCK = 0.05;\n  const CHANCE_FOR_CHURCH = 0.1;\n\n  // Random generators\n  let random = new Random(\"jfw3uhfoi44\");\n  let birdRandom = new Random(\"9ehg0wj40jf\");\n\n  // Debug rays\n  let rays = [];\n\n  // Terrain\n  const TERRAIN_PATCH_WIDTH = 64;\n  const TERRAIN_PATCH_HEIGHT = 64;\n  const TERRAIN_PATCHES_X = 6;\n  const TERRAIN_PATCHES_Z = 12;\n  const TERRAIN_OFFSET_X = -TERRAIN_PATCHES_X * 0.5 * TERRAIN_PATCH_WIDTH;\n  const TERRAIN_OFFSET_Z = -128;\n  const TREES_PER_TERRAIN = 50;\n  const WATER_HEIGHT = -15.0;\n  let heightmap = new Heightmap({\n    noiseOffset: {\n      x: 0,\n      y: -TERRAIN_OFFSET_Z,\n    },\n    height: 50,\n    scale: 100,\n  });\n  let terrainPatches = [];\n  let waterPlane;\n  // Used for tracking terrain regeneration requirement\n  let terrainGridIndex = {\n    x: 0,\n    y: 0,\n  };\n\n  // Shaders\n  let standardShader;\n\n  // Input\n  let input = {\n    x: 0,\n    y: 0,\n  };\n\n  /**\n   * @summary Window focus detection.\n   * @description Stops the animation clock when window is inactive.\n   */\n  (function() {\n    var hidden = \"hidden\";\n\n    // Standards:\n    if (hidden in document)\n      document.addEventListener(\"visibilitychange\", onchange);\n    else if ((hidden = \"mozHidden\") in document)\n      document.addEventListener(\"mozvisibilitychange\", onchange);\n    else if ((hidden = \"webkitHidden\") in document)\n      document.addEventListener(\"webkitvisibilitychange\", onchange);\n    else if ((hidden = \"msHidden\") in document)\n      document.addEventListener(\"msvisibilitychange\", onchange);\n    // IE 9 and lower:\n    else if (\"onfocusin\" in document)\n      document.onfocusin = document.onfocusout = onchange;\n    // All others:\n    else\n      window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;\n\n    function onchange(evt) {\n      if (document[hidden]) {\n        if (clock !== undefined) {\n          clock.stop();\n        }\n      } else {\n        if (clock !== undefined) {\n          clock.start();\n        }\n      }\n      var v = \"visible\",\n        h = \"hidden\",\n        evtMap = {\n          focus: v,\n          focusin: v,\n          pageshow: v,\n          blur: h,\n          focusout: h,\n          pagehide: h,\n        };\n\n      evt = evt || window.event;\n      if (evt.type in evtMap) document.body.className = evtMap[evt.type];\n      else document.body.className = this[hidden] ? \"hidden\" : \"visible\";\n    }\n\n    // set the initial state (but only if browser supports the Page Visibility API)\n    if (document[hidden] !== undefined)\n      onchange({\n        type: document[hidden] ? \"blur\" : \"focus\",\n      });\n  })();\n\n  /**\n   * Gets the device pixel ratio.\n   * @return float the ratio\n   */\n  let getDevicePixelRatio = function() {\n    return window.devicePixelRatio || 1;\n  };\n\n  /**\n   * Adds an event to the object\n   * @param {object}   object   object to add event to\n   * @param {string}   type     event type\n   * @param {Function} callback event handler\n   */\n  let addEvent = function(object, type, callback) {\n    if (object === null || typeof object === \"undefined\") return;\n    if (object.addEventListener) {\n      object.addEventListener(type, callback, false);\n    } else if (object.attachEvent) {\n      object.attachEvent(\"on\" + type, callback);\n    } else {\n      object[\"on\" + type] = callback;\n    }\n  };\n\n  let updateRenderCamera = function() {\n    let width = window.innerWidth;\n    let height = window.innerHeight;\n    renderCamera.aspect = width / height;\n    renderCamera.updateProjectionMatrix();\n  };\n\n  /**\n   * Resize function\n   * @param  double width\n   * @param  double height\n   */\n  let resize = function() {\n    let width = window.innerWidth;\n    let height = window.innerHeight;\n    let devicePixelRatio = getDevicePixelRatio();\n    renderer.setSize(width * devicePixelRatio, height * devicePixelRatio);\n\n    // Update canvas\n    let canvas = renderer.domElement;\n    canvas.width = width * devicePixelRatio;\n    canvas.height = height * devicePixelRatio;\n    canvas.style.width = width + \"px\";\n    canvas.style.height = height + \"px\";\n\n    updateRenderCamera();\n  };\n\n  /**\n   * Shifts the terrain by given units\n   * @param  {[type]} x terrain units to shift in x\n   * @param  {[type]} y terrain units to shift in y\n   */\n  let shiftTerrain = function(x, y) {\n    // Shift forward\n    for (let i = 0; i < y; ++i) {\n      for (let j = 0; j < TERRAIN_PATCHES_X; ++j) {\n        let tp = terrainPatches[terrainGridIndex.y % TERRAIN_PATCHES_Z][j];\n        tp.position.z += TERRAIN_PATCH_HEIGHT * TERRAIN_PATCHES_Z;\n        tp.rebuild(scene);\n      }\n    }\n    spawnObjectsForTerrainPatches(\n      terrainPatches[terrainGridIndex.y % TERRAIN_PATCHES_Z],\n    );\n\n    terrainGridIndex.y += y;\n    waterPlane.position.z += TERRAIN_PATCH_HEIGHT * y;\n  };\n\n  let spawnObjectsForTerrainPatches = function(terrainPatches) {\n    let data = [];\n    terrainPatches.forEach(v => {\n      data = data.concat(v.getNiceHeightmapData());\n    });\n\n    let boatSpawnPoints = [];\n    let pierSpawnPoints = [];\n    let buildingSpawnPoints = [];\n\n    // Iterate through heightmap to find appropriate places for spawning objects\n    data.forEach(v => {\n      // Find suitable positions for spawning boats\n      if (v.position.y <= DEPTH_FOR_BOAT && v.normal.y >= 0.99) {\n        boatSpawnPoints.push(v);\n      }\n      if (\n        Math.abs(v.position.y - (WATER_HEIGHT + 0.5)) < 1.5 &&\n        v.normal.y > 0.7\n      ) {\n        pierSpawnPoints.push(v);\n      }\n      if (v.position.y > WATER_HEIGHT && v.normal.y > 0.95) {\n        buildingSpawnPoints.push(v);\n      }\n    });\n\n    if (randomChance(CHANCE_FOR_DOCK)) {\n      // Boat spawning\n      if (boatSpawnPoints.length > 0) {\n        // Spawn a patch of boats\n        let numBoats = Math.ceil(random.range(1, 5));\n        let point =\n          boatSpawnPoints[Math.floor(random.range(0, boatSpawnPoints.length))];\n        for (let i = 0; i < numBoats; ++i) {\n          let angle = random.range(0, Math.PI * 2);\n          let dist = i * 5;\n          let boat = meshes[\"boat\"].clone();\n          boat.castShadow = true;\n          let scale = random.range(0.5, 0.75);\n          boat.scale.set(scale, scale, scale);\n          boat.rotation.y = random.range(0, Math.PI * 2);\n          let xOffset = Math.cos(angle) * dist;\n          let zOffset = Math.sin(angle) * dist;\n          boat.position.set(\n            point.position.x + xOffset,\n            WATER_HEIGHT + 0.5 * scale,\n            point.position.z + zOffset,\n          );\n          scene.add(boat);\n        }\n      }\n\n      // Pier spawning\n      let numPiers = Math.ceil(random.range(1, 3));\n      if (pierSpawnPoints.length > 0) {\n        for (let i = 0; i < numPiers; ++i) {\n          let v =\n            pierSpawnPoints[\n              Math.floor(random.range(0, pierSpawnPoints.length))\n            ];\n          // Check that there's enough room for the pier to be placed in the water\n          let offset = new THREE.Vector2(v.normal.x, v.normal.z)\n            .normalize()\n            .multiplyScalar(20);\n          let pierPos = new THREE.Vector3(\n            v.position.x + offset.x,\n            WATER_HEIGHT,\n            v.position.z + offset.y,\n          );\n          let depthPos = sampleLandscapePosition(pierPos);\n          if (depthPos !== undefined) {\n            if (depthPos.y < DEPTH_FOR_BOAT * 0.75) {\n              let pos = new THREE.Vector3();\n              pos.copy(v.position);\n              let waterDiff = pos.y - WATER_HEIGHT;\n              let dir = new THREE.Vector3(\n                v.normal.x,\n                0,\n                v.normal.z,\n              ).multiplyScalar((waterDiff / (1.0 - v.normal.y)) * 0.5);\n              pos.y -= waterDiff;\n              pos.add(dir);\n\n              let rotation = Math.atan2(v.normal.x, v.normal.z);\n              let pier = meshes[\"pier\"].clone();\n              pier.scale.set(1.5, 1.5, 1.5);\n              pier.position.set(pos.x, WATER_HEIGHT + 1.5, pos.z);\n              pier.castShadow = true;\n              pier.rotation.z = rotation + Math.PI / 2;\n              scene.add(pier);\n            }\n          }\n        }\n      }\n    }\n\n    if (randomChance(CHANCE_FOR_CHURCH)) {\n      let point =\n        buildingSpawnPoints[\n          Math.floor(random.range(0, buildingSpawnPoints.length))\n        ];\n      let pos = point.position;\n      let rotation = Math.atan2(point.normal.x, point.normal.z);\n      let church = meshes[\"church\"].clone();\n      church.position.copy(pos);\n      church.scale.multiplyScalar(1.5);\n      church.position.y += 4;\n      church.castShadow = true;\n      church.receiveShadow = true;\n      church.rotation.y = rotation - Math.PI / 2;\n      scene.add(church);\n    }\n  };\n\n  /**\n   * Terrain grid index to world position transformation\n   * @param  {int} x terrain index x\n   * @param  {int} y terrain index y\n   * @return {vec3}   world position\n   */\n  let terrainGridToWorld = function(x, y) {\n    return {\n      x: x * TERRAIN_PATCH_WIDTH,\n      y: 0,\n      z: y * TERRAIN_PATCH_HEIGHT,\n    };\n  };\n\n  /**\n   * Returns the terrain snapped position of the given world position.\n   * Returns undefined if position is not over landscape.\n   */\n  let sampleLandscapePosition = function(worldPosition) {\n    for (let i = 0; i < TERRAIN_PATCHES_Z; ++i) {\n      for (let j = 0; j < TERRAIN_PATCHES_X; ++j) {\n        if (terrainPatches[i][j].containsWorldPosition(worldPosition)) {\n          return terrainPatches[i][j].getPosition(worldPosition);\n        }\n      }\n    }\n    return undefined;\n  };\n\n  let sampleLandscapeNormal = function(worldPosition) {\n    for (let i = 0; i < TERRAIN_PATCHES_Z; ++i) {\n      for (let j = 0; j < TERRAIN_PATCHES_X; ++j) {\n        if (terrainPatches[i][j].containsWorldPosition(worldPosition)) {\n          return terrainPatches[i][j].getNormal(worldPosition);\n        }\n      }\n    }\n    return undefined;\n  };\n\n  /**\n   * World position to terrain grid index transformation\n   * @param  {vec3} pos world position\n   * @return {vec2}     terrain index\n   */\n  let worldToTerrainGrid = function(pos) {\n    return {\n      x: Math.round(pos.x / TERRAIN_PATCH_WIDTH),\n      y: Math.round(pos.z / TERRAIN_PATCH_HEIGHT),\n    };\n  };\n\n  /// Gets a random position on the entire landscape\n  let getRandomPositionOnLandscape = function() {\n    return {\n      x:\n        getRandomArbitrary(0, TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH) +\n        TERRAIN_OFFSET_X,\n      y: 0,\n      z:\n        getRandomArbitrary(0, TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT) +\n        TERRAIN_OFFSET_Z,\n    };\n  };\n\n  /**\n   * Coin flip random chance selector.\n   * @param {Number} chance the chance between 0 and 1.\n   * @return {Boolean} whether the random chance occurred.\n   */\n  let randomChance = function(chance) {\n    return random.range(0, 1) + chance > 1.0;\n  };\n\n  /**\n   * Get the x midpoint of the terrain.\n   * @return {Number} the x midpoint.\n   */\n  let getLandscapeMidpoint = function() {\n    return {\n      x: (TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH) / 2 + TERRAIN_OFFSET_X,\n    };\n  };\n\n  /**\n   * Get the width of the terrain.\n   * @return {Number} the width.\n   */\n  let getLandscapeWidth = function() {\n    return TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH;\n  };\n\n  /**\n   * Get the depth of the terrain.\n   * @return {Number} the depth.\n   */\n  let getLandscapeDepth = function() {\n    return TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT;\n  };\n\n  /**\n   * Render the scene.\n   */\n  let render = function() {\n    renderer.render(scene, renderCamera);\n  };\n\n  /**\n   * Parses a shader from the THREE shader chunk library\n   * @param  {String} shaderStr the raw GLSL shader string.\n   * @return {String} the parsed shader code.\n   */\n  let getShader = function(shaderStr) {\n    return shaderStr.replace(/#include\\s+(\\S+)/gi, function(match, p1) {\n      p1 = p1.substr(1, p1.length - 2);\n      var chunk = THREE.ShaderChunk[p1];\n      return chunk ? chunk : \"\";\n    });\n  };\n\n  /**\n   * Load the meshes required for playing the application.\n   * @param {Function} callback the callback to execute when meshes are loaded.\n   */\n  let loadMeshes = function(callback) {\n    loadingMessage.html(\"geometry\");\n\n    let numFiles = meshFiles.length;\n    if (numFiles === 0) {\n      callback();\n    }\n    meshFiles.forEach(v => {\n      objectLoader.load(MESH_PATH + v, obj => {\n        let name = obj.name;\n        meshes[name] = obj;\n        numFiles--;\n        if (numFiles === 0) {\n          callback();\n        }\n      });\n    });\n  };\n\n  /**\n   * Load the textures required to play the application.\n   */\n  let loadTextures = function(callback) {\n    loadingMessage.html(\"images\");\n\n    let numFiles = imageFiles.length;\n    if (numFiles === 0) {\n      callback();\n    }\n    imageFiles.forEach(v => {\n      let texture = new THREE.Texture();\n      let image = new Image();\n      image.onload = function() {\n        texture.image = image;\n        texture.needsUpdate = true;\n        texture.name = v;\n        textures[v] = texture;\n        numFiles--;\n        if (numFiles === 0) {\n          callback();\n        }\n      };\n      image.src = IMAGE_PATH + v;\n    });\n  };\n\n  /**\n   * Initialise the THREE WebGL renderer and append to DOM.\n   */\n  let initRenderer = function() {\n    renderer = new THREE.WebGLRenderer({\n      antialias: false,\n    });\n    renderer.setClearColor(\"white\", 1);\n    renderer.shadowMap.enabled = true;\n    renderer.shadowMap.autoUpdate = false;\n    renderer.shadowMap.needsUpdate = true;\n    renderer.shadowMap.type = THREE.PCFSoftShadowMap;\n    document\n      .getElementById(\"canvas-container\")\n      .appendChild(renderer.domElement);\n\n    let mat = new THREE.ShaderMaterial({\n      lights: true,\n      uniforms: THREE.ShaderLib.phong.uniforms,\n      uniforms: THREE.UniformsUtils.merge([\n        THREE.ShaderLib.phong.uniforms,\n        {\n          xFogColor: {\n            type: \"c\",\n            value: new THREE.Color(0xffffff),\n          },\n        },\n      ]),\n      shading: THREE.FlatShading,\n      fog: true,\n      vertexShader: standardShader.vertexShader,\n      fragmentShader: standardShader.fragmentShader,\n      vertexColors: THREE.VertexColors,\n    });\n\n    // Assign materials\n    Object.keys(meshes).forEach(v => {\n      let m = meshes[v];\n      m.material = mat;\n    });\n  };\n\n  /**\n   * Initialise the base scene objects and helpers.\n   */\n  let initScene = function() {\n    scene = new THREE.Scene();\n    lightShadowOffset = new THREE.Object3D();\n\n    // Used for storing sun shadow camera and target\n    lightAnchor = new THREE.Object3D();\n    scene.add(lightAnchor);\n    lightAnchor.add(lightShadowOffset);\n\n    // Used for transforming light and shadow cameras\n    let lightMatrix = new THREE.Matrix4();\n    let rotation = new THREE.Quaternion();\n    rotation.setFromEuler(\n      new THREE.Euler(\n        THREE.Math.degToRad(35),\n        THREE.Math.degToRad(-135),\n        0,\n        \"YXZ\",\n      ),\n    );\n    lightMatrix.compose(\n      new THREE.Vector3(0, 128, 0),\n      rotation,\n      new THREE.Vector3(1, 1, 1),\n    );\n\n    // Lights\n    sun = new THREE.DirectionalLight(0xffffff, 1.5);\n    sun.position.set(0, 0, 0);\n    sun.target.position.set(0, 0, 128);\n    scene.add(new THREE.AmbientLight(0xeeeeff, 0.5));\n    scene.fog = new THREE.Fog(0xdaf0fb, 350, 950);\n    let hemiLight = new THREE.HemisphereLight(0xffffff, 0xffed00, 0.25);\n    hemiLight.position.set(0, 500, 0);\n    scene.add(hemiLight);\n\n    // Shadows\n    sun.castShadow = true;\n    sun.shadow.mapSize.width = SHADOW_MAP_WIDTH;\n    sun.shadow.mapSize.height = SHADOW_MAP_HEIGHT;\n    let sCamSize = SHADOW_CAM_SIZE;\n    sun.shadow.camera.right = -sCamSize / 2;\n    sun.shadow.camera.left = sCamSize / 2;\n    sun.shadow.camera.top = sCamSize / 2;\n    sun.shadow.camera.bottom = -sCamSize / 2;\n    sun.shadow.camera.far = 512;\n    sun.shadow.camera.near = -512;\n    sun.shadow.bias = -0.0025;\n\n    // Shadow camera position texel snapping compensator\n    lightShadowOffset.add(sun);\n    lightShadowOffset.add(sun.target);\n    lightAnchor.applyMatrix(lightMatrix);\n    lightPosIndex = lightAnchor.position.z;\n    lightAnchor.position.z += 400;\n\n    window.flight.scene = scene;\n  };\n\n  /**\n   * Parse the glsl shaders.\n   */\n  let initShaders = function() {\n    standardShader = {\n      vertexShader: getShader(require(\"./shaders/standard_vert.glsl\")),\n      fragmentShader: getShader(require(\"./shaders/standard_frag.glsl\")),\n    };\n  };\n\n  /**\n   * Initialise the terrain materials and geometry.\n   */\n  let initTerrain = function() {\n    // Shader uniforms\n    let uniforms = {\n      cliffColor: {\n        type: \"c\",\n        value: new THREE.Color(0x555555),\n      },\n      grassColor: {\n        type: \"c\",\n        value: new THREE.Color(0x475905),\n      },\n      sandColor: {\n        type: \"c\",\n        value: new THREE.Color(0x886633),\n      },\n      steps: {\n        type: \"f\",\n        value: 1.0,\n      },\n      waterHeight: {\n        type: \"f\",\n        value: WATER_HEIGHT + 0.5,\n      },\n      xFogColor: {\n        type: \"c\",\n        value: new THREE.Color(0xffffff),\n      },\n      threshold: {\n        type: \"f\",\n        value: 0.25,\n      },\n    };\n\n    // Materials\n    let landscapeMaterial = new THREE.ShaderMaterial({\n      lights: true,\n      uniforms: THREE.UniformsUtils.merge([\n        THREE.ShaderLib.phong.uniforms,\n        uniforms,\n      ]),\n      shading: THREE.FlatShading,\n      fog: true,\n      vertexShader: getShader(require(\"./shaders/landscape_vert.glsl\")),\n      fragmentShader: getShader(require(\"./shaders/landscape_frag.glsl\")),\n    });\n\n    // Terrain patches\n    for (let i = 0; i < TERRAIN_PATCHES_Z; ++i) {\n      terrainPatches[i] = [];\n      for (let j = 0; j < TERRAIN_PATCHES_X; ++j) {\n        let tp = new TerrainPatch({\n          width: TERRAIN_PATCH_WIDTH,\n          height: TERRAIN_PATCH_HEIGHT,\n          position: new THREE.Vector3(\n            TERRAIN_PATCH_WIDTH * j + TERRAIN_OFFSET_X,\n            0,\n            TERRAIN_PATCH_HEIGHT * i + TERRAIN_OFFSET_Z,\n          ),\n          heightmap: heightmap,\n          material: landscapeMaterial,\n          debug: false,\n        });\n        tp.receiveShadow = true;\n        tp.castShadow = true;\n        tp.addScatterObject({\n          mesh: meshes[\"tree\"],\n          count: TREES_PER_TERRAIN,\n          minSize: {\n            x: 0.25,\n            y: 0.4,\n            z: 0.25,\n          },\n          maxSize: {\n            x: 0.5,\n            y: 0.5,\n            z: 0.5,\n          },\n          lockXZScale: true,\n          minHeight: -10,\n          maxHeight: 100,\n          maxSlope: 0.6,\n        });\n        terrainPatches[i][j] = tp;\n        scene.add(terrainPatches[i][j]);\n      }\n    }\n\n    for (let i = 0; i < TERRAIN_PATCHES_Z; ++i) {\n      spawnObjectsForTerrainPatches(terrainPatches[i]);\n    }\n\n    // River plane\n    let riverMaterial = new THREE.MeshPhongMaterial({\n      color: 0x111111,\n    });\n    riverMaterial.emissive = new THREE.Color(0x5c9fab);\n    let riverMesh = new THREE.PlaneGeometry(\n      TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH,\n      TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT * 2,\n      1,\n      1,\n    );\n    waterPlane = new THREE.Mesh(riverMesh, riverMaterial);\n    waterPlane.receiveShadow = true;\n    waterPlane.position.y = -15;\n    waterPlane.rotation.x = -Math.PI / 2.0;\n    waterPlane.position.z = -TERRAIN_OFFSET_X;\n    scene.add(waterPlane);\n  };\n\n  /**\n   * Create our balloon friend and add to scene.\n   */\n  let initPlayer = function() {\n    let obj = meshes[\"balloon\"];\n    player = new Player();\n    player.position.set(0, 100, 0);\n    player.add(obj);\n    scene.add(player);\n  };\n\n  /**\n   * Initialise camera systems.\n   */\n  let initCameras = function() {\n    // Game camera\n    gameCamera = new THREE.PerspectiveCamera(\n      15.0,\n      window.innerWidth / window.innerHeight,\n      100,\n      10000,\n    );\n    cameraAnchor = new THREE.Object3D();\n    cameraAnchor.position.set(\n      (TERRAIN_PATCHES_X * TERRAIN_PATCH_WIDTH) / 2,\n      0,\n      (TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT) / 2,\n    );\n    cameraAnchor.updateMatrix();\n    cameraAnchor.add(gameCamera);\n    gameCamera.position.set(100, 250, -300);\n    gameCamera.lookAt(new THREE.Vector3(0, 100, 0));\n    scene.add(cameraAnchor);\n\n    // Editor camera\n    editorCamera = gameCamera.clone();\n    cameraControls = new THREE.OrbitControls(editorCamera, renderer.domElement);\n    cameraControls.target.set(\n      0,\n      0,\n      (TERRAIN_PATCHES_Z * TERRAIN_PATCH_HEIGHT) / 2,\n    );\n    editorCamera.position.set(-250, 350, -250);\n    cameraControls.update();\n\n    renderCamera = gameCamera;\n  };\n\n  /**\n   * Move the birds back to the start of their flight.\n   * This will be invoked every now and again to loop the bird flight.\n   */\n  let respawnBirds = function() {\n    let spawnWidth = getLandscapeWidth() * 0.25;\n    let bunchFactor = birdRandom.range(0.2, 1);\n    let flockPosition = new THREE.Vector3(\n      birdRandom.range(-spawnWidth, spawnWidth),\n      birdRandom.range(64, 128),\n      player.position.z + BIRD_SPAWN_DISTANCE,\n    );\n    let birdPos;\n    for (let i = 0; i < BIRD_COUNT; ++i) {\n      birdPos = flockPosition\n        .clone()\n        .add(\n          new THREE.Vector3(\n            birdRandom.range(-32, 32) * bunchFactor,\n            birdRandom.range(-16, 16) * bunchFactor,\n            birdRandom.range(-48, 48) * bunchFactor,\n          ),\n        );\n      birds[i].position.copy(birdPos);\n    }\n    // Loop this function every so often\n    setTimeout(respawnBirds, 30000 + birdRandom.range(0, 20000));\n  };\n\n  /**\n   * Hatch some new birds.\n   */\n  let initBirds = function() {\n    for (let i = 0; i < BIRD_COUNT; ++i) {\n      let bird = new Bird();\n      scene.add(bird);\n      birds.push(bird);\n    }\n    respawnBirds();\n  };\n\n  /**\n   * Initialise the core application.\n   */\n  let init = function() {\n    loadingMessage.html(\"world\");\n\n    window.flight = {};\n    clock = new THREE.Clock(true);\n    window.flight.clock = clock;\n    window.flight.input = 0;\n    window.flight.debug = {};\n    window.flight.debug.drawRay = drawRay;\n\n    initShaders();\n    initRenderer();\n    initScene();\n    initPlayer();\n    initCameras();\n    initBirds();\n    initTerrain();\n\n    let a = new THREE.AxisHelper(20);\n    a.position.set(0, 0, 0);\n    scene.add(a);\n\n    // Events\n    addEvent(window, \"resize\", resize);\n\n    addEvent(window, \"keydown\", function(e) {\n      // Inputs\n      if (e.keyCode === 39) {\n        input.x = 1.0;\n      } else if (e.keyCode === 37) {\n        input.x = -1.0;\n      } else if (e.keyCode === 32) {\n        // Camera switching\n        if (renderCamera === editorCamera) {\n          renderCamera = gameCamera;\n        } else {\n          renderCamera = editorCamera;\n        }\n      }\n    });\n\n    window.addEventListener(\"touchmove\", function(e) {\n      // Prevent scroll behaviour\n      if (!event.target.classList.contains(\"scrollable\")) {\n        event.preventDefault();\n      }\n    });\n\n    window.addEventListener(\"mousewheel\", function(e) {\n      // Disable mouse wheel scrolling\n      e.preventDefault();\n    });\n\n    addEvent(window, \"touchstart\", function(e) {\n      let mp = window.innerWidth / 2;\n      let p = e.touches[0].clientX;\n      if (p - mp < 0) {\n        // Go left\n        input.x = -1;\n      } else if (p - mp > 0) {\n        // Go right\n        input.x = 1;\n      }\n    });\n\n    window.addEventListener(\"touchend\", function() {\n      input.x = 0;\n    });\n\n    addEvent(window, \"keyup\", function(e) {\n      // Inputs\n      if (e.keyCode === 39) {\n        input.x = 0;\n      } else if (e.keyCode === 37) {\n        input.x = 0;\n      }\n    });\n\n    resize();\n    idle();\n\n    // Silly hack to prevent the perf hiccup ruining the fade effect\n    setTimeout(() => {\n      $(\"#loader\").fadeOut(\"slow\");\n    }, 100);\n  };\n\n  /**\n   * Ray drawing util inspired by Unity's approach.\n   * Not performant at all, but very useful for quick draws.\n   */\n  let drawRay = function(position, direction, color, duration) {\n    var material = new THREE.LineBasicMaterial({\n      color: color,\n    });\n\n    var geometry = new THREE.Geometry();\n    geometry.vertices.push(new THREE.Vector3(), direction.clone());\n\n    var line = new THREE.Line(geometry, material);\n    line.position.copy(position);\n    rays.push({\n      line: line,\n      killTime: window.flight.time + duration,\n    });\n    scene.add(line);\n  };\n\n  /**\n   * Idle/animate loop called every animation frame tick.\n   */\n  let idle = function() {\n    let dt = clock.getDelta();\n    window.flight.deltaTime = dt;\n    window.flight.input = input;\n    window.flight.time = clock.getElapsedTime();\n\n    // Update shadow camera position\n    lightAnchor.position.z = player.position.z + 256;\n    if (Math.round(lightAnchor.position.z) - lightPosIndex > SHADOW_CAM_STEP) {\n      lightPosIndex = Math.round(lightAnchor.position.z);\n      lightAnchor.updateMatrixWorld();\n      // Snap the shadow camera matrix to the nearest texel to prevent shadow swimming\n      let lPos = new THREE.Vector3(0, 0, 0); // Real shadow cam position\n      let lPos2 = new THREE.Vector3(0, 0, 0); // Texel snapped cam position\n      lightAnchor.worldToLocal(lPos);\n      lPos2.set(lPos.x, lPos.y, lPos.z);\n      let tSize = SHADOW_CAM_SIZE / SHADOW_MAP_WIDTH;\n      lPos2.x = Math.round(lPos2.x / tSize) * tSize;\n      lPos2.y = Math.round(lPos2.y / tSize) * tSize;\n      lightShadowOffset.position.set(lPos.x - lPos2.x, lPos.y - lPos2.y, 0);\n      renderer.shadowMap.needsUpdate = true;\n    }\n\n    if (player) {\n      player.update();\n      player.gridPos = worldToTerrainGrid(player.position);\n      // Check for terrain shift\n      while (player.gridPos.y > terrainGridIndex.y) {\n        shiftTerrain(0, 1);\n      }\n      cameraAnchor.position.set(player.position.x, 0, player.position.z);\n      if (cameraAnchor.position.x > 60) {\n        cameraAnchor.position.x = 60;\n      } else if (cameraAnchor.position.x < -60) {\n        cameraAnchor.position.x = -60;\n      }\n    }\n\n    // Animate birds\n    let avBirdPos = new THREE.Vector3();\n    birds.forEach(b => {\n      avBirdPos.add(b.position);\n    });\n    avBirdPos.divideScalar(birds.length);\n    // Basic flocking\n    birds.forEach(b => {\n      b.update(dt, avBirdPos, player);\n    });\n\n    requestAnimationFrame(idle);\n    render();\n\n    // Remove the rays\n    let t = window.flight.time;\n    rays.forEach(r => {\n      if (t > r.killTime) {\n        scene.remove(r.line);\n      }\n    });\n  };\n\n  $(document).ready(function() {\n    loadingMessage = $(\"#loading-message\");\n\n    if (!Detector.webgl || !Detector.canvas) {\n      $(\".label\").html(\n        \"My apologies, your device doesn't support WebGL, which is what this thing relies on! Try updating it, or try another one.\",\n      );\n    } else {\n      loadingMessage.html(\"code\");\n    }\n\n    loadTextures(() => {\n      loadMeshes(() => {\n        init();\n      });\n    });\n  });\n\n  _this = this;\n})();\n"
  },
  {
    "path": "src/shaders/landscape_frag.glsl",
    "content": "#define PHONG\n\nuniform vec3 cliffColor;\nuniform vec3 grassColor;\nuniform vec3 sandColor;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform vec3 xFogColor;\nuniform float shininess;\nuniform float opacity;\nuniform float steps;\nuniform float threshold;\nuniform sampler2D map;\nuniform float waterHeight;\n\nvarying vec3 vWorldNormal;\nvarying vec3 vWorldPos;\n\n#include <common>\n#include <packing>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tfloat y = floor((vWorldNormal.y) * steps + threshold) / steps;\n\tvec3 c = mix(sandColor, grassColor, clamp(floor(vWorldPos.y - waterHeight), 0.01, 0.99));\n\tc = mix(cliffColor, c, y);\n\tvec4 diffuseColor = vec4( c, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_flip>\n\t#include <normal_fragment>\n\t#include <emissivemap_fragment>\n\n\t// accumulation\n\t#include <lights_phong_fragment>\n\t#include <lights_template>\n\n\t// modulation\n\t#include <aomap_fragment>\n\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tfloat dot = pow(saturate(1.0 - dot(normalize(vViewPosition), normal)), 5.0);\n\toutgoingLight += vec3(0.8 * dot, dot, 0.7 * dot);\n\n\t#include <envmap_fragment>\n\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\n\tc = gl_FragColor.rgb;\n\tgl_FragColor = mix(vec4(c, 1), vec4(xFogColor, 1), clamp((abs(vWorldPos.x) - 128.0) / 32.0, 0.0, 1.0));\n}\n"
  },
  {
    "path": "src/shaders/landscape_vert.glsl",
    "content": "#define PHONG\n\nvarying vec3 vViewPosition;\nvarying vec3 vWorldNormal;\nvarying vec3 vWorldPos;\n\n#ifndef FLAT_SHADED\n\n\tvarying vec3 vNormal;\n\n#endif\n\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <color_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n\nvoid main() {\n\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\n\t#include <beginnormal_vertex>\n\t#include <defaultnormal_vertex>\n\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\n\n\tvNormal = normalize( transformedNormal );\n\n#endif\n\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\n\tvViewPosition = - mvPosition.xyz;\n\tvWorldNormal = normal;\n\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\n\tvWorldPos = worldPosition.xyz;\n\n}\n"
  },
  {
    "path": "src/shaders/standard_frag.glsl",
    "content": "#define PHONG\n\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\nuniform vec3 xFogColor;\n\nvarying vec3 vWorldPos;\n\n#include <common>\n#include <packing>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_flip>\n\t#include <normal_fragment>\n\t#include <emissivemap_fragment>\n\n\t// accumulation\n\t#include <lights_phong_fragment>\n\t#include <lights_template>\n\n\t// modulation\n\t#include <aomap_fragment>\n\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\n\t#include <envmap_fragment>\n\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\n\t#include <premultiplied_alpha_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\n\tvec3 c = gl_FragColor.rgb;\n\tgl_FragColor = mix(vec4(c, 1), vec4(xFogColor, 1), clamp((abs(vWorldPos.x) - 128.0) / 32.0, 0.0, 1.0));\n}\n"
  },
  {
    "path": "src/shaders/standard_vert.glsl",
    "content": "#define PHONG\n\nvarying vec3 vViewPosition;\nvarying vec3 vWorldPos;\n\n#ifndef FLAT_SHADED\n\n\tvarying vec3 vNormal;\n\n#endif\n\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n\nvoid main() {\n\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\n#ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED\n\n\tvNormal = normalize( transformedNormal );\n\n#endif\n\n\t#include <begin_vertex>\n\t#include <displacementmap_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\n\tvViewPosition = - mvPosition.xyz;\n\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\n\tvWorldPos = worldPosition.xyz;\n\n}\n"
  },
  {
    "path": "webpack.common.js",
    "content": "const path = require(\"path\");\nconst HtmlWebpackPlugin = require(\"html-webpack-plugin\");\nconst CleanWebpackPlugin = require(\"clean-webpack-plugin\");\nconst webpack = require(\"webpack\");\n\nmodule.exports = {\n  entry: {\n    app: \"./src/index.js\",\n  },\n  output: {\n    filename: \"[name].bundle.js\",\n    path: path.resolve(__dirname, \"dist\"),\n  },\n  plugins: [\n    new CleanWebpackPlugin([\"dist\"]),\n    new HtmlWebpackPlugin({\n      template: \"./public/index.html\",\n      minify: true,\n    }),\n    new webpack.ProvidePlugin({\n      THREE: \"three\",\n    }),\n    new webpack.HotModuleReplacementPlugin(),\n  ],\n  module: {\n    rules: [\n      {\n        test: /\\.css$/,\n        use: [\"style-loader\", \"css-loader\"],\n      },\n      {\n        test: /\\.glsl$/,\n        use: [\"webpack-glsl-loader\"],\n      },\n    ],\n  },\n};\n"
  },
  {
    "path": "webpack.dev.js",
    "content": "const merge = require(\"webpack-merge\");\nconst common = require(\"./webpack.common.js\");\n\nmodule.exports = merge(common, {\n  mode: \"development\",\n  devtool: \"inline-source-map\",\n  devServer: {\n    contentBase: \"./public\",\n    hot: true,\n  },\n});\n"
  },
  {
    "path": "webpack.prod.js",
    "content": "const merge = require(\"webpack-merge\");\nconst common = require(\"./webpack.common.js\");\nconst MinifyPlugin = require(\"babel-minify-webpack-plugin\");\nconst CopyWebpackPlugin = require(\"copy-webpack-plugin\");\n\nmodule.exports = merge(common, {\n  mode: \"production\",\n  plugins: [\n    new MinifyPlugin(),\n    new CopyWebpackPlugin([{ from: \"public\", ignore: [\"index.html\"] }]),\n  ],\n});\n"
  }
]