{"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/webpack/bootstrap","webpack://[name]/./node_modules/three/build/three.module.js","webpack://[name]/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://[name]/./node_modules/@babel/runtime/helpers/createClass.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_export.js","webpack://[name]/./src/Core/Geographic/Coordinates.js","webpack://[name]/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://[name]/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://[name]/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://[name]/./node_modules/@babel/runtime/helpers/inherits.js","webpack://[name]/./src/Core/Geographic/Extent.js","webpack://[name]/./src/Core/MainLoop.js","webpack://[name]/./src/Core/Feature.js","webpack://[name]/./src/Core/Geographic/Crs.js","webpack://[name]/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_global.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_fails.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_an-object.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-object.js","webpack://[name]/./src/Renderer/LayeredMaterial.js","webpack://[name]/./src/Core/Math/Ellipsoid.js","webpack://[name]/./src/Provider/Fetcher.js","webpack://[name]/./node_modules/proj4/lib/global.js","webpack://[name]/./node_modules/proj4/lib/constants/values.js","webpack://[name]/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://[name]/./node_modules/proj4/lib/constants/units.js","webpack://[name]/./node_modules/proj4/lib/match.js","webpack://[name]/./node_modules/proj4/lib/projString.js","webpack://[name]/./node_modules/wkt-parser/parser.js","webpack://[name]/./node_modules/wkt-parser/process.js","webpack://[name]/./node_modules/wkt-parser/index.js","webpack://[name]/./node_modules/proj4/lib/defs.js","webpack://[name]/./node_modules/proj4/lib/parseCode.js","webpack://[name]/./node_modules/proj4/lib/extend.js","webpack://[name]/./node_modules/proj4/lib/common/msfnz.js","webpack://[name]/./node_modules/proj4/lib/common/sign.js","webpack://[name]/./node_modules/proj4/lib/common/adjust_lon.js","webpack://[name]/./node_modules/proj4/lib/common/tsfnz.js","webpack://[name]/./node_modules/proj4/lib/common/phi2z.js","webpack://[name]/./node_modules/proj4/lib/projections/longlat.js","webpack://[name]/./node_modules/proj4/lib/projections.js","webpack://[name]/./node_modules/proj4/lib/projections/merc.js","webpack://[name]/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://[name]/./node_modules/proj4/lib/constants/Datum.js","webpack://[name]/./node_modules/proj4/lib/datum.js","webpack://[name]/./node_modules/proj4/lib/Proj.js","webpack://[name]/./node_modules/proj4/lib/deriveConstants.js","webpack://[name]/./node_modules/proj4/lib/datum_transform.js","webpack://[name]/./node_modules/proj4/lib/datumUtils.js","webpack://[name]/./node_modules/proj4/lib/adjust_axis.js","webpack://[name]/./node_modules/proj4/lib/common/toPoint.js","webpack://[name]/./node_modules/proj4/lib/checkSanity.js","webpack://[name]/./node_modules/proj4/lib/transform.js","webpack://[name]/./node_modules/proj4/lib/core.js","webpack://[name]/./node_modules/mgrs/mgrs.js","webpack://[name]/./node_modules/proj4/lib/Point.js","webpack://[name]/./node_modules/proj4/lib/common/pj_enfn.js","webpack://[name]/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://[name]/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://[name]/./node_modules/proj4/lib/projections/tmerc.js","webpack://[name]/./node_modules/proj4/lib/common/sinh.js","webpack://[name]/./node_modules/proj4/lib/common/hypot.js","webpack://[name]/./node_modules/proj4/lib/common/asinhy.js","webpack://[name]/./node_modules/proj4/lib/common/log1py.js","webpack://[name]/./node_modules/proj4/lib/common/gatg.js","webpack://[name]/./node_modules/proj4/lib/common/clens.js","webpack://[name]/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://[name]/./node_modules/proj4/lib/common/cosh.js","webpack://[name]/./node_modules/proj4/lib/projections/etmerc.js","webpack://[name]/./node_modules/proj4/lib/common/adjust_zone.js","webpack://[name]/./node_modules/proj4/lib/projections/utm.js","webpack://[name]/./node_modules/proj4/lib/common/srat.js","webpack://[name]/./node_modules/proj4/lib/projections/gauss.js","webpack://[name]/./node_modules/proj4/lib/projections/sterea.js","webpack://[name]/./node_modules/proj4/lib/projections/stere.js","webpack://[name]/./node_modules/proj4/lib/projections/somerc.js","webpack://[name]/./node_modules/proj4/lib/projections/omerc.js","webpack://[name]/./node_modules/proj4/lib/projections/lcc.js","webpack://[name]/./node_modules/proj4/lib/projections/krovak.js","webpack://[name]/./node_modules/proj4/lib/common/mlfn.js","webpack://[name]/./node_modules/proj4/lib/common/e0fn.js","webpack://[name]/./node_modules/proj4/lib/common/e1fn.js","webpack://[name]/./node_modules/proj4/lib/common/e2fn.js","webpack://[name]/./node_modules/proj4/lib/common/e3fn.js","webpack://[name]/./node_modules/proj4/lib/common/gN.js","webpack://[name]/./node_modules/proj4/lib/common/adjust_lat.js","webpack://[name]/./node_modules/proj4/lib/common/imlfn.js","webpack://[name]/./node_modules/proj4/lib/projections/cass.js","webpack://[name]/./node_modules/proj4/lib/common/qsfnz.js","webpack://[name]/./node_modules/proj4/lib/projections/laea.js","webpack://[name]/./node_modules/proj4/lib/common/asinz.js","webpack://[name]/./node_modules/proj4/lib/projections/aea.js","webpack://[name]/./node_modules/proj4/lib/projections/gnom.js","webpack://[name]/./node_modules/proj4/lib/common/iqsfnz.js","webpack://[name]/./node_modules/proj4/lib/projections/cea.js","webpack://[name]/./node_modules/proj4/lib/projections/eqc.js","webpack://[name]/./node_modules/proj4/lib/projections/poly.js","webpack://[name]/./node_modules/proj4/lib/projections/nzmg.js","webpack://[name]/./node_modules/proj4/lib/projections/mill.js","webpack://[name]/./node_modules/proj4/lib/projections/sinu.js","webpack://[name]/./node_modules/proj4/lib/projections/moll.js","webpack://[name]/./node_modules/proj4/lib/projections/eqdc.js","webpack://[name]/./node_modules/proj4/lib/projections/vandg.js","webpack://[name]/./node_modules/proj4/lib/projections/aeqd.js","webpack://[name]/./node_modules/proj4/lib/projections/ortho.js","webpack://[name]/./node_modules/proj4/lib/projections/qsc.js","webpack://[name]/./node_modules/proj4/lib/projections/robin.js","webpack://[name]/./node_modules/proj4/projs.js","webpack://[name]/./node_modules/proj4/lib/index.js","webpack://[name]/./src/Core/System/Capabilities.js","webpack://[name]/./src/Layer/Layer.js","webpack://[name]/./src/Utils/Utf8Decoder.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_wks.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-length.js","webpack://[name]/./src/Core/Scheduler/CancelledCommandException.js","webpack://[name]/./src/Renderer/Camera.js","webpack://[name]/./src/Renderer/c3DEngine.js","webpack://[name]/./src/Parser/VectorTileParser.js","webpack://[name]/./src/Provider/DataSourceProvider.js","webpack://[name]/./src/Parser/PotreeBinParser.js","webpack://[name]/./src/Provider/TileProvider.js","webpack://[name]/./src/Parser/PotreeCinParser.js","webpack://[name]/./src/Provider/PointCloudProvider.js","webpack://[name]/./src/Core/Scheduler/Scheduler.js","webpack://[name]/./src/Core/View.js","webpack://[name]/./node_modules/@tweenjs/tween.js/src/Tween.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_core.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-dp.js","webpack://[name]/./node_modules/@babel/runtime/helpers/typeof.js","webpack://[name]/./src/Renderer/RenderMode.js","webpack://[name]/./src/Core/Geographic/Projection.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_descriptors.js","webpack://[name]/./src/Parser/GeoJsonParser.js","webpack://[name]/./src/Parser/PntsParser.js","webpack://[name]/./src/Provider/3dTilesProvider.js","webpack://[name]/./src/Core/Picking.js","webpack://[name]/./node_modules/@babel/runtime/helpers/get.js","webpack://[name]/./src/Core/Scheduler/Cache.js","webpack://[name]/./src/Process/3dTilesProcessing.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-object.js","webpack://[name]/./src/Layer/GeometryLayer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_redefine.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-html.js","webpack://[name]/./src/Layer/LayerUpdateStrategy.js","webpack://[name]/./src/Renderer/OBB.js","webpack://[name]/./src/Core/Style.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_has.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_hide.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-iobject.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_strict-method.js","webpack://[name]/./node_modules/jszip/lib/utils.js","webpack://[name]/./src/Renderer/Shader/ShaderUtils.js","webpack://[name]/./src/Renderer/PointsMaterial.js","webpack://[name]/./src/Process/PointCloudProcessing.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_ctx.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_a-function.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-integer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gopd.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-sap.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-methods.js","webpack://[name]/(webpack)/buildin/global.js","webpack://[name]/./src/Utils/DEMUtils.js","webpack://[name]/./src/Parser/XbilParser.js","webpack://[name]/./src/Process/ObjectRemovalHelper.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_cof.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_defined.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_typed-array.js","webpack://[name]/./src/ThreeExtended/loaders/DDSLoader.js","webpack://[name]/./src/ThreeExtended/loaders/GLTFLoader.js","webpack://[name]/./src/ThreeExtended/loaders/DRACOLoader.js","webpack://[name]/./src/ThreeExtended/loaders/deprecated/LegacyGLTFLoader.js","webpack://[name]/./src/Parser/B3dmParser.js","webpack://[name]/./src/Renderer/MaterialLayer.js","webpack://[name]/./src/Parser/BatchTableParser.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-primitive.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_meta.js","webpack://[name]/./node_modules/buffer/index.js","webpack://[name]/./node_modules/pako/lib/utils/common.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_property-desc.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_uid.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_library.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-keys.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-absolute-index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-create.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gopn.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gpo.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_add-to-unscopables.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_validate-collection.js","webpack://[name]/./src/Core/TileGeometry.js","webpack://[name]/./src/Core/Prefab/computeBufferTileGeometry.js","webpack://[name]/./src/Core/Prefab/Globe/BuilderEllipsoidTile.js","webpack://[name]/./src/Layer/InfoLayer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_set-to-string-tag.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-trim.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iterators.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_set-species.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_an-instance.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_redefine-all.js","webpack://[name]/./node_modules/jszip/lib/support.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iobject.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-pie.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_classof.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_species-constructor.js","webpack://[name]/./node_modules/@mapbox/vector-tile/lib/vectortilelayer.js","webpack://[name]/./node_modules/@mapbox/vector-tile/lib/vectortilefeature.js","webpack://[name]/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://[name]/./node_modules/js-priority-queue/priority-queue.js","webpack://[name]/./node_modules/pbf/index.js","webpack://[name]/./node_modules/@mapbox/vector-tile/index.js","webpack://[name]/./node_modules/@mapbox/mapbox-gl-style-spec/dist/index.js","webpack://[name]/./node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","webpack://[name]/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://[name]/./node_modules/shpjs/lib/index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_shared.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-includes.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gops.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-detect.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_flags.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_fix-re-wks.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_for-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_user-agent.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_collection.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_typed.js","webpack://[name]/./node_modules/process/browser.js","webpack://[name]/./node_modules/@mapbox/togeojson/togeojson.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_dom-create.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_wks-ext.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_shared-key.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_enum-bug-keys.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_html.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_set-proto.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-ws.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_inherit-if-required.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-repeat.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-sign.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-expm1.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-at.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-define.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-context.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-regexp.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_fails-is-regexp.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-array-iter.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_create-property.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/core.get-iterator-method.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-fill.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.iterator.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_regexp-exec.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_advance-string-index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_task.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_typed-buffer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_global.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_is-object.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_descriptors.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://[name]/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://[name]/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://[name]/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://[name]/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://[name]/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://[name]/./node_modules/pbf/node_modules/ieee754/index.js","webpack://[name]/./node_modules/@mapbox/vector-tile/lib/vectortile.js","webpack://[name]/./node_modules/@mapbox/point-geometry/index.js","webpack://[name]/./node_modules/base64-js/index.js","webpack://[name]/./node_modules/ieee754/index.js","webpack://[name]/./node_modules/isarray/index.js","webpack://[name]/./node_modules/@babel/runtime/helpers/superPropBase.js","webpack://[name]/./node_modules/jszip/lib/base64.js","webpack://[name]/./node_modules/jszip/lib/object.js","webpack://[name]/./node_modules/jszip/lib/compressions.js","webpack://[name]/./node_modules/pako/lib/zlib/messages.js","webpack://[name]/./node_modules/jszip/lib/nodeBuffer.js","webpack://[name]/./node_modules/earcut/src/earcut.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_ie8-dom-define.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_wks-define.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-keys-internal.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-dps.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-gopn-ext.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-assign.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_same-value.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_bind.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_invoke.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_parse-int.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_parse-float.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_a-number-value.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_is-integer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-log1p.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-create.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-call.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-species-create.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-reduce.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-copy-within.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_iter-step.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.exec.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.flags.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.promise.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_new-promise-capability.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_promise-resolve.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_collection-strong.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_collection-weak.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_to-index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_own-keys.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_string-pad.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_object-to-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_core.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_fails.js","webpack://[name]/./node_modules/pako/lib/zlib/adler32.js","webpack://[name]/./node_modules/pako/lib/zlib/crc32.js","webpack://[name]/./node_modules/pako/lib/utils/strings.js","webpack://[name]/./node_modules/pako/lib/zlib/zstream.js","webpack://[name]/./node_modules/pako/lib/zlib/constants.js","webpack://[name]/./node_modules/jszip/lib/signature.js","webpack://[name]/./node_modules/jszip/lib/defaults.js","webpack://[name]/./node_modules/jszip/lib/compressedObject.js","webpack://[name]/./node_modules/jszip/lib/utf8.js","webpack://[name]/./node_modules/jszip/lib/stringReader.js","webpack://[name]/./node_modules/jszip/lib/dataReader.js","webpack://[name]/./node_modules/jszip/lib/uint8ArrayReader.js","webpack://[name]/./node_modules/jszip/lib/arrayReader.js","webpack://[name]/./node_modules/lie/lib/browser.js","webpack://[name]/./node_modules/@babel/polyfill/lib/index.js","webpack://[name]/./node_modules/@babel/polyfill/lib/noConflict.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/es6/index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.symbol.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_function-to-string.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_enum-keys.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.create.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.define-property.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.define-properties.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.keys.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.freeze.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.seal.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is-frozen.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is-sealed.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is-extensible.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.assign.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.is.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.object.to-string.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.function.bind.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.function.name.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.function.has-instance.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.parse-int.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.parse-float.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.constructor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.to-fixed.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.to-precision.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.epsilon.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-finite.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-integer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-nan.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.parse-float.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.number.parse-int.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.acosh.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.asinh.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.atanh.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.cbrt.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.clz32.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.cosh.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.expm1.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.fround.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_math-fround.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.hypot.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.imul.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.log10.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.log1p.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.log2.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.sign.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.sinh.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.tanh.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.math.trunc.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.from-code-point.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.raw.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.trim.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.iterator.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.code-point-at.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.ends-with.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.includes.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.repeat.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.starts-with.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.anchor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.big.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.blink.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.bold.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.fixed.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.fontcolor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.fontsize.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.italics.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.link.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.small.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.strike.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.sub.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.string.sup.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.now.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-json.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_date-to-iso-string.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-string.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.date.to-primitive.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_date-to-primitive.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.is-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.from.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.join.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.slice.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.sort.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.for-each.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_array-species-constructor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.map.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.filter.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.some.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.every.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.reduce.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.reduce-right.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.index-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.last-index-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.copy-within.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.fill.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.find.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.find-index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.array.species.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.constructor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.to-string.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.match.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.replace.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.search.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.regexp.split.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_microtask.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_perform.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.map.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.set.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.weak-map.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.weak-set.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.data-view.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.int8-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.int16-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.int32-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.float32-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.typed.float64-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.apply.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.construct.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.define-property.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.get.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.has.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.set.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/array/includes.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.array.includes.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/array/flat-map.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.array.flat-map.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/_flatten-into-array.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/pad-start.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.pad-start.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/pad-end.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.pad-end.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/trim-start.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.trim-left.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/string/trim-end.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.string.trim-right.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/symbol/async-iterator.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/object/values.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.object.values.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/object/entries.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.object.entries.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/fn/promise/finally.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/es7.promise.finally.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/web/index.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/web.timers.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/web.immediate.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/modules/web.dom.iterable.js","webpack://[name]/./node_modules/regenerator-runtime/runtime.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/fn/global.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/es7.global.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_export.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_ctx.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_a-function.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_hide.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_object-dp.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_an-object.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_dom-create.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_to-primitive.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_property-desc.js","webpack://[name]/./node_modules/@babel/polyfill/node_modules/core-js/library/modules/_has.js","webpack://[name]/./node_modules/url-polyfill/url-polyfill.js","webpack://[name]/./node_modules/whatwg-fetch/fetch.js","webpack://[name]/./node_modules/shpjs/lib/unzip.js","webpack://[name]/./node_modules/jszip/lib/index.js","webpack://[name]/./node_modules/jszip/lib/flate.js","webpack://[name]/./node_modules/pako/index.js","webpack://[name]/./node_modules/pako/lib/deflate.js","webpack://[name]/./node_modules/pako/lib/zlib/deflate.js","webpack://[name]/./node_modules/pako/lib/zlib/trees.js","webpack://[name]/./node_modules/pako/lib/inflate.js","webpack://[name]/./node_modules/pako/lib/zlib/inflate.js","webpack://[name]/./node_modules/pako/lib/zlib/inffast.js","webpack://[name]/./node_modules/pako/lib/zlib/inftrees.js","webpack://[name]/./node_modules/pako/lib/zlib/gzheader.js","webpack://[name]/./node_modules/jszip/lib/crc32.js","webpack://[name]/./node_modules/jszip/lib/stringWriter.js","webpack://[name]/./node_modules/jszip/lib/uint8ArrayWriter.js","webpack://[name]/./node_modules/jszip/lib/load.js","webpack://[name]/./node_modules/jszip/lib/zipEntries.js","webpack://[name]/./node_modules/jszip/lib/nodeBufferReader.js","webpack://[name]/./node_modules/jszip/lib/zipEntry.js","webpack://[name]/./node_modules/jszip/lib/deprecatedPublicUtils.js","webpack://[name]/./node_modules/shpjs/lib/binaryajax-browser.js","webpack://[name]/./node_modules/immediate/lib/browser.js","webpack://[name]/./node_modules/shpjs/lib/parseShp.js","webpack://[name]/./node_modules/parsedbf/index.js","webpack://[name]/./node_modules/parsedbf/decoder-browser.js","webpack://[name]/./node_modules/text-encoding-polyfill/index.js","webpack://[name]/./node_modules/text-encoding-polyfill/lib/encoding.js","webpack://[name]/./node_modules/node-libs-browser/node_modules/string_decoder/lib/string_decoder.js","webpack://[name]/./node_modules/safe-buffer/index.js","webpack://[name]/./node_modules/shpjs/node_modules/lru-cache/lib/lru-cache.js","webpack://[name]/./src/Renderer/ColorLayersOrdering.js","webpack://[name]/./src/Core/AnimationPlayer.js","webpack://[name]/./src/Utils/CameraUtils.js","webpack://[name]/./src/Controls/StateControl.js","webpack://[name]/./src/Controls/GlobeControls.js","webpack://[name]/./src/Provider/OGCWebServiceHelper.js","webpack://[name]/./src/Core/TileMesh.js","webpack://[name]/./src/Core/Prefab/TileBuilder.js","webpack://[name]/./src/Converter/convertToTile.js","webpack://[name]/./src/Layer/TiledGeometryLayer.js","webpack://[name]/./src/Core/Prefab/Globe/GlobeLayer.js","webpack://[name]/./src/Core/Geographic/CoordStars.js","webpack://[name]/./src/Core/Prefab/Globe/SkyShader.js","webpack://[name]/./src/Core/Prefab/Globe/Atmosphere.js","webpack://[name]/./src/Core/Prefab/GlobeView.js","webpack://[name]/./src/Core/Prefab/Planar/PlanarTileBuilder.js","webpack://[name]/./src/Core/Prefab/Planar/PlanarLayer.js","webpack://[name]/./src/Core/Prefab/PlanarView.js","webpack://[name]/./src/Layer/LayerUpdateState.js","webpack://[name]/./src/Process/handlerNodeError.js","webpack://[name]/./src/Process/FeatureProcessing.js","webpack://[name]/./src/Process/LayeredMaterialNodeProcessing.js","webpack://[name]/./src/Renderer/OrientedImageCamera.js","webpack://[name]/./src/Controls/FlyControls.js","webpack://[name]/./src/Controls/FirstPersonControls.js","webpack://[name]/./src/Controls/StreetControls.js","webpack://[name]/./src/Controls/PlanarControls.js","webpack://[name]/./src/Converter/Feature2Mesh.js","webpack://[name]/./src/Utils/FeaturesUtils.js","webpack://[name]/./src/Utils/OrientationUtils.js","webpack://[name]/./src/Renderer/Shader/ShaderChunk.js","webpack://[name]/./src/Converter/Feature2Texture.js","webpack://[name]/./src/Converter/textureConverter.js","webpack://[name]/./src/Layer/ColorLayer.js","webpack://[name]/./src/Layer/ElevationLayer.js","webpack://[name]/./src/Renderer/OrientedImageMaterial.js","webpack://[name]/./src/Parser/CameraCalibrationParser.js","webpack://[name]/./src/Layer/OrientedImageLayer.js","webpack://[name]/./src/Source/Source.js","webpack://[name]/./src/Source/FileSource.js","webpack://[name]/./src/Provider/URLBuilder.js","webpack://[name]/./src/Source/TMSSource.js","webpack://[name]/./src/Source/WFSSource.js","webpack://[name]/./src/Source/WMSSource.js","webpack://[name]/./src/Source/WMTSSource.js","webpack://[name]/./src/Source/OrientedImageSource.js","webpack://[name]/./src/Parser/GpxParser.js","webpack://[name]/./src/Parser/KMLParser.js","webpack://[name]/./src/Parser/BatchTableHierarchyExtensionParser.js","webpack://[name]/./src/Parser/ShapefileParser.js","webpack://[name]/./src/MainBundle.js"],"names":["root","factory","exports","module","define","amd","window","webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","oldJsonpFunction","slice","EventDispatcher","__webpack_exports__","ACESFilmicToneMapping","AddEquation","AddOperation","AdditiveBlending","AlphaFormat","AlwaysDepth","AmbientLight","AmbientLightProbe","AnimationClip","AnimationLoader","AnimationMixer","AnimationObjectGroup","AnimationUtils","ArcCurve","ArrayCamera","ArrowHelper","Audio","AudioAnalyser","AudioContext","AudioListener","AudioLoader","AxesHelper","AxisHelper","BackSide","BasicDepthPacking","BasicShadowMap","BinaryTextureLoader","Bone","BooleanKeyframeTrack","BoundingBoxHelper","Box2","Box3","Box3Helper","BoxBufferGeometry","BoxGeometry","BoxHelper","BufferAttribute","BufferGeometry","BufferGeometryLoader","ByteType","Cache","Camera","CameraHelper","CanvasRenderer","CanvasTexture","CatmullRomCurve3","CineonToneMapping","CircleBufferGeometry","CircleGeometry","ClampToEdgeWrapping","Clock","ClosedSplineCurve3","Color","ColorKeyframeTrack","CompressedTexture","CompressedTextureLoader","ConeBufferGeometry","ConeGeometry","CubeCamera","CubeReflectionMapping","CubeRefractionMapping","CubeTexture","CubeTextureLoader","CubeUVReflectionMapping","CubeUVRefractionMapping","CubicBezierCurve","CubicBezierCurve3","CubicInterpolant","CullFaceBack","CullFaceFront","CullFaceFrontBack","CullFaceNone","Curve","CurvePath","CustomBlending","CylinderBufferGeometry","CylinderGeometry","Cylindrical","DataTexture","DataTexture2DArray","DataTexture3D","DataTextureLoader","DefaultLoadingManager","DepthFormat","DepthStencilFormat","DepthTexture","DirectionalLight","DirectionalLightHelper","DirectionalLightShadow","DiscreteInterpolant","DodecahedronBufferGeometry","DodecahedronGeometry","DoubleSide","DstAlphaFactor","DstColorFactor","DynamicBufferAttribute","EdgesGeometry","EdgesHelper","EllipseCurve","EqualDepth","EquirectangularReflectionMapping","EquirectangularRefractionMapping","Euler","ExtrudeBufferGeometry","ExtrudeGeometry","Face3","Face4","FaceColors","FaceNormalsHelper","FileLoader","FlatShading","Float32Attribute","Float32BufferAttribute","Float64Attribute","Float64BufferAttribute","FloatType","Fog","FogExp2","Font","FontLoader","FrontFaceDirectionCCW","FrontFaceDirectionCW","FrontSide","Frustum","GammaEncoding","Geometry","GeometryUtils","GreaterDepth","GreaterEqualDepth","GridHelper","Group","HalfFloatType","HemisphereLight","HemisphereLightHelper","HemisphereLightProbe","IcosahedronBufferGeometry","IcosahedronGeometry","ImageBitmapLoader","ImageLoader","ImageUtils","ImmediateRenderObject","InstancedBufferAttribute","InstancedBufferGeometry","InstancedInterleavedBuffer","Int16Attribute","Int16BufferAttribute","Int32Attribute","Int32BufferAttribute","Int8Attribute","Int8BufferAttribute","IntType","InterleavedBuffer","InterleavedBufferAttribute","Interpolant","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","JSONLoader","KeyframeTrack","LOD","LatheBufferGeometry","LatheGeometry","Layers","LensFlare","LessDepth","LessEqualDepth","Light","LightProbe","LightProbeHelper","LightShadow","Line","Line3","LineBasicMaterial","LineCurve","LineCurve3","LineDashedMaterial","LineLoop","LinePieces","LineSegments","LineStrip","LinearEncoding","LinearFilter","LinearInterpolant","LinearMipMapLinearFilter","LinearMipMapNearestFilter","LinearToneMapping","Loader","LoaderUtils","LoadingManager","LogLuvEncoding","LoopOnce","LoopPingPong","LoopRepeat","LuminanceAlphaFormat","LuminanceFormat","MOUSE","Material","MaterialLoader","_Math","Matrix3","Matrix4","MaxEquation","Mesh","MeshBasicMaterial","MeshDepthMaterial","MeshDistanceMaterial","MeshFaceMaterial","MeshLambertMaterial","MeshMatcapMaterial","MeshNormalMaterial","MeshPhongMaterial","MeshPhysicalMaterial","MeshStandardMaterial","MeshToonMaterial","MinEquation","MirroredRepeatWrapping","MixOperation","MultiMaterial","MultiplyBlending","MultiplyOperation","NearestFilter","NearestMipMapLinearFilter","NearestMipMapNearestFilter","NeverDepth","NoBlending","NoColors","NoToneMapping","NormalBlending","NotEqualDepth","NumberKeyframeTrack","Object3D","ObjectLoader","ObjectSpaceNormalMap","OctahedronBufferGeometry","OctahedronGeometry","OneFactor","OneMinusDstAlphaFactor","OneMinusDstColorFactor","OneMinusSrcAlphaFactor","OneMinusSrcColorFactor","OrthographicCamera","PCFShadowMap","PCFSoftShadowMap","ParametricBufferGeometry","ParametricGeometry","Particle","ParticleBasicMaterial","ParticleSystem","ParticleSystemMaterial","Path","PerspectiveCamera","Plane","PlaneBufferGeometry","PlaneGeometry","PlaneHelper","PointCloud","PointCloudMaterial","PointLight","PointLightHelper","Points","PointsMaterial","PolarGridHelper","PolyhedronBufferGeometry","PolyhedronGeometry","PositionalAudio","PositionalAudioHelper","PropertyBinding","PropertyMixer","QuadraticBezierCurve","QuadraticBezierCurve3","Quaternion","QuaternionKeyframeTrack","QuaternionLinearInterpolant","REVISION","RGBADepthPacking","RGBAFormat","RGBA_ASTC_10x10_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGBDEncoding","RGBEEncoding","RGBEFormat","RGBFormat","RGBM16Encoding","RGBM7Encoding","RGB_ETC1_Format","RGB_PVRTC_2BPPV1_Format","RGB_PVRTC_4BPPV1_Format","RGB_S3TC_DXT1_Format","RawShaderMaterial","Ray","Raycaster","RectAreaLight","RectAreaLightHelper","RedFormat","ReinhardToneMapping","RepeatWrapping","ReverseSubtractEquation","RingBufferGeometry","RingGeometry","Scene","SceneUtils","ShaderChunk","ShaderLib","ShaderMaterial","ShadowMaterial","Shape","ShapeBufferGeometry","ShapeGeometry","ShapePath","ShapeUtils","ShortType","Skeleton","SkeletonHelper","SkinnedMesh","SmoothShading","Sphere","SphereBufferGeometry","SphereGeometry","Spherical","SphericalHarmonics3","SphericalReflectionMapping","Spline","SplineCurve","SplineCurve3","SpotLight","SpotLightHelper","SpotLightShadow","Sprite","SpriteMaterial","SrcAlphaFactor","SrcAlphaSaturateFactor","SrcColorFactor","StereoCamera","StringKeyframeTrack","SubtractEquation","SubtractiveBlending","TangentSpaceNormalMap","TetrahedronBufferGeometry","TetrahedronGeometry","TextBufferGeometry","TextGeometry","Texture","TextureLoader","TorusBufferGeometry","TorusGeometry","TorusKnotBufferGeometry","TorusKnotGeometry","Triangle","TriangleFanDrawMode","TriangleStripDrawMode","TrianglesDrawMode","TubeBufferGeometry","TubeGeometry","UVMapping","Uint16Attribute","Uint16BufferAttribute","Uint32Attribute","Uint32BufferAttribute","Uint8Attribute","Uint8BufferAttribute","Uint8ClampedAttribute","Uint8ClampedBufferAttribute","Uncharted2ToneMapping","Uniform","UniformsLib","UniformsUtils","UnsignedByteType","UnsignedInt248Type","UnsignedIntType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedShortType","Vector2","Vector3","Vector4","VectorKeyframeTrack","Vertex","VertexColors","VertexNormalsHelper","VideoTexture","WebGLMultisampleRenderTarget","WebGLRenderTarget","WebGLRenderTargetCube","WebGLRenderer","WebGLUtils","WireframeGeometry","WireframeHelper","WrapAroundEnding","XHRLoader","ZeroCurvatureEnding","ZeroFactor","ZeroSlopeEnding","sRGBEncoding","undefined","Number","EPSILON","Math","pow","isInteger","isFinite","floor","sign","x","Function","this","toString","match","assign","target","TypeError","output","index","arguments","source","nextKey","addEventListener","type","listener","_listeners","listeners","indexOf","hasEventListener","removeEventListener","listenerArray","dispatchEvent","event","array","v1","quaternion","_canvas","LEFT","MIDDLE","RIGHT","DEG2RAD","PI","RAD2DEG","generateUUID","lut","d0","random","d1","d2","d3","toUpperCase","clamp","min","max","euclideanModulo","mapLinear","a1","a2","b1","b2","lerp","y","smoothstep","smootherstep","randInt","low","high","randFloat","randFloatSpread","range","degToRad","degrees","radToDeg","radians","isPowerOfTwo","ceilPowerOfTwo","ceil","log","LN2","floorPowerOfTwo","z","w","_x","_y","_z","_w","elements","console","error","defineProperties","width","set","height","isVector2","setScalar","scalar","setX","setY","setComponent","Error","getComponent","clone","constructor","copy","v","add","warn","addVectors","addScalar","a","b","addScaledVector","sub","subVectors","subScalar","multiply","multiplyScalar","divide","divideScalar","applyMatrix3","e","clampScalar","minVal","maxVal","clampLength","round","roundToZero","negate","dot","cross","lengthSq","sqrt","manhattanLength","abs","normalize","angle","atan2","distanceTo","distanceToSquared","dx","dy","manhattanDistanceTo","setLength","alpha","lerpVectors","v2","equals","fromArray","offset","toArray","fromBufferAttribute","attribute","getX","getY","rotateAround","center","cos","sin","slerp","qa","qb","qm","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","dir","sqrSin","len","tDir","f","onChangeCallback","isQuaternion","setFromEuler","euler","update","isEuler","order","c1","c2","c3","s1","s2","s3","setFromAxisAngle","axis","halfAngle","setFromRotationMatrix","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","vFrom","vTo","angleTo","q","acos","rotateTowards","step","inverse","conjugate","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","onChange","callback","isVector3","setZ","multiplyVectors","applyEuler","applyQuaternion","applyAxisAngle","applyMatrix4","qx","qy","qz","qw","ix","iy","iz","iw","project","camera","matrixWorldInverse","projectionMatrix","unproject","projectionMatrixInverse","matrixWorld","transformDirection","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","vector","projectOnPlane","planeNormal","reflect","normal","theta","dz","setFromSpherical","setFromSphericalCoords","radius","phi","sinPhiRadius","setFromCylindrical","setFromCylindricalCoords","setFromMatrixPosition","setFromMatrixScale","sx","setFromMatrixColumn","sy","sz","getZ","isMatrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","identity","me","setFromMatrix4","applyToBufferAttribute","count","setXYZ","multiplyMatrices","ae","be","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","determinant","g","h","getInverse","matrix","throwOnDegenerate","isMatrix4","t11","t12","t13","det","msg","detInv","transpose","tmp","getNormalMatrix","matrix4","transposeIntoArray","setUvTransform","tx","ty","rotation","cx","cy","scale","rotate","translate","points","closestPoint","box","sphere","zero","one","getDataURL","image","canvas","HTMLCanvasElement","src","document","createElementNS","context","getContext","ImageData","putImageData","drawImage","toDataURL","textureId","mapping","wrapS","wrapT","magFilter","minFilter","format","anisotropy","encoding","uuid","DEFAULT_IMAGE","mipmaps","DEFAULT_MAPPING","repeat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","version","onUpdate","options","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","samples","Infinity","constant","p0","p1","p2","p3","p4","p5","planes","isTexture","updateMatrix","toJSON","meta","isRootObject","textures","metadata","generator","wrap","images","url","Array","isArray","dispose","transformUv","uv","isVector4","setW","setAxisAngleFromQuaternion","setAxisAngleFromRotationMatrix","xx","yy","zz","xy","xz","yz","getW","isWebGLRenderTarget","setSize","isWebGLMultisampleRenderTarget","isWebGLRenderTargetCube","isDataTexture","isBox3","setFromArray","minX","minY","minZ","maxX","maxY","maxZ","setFromBufferAttribute","setFromPoints","makeEmpty","il","expandByPoint","setFromCenterAndSize","size","halfSize","setFromObject","expandByObject","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","scope","traverse","node","geometry","isGeometry","vertices","isBufferGeometry","attributes","position","updateMatrixWorld","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","clampPoint","intersectsPlane","plane","intersectsTriangle","v0","f0","f1","f2","testAxis","extents","triangleNormal","satForAxes","axes","triangle","distanceToPoint","getBoundingSphere","intersect","union","optionalCenter","maxRadiusSq","empty","radiusSum","deltaLengthSq","getBoundingBox","getMaxScaleOnAxis","setComponents","setFromNormalAndCoplanarPoint","setFromCoplanarPoints","inverseNormalLength","distanceToSphere","projectPoint","intersectLine","line","direction","delta","denominator","start","intersectsLine","startSign","endSign","end","coplanarPoint","m1","optionalNormalMatrix","normalMatrix","referencePoint","frustum","setFromMatrix","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","intersectsObject","boundingSphere","computeBoundingSphere","intersectsSprite","sprite","negRadius","n14","n24","n34","n41","n42","n43","n44","copyPosition","extractBasis","xAxis","yAxis","zAxis","makeBasis","extractRotation","scaleX","scaleY","scaleZ","makeRotationFromEuler","af","bf","ce","cf","de","df","ac","ad","bc","bd","makeRotationFromQuaternion","compose","lookAt","eye","up","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","setPosition","t14","scaleXSq","scaleYSq","scaleZSq","makeTranslation","makeRotationX","makeRotationY","makeRotationZ","makeRotationAxis","makeScale","makeShear","x2","y2","z2","wx","wy","wz","decompose","invSX","invSY","invSZ","makePerspective","left","right","top","bottom","near","far","makeOrthographic","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_physical_pars_fragment","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normalmap_pars_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","normal_frag","normal_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","cloneUniforms","u","isColor","mergeUniforms","uniforms","merged","hslA","hslB","hsl","merge","ColorKeywords","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","setRGB","setHex","setStyle","hex","setHSL","hue2rgb","style","handleAlpha","string","parseFloat","exec","color","components","parseInt","charAt","copyGammaToLinear","gammaFactor","copyLinearToGamma","safeInverse","convertGammaToLinear","convertLinearToGamma","copySRGBToLinear","SRGBToLinear","copyLinearToSRGB","LinearToSRGB","convertSRGBToLinear","convertLinearToSRGB","getHex","getHexString","getHSL","hue","saturation","lightness","getStyle","offsetHSL","addColors","color1","color2","lerpHSL","diffuse","opacity","map","uvTransform","alphaMap","specularmap","specularMap","envmap","envMap","flipEnvMap","reflectivity","refractionRatio","maxMipLevel","aomap","aoMap","aoMapIntensity","lightmap","lightMap","lightMapIntensity","emissivemap","emissiveMap","bumpmap","bumpMap","bumpScale","normalmap","normalMap","normalScale","displacementmap","displacementMap","displacementScale","displacementBias","roughnessmap","roughnessMap","metalnessmap","metalnessMap","gradientmap","gradientMap","fog","fogDensity","fogNear","fogFar","fogColor","lights","ambientLightColor","lightProbe","directionalLights","properties","shadow","shadowBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","distance","coneCos","penumbraCos","decay","spotShadowMap","spotShadowMatrix","pointLights","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","basic","vertexShader","fragmentShader","lambert","emissive","phong","specular","shininess","standard","roughness","metalness","envMapIntensity","matcap","dashed","dashSize","totalSize","depth","background","t2D","cube","tCube","tFlip","equirect","tEquirect","distanceRGBA","referencePosition","nearDistance","farDistance","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","time","frame","requestAnimationFrame","stop","setAnimationLoop","setContext","WebGLAttributes","gl","buffers","WeakMap","isInterleavedBufferAttribute","remove","deleteBuffer","buffer","delete","bufferType","usage","dynamic","createBuffer","bindBuffer","bufferData","onUploadCallback","Float32Array","Float64Array","Uint16Array","Int16Array","Uint32Array","Int32Array","Int8Array","Uint8Array","bytesPerElement","BYTES_PER_ELEMENT","updateRange","bufferSubData","subarray","updateBuffer","materialIndex","vertexNormals","vertexColors","_order","DefaultOrder","mask","physical","clearCoat","clearCoatRoughness","RotationOrders","asin","setFromQuaternion","setFromVector3","reorder","newOrder","toVector3","optionalResult","channel","enable","toggle","disable","test","layers","q1","object3DId","parent","children","DefaultUp","configurable","modelViewMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","userData","isObject3D","onBeforeRender","onAfterRender","applyMatrix","setRotationFromAxisAngle","setRotationFromEuler","setRotationFromMatrix","setRotationFromQuaternion","rotateOnAxis","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translateOnAxis","translateX","translateY","translateZ","localToWorld","worldToLocal","updateWorldMatrix","isCamera","isLight","attach","getObjectById","id","getObjectByProperty","getObjectByName","getWorldPosition","getWorldQuaternion","getWorldScale","getWorldDirection","raycast","traverseVisible","traverseAncestors","force","updateParents","updateChildren","geometries","materials","shapes","serialize","library","element","JSON","stringify","isMesh","drawMode","isLine","isPoints","parameters","shape","material","uuids","extractFromCache","cache","values","recursive","parse","child","obj","geometryId","colors","faces","faceVertexUvs","morphTargets","morphNormals","skinWeights","skinIndices","lineDistances","boundingBox","elementsNeedUpdate","verticesNeedUpdate","uvsNeedUpdate","normalsNeedUpdate","colorsNeedUpdate","lineDistancesNeedUpdate","groupsNeedUpdate","itemSize","normalized","Uint8ClampedArray","DirectGeometry","normals","uvs","uvs2","groups","arrayMax","face","jl","computeBoundingBox","fromBufferGeometry","indices","positions","uv2","addFace","group","computeFaceNormals","cb","ab","fl","vA","vB","vC","computeVertexNormals","areaWeighted","vl","computeFlatVertexNormals","computeMorphNormals","__originalFaceNormal","__originalVertexNormals","tmpGeo","faceNormals","dstNormalsFace","dstNormalsVertex","faceNormal","materialIndexOffset","vertexOffset","vertices1","vertices2","faces1","faces2","uvs1","colors1","colors2","vertexCopy","faceCopy","faceVertexNormals","faceVertexColors","uvCopy","mergeMesh","mesh","mergeVertices","verticesMap","unique","changes","precision","faceIndicesToRemove","idx","diff","sortFacesByMaterialIndex","_id","sort","newUvs1","newUvs2","vertex","normalsHash","colorsHash","uvsHash","hasFaceVertexUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceType","setBit","getUvIndex","getNormalIndex","getColorIndex","enabled","hash","k","kl","uvsCopy","morphTarget","morphNormal","srcVertexNormal","destVertexNormal","isBufferAttribute","setArray","setDynamic","copyAt","index1","index2","copyArray","copyColorsArray","copyVector2sArray","vectors","copyVector3sArray","copyVector4sArray","setXY","setXYZW","onUpload","computeGroups","fromGeometry","morphTargetsPosition","hasFaceVertexUv2","morphTargetsLength","morphTargetsNormal","morphNormalsLength","hasSkinIndices","hasSkinWeights","vertexUvs","bufferGeometryId","morphAttributes","drawRange","widthSegments","heightSegments","depthSegments","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","addGroup","setIndex","addAttribute","width_half","height_half","segment_width","segment_height","getIndex","getAttribute","removeAttribute","clearGroups","setDrawRange","needsUpdate","tangent","updateFromObject","direct","__directGeometry","lineDistance","fromDirectGeometry","morphAttributesPosition","morphAttribute","isNaN","boxMorphTargets","pA","pB","pC","normalizeNormals","attributeArray1","attribute2","attributeArray2","attributeOffset","toNonIndexed","convertBufferAttribute","array2","geometry2","newAttribute","morphArray","keys","attributeData","hasMorphAttributes","attributeArray","materialId","blending","side","flatShading","vertexTangents","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","premultipliedAlpha","isMaterial","onBeforeCompile","setValues","newValue","currentValue","isRoot","emissiveIntensity","normalMapType","combine","sizeAttenuation","linewidth","gapSize","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","skinning","srcPlanes","dstPlanes","segCenter","segDir","barycoord","vab","vac","vbc","vap","vbp","vcp","default_vertex","default_fragment","defines","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","origin","updateMorphTargets","WebGLBackground","renderer","state","objects","planeMesh","boxMesh","clearColor","clearAlpha","currentBackground","currentBackgroundVersion","setClear","getClearColor","setClearColor","getClearAlpha","setClearAlpha","render","renderList","scene","forceClear","vr","session","getSession","environmentBlendMode","autoClear","clear","autoClearColor","autoClearDepth","autoClearStencil","isCubeTexture","unshift","WebGLBufferRenderer","info","capabilities","setMode","drawArrays","renderInstances","extension","isWebGL2","maxInstancedCount","WebGLCapabilities","maxAnisotropy","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","fromCache","nGlobal","lGlobal","clippingState","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","buffergeometry","memory","_bufferGeometry","geometryAttributes","getWireframeAttribute","geometryIndex","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","triangles","lines","programs","autoReset","reset","instanceCount","absNumericalSort","WebGLMorphtargets","influencesList","morphInfluences","program","objectInfluences","morphTargetInfluences","influences","influence","getUniforms","setValue","WebGLObjects","updateList","wrapR","isShaderMaterial","ray","at","recast","closestPointToPoint","directionDistance","distanceSqToPoint","distanceSqToSegment","optionalPointOnRay","optionalPointOnSegment","s0","sqrDist","extDet","segExtent","a01","b0","invDet","intersectSphere","tca","radius2","thc","t0","t1","distanceToPlane","intersectPlane","distToPoint","intersectBox","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectTriangle","edge1","edge2","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","getNormal","targetLengthSq","getBarycoord","dot00","dot01","dot02","dot11","dot12","denom","invDenom","getUV","uv1","uv3","isFrontFacing","setFromPointsAndIndices","i0","i1","i2","getArea","getMidpoint","getPlane","d4","vc","d5","d6","vb","va","isMeshBasicMaterial","setDrawMode","morphTargetDictionary","ml","String","inverseMatrix","tempA","tempB","tempC","morphA","morphB","morphC","uvA","uvB","uvC","intersectionPoint","intersectionPointWorld","checkIntersection","raycaster","checkBufferGeometryIntersection","morphPosition","intersection","intersects","groupMaterial","faceIndex","fvA","fvB","fvC","isMultiMaterial","faceMaterial","uvs_f","isDataTexture2DArray","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueT1","unit","uniform1i","safeSetTexture2D","setValueT2DArray1","setTexture2DArray","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueV1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1fArray","uniform1fv","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueT1Array","units","setValueT6Array","SingleUniform","activeInfo","getSingularSetter","PureArrayUniform","getPureArraySetter","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","path","pathLength","lastIndex","matchEnd","idIsIndex","subscript","next","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","debug","shader","createShader","shaderSource","compileShader","getShaderParameter","getShaderInfoLog","split","join","addLineNumbers","setOptional","upload","seqWithValue","programIdCount","getEncodingComponents","getTexelDecodingFunction","functionName","getToneMappingFunction","toneMapping","toneMappingName","filterEmptyLine","replaceLightNums","replace","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","parseIncludes","include","unrollLoops","snippet","unroll","WebGLProgram","code","shadowMapTypeDefine","shadowMapType","envMapTypeDefine","envMapModeDefine","envMapBlendingDefine","prefixVertex","prefixFragment","gammaFactorDefine","customExtensions","rendererExtensions","envMapCubeUV","objectSpaceNormalMap","filter","generateExtensions","customDefines","chunks","generateDefines","createProgram","isRawShaderMaterial","supportsVertexTextures","maxBones","useFog","fogExp","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","outputEncoding","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","depthPacking","isGLSL3ShaderMaterial","versionRegex","cachedUniforms","cachedAttributes","fragmentGlsl","glVertexShader","checkShaderErrors","glFragmentShader","attachShader","bindAttribLocation","linkProgram","programLog","getProgramInfoLog","trim","vertexLog","fragmentLog","runnable","haveDiagnostics","getError","diagnostics","prefix","deleteShader","getAttributes","getActiveAttrib","getAttribLocation","fetchAttributeLocations","destroy","deleteProgram","usedTimes","WebGLPrograms","shaderIDs","parameterNames","getTextureEncodingFromMap","gammaOverrideLinear","getParameters","shadows","nClipPlanes","nClipIntersection","shaderID","isSkinnedMesh","bones","skeleton","nVertexUniforms","nVertexMatrices","allocateBones","currentRenderTarget","getRenderTarget","gammaOutput","gammaInput","envMapMode","isFogExp2","maxMorphTargets","maxMorphNormals","directional","spot","rectArea","hemi","shadowMap","getProgramCode","acquireProgram","pl","programInfo","releaseProgram","pop","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","defaultProgram","getNextRenderItem","renderItem","WebGLRenderLists","lists","onSceneDispose","list","cameras","UniformsCache","light","halfWidth","halfHeight","WebGLLights","stateID","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","shadowsLength","ambient","probe","vector3","matrix42","setup","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","bias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","WebGLRenderState","lightsArray","shadowsArray","setupLights","pushLight","pushShadow","shadowLight","WebGLRenderStates","renderStates","renderState","WebGLShadowMap","_renderer","_objects","_frustum","_projScreenMatrix","_shadowMapSize","_maxShadowMapSize","_lookTarget","_lightPositionWorld","_MorphingFlag","_SkinningFlag","_NumberOfMaterialVariants","_depthMaterials","_distanceMaterials","_materialCache","1","2","cubeDirections","cubeUps","cube2DViewPorts","useMorphing","useSkinning","depthMaterial","distanceMaterial","getDepthMaterial","lightPositionWorld","materialVariants","customMaterial","customDepthMaterial","customDistanceMaterial","variantIndex","keyA","keyB","materialsForVariant","cachedMaterial","isMeshDistanceMaterial","renderObject","shadowCamera","renderBufferDirect","autoUpdate","faceCount","activeCubeFace","getActiveCubeFace","activeMipMapLevel","getActiveMipMapLevel","_state","setBlending","setTest","setScissorTest","vpWidth","vpHeight","pars","updateProjectionMatrix","isSpotLightShadow","shadowMatrix","setRenderTarget","vpDimensions","WebGLState","utils","colorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","setOp","stencilFail","stencilZFail","stencilZPass","stencilOp","stencil","clearStencil","maxVertexAttributes","newAttributes","enabledAttributes","attributeDivisors","enabledCapabilities","compressedTextureFormats","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","blendEquationSeparate","convert","blendFuncSeparate","blendFunc","setFlipSided","frontFace","setCullFace","cullFace","setPolygonOffset","factor","activeTexture","webglSlot","initAttributes","enableAttribute","disableUnusedAttributes","disableVertexAttribArray","getCompressedTextureFormats","formats","useProgram","setMaterial","frontFaceCW","setLineWidth","lineWidth","webglType","webglTexture","boundTexture","compressedTexImage2D","texImage3D","WebGLTextures","_gl","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","HTMLImageElement","ImageBitmap","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","__maxMipLevel","LOG2E","getInternalFormat","glFormat","glType","internalFormat","filterFallback","onTextureDispose","textureProperties","__webglInit","deleteTexture","__webglTexture","deallocateTexture","isVideoTexture","onRenderTargetDispose","renderTarget","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","deallocateRenderTarget","textureUnits","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","initTexture","pixelStorei","isCompressed","isCompressedTexture","cubeImage","glInternalFormat","setTextureParameters","mipmap","setTextureCubeDynamic","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","textureNeedsPowerOfTwo","isDepthTexture","setupFrameBufferTexture","framebuffer","attachment","textureTarget","bindFramebuffer","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthRenderbuffer","isCube","webglDepthTexture","setupDepthTexture","createRenderbuffer","warnedTexture2D","warnedTextureCube","textureUnit","resetTextureUnits","setupRenderTarget","createFramebuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","MIN_EXT","MAX_EXT","UNSIGNED_INT_24_8_WEBGL","fov","aspect","zoom","focus","view","filmGauge","filmOffset","isMeshDepthMaterial","isGroup","isPerspectiveCamera","setFocalLength","focalLength","vExtentSlope","getFilmHeight","atan","getFocalLength","getEffectiveFOV","getFilmWidth","setViewOffset","fullWidth","fullHeight","offsetX","offsetY","clearViewOffset","skew","isArrayCamera","matrixPosition","offsetMatrix","identityMatrix","cameraLPos","cameraRPos","setProjectionFromUnion","cameraL","cameraR","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","WebVRManager","renderWidth","renderHeight","device","frameData","poseTarget","controllers","standingMatrix","standingMatrixInverse","framebufferScaleFactor","referenceSpaceType","VRFrameData","onVRDisplayPresentChange","tempQuaternion","tempPosition","cameraVR","isPresenting","currentPixelRatio","currentSize","eyeParameters","getEyeParameters","getPixelRatio","setDrawingBufferSize","animation","triggers","findGamepad","gamepads","navigator","getGamepads","gamepad","startsWith","updateViewportFromBounds","bounds","getController","controller","getDevice","setDevice","setFramebufferScaleFactor","setReferenceSpaceType","setPoseTarget","getCamera","userHeight","depthNear","depthFar","getFrameData","stageParameters","sittingToStandingTransform","pose","poseObject","orientation","leftViewMatrix","rightViewMatrix","leftProjectionMatrix","rightProjectionMatrix","getLayers","layer","leftBounds","rightBounds","hasPosition","buttonId","buttons","pressed","updateControllers","getStandingMatrix","submitFrame","setFrameOfReferenceType","WebXRManager","referenceSpace","inputSources","onSessionEvent","inputSource","onSessionEnd","setFramebuffer","onRequestReferenceSpace","updateCamera","setSession","updateRenderState","baseLayer","XRWebGLLayer","requestReferenceSpace","then","onAnimationFrameCallback","getViewerPose","views","getViewport","transform","inputPose","getPose","targetRaySpace","_context","_alpha","_depth","_stencil","_antialias","antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","domElement","sortObjects","toneMappingExposure","toneMappingWhitePoint","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","_this","_isContextLost","_framebuffer","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentFramebuffer","_currentMaterialId","_currentGeometryProgram","_currentCamera","_currentArrayCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_viewport","_scissor","_scissorTest","_clipping","_clippingEnabled","_localClippingEnabled","_vector3","getTargetPixelRatio","contextAttributes","xrCompatible","onContextLost","onContextRestore","rangeMin","rangeMax","message","initGLContext","xr","preventDefault","onMaterialDispose","releaseMaterialProgramReference","deallocateMaterial","getContextAttributes","forceContextLoss","loseContext","forceContextRestore","restoreContext","setPixelRatio","updateStyle","setViewport","getDrawingBufferSize","pixelRatio","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","bits","renderBufferImmediate","hasPositions","hasNormals","hasUvs","hasColors","programAttributes","positionArray","vertexAttribPointer","normalArray","uvArray","colorArray","setProgram","updateBuffers","rangeFactor","isInstancedBufferGeometry","materialDefaultAttributeValues","programAttribute","geometryAttribute","stride","isInstancedInterleavedBuffer","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","setupVertexAttributes","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","compile","initMaterial","renderObjects","overrideMaterial","camera2","isImmediateRenderObject","renderObjectImmediate","materialProperties","lightsHash","lightsStateHash","programChange","numSupportedMorphTargets","numSupportedMorphNormals","progUniforms","uniformsList","useCache","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","isMeshPhongMaterial","isMeshStandardMaterial","uCamPos","cameraPosition","isMeshLambertMaterial","boneTexture","boneMatrices","boneTextureSize","isFog","density","refreshUniformsFog","refreshUniformsCommon","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsPhong","refreshUniformsToon","isMeshPhysicalMaterial","refreshUniformsStandard","refreshUniformsPhysical","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","ltc_1","LTC_1","ltc_2","LTC_2","uvScaleMap","projectObject","opaqueObjects","transparentObjects","readRenderTargetPixels","activeCubeFaceIndex","restore","textureFormat","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","interleavedBuffer","levels","bindMode","bindMatrix","bindMatrixInverse","boneInverses","calculateInverses","linecap","linejoin","video","ol","edge","edges","func","slices","stacks","pu","pv","sliceCount","detail","vertexBuffer","uvBuffer","subdivideFace","cols","aj","bj","rows","pushVertex","getVertexByIndex","correctUV","azimuth","inclination","subdivide","appplyRadius","centroid","azi","correctUVs","correctSeam","generateUVs","tubularSegments","radialSegments","closed","taper","bufferGeometry","tangents","binormals","frames","computeFrenetFrames","P","generateSegment","getPointAt","N","B","generateIndices","generateBufferData","tube","heightScale","P1","P2","T","calculatePositionOnCurve","cu","su","quOverP","cs","arc","isScene","isInterleavedBuffer","intersectPoint","worldScale","mvPosition","alignedPosition","rotatedPosition","viewWorldMatrix","transformVertex","vertexPosition","isLOD","addLevel","getObjectForDistance","normalizeSkinWeights","skinWeight","bone","isBone","getBoneByName","computeLineDistances","positionAttribute","linePrecision","localPrecision","localPrecisionSq","vStart","vEnd","interSegment","interRay","nbVertices","threshold","params","localThreshold","localThresholdSq","testPoint","rayPointDistanceSq","distanceToRay","readyState","HAVE_CURRENT_DATA","isCanvasTexture","Earcut","holeIndices","dim","invSize","hasHoles","outerLen","outerNode","linkedList","queue","steiner","getLeftmost","compareX","eliminateHole","filterPoints","eliminateHoles","earcutLinked","clockwise","last","sum","signedArea","insertNode","removeNode","again","area","prev","ear","pass","zOrder","prevZ","nextZ","tail","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minTX","minTY","maxTX","maxTY","locallyInside","isValidDiagonal","splitPolygon","hole","hx","hy","mx","my","tanMin","findHoleBridge","leftmost","px","py","intersectsPolygon","inside","middleInside","q2","Node","an","bp","contour","isClockWise","pts","triangulateShape","holes","removeDupEndPts","addContour","holeIndex","forEach","verticesArray","addShape","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","ahole","hl","extrudeByPath","getSpacedPoints","shapePoints","extractPoints","reverse","concat","scalePt2","pt","vec","bs","vert","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","sf","v_trans_lensq","direction_eq","contourMovements","oneHoleMovements","holesMovements","verticesMovements","sidewalls","layeroffset","sl","slen1","slen2","f4","f3","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","buildLidFaces","buildSideFaces","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","text","font","isFont","generateShapes","phiStart","phiLength","thetaStart","thetaLength","thetaEnd","grid","verticesRow","uOffset","innerRadius","outerRadius","thetaSegments","phiSegments","segment","radiusStep","thetaSegmentLevel","segments","base","inverseSegments","n1","n2","shapeHole","indexOffset","shapeVertices","shapeHoles","toJSON$1","thresholdAngle","thresholdDot","sourceVertices","face1","face2","radiusTop","radiusBottom","openEnded","indexArray","generateCap","centerIndexStart","centerIndexEnd","cosTheta","sinTheta","slope","indexRow","generateTorso","Geometries","freeze","STANDARD","PHYSICAL","TOON","MATCAP","Materials","arraySlice","from","to","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","parameterPositions","sampleValues","sampleSize","resultBuffer","_cachedIndex","valueSize","_weightPrev","_offsetPrev","_weightNext","_offsetNext","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","duration","tracks","resetDuration","parseKeyframeTrack","json","trackType","typeName","toLowerCase","getTrackTypeForValueTypeName","evaluate","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","mid","intervalChanged_","interpolate_","settings","DefaultSettings_","getSettings_","copySampleValue_","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","halfDt","o1","o0","oP","oN","wP","wN","ppp","sP","sN","offset1","offset0","weight1","weight0","track","getInterpolation","ValueTypeName","InterpolantFactoryMethodDiscrete","getValueSize","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","factoryMethod","createInterpolant","timeOffset","timeScale","startTime","endTime","nKeys","validate","valid","prevTime","currTime","optimize","smoothInterpolation","writeIndex","keep","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","jsonTracks","frameTime","fps","clip","clipTracks","CreateFromMorphTargetSequence","morphTargetSequence","noLoop","numMorphTargets","findByName","objectOrClipArray","clipArray","animations","CreateClipsFromMorphTargetSequences","animationToMorphTargets","pattern","parts","animationMorphTargets","clips","parseAnimation","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","files","file","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","loading","manager","_parser","arcLengthDivisions","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","t2","calc","load","cached","setTimeout","dataUriRegexResult","mimeType","isBase64","decodeURIComponent","atob","response","responseType","charCodeAt","Blob","parser","DOMParser","parseFromString","request","XMLHttpRequest","header","open","callbacks","status","withCredentials","overrideMimeType","requestHeader","setRequestHeader","send","setPath","setResponseType","setWithCredentials","setMimeType","loader","loadTexture","texDatas","loaded","mipmapCount","isCubemap","texData","crossOrigin","onImageLoad","onImageError","substr","setCrossOrigin","urls","isJPEG","search","getPoint","optionalTarget","getUtoTmapping","getPoints","divisions","getLength","lengths","getLengths","cacheArcLengths","current","updateArcLengths","targetArcLength","arcLengths","comparison","lengthBefore","getTangent","pt1","getTangentAt","mat","MAX_VALUE","tz","fromJSON","isEllipseCurve","twoPi","deltaAngle","samePoints","isArcCurve","pz","curveType","CatmullRom","QuadraticBezier","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","CubicBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","v3","isCatmullRomCurve3","intPoint","weight","isCubicBezierCurve","isCubicBezierCurve3","isLineCurve","isLineCurve3","isQuadraticBezierCurve","isQuadraticBezierCurve3","isSplineCurve","Curves","curves","autoClose","currentPoint","power","curve","closePath","startPoint","endPoint","curveLengths","getCurveLengths","segmentLength","lens","cacheLengths","sums","resolution","moveTo","lineTo","quadraticCurveTo","aCPx","aCPy","bezierCurveTo","aCP1x","aCP1y","aCP2x","aCP2y","splineThru","absarc","absellipse","ellipse","firstPoint","lastPoint","getPointsHoles","holesPts","isOrthographicCamera","zoomW","zoomH","scaleW","scaleH","getTexture","shading","setTextures","decodeText","TextDecoder","decode","fromCharCode","escape","extractUrlBase","lastIndexOf","typedArray","TYPED_ARRAYS","bufferAttribute","drawcalls","offsets","resourcePath","setResourcePath","parseShape","parseGeometries","parseImages","parseTextures","parseMaterials","parseObject","parseAnimations","bufferGeometryLoader","details","geometryShapes","THREE","LegacyJSONLoader","loadImage","currentUrl","parseConstant","TEXTURE_MAPPING","TEXTURE_WRAPPING","TEXTURE_FILTER","getGeometry","getMaterial","BlendingMode","textureLoader","materialLoader","createImageBitmap","fetch","subPaths","currentPath","createPath","char","glyph","glyphs","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","setOptions","res","blob","imageBitmap","catch","toShapes","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","tmpPoints","tmpHoles","betterShapeHoles","newShapes","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","paths","chars","line_height","yMax","yMin","underlineThickness","ret","createPaths","substring","Handlers","handlers","regex","onLoadStart","onLoadProgress","onLoadComplete","initMaterials","texturePath","createMaterial","fullPath","mapDiffuseRepeat","mapDiffuseOffset","mapDiffuseWrap","mapDiffuseAnisotropy","mapEmissiveRepeat","mapEmissiveOffset","mapEmissiveWrap","mapEmissiveAnisotropy","mapLightRepeat","mapLightOffset","mapLightWrap","mapLightAnisotropy","mapAORepeat","mapAOOffset","mapAOWrap","mapAOAnisotropy","mapBumpRepeat","mapBumpOffset","mapBumpWrap","mapBumpAnisotropy","mapNormalRepeat","mapNormalOffset","mapNormalWrap","mapNormalAnisotropy","mapSpecularRepeat","mapSpecularOffset","mapSpecularWrap","mapSpecularAnisotropy","mapMetalnessRepeat","mapMetalnessOffset","mapMetalnessWrap","mapMetalnessAnisotropy","mapRoughnessRepeat","mapRoughnessOffset","mapRoughnessWrap","mapRoughnessAnisotropy","mapAlphaRepeat","mapAlphaOffset","mapAlphaWrap","mapAlphaAnisotropy","webkitAudioContext","sky","ground","eyeSep","bufferCopy","decodeAudioData","audioBuffer","isSphericalHarmonics3","getAt","coeff","getIrradianceAt","getBasisAt","shBasis","isHemisphereLightProbe","isAmbientLightProbe","instance","eyeRight","eyeLeft","xmin","xmax","eyeSepOnProjection","ymax","cubeResolution","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","autoStart","oldTime","elapsedTime","running","gain","createGain","connect","destination","timeDelta","getInput","autoplay","detune","loop","playbackRate","isPlaying","hasPlaybackControl","sourceType","filters","panner","createPanner","panningModel","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getOutput","binding","mixFunction","_slerp","_select","_lerp","_mixBufferRegion","cumulativeWeight","useCount","referenceCount","performance","Date","now","getElapsedTime","getDelta","newTime","removeFilter","disconnect","getFilter","setFilter","getMasterVolume","setMasterVolume","setTargetAtTime","currentTime","clock","positionX","linearRampToValueAtTime","positionY","positionZ","forwardX","forwardY","forwardZ","upX","upY","upZ","setOrientation","setNodeSource","audioNode","setMediaElementSource","mediaElement","createMediaElementSource","setBuffer","play","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","pause","getFilters","setFilters","getDetune","getPlaybackRate","getLoop","setLoop","getVolume","setVolume","getRefDistance","refDistance","setRefDistance","getRolloffFactor","rolloffFactor","setRolloffFactor","getDistanceModel","distanceModel","setDistanceModel","getMaxDistance","maxDistance","setMaxDistance","setDirectionalCone","coneInnerAngle","coneOuterAngle","coneOuterGain","orientationX","orientationY","orientationZ","getFrequencyData","getByteFrequencyData","getAverageFrequency","accumulate","accuIndex","currentWeight","mix","originalValueOffset","saveOriginalState","getValue","restoreOriginalState","wordChar","wordCharOrDot","directoryRe","nodeRe","objectRe","propertyRe","trackRe","supportedObjectNames","reservedRe","startP","startEnd","lineGeometry","coneGeometry","Composite","targetGroup","optionalParsedPath","parsedPath","parseTrackName","_targetGroup","_bindings","subscribe_","rootNode","findNode","nodeName","nCachedObjects_","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","total","inUse","bindingsPerObject","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","interpolant","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_root","_initMemoryManager","_accuIndex","ascSort","intersectObject","nNormals","objGeometry","cone","getBoneList","boneList","sphereSize","GAMMA_OUTPUT","radials","circles","divisionsInnerAngle","divisionsOuterAngle","materialInnerAngle","materialOuterAngle","lightPlane","targetLine","pointMap","colorFrustum","colorCone","colorUp","colorTarget","colorCross","addLine","addPoint","headLength","headWidth","setDirection","firstValidIndex","bindings","unbind","isAnimationObjectGroup","sanitizeNodeName","RegExp","matches","results","objectName","objectIndex","propertyIndex","lastDot","searchNodeSubtree","childNode","subTreeNode","_getValue_unavailable","_setValue_unavailable","BindingType","Direct","EntireArray","ArrayElement","HasFromToArray","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","GetterByBindingType","resolvedProperty","SetterByBindingTypeAndVersioning","targetObject","dest","targetArray","sourceArray","nodeProperty","versioning","bindingType","_getValue_unbound","_setValue_unbound","nObjects","nCachedObjects","indicesByUUID","parsedPaths","nBindings","knownObject","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","uncache","lastObject","indicesByPath","unsubscribe_","lastBindingsIndex","lastBindings","_activateAction","_deactivateAction","stopFading","stopWarping","isRunning","_isActiveAction","isScheduled","startAt","setEffectiveWeight","getEffectiveWeight","fadeIn","_scheduleFading","fadeOut","crossFadeFrom","fadeOutAction","warp","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","crossFadeTo","fadeInAction","weightInterpolant","_takeBackControlInterpolant","setEffectiveTimeScale","getEffectiveTimeScale","setDuration","syncWith","action","halt","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","getMixer","getClip","getRoot","_update","deltaTime","timeDirection","timeRunning","_updateTimeScale","clipTime","_updateTime","_updateWeight","propertyMixers","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","_bindAction","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","knownActions","_addInactiveAction","_lendBinding","_lendAction","_takeBackBinding","_takeBackAction","_actions","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","actions","controlInterpolants","actionsByClip","actionByRoot","_removeInactiveAction","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","remove_empty_map","_","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","clipAction","optionalRoot","clipObject","existingAction","newAction","stopAllAction","nActions","uncacheClip","actionsToRemove","uncacheRoot","uncacheAction","setFromCamera","coords","intersectObjects","other","makeSafe","setFromCartesianCoords","distanceSq","closestPointToPointParameter","clampToLine","startEnd2","objPos","objNorm","coneLength","coneWidth","boneMatrix","matrixWorldInv","halfConeInnerAngle","halfConeOuterAngle","setPoint","setColor","construct","createPointsGeometry","createGeometry","createSpacedPointsGeometry","fromPoints","initFromArray","getControlPointsArray","reparametrizeByArcLength","setColors","setTexturePath","isIntersectionBox","isIntersectionSphere","random16","nearestPowerOfTwo","nextPowerOfTwo","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBuffer","applyToVector3Array","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateByAxis","makeFrustum","isIntersectionLine","isIntersectionPlane","barycoordFromPoint","midpoint","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","computeTangents","getChildByName","renderDepth","getWorldRotation","eulerOrder","useQuaternion","initBones","setLens","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","copyIndicesArray","addIndex","addDrawCall","clearDrawCalls","computeOffsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","metal","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","shadowMapCullFace","renderReverseSided","renderSingleSided","standing","getData","updateCubeMap","geometry1","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","createMultiMaterialObject","detach","Constructor","_defineProperties","props","descriptor","writable","protoProps","staticProps","global","core","hide","redefine","ctx","$export","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","expProto","U","W","R","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1___default","three__WEBPACK_IMPORTED_MODULE_2__","proj4__WEBPACK_IMPORTED_MODULE_3__","_Crs__WEBPACK_IMPORTED_MODULE_4__","_Math_Ellipsoid__WEBPACK_IMPORTED_MODULE_5__","defs","coordPivot","ellipsoid","vectorPivot","projectionCache","proj4cache","crsIn","crsOut","setFromProj4","coord","proj4value","setFromValues","Coordinates","crs","isCoordinates","isValid","_normal","_normalNeedsUpdate","is4326","cartographicToCartesian","forward","as","cartesianToCartographic","geodeticSurfaceNormalCartographic","geodeticSurfaceNormal","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","self","ReferenceError","_typeof","assertThisInitialized","subClass","superClass","worldDimension3857","_extent","_Coordinates__WEBPACK_IMPORTED_MODULE_3__","_Projection__WEBPACK_IMPORTED_MODULE_5__","_dim","_dim2","row","col","invDiff","_rowColfromParent","extent","diffLevel","cardinals","_c","Extent","isTiledCrs","west","east","south","north","nbCol","sizeRow","Yn","Ys","_north","YToWGS84","_south","_west","_nbRow","_size","_north2","_south2","_west2","_east2","_north3","_south3","_east3","_west3","dimensions","epsilon","reasonnableEpsilon","originX","originY","levelParent","intersectsExtent","coordinates","expandByValuesCoordinates","we","sn","separator","temp","_temp","RENDERING_PAUSED","MAIN_LOOP_EVENTS","three__WEBPACK_IMPORTED_MODULE_0__","_Scheduler_Cache__WEBPACK_IMPORTED_MODULE_1__","UPDATE_START","BEFORE_CAMERA_UPDATE","AFTER_CAMERA_UPDATE","BEFORE_LAYER_UPDATE","AFTER_LAYER_UPDATE","BEFORE_RENDER","AFTER_RENDER","UPDATE_END","MainLoop","scheduler","engine","renderingState","needsRedraw","gfxEngine","_updateLoopRestarted","updateElements","geometryLayer","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step2","_iterator","iterator","done","newElementsToUpdate","getObjectToUpdateForAttachedLayers","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step3","_iterator2","attachedLayers","attachedLayer","ready","err","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step4","_iterator3","_attachedLayer","filterChangeSources","updateSources","fullUpdate","filtered","Set","scheduleViewUpdate","forceRedraw","timestamp","_step","dt","isLayer","parentLayer","getParentLayer","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step5","_iterator4","frozen","execFrameRequesters","srcs","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step6","_iterator5","preUpdate","elementsToUpdate","postUpdate","_lastTimestamp","_executeFrameRequestersRemovals","willRedraw","_changeSources","getWindowSize","oldAutoUpdate","camera3D","commandsWaitingExecutionCount","_renderView","flush","renderView","FeatureGeometry","FEATURE_TYPES","FeatureCollection","_Geographic_Extent__WEBPACK_IMPORTED_MODULE_3__","defaultExtent","defaultNormal","feature","_feature","_currentExtent","geodesicNormal","_pos","_pushValues","expandByCoordinates","_long","lat","alt","push2DValues","value0","value1","push3DValues","value2","POINT","LINE","POLYGON","Feature","find","withNormal","withAltitude","buildExtent","isFeatureCollection","features","optionsFeature","translation","ext","updateExtent","mergeFeatures","newFeature","proj4__WEBPACK_IMPORTED_MODULE_0__","UNIT","DEGREE","METER","toUnit","projunit","toUnitWithError","isGeographic","isMetricUnit","arrayWithoutHoles","iterableToArray","nonIterableSpread","arr","__g","isObject","it","unpack1K","CRS_DEFINES","getMaxColorSamplerUnitsCount","ELEVATION_MODES","_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2___default","_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3___default","_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4__","_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_4___default","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5__","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_5___default","three__WEBPACK_IMPORTED_MODULE_6__","_Shader_ShaderUtils__WEBPACK_IMPORTED_MODULE_7__","_Core_System_Capabilities__WEBPACK_IMPORTED_MODULE_8__","_RenderMode__WEBPACK_IMPORTED_MODULE_9__","_MaterialLayer__WEBPACK_IMPORTED_MODULE_10__","TileVS","TileFS","identityOffsetScale","bitSh","maxSamplersColorCount","samplersElevationCount","maxSamplerUnitsCount","getMaxTextureUnitsCount","_updateLayersUniforms","olayers","offsetScales","textureCount","textureOffset","setDefineMapping","PROPERTY","setUniformProperty","initValue","nbSamplers","RGBA","COLOR","DATA","LayeredMaterial","_THREE$RawShaderMater","NUM_VS_TEXTURES","NUM_FS_TEXTURES","USE_FOG","NUM_CRS","MODES","FINAL","isLogDepthBufferSupported","USE_LOGDEPTHBUF","USE_LOGDEPTHBUF_EXT","elevationLayerIds","colorLayerIds","elevationLayers","fill","elevationTextures","elevationOffsetScales","elevationTextureCount","colorLayers","colorTextures","colorOffsetScales","colorTextureCount","_this2","colorlayers","includes","getUniformByType","some","getLayer","elevationLayer","getElevationLayer","layersNeedUpdate","sequenceLayer","layerId","findIndex","idSeq","lml","isColorLayer","setSequence","colorLayersOrder","setSequenceElevation","_this3","ellipsoidSizes","_Geographic_Coordinates__WEBPACK_IMPORTED_MODULE_4__","WGS84","Ellipsoid","_radiiSquared","_invRadiiSquared","cartesian","coordCarto","longitude","latitude","cosLatitude","gamma","altitude","rsqXY","nu","sinu","cosu","coordCartoArray","cartesianArray","O_C","inter","coordCarto1","coordCarto2","longitude1","latitude1","longitude2","latitude2","distRad","latMoy","rho","checkResponse","ok","arrayBuffer","xml","rej","promise","Promise","resolve","reject","textureFloat","getTextureFloat","multiple","baseUrl","promises","fetchType","_loop","all","PJD_3PARAM","PJD_7PARAM","PJD_WGS84","PJD_NODATUM","SEC_TO_RAD","HALF_PI","SIXTH","RA4","RA6","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","PrimeMeridian_exports","greenwich","lisbon","paris","bogota","madrid","rome","bern","jakarta","ferro","brussels","stockholm","athens","oslo","ft","to_meter","us-ft","ignoredChar","testkey","lkey","projString","defData","paramName","paramVal","paramOutname","paramObj","reduce","proj","datum","rf","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","lonc","longc","x_0","y_0","k_0","k0","r_a","R_A","zone","utmSouth","towgs84","datum_params","from_greenwich","pm","nadgrids","datumCode","txt","Parser","NEUTRAL","whitespace","latin","keyword","endThings","digets","place","stack","currentObject","mapit","thing","newObj","item","sExpr","readCharicter","neutral","quoted","afterquote","number","word","afterItem","newObjects","wkt_parser_D2R","d2r","input","wkt_parser","wkt","lisp","projName","local","PROJECTION","DATUM","SPHEROID","geogcs","GEOGCS","toMeter","ellps","TOWGS84","outName","inName","cleanWKT","that","def","EPSG","ESRI","IAU2000","GOOGLE","lib_defs","codeWords","codes","parseCode","testObj","testDef","testWKT","auth","checkMercator","maybeProjStr","checkProjStr","testProj","extend","msfnz","eccent","sinphi","cosphi","con","adjust_lon","tsfnz","com","phi2z","ts","dphi","eccnth","projs","es","lon","names","projections_names","projStore","projections","Ellipsoid_exports","MERIT","ellipseName","SGS85","GRS80","IAU76","airy","APL4","NWL9D","mod_airy","andrae","aust_SA","GRS67","bessel","bess_nam","clrk66","clrk80","clrk58","CPM","delmbr","engelis","evrst30","evrst48","evrst56","evrst69","evrstSS","fschr60","fschr60m","fschr68","helmert","hough","intl","kaula","lerch","mprts","new_intl","plessis","krass","SEasia","walbeck","WGS60","WGS66","WGS7","Datum_exports","wgs84","datumName","ch1903","ggrs87","nad83","nad27","potsdam","carthage","hermannskogel","osni52","ire65","rassadiran","nzgd49","osgb36","s_jtsk","beduaram","gunung_segara","rnb72","lib_datum","ep2","datum_type","Projection","srsCode","ourProj","datumDef","sphere_","deriveConstants_sphere","ecc","datumObj","Proj","checkParams","datum_transform","compareDatums","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","geodeticToGeocentric","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricToWgs84","x_tmp","y_tmp","z_tmp","geocentricFromWgs84","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","iter","X","Y","Z","geocentricToGeodetic","adjust_axis","denorm","xin","yin","zin","toPoint","checkSanity","checkCoord","num","checkNotWGS","core_wgs84","transformer","transformedArray","checkProj","oProj","fromProj","toProj","single","NUM_100K_SETS","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","mgrs_A","I","O","mgrs_V","mgrs_Z","mgrs","mgrs_forward","bbox","UTMtoLL","mgrs_toPoint","ll","accuracy","utm","seasting","easting","snorthing","northing","zoneNumber","zoneLetter","setParm","get100kSetForZone","setColumn","setRow","column","parm","colOrigin","rowOrigin","colInt","rowInt","rollover","encode","C","A","M","LongOriginRad","ZoneNumber","Lat","Long","LatRad","LongRad","UTMEasting","UTMNorthing","getLetterDesignator","LLtoUTM","deg","rad","N1","T1","C1","R1","D","LongOrigin","mu","phi1Rad","e1","topRight","LetterDesignator","mgrsString","testChar","hunK","sb","east100k","curCol","eastingValue","rewindMarker","getEastingFromChar","north100k","curRow","northingValue","getNorthingFromChar","getMinNorthing","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","Point","fromMGRS","mgrsStr","toMGRS","lib_Point","C08","pj_enfn","en","pj_mlfn","sphi","cphi","pj_inv_mlfn","arg","tmerc","ml0","delta_lon","sin_phi","cos_phi","al","als","tq","tan_phi","ds","sinh","hypot","asinhy","log1py","gatg","cos_2B","h1","h2","clens","arg_r","hr","hr1","hr2","clens_cmplx","arg_i","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","cosh_arg_i","cosh","hi1","hi","etmerc","cgb","cbg","utg","gtu","np","Qn","Zb","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","adjust_zone","dependsOn","srat","esinp","gauss_MAX_ITER","gauss","rc","phic0","ratexp","K","sterea","sinc0","cosc0","R2","title","sinc","cosc","cosl","stere","coslat0","sinlat0","cons","ms1","X0","ssfn_","cosX0","sinX0","sinX","cosX","rh","sinlat","coslat","dlon","NaN","Chi","phit","eccen","somerc","phy0","lambda0","sinPhy0","semiMajorAxis","flattening","e2","k1","k2","k3","Sa1","Sa2","rotI","rotB","lambda","phy","prevPhy","iteration","omerc","no_off","no_rot","bl","dl","el","dlon12","dlon10","gamma0","uc","us","vs","ql","tl","ul","POSITIVE_INFINITY","qp","sp","tp","vp","lcc","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","rh1","krovak","s45","s90","fi0","alfa","uq","u0","n0","ro0","gfi","deltav","eps","ro","czech","fi1","mlfn","e0","e3","e0fn","e1fn","e2fn","e3fn","gN","adjust_lat","imlfn","cass","lam","nl","asq","cl","dd","ml1","phi1","nl1","rl1","tl1","dsq","qsfnz","P00","P01","P02","P10","P11","P20","laea","S_POLE","N_POLE","EQUIT","OBLIQ","mmf","apa","APA","authset","rq","xmf","ymf","sinb1","cosb1","sinph0","cosph0","coslam","sinlam","sinb","cosb","phi0","cCe","sCe","beta","cosz","sinz","asinz","aea","sin_po","cos_po","qs1","qs2","t3","qs0","ns0","qs","phi1z","eccnts","gnom","sin_p14","cos_p14","infinity_dist","coslon","iqsfnz","cea","eqc","dlat","poly_MAX_ITER","poly","tanphi","mln","mlnp","ma","nzmg","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_im1","delta_x","z_n_re","z_n_im","iterations","num_re","num_im","den_re","den_im","den2","d_psi_n","mill","sinu_MAX_ITER","C_y","C_x","V","moll","delta_theta","eqdc","ml2","vandg","sinth","costh","gsq","msq","xys","th1","aeqd","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","H","GH","Hs","kp","cos_c","s4","cosAz","Ee","ortho","FACE_ENUM","FRONT","BACK","TOP","BOTTOM","AREA_ENUM","AREA_0","AREA_1","AREA_2","AREA_3","qsc_fwd_equat_face_theta","qsc_shift_lon_origin","slon","qsc","one_minus_f","one_minus_f_squared","sinlon","cosmu","tannu","tantheta","invert_sign","xa","lp","COEFS_X","COEFS_Y","FXC","FYC","RC1","NODES","poly3_val","coefs","poly3_der","proj4","robin","f_df","max_err","iters","upd","newton_rapshon","defaultDatum","proj4_package","logDepthBufferSupported","maxTexturesUnits","_WebGLShader","isFirefox","userAgent","isInternetExplorer","documentMode","updateCapabilities","MAX_TEXTURE_IMAGE_UNITS","VERTEX_SHADER","FRAGMENT_SHADER","LINK_STATUS","ImageryLayers","_LayerUpdateStrategy__WEBPACK_IMPORTED_MODULE_7__","_InfoLayer__WEBPACK_IMPORTED_MODULE_8__","Layer","_THREE$EventDispatche","config","updateStrategy","defineLayerProperty","defaultValue","existing","getOwnPropertyDescriptor","previous","new","moveLayerToIndex","newIndex","imageryLayers","oldIndex","sequence","imagery","moveLayerDown","moveLayerUp","getColorLayersIdOrderedBySequence","text_encoding_utf_8__WEBPACK_IMPORTED_MODULE_0__","store","uid","USE_SYMBOL","toInteger","CancelledCommandException","command","requester","updatePreSse","verticalFOV","three_module","verticalPreSSE","_preSSE","_viewMatrix","_viewMatrixNeedsUpdate","resize","newFov","ratio","halfH","box3","Camera_points","ndcBox3","isBox3Visible","box3SizeOnScreen","isSphereVisible","atLeastOneInFrontOfNearPlane","projectBox3PointsInCameraSpace","adjustAltitudeToAvoidCollisionWithLayer","minDistanceCollision","camLocation","elevationUnderCamera","DEMUtils","getElevationValueAt","referenceCrs","notifyChange","Renderer_Camera","c3DEngine","rendererOrDiv","NOIE","Capabilities","gLDebug","viewerDiv","clientWidth","clientHeight","positionBuffer","_nextThreejsLayer","fullSizeRenderTarget","onWindowResize","createElement","ex","fontFamily","fontSize","fontWeight","textAlign","padding","margin","innerHTML","WebGLRenderingContext","appendChild","tabIndex","devicePixelRatio","getRenderer","renderViewToBuffer","renderViewToRenderTarget","pixelBuffer","bufferToImage","imgData","getImageData","Image","getUniqueThreejsLayer","depthRGBA","depthBufferRGBAValueToOrthoZ","depthBufferRGBA","gl_FragDepthEXT","logDepthBufFC","gl_FragCoord_Z","Renderer_c3DEngine","globalExtent","styleCache","Map","defaultFilter","readPBF","vectorTile","vector_tile","pbf_default","extentSource","sourceLayers","isInverted","vFeature","allLayers","filterExpression","dist","layer_id","sourceLayer","layersStyle","vtFeature","layerStyle","Style","setFromVectorTileLayer","getFeatureByType","classify","bindNewGeometry","pbf","_pbf","pos","_geometry","readVarint","cmd","cmdLen","readSVarint","closeSubGeometry","getLastSubGeometry","ccw","pushCoordinatesValues","vtFeatureToFeatureGeometry","removeEmptyFeature","VectorTileParser","supportedFetchers","Fetcher","supportedParsers","GeoJsonParser","handlingError","convertSourceData","extDest","parseSourceData","extSrc","isFileSource","isGeometryLayer","projection","filteringExtent","overrideAltitudeInToZero","parsedFile","parsedData","DataSourceProvider","executeCommand","extentsSource","extentsDestination","extSource","urlFromExtent","validedParsedData","extentDestination","validFn","isValidData","tag","convertedSourceData","fetchedData","fetcher","networkOptions","fetchSourceData","POLICIES","TEXTURE","TileProvider","POINT_ATTTRIBUTES","POSITION_CARTESIAN","numElements","arrayType","attributeName","COLOR_PACKED","INTENSITY","numByte","CLASSIFICATION","NORMAL_SPHEREMAPPED","NORMAL_OCT16","NORMAL","PotreeBinParser_loop","potreeName","_Object$keys","_i","attr","byteSize","fnName","PotreeBinParser","pointAttributes","pointByteSize","numPoints","byteLength","elemOffset","attrOffset","_potreeName","arrayLength","arrayOffset","elemIdx","PotreeCinParser","getFloat32","parseOctree","hierarchyStepSize","baseurl","fetchOptions","aabb","childIndex","dHalfLength","xHalfLength","yHalfLength","zHalfLength","cmin","cmax","childrenBitField","getUint8","getUint32","snode","childname","myname","nextuuid","parseMetadata","customBinFormat","isFromPotreeConverter","elem","octreeDir","table","supportsProgressiveDisplay","PointCloudProvider","preprocessDataLayer","object3d","bboxes","octreeDepthLimit","pointBudget","pointSize","sseThreshold","PointCloudProcessing","pickObjectsAt","mouse","Picking","pickPointsAt","lx","ly","lz","ux","uy","uz","ymin","zmin","zmax","computeBbox","findChildrenByName","charIndex","fromBox3","isLeaf","ids","baseId","addPickingAttribute","tightbbox","threejsLayer","queueOrdering","cmp","priority","_instanciateQueue","st","storages","priority_queue_default","comparator","accumulator","counters","executing","executed","failed","cancelled","execute","provider","Scheduler","defaultQueue","hostQueues","providers","maxCommandsPerHost","initDefaultProviders","addProtocolProvider","_3dTilesProvider","runCommand","executingCounterUpToDate","protocol","getProtocolProvider","redraw","deQueue","host","URL","location","has","commandsRunningCount","resetCommandsCount","selected","drawNextLayer","dequeue","earlyDropFunction","Scheduler_Scheduler","VIEW_EVENTS","LAYERS_INITIALIZED","LAYER_REMOVED","View","mainLoop","scene3D","_frameRequesters","_layers","_delayedFrameRequesterRemoval","_allLayersAreReadyCallback","every","removeFrameRequester","_syncGeometryLayerVisibility","addLayer","getLayerById","tileMatrixSet","whenReady","_preprocessLayer","layerColors","countColorLayersTextures","toConsumableArray_default","addFrameRequester","removeLayer","changeSource","attached","when","frameRequester","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_iterator6","toDelete","updateLoopRestarted","_len","args","_key","_iteratorNormalCompletion7","_didIteratorError7","_iteratorError7","_step7","_iterator7","_eventCoords","eventToViewCoords","touchIdx","touches","br","getBoundingClientRect","clientX","clientY","eventToNormalizedCoords","viewToNormalizedCoords","viewCoords","normalizedToViewCoords","ndcCoords","mouseOrEvt","_len2","where","_key2","sources","Event","_iteratorNormalCompletion8","_didIteratorError8","_iteratorError8","_step8","_iterator8","_iteratorNormalCompletion9","_didIteratorError9","_iteratorError9","_step9","_iterator9","readDepthBuffer","currentWireframe","tileLayer","currentOpacity","currentVisibility","level0Nodes","RenderMode","DEPTH","screen","getPickingPositionFromDepth","viewPaused","_fullSizeDepthBuffer","process","__WEBPACK_AMD_DEFINE_RESULT__","_Group","_tweens","_tweensAddedDuringUpdate","getAll","tweenId","removeAll","tween","getId","preserve","tweenIds","TWEEN","_isPlaying","_nextId","nextId","hrtime","getTime","Tween","_object","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_repeatDelayTime","_yoyo","_reversed","_delayTime","_easingFunction","Easing","Linear","_interpolationFunction","Interpolation","_chainedTweens","_onStartCallback","_onStartCallbackFired","_onUpdateCallback","_onRepeatCallback","_onCompleteCallback","_onStopCallback","_group","stopChainedTweens","numChainedTweens","delay","repeatDelay","yoyo","easing","easingFunction","interpolationFunction","chain","onRepeat","onComplete","onStop","elapsed","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","Back","Bounce","fn","Utils","Bezier","pw","bn","Bernstein","fc","Factorial","__e","anObject","IE8_DOM_DEFINE","toPrimitive","dP","Attributes","_typeof2","ID","_mode","_Coordinates__WEBPACK_IMPORTED_MODULE_1__","_Extent__WEBPACK_IMPORTED_MODULE_2__","PI_OV_FOUR","PI_OV_TWO","INV_TWO_PI","LOG_TWO","WGS84LatitudeClamp","WGS84ToY","getCoordWMTS_WGS84","tileCoord","cWMTS","maxRow","wmtsBox","nbRow","minRow","minCol","WMTS_WGS84ToWMTS_PM","WGS84toWMTS","nY","uX","uY","UnitaryToLongitudeWGS84","UnitaryToLatitudeWGS84","_Core_Geographic_Coordinates__WEBPACK_IMPORTED_MODULE_0__","_Core_Feature__WEBPACK_IMPORTED_MODULE_1__","_Core_Style__WEBPACK_IMPORTED_MODULE_2__","firstPtIsOut","aCoords","isPointInside","toFeature","populateGeometry","setAltitude","startSubGeometry","useAlti","pair","pushCoordinates","default","coordsIn","setFromGeojsonProperties","polygon","multi","keyProperties","jsonFeatureToFeature","featureCollection","jsonType","featureType","toFeatureType","geometryCount","coordinatesToFeature","jsonFeaturesToFeatures","jsonFeatures","pushFeature","epsgIdx","codeStart","readCRS","PntsParser","byteOffset","pntsHeader","batchTable","magic","Utf8Decoder","FTJSONLength","FTBinaryLength","BTJSONLength","BTBinaryLength","lengthFeature","subArrayJson","parseJSON","POINTS_LENGTH","POSITION","byteOffsetPos","RGB","byteOffsetCol","POSITION_QUANTIZED","RGB565","NORMAL_OCT16P","BATCH_ID","RTC_CENTER","parseFeatureBinary","sizeBegin","BatchTableParser","pnts","$3dTilesExtensions","_3dTilesProvider_$3dTilesAbstractExtension","$3DTilesExtensions","classCallCheck_default","extensionsMap","createClass_default","extensionName","$3dTilesAbstractExtension","$3dTilesIndex","tileset","baseURL","counter","inverseTileTransform","recurse","_worldFromLocalTransform","viewerRequestVolume","region","boundingVolume","getBox","tileId","extendTileset","nodeId","isTileset","content","volume","OBB","setFromExtent","_box","b3dmToMesh","urlBase","gltfUpAxis","asset","overrideMaterials","doNotPatchMaterial","B3dmParser","gltf","pntsParse","_3dTilesProcessing","cleanupDelay","_cleanableTiles","extensionsUsed","extensionUsed","isExtensionRegistered","extensionsRequired","urlPrefix","tileIndex","tile","geometricError","refine","additiveRefinement","configureTile","uri","setLayer","supportedFormats","b3dm","newPrefix","_Renderer_RenderMode__WEBPACK_IMPORTED_MODULE_1__","_Renderer_LayeredMaterial__WEBPACK_IMPORTED_MODULE_2__","hideEverythingElse","traversePickingCircle","prevSq","sq","sqx","findLayerInParent","pickTilesAt","_view","_ids","undoHide","unpack","screenCoordsToNodeId","extractResult","isTileMesh","enablePicking","candidates","objId","pixels","clearR","clearG","clearB","superPropBase","_get","receiver","Reflect","desc","INFINITE","ELEVATION","entry","stat","hit","miss","lastTimeUsed","lifetime","before","after","$3dTilesCulling","pre3dTilesUpdate","init3dTilesLayer","process3dTilesNode","$3dTilesSubdivisionControl","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1__","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_1___default","_Core_Geographic_Extent__WEBPACK_IMPORTED_MODULE_3__","requestNewTile","getChildTiles","subdivideNode","cullingTest","overrideMatrixWorld","tmpMatrix","isVisible","boundingVolumeToExtent","_subdivideNodeAdditive","pendingSubdivision","_ret2","childrenTiles","_loop2","_subdivideNodeSubstractive","tmpBox3","tmpSphere","box3D","tileMatrixWorld","nodeViewer","worldCoordinateCenter","cleanup3dTileset","canCleanCompletely","_cleanupObject3D","tiles","cleanableSince","elt","boundingVolumeBox","boundingVolumeSphere","setDisplayed","display","markForDeletion","subdivisionTest","returnValue","computeNodeSSE","defined","_Layer__WEBPACK_IMPORTED_MODULE_6__","_Core_Picking__WEBPACK_IMPORTED_MODULE_7__","disposeMesh","GeometryLayer","_Layer","changeOpacity","defaultPickingRadius","SRC","$toString","TPL","inspectSource","val","safe","isFunction","fails","quot","createHTML","NAME","STRATEGY_MIN_NETWORK_TRAFFIC","STRATEGY_GROUP","STRATEGY_PROGRESSIVE","STRATEGY_DICHOTOMY","chooseNextLevelToFetch","_Renderer_MaterialLayer__WEBPACK_IMPORTED_MODULE_0__","_dichotomy","nodeLevel","currentLevel","strategy","nextLevelToFetch","failureParams","maxZoom","targetLevel","increment","_progressive","_minimizeNetworkTraffic","_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__","_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3___default","_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__","_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4___default","_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5__","_babel_runtime_helpers_get__WEBPACK_IMPORTED_MODULE_5___default","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6___default","three__WEBPACK_IMPORTED_MODULE_7__","_Core_TileGeometry__WEBPACK_IMPORTED_MODULE_8__","_Core_Prefab_Globe_BuilderEllipsoidTile__WEBPACK_IMPORTED_MODULE_9__","_Core_Geographic_Coordinates__WEBPACK_IMPORTED_MODULE_10__","_Core_Geographic_Crs__WEBPACK_IMPORTED_MODULE_11__","builder","dimension","_THREE$Object3D","natBox","cOBB","localSpherePosition","minHeight","maxHeight","_builder$computeShara","computeSharableExtent","sharableExtent","disableSkirt","updateZ","_Feature__WEBPACK_IMPORTED_MODULE_2__","inv255","rgba2rgb","orig","isStyle","stroke","_rgba2rgb","paint","_rgba2rgb2","_color","_opacity","_rgba2rgb3","_color2","_opacity2","createDesc","IObject","method","support","compressions","nodeBuffer","stringToArrayLike","str","arrayLikeToString","chunk","getTypeOf","canUseApply","resultStr","arrayLikeToArrayLike","arrayFrom","arrayTo","string2binary","arrayBuffer2Blob","checkSupport","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","applyFromCharCode","arraybuffer","uint8array","nodebuffer","transformTo","outputType","inputType","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","findCompression","compressionMethod","isRegExp","rePosition","reMain","patchMaterialForLogDepthSupport","re","MODE","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4___default","three__WEBPACK_IMPORTED_MODULE_5__","_Core_System_Capabilities__WEBPACK_IMPORTED_MODULE_6__","PointsVS","PointsFS","_RawShaderMaterial","overlayColor","picking","pickingMode","updateUniforms","innerHeight","_Core_Scheduler_CancelledCommandException__WEBPACK_IMPORTED_MODULE_1__","computeScreenSpaceError","pointSpacing","spacing","onScreenSpacing","preSSE","notVisibleSince","sse","changeSources","commonAncestorName","onPointsCreated","_distance","displayedCount","_pts2","_count2","reduction","limitHit","_pts","_count","aFunction","pIE","toIObject","gOPD","KEY","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default","three__WEBPACK_IMPORTED_MODULE_1__","_Core_Geographic_Coordinates__WEBPACK_IMPORTED_MODULE_2__","PRECISE_READ_Z","tileAt","_readTextureValueAt","_i2","minx","miny","maxx","maxy","_i3","dw","dh","isElevationLayer","_result3","_i4","ox","oy","colorTextureElevationMinZ","colorTextureElevationMaxZ","_convertUVtoTextureCoords","u1","u2","wu","wv","_readTextureValueWithBilinearFiltering","vertexU","vertexV","_readTextureValueAt2","_readTextureValueAt3","z11","z21","z12","z22","zu1","zu2","_readZFast","_readTextureValueNearestFiltering","_readZ","placeObjectOnGround","objectCRS","tileHint","modifyGeometry","_matrices","worldFromLocal","localFromWorld","success","_result","_updateVector3","_success","_coord","_cached","_result2","matrices","FAST_READ_Z","bary","coord1","coord2","nodes","tileWithValidElevationTexture","stepsUpInHierarchy","log2","_i5","offsetInExtent","tileDimensions","tileOwnerDimensions","modulo","lu","lv","tri","z3","_readZCorrect","vecCRS","computeMinMaxElevation","pitch","sizeX","sizeY","xs","ys","inc","pit","checkNodeElevationTextureValidity","noDataValue","getIndiceWithPitch","currentY","newX","newY","insertSignificantValuesFromParent","dataParent","cleanup","removeChildren","toRemove","removeChildrenAndCleanup","removeChildrenAndCleanupRecursively","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","RangeError","ArrayProto","$ArrayBuffer","$DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","arrayKeys","arrayEntries","entries","arrayLastIndexOf","arrayReduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","FORCED_SET","toOffset","BYTES","speciesFromList","fromList","addGetter","internal","_d","$from","aLen","mapfn","iterFn","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","predicate","searchElement","middle","comparefn","begin","$begin","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","setter","$offset","$length","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","threeExamples","DDSLoader","loadMipmaps","dds","fourCCToInt32","loadARGBMip","dataOffset","dataLength","srcBuffer","byteArray","blockBytes","FOURCC_DXT1","FOURCC_DXT3","FOURCC_DXT5","FOURCC_ETC1","fourCC","isRGBAUncompressed","caps2","GLTFLoader_threeExamples","GLTFLoader","dracoLoader","GLTFRegistry","_onError","setDRACOLoader","BINARY_EXTENSION_HEADER_MAGIC","EXTENSIONS","KHR_BINARY_GLTF","GLTFBinaryExtension","KHR_LIGHTS_PUNCTUAL","GLTFLightsExtension","KHR_MATERIALS_UNLIT","GLTFMaterialsUnlitExtension","KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS","GLTFMaterialsPbrSpecularGlossinessExtension","KHR_DRACO_MESH_COMPRESSION","GLTFDracoMeshCompressionExtension","MSFT_TEXTURE_DDS","GLTFTextureDDSExtension","KHR_TEXTURE_TRANSFORM","GLTFTextureTransformExtension","GLTFParser","ddsLoader","lightDefs","loadLight","lightIndex","lightNode","lightDef","innerConeAngle","outerConeAngle","getMaterialType","extendParams","materialParams","materialDef","metallicRoughness","pbrMetallicRoughness","baseColorFactor","baseColorTexture","assignTexture","BINARY_EXTENSION_HEADER_LENGTH","BINARY_EXTENSION_CHUNK_TYPES","BIN","body","headerView","chunkView","chunkIndex","chunkLength","chunkType","contentArray","specularGlossinessParams","pbrSpecularGlossiness","specularMapParsFragmentChunk","glossinessMapParsFragmentChunk","specularMapFragmentChunk","glossinessMapFragmentChunk","lightPhysicalFragmentChunk","glossiness","glossinessMap","diffuseFactor","diffuseTexture","glossinessFactor","specularFactor","specularGlossinessTexture","specGlossMapDef","isGLTFSpecularGlossinessMaterial","cloneMaterial","refreshUniforms","USE_GLOSSINESSMAP","USE_ROUGHNESSMAP","GLTFCubicSplineInterpolant","decodePrimitive","primitive","bufferViewIndex","bufferView","gltfAttributeMap","threeAttributeMap","attributeNormalizedMap","attributeTypeMap","threeAttributeName","ATTRIBUTES","accessorDef","accessors","componentType","WEBGL_COMPONENT_TYPES","getDependency","decodeDracoFile","extendTexture","texCoord","stride3","td","m0","WEBGL_CONSTANTS","5120","5121","5122","5123","5125","5126","WEBGL_FILTERS","9728","9729","9984","9985","9986","9987","WEBGL_WRAPPINGS","33071","33648","10497","defaultMaterial","WEBGL_TYPE_SIZES","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","TANGENT","TEXCOORD_0","TEXCOORD_1","COLOR_0","WEIGHTS_0","JOINTS_0","_BATCHID","PATH_PROPERTIES","weights","INTERPOLATION","CUBICSPLINE","LINEAR","STEP","ALPHA_MODES","MIME_TYPE_FORMATS","image/png","image/jpeg","addUnknownExtensionsToUserData","knownExtensions","objectDef","gltfExtensions","assignExtrasToUserData","gltfDef","extras","typeof_default","meshDef","targetNames","createAttributesKey","attributesKey","cloneBufferAttribute","primitiveCache","fileLoader","addPrimitiveAttributes","primitiveDef","assignAttributeAccessor","accessorIndex","accessor","gltfAttributeName","targets","hasMorphPosition","hasMorphNormal","pendingPositionAccessors","pendingNormalAccessors","pendingAccessor","morphPositions","normalAttribute","addMorphTargets","markDefs","getDependencies","dependencies","scenes","nodeDefs","skinDefs","skins","meshDefs","meshes","meshReferences","meshUses","skinIndex","skinLength","joints","nodeIndex","nodeLength","nodeDef","skin","cacheKey","dependency","loadScene","loadNode","loadMesh","loadAccessor","loadBufferView","loadBuffer","loadMaterial","loadSkin","loadAnimation","loadCamera","bufferIndex","bufferDef","bufferViewDef","bufferViews","sparse","pendingBufferViews","elementBytes","byteStride","ibCacheKey","ib","itemSizeIndices","TypedArrayIndices","byteOffsetIndices","byteOffsetValues","sparseIndices","sparseValues","textureIndex","webkitURL","textureDef","textureExtensions","sourceURI","isObjectURL","createObjectURL","revokeObjectURL","sampler","samplers","mapName","mapDef","assignFinalMaterial","useVertexTangents","useVertexColors","useFlatShading","useMorphTargets","useMorphNormals","pointsMaterial","lineMaterial","materialType","materialExtensions","sgExtension","kmuExtension","metallicFactor","roughnessFactor","metallicRoughnessTexture","alphaMode","alphaCutoff","normalTexture","occlusionTexture","strength","emissiveFactor","emissiveTexture","loadGeometries","primitives","createDracoPrimitive","dracoExtension","geometryPromise","meshIndex","originalMaterials","cameraIndex","cameraDef","yfov","aspectRatio","znear","zfar","xmag","ymag","skinDef","skinEntry","inverseBindMatrices","animationIndex","animationDef","pendingNodes","pendingInputAccessors","pendingOutputAccessors","pendingSamplers","pendingTargets","channels","inputAccessors","outputAccessors","inputAccessor","outputAccessor","targetName","isInterpolantFactoryMethodGLTFCubicSpline","instanceNum","buildNodeHierachy","parentObject","pendingJoints","jointNodes","jointNode","sceneIndex","sceneDef","nodeIds","loaders_GLTFLoader","DRACOLoader_threeExamples","DRACOLoader","timeLoaded","verbosity","attributeOptions","nativeAttributeMap","setVerbosity","setSkipDequantization","skip","skipDequantization","getAttributeOptions","rawBuffer","attributeUniqueIdMap","getDecoderModule","decodeDracoFileInternal","decoder","dracoDecoder","DecoderBuffer","Init","Decoder","geometryType","GetEncodedGeometryType","TRIANGULAR_MESH","POINT_CLOUD","errorMsg","convertDracoGeometryTo3JS","addAttributeToGeometry","dracoGeometry","attributeType","geometryBuffer","ptr","TypedBufferAttribute","numComponents","num_components","numValues","num_points","DracoFloat32Array","GetAttributeFloatForAllPoints","DracoInt8Array","GetAttributeInt8ForAllPoints","DracoInt16Array","GetAttributeInt16ForAllPoints","DracoInt32Array","GetAttributeInt32ForAllPoints","DracoUInt8Array","GetAttributeUInt8ForAllPoints","DracoUInt16Array","GetAttributeUInt16ForAllPoints","DracoUInt32Array","GetAttributeUInt32ForAllPoints","GetValue","decodingStatus","SkipAttributeTransform","start_time","DecodeBufferToMesh","DecodeBufferToPointCloud","error_msg","numFaces","decode_end","num_faces","numAttributes","num_attributes","posAttId","GetAttributeId","posAttribute","GetAttribute","attributeId","GetAttributeByUniqueId","attId","stripsArray","GetTriangleStripsFromMesh","numIndices","ia","GetFaceFromMesh","posTransform","AttributeQuantizationTransform","InitFromAttribute","isQuantized","maxRange","numQuantizationBits","quantization_bits","minValues","min_value","decode_time","import_time","isVersionSupported","decoderPath","decoderConfig","decoderModulePromise","setDecoderPath","setDecoderConfig","wasmBinary","releaseDecoderModule","DracoDecoderModule","WebAssembly","_loadScript","wasmBinaryFile","_loadArrayBuffer","onModuleLoaded","prevScript","getElementById","parentNode","removeChild","head","getElementsByTagName","script","onload","LegacyGLTFLoader_threeExamples","LegacyGLTFLoader","GLTFShader","targetNode","allNodes","boundUniforms","uniformId","semantic","sourceNodeRef","sourceNode","_m4","BINARY_EXTENSION_HEADER_DEFAULTS","KHR_MATERIALS_COMMON","GLTFMaterialsCommonExtension","Shaders","boundUniform","m3","m4v","mi","Animations","lightId","lightParams","contentFormat","contentLength","loadShader","FLOAT","FLOAT_MAT3","FLOAT_MAT4","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","REPEAT","SAMPLER_2D","TRIANGLES","LINES","UNSIGNED_BYTE","UNSIGNED_SHORT","WEBGL_TYPE","35675","35676","35664","35665","35666","35678","WEBGL_TEXTURE_FORMATS","6406","6407","6408","6409","6410","WEBGL_TEXTURE_DATATYPES","32819","32820","33635","WEBGL_SIDES","1028","1029","WEBGL_DEPTH_FUNCS","512","513","514","515","516","517","518","519","WEBGL_BLEND_EQUATIONS","32774","32778","32779","WEBGL_BLEND_FUNCS","768","769","770","771","772","773","774","775","776","STATES_ENABLES","2884","2929","3042","3089","32823","32926","_each","thisObj","fns","DeferredShaderMaterial","isDeferredShaderMaterial","originalUniform","_withDependencies","_dependencies","loadShaders","shaders","shaderText","loadBuffers","loadBufferViews","loadAccessors","loadTextures","sourceUri","_texture","loadMaterials","khr_material","materialValues","technique","transparency","techniques","pname","atype","param","shaderParams","shaderAttributes","shaderParam","regEx","replaceTHREEShaderAttributes","ptype","pcount","uvalue","usemantic","unode","FLOAT_MAT2","m4","states","enables","functions","enableCullFace","enableDepthTest","enableBlend","reflective","bump","emission","_material","loadMeshes","attributeEntry","meshNode","loadCameras","perspective","_camera","orthographic","innerWidth","loadSkins","bindShapeMatrix","jointNames","loadAnimations","animationId","channelId","loadNodes","_node","jointName","__nodes","meshId","childrenId","originalMaterial","originalGeometry","originalUserData","originalName","getJointNode","jointId","buildBoneGraph","parentJson","boneJson","loadScenes","_scene","gltfShader","deprecated_LegacyGLTFLoader","glTFLoader","legacyGLTFLoader","enableDracoLoader","matrixChangeUpVectorZtoY","matrixChangeUpVectorZtoX","filterUnsupportedSemantics","supported","_names","_name","FT_RTC","b3dmHeader","headerByteLength","FTJSON","jsonBuffer","_sizeBegin","BATCH_LENGTH","posGltf","gltfBuffer","CESIUM_RTC","ShaderUtils","EMPTY_TEXTURE_ZOOM","_LayeredMaterial__WEBPACK_IMPORTED_MODULE_3__","_Parser_XbilParser__WEBPACK_IMPORTED_MODULE_4__","_value","MaterialLayer","_valueOpacity","_valueVisibility","fx","defaultEle","useRgbaTextureElevation","useColorTextureElevation","isInside","offsetToParent","nodatavalue","dataElevation","parentTexture","offsetScale","pitchs","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1__","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_2___default","_Utils_Utf8Decoder__WEBPACK_IMPORTED_MODULE_3__","_Provider_3dTilesProvider__WEBPACK_IMPORTED_MODULE_4__","BatchTable","binary","batchLength","featureId","featureDisplayableInfo","BTDisplayableInfo","extName","extDisplayableInfo","getPickingInfo","extensionParser","getParser","extObject","removeExtensionFromContent","valueOf","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","NEED","fastKey","getWeak","onFreeze","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","isEncoding","actual","write","fromString","isBuffer","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","TYPED_OK","_has","shrinkBuf","fnTyped","arraySet","src_offs","dest_offs","flattenChunks","fnUntyped","setTyped","on","Buf8","Buf16","Buf32","bitmap","$keys","enumBugKeys","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","contentWindow","lt","close","Properties","hiddenKeys","getOwnPropertyNames","ObjectProto","UNSCOPABLES","_t","_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_1__","_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_2___default","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_3___default","three__WEBPACK_IMPORTED_MODULE_4__","_Prefab_computeBufferTileGeometry__WEBPACK_IMPORTED_MODULE_5__","TileGeometry","_THREE$BufferGeometry","buildIndexAndWGS84","defaultBuffers","computeBuffers","outBuffers","nSeg","nVertex","idVertex","skirt","skirtEnd","prepare","UV_WGS84","UV_PM","getUV_PM","vProjecte","uv_pm","id_m3","uProjecte","projected","vertexNormal","quatNormalToZ","bufferize","idVertex2","v4","iStart","segmentSize","buildIndexSkirt","buildUVSkirt","_id_m","id2_m3","idf","_Geographic_Coordinates__WEBPACK_IMPORTED_MODULE_3__","_Geographic_Projection__WEBPACK_IMPORTED_MODULE_4__","_Renderer_OBB__WEBPACK_IMPORTED_MODULE_5__","_Geographic_Extent__WEBPACK_IMPORTED_MODULE_6__","axisZ","axisY","quatToAlignLongitude","quatToAlignLatitude","WGS84ToOneSubY","BuilderEllipsoidTile","st1","deltaUV1","sizeLongitude","rotLon","rotLat","InfoLayer","InfoTiledGeometryLayer","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4___default","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_5___default","_Core_Geographic_Extent__WEBPACK_IMPORTED_MODULE_6__","_InfoLayer","tiledGeometryLayer","displayed","obb","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","DESCRIPTORS","SPECIES","forbiddenField","cof","propertyIsEnumerable","ARG","tryGet","callee","VectorTileFeature","VectorTileLayer","_keys","_values","_features","readFields","readLayer","readString","readFloat","readDouble","readVarint64","readBoolean","readValueMessage","readFeature","readTag","ring","types","loadGeometry","toGeoJSON","rings","polygons","classifyRings","arrayWithHoles","iterableToArrayLimit","nonIterableRest","require","_dereq_","AbstractPriorityQueue","ArrayStrategy","BHeapStrategy","BinaryHeapStrategy","PriorityQueue","hasProp","__super__","ctor","./PriorityQueue/AbstractPriorityQueue","./PriorityQueue/ArrayStrategy","./PriorityQueue/BHeapStrategy","./PriorityQueue/BinaryHeapStrategy","ref","priv","initialValues","peek","3","binarySearchForIndexReversed","4","ref1","pageSize","_shift","_emptyMemoryPageTemplate","_memory","_mask","_write","_bubbleUp","_read","_bubbleDown","page","indexInPage","parentIndex","parentValue","childIndex1","childIndex2","childValue1","childValue2","5","_heapify","minIndex","Pbf","Varint","Fixed64","Bytes","Fixed32","readPackedEnd","toNum","isSigned","makeRoomForExtraLength","startPos","extraLen","realloc","writePackedVarint","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writePackedDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","readInt32","readField","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","readVarintRemainder","Boolean","b3","readUtf8","readBytes","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","finish","writeBigVarintLow","lsb","writeBigVarintHigh","writeBigVarint","writeString","lead","writeUtf8","writeBytes","writeRawMessage","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","VectorTile","v8","$version","$root","required","doc","example","bearing","period","anchor","mapbox-streets","transition","source-layer","fill-color","*","source_vector","scheme","xyz","tms","minzoom","maxzoom","attribution","source_raster","raster","tileSize","source_raster_dem","raster-dem","terrarium","mapbox","source_geojson","geojson","maximum","minimum","tolerance","cluster","clusterRadius","clusterMaxZoom","clusterProperties","lineMetrics","generateId","source_video","source_image","sdk-support","basic functionality","js","android","ios","macos","symbol","circle","heatmap","fill-extrusion","hillshade","layout","layout_background","visibility","none","property-type","layout_fill","layout_circle","layout_heatmap","layout_fill-extrusion","layout_line","line-cap","butt","square","data-driven styling","expression","interpolated","line-join","bevel","miter","line-miter-limit","requires","line-round-limit","layout_symbol","symbol-placement","line-center","`line-center` value","symbol-spacing","symbol-avoid-edges","symbol-sort-key","symbol-z-order","auto","viewport-y","icon-allow-overlap","icon-ignore-placement","icon-optional","icon-rotation-alignment","`auto` value","icon-size","icon-text-fit","both","icon-text-fit-padding","icon-image","tokens","icon-rotate","icon-padding","icon-keep-upright","icon-offset","icon-anchor","top-left","top-right","bottom-left","bottom-right","icon-pitch-alignment","text-pitch-alignment","text-rotation-alignment","text-field","text-font","text-size","text-max-width","text-line-height","text-letter-spacing","text-justify","text-radial-offset","!","text-variable-anchor","text-anchor","text-max-angle","text-rotate","text-padding","text-keep-upright","text-transform","uppercase","lowercase","text-offset","text-allow-overlap","text-ignore-placement","text-optional","layout_raster","layout_hillshade","filter_operator","==","!=",">",">=","<","<=","in","!in","any","!has","geometry_type","LineString","Polygon","function","stops","exponential","interval","categorical","colorSpace","rgb","lab","hcl","function_stop","expression_name","let","var","literal","case","coalesce","interpolate","interpolate-hcl","interpolate-lab","ln2","pi","typeof","collator","number-format","to-string","to-number","to-boolean","to-rgba","to-color","rgba","feature-state","geometry-type","heatmap-density","line-progress","accumulated","+","-","/","%","^","log10","ln","is-supported-script","upcase","downcase","resolved-locale","paint_fill","fill-antialias","fill-opacity","fill-outline-color","fill-translate","fill-translate-anchor","fill-pattern","paint_fill-extrusion","fill-extrusion-opacity","fill-extrusion-color","fill-extrusion-translate","fill-extrusion-translate-anchor","fill-extrusion-pattern","fill-extrusion-height","fill-extrusion-base","fill-extrusion-vertical-gradient","paint_line","line-opacity","line-color","line-translate","line-translate-anchor","line-width","line-gap-width","line-offset","line-blur","line-dasharray","line-pattern","line-gradient","paint_circle","circle-radius","circle-color","circle-blur","circle-opacity","circle-translate","circle-translate-anchor","circle-pitch-scale","circle-pitch-alignment","circle-stroke-width","circle-stroke-color","circle-stroke-opacity","paint_heatmap","heatmap-radius","heatmap-weight","heatmap-intensity","heatmap-color","heatmap-opacity","paint_symbol","icon-opacity","icon-color","icon-halo-color","icon-halo-width","icon-halo-blur","icon-translate","icon-translate-anchor","text-opacity","text-color","text-halo-color","text-halo-width","text-halo-blur","text-translate","text-translate-anchor","paint_raster","raster-opacity","raster-hue-rotate","raster-brightness-min","raster-brightness-max","raster-saturation","raster-contrast","raster-resampling","linear","nearest","raster-fade-duration","paint_hillshade","hillshade-illumination-direction","hillshade-illumination-anchor","hillshade-exaggeration","hillshade-shadow-color","hillshade-highlight-color","hillshade-accent-color","paint_background","background-color","background-pattern","background-opacity","data-driven","cross-faded","cross-faded-data-driven","color-ramp","data-constant","stringOrChar","jsonStringifyPrettyCompact","passedObj","indent","maxLength","replacer","_stringify","currentIndent","reserved","items","keyPart","nextIndent","prettified","stringLiteral","sortKeysBy","reference","key$1","commonjsGlobal","globalThis","createCommonjsModule","punycode","freeExports","nodeType","freeModule","freeGlobal","maxInt","tMin","tMax","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","overflow","not-basic","invalid-input","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","digitToBasic","digit","flag","adapt","firstTime","oldi","baseMinusT","inputLength","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","ucs2","toASCII","toUnicode","util","isString","isNull","isNullOrUndefined","prop","eq","regexp","maxKeys","kstr","vstr","stringifyPrimitive","ks","encodeURIComponent","querystring","urlParse","relative","resolveObject","format$1","Url","Url_1","slashes","port","hostname","query","pathname","href","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","http:","https:","ftp:","gopher:","file:","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","esc","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","getPropertyReference","i$1","eachSource","eachLayer","eachProperty","inner","propertyType","eachLayout","eachPaint","resolveConstant","constants","renameProperty","migrateToV8","inputParsed","inputPathnameParts","splitAndTrim","migrateFontStack","firstSymbolLayer","symbolLayers","inputs","ParsingError","Scope","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","CollatorType","FormattedType","itemType","valueMemberTypes","checkSubtype","expected","csscolorparser_1","kCSSColorTable","clamp_css_byte","clamp_css_float","parse_css_int","parse_css_float","css_hue_to_rgb","m2","parseCSSColor","css_str","iv","op","ep","fname","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","Intl","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","fontStack","Formatted","sections","validateRGBA","typeOf","toString$1","unformatted","section","serialized","Literal","isValue","mixed","expectedType","eachChild","possibleOutputs","RuntimeError","Assertion","type$1","FormatExpression","types$1","Coercion","parseColor","list$1","geometryTypes","EvaluationContext","globals","featureState","_parseColorCache","CompoundExpression","_evaluate","ref$1","definition","definitions","availableOverloads","overloads","signature","signatureContext","i$3","ParsingContext","registry","parsedArgs","argParseFailed","arg$1","signatures","actualTypes","i$2","parsed$1","register","CollatorExpression","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","findStopLessThanOrEqualTo","upperValue","lowerIndex","upperIndex","currentIndex","expr","_parse","annotate","typeAnnotation","Expr","isConstant","isTypeAnnotation","childrenConstant","ec","error$1","Step","labels","outputs","label","labelKey","valueKey","stopCount","unitbezier","UnitBezier","p1x","p1y","p2x","p2y","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","solve","Xn","Zn","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateHue","hclColor","colorSpaces","Interpolate","operator","exponentialInterpolation","lowerValue","difference","progress","interpolationFactor","lower","upper","controlPoints","outputLower","outputUpper","Coalesce","needsAnnotation","Let","At","Match","cases","otherwise","labelContext","MAX_SAFE_INTEGER","this$1","groupedByOutput","outputLookup","outputIndex","coerceLabel","outputIndex$1","Case","branches","isComparableType","eqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","rt","lt$1","rt$1","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","expressions","varargs","supportsPropertyExpression","spec","supportsZoomExpression","supportsInterpolation","getType","isFunction$1","identityFunction","createFunction","propertySpec","innerFun","hashedStops","categoricalKeyType","zoomAndFeatureDependent","featureDependent","zoomDependent","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","evaluateIdentityFunction","featureFunctions","zoomStops","stop$1","featureFunctionStops","keyType","findStopLessThanOrEqualTo$1","interp","colorspace","evaluatedLower","evaluatedUpper","heatmapDensity","lineProgress","E","LN10","filter-==","filter-id-==","filter-type-==","filter-<","filter-id-<","filter->","filter-id->","filter-<=","filter-id-<=","filter->=","filter-id->=","filter-has","filter-has-id","filter-type-in","filter-id-in","filter-in-small","filter-in-large","binarySearch","isSupportedScript","StyleExpression","_warningHistory","_evaluator","_defaultValue","_enumValues","isExpression","createExpression","enum","formatted","getExpectedType","evaluateWithoutErrorHandling","ZoomConstantExpression","_styleExpression","isStateDependent","ZoomDependentExpression","zoomCurve","_interpolationType","createPropertyExpression","isFeatureConstant$1","isZoomConstant","findZoomCurve","childResult","StylePropertyFunction","specification","_parameters","_specification","convertLiteral","convertFunction","convertIdentityFunction","convertTokenString","featureFunctionParameters","getFunctionType","getInterpolateOperator","convertPropertyFunction","appendStopPair","expression$1","z$1","output$1","fixupDegenerateStepCurve","convertZoomAndPropertyFunction","isStep","convertZoomFunction","coalesce$1","expression$2","list$2","stop$2","expression$3","list$3","stop$3","isExpressionFilter","deserialize","filterSpec","convertFilter","convertComparisonOp","convertNegation","convertInOp","convertHasOp","convertFilter$1","_convertFilter","expectedTypes","converted","convertComparisonOp$1","typechecks","conditions","runtimeTypeChecks","children$1","convertInOp$1","convertHasOp$1","uniformTypes","deepEqual","operations","setPaintProperty","setLayoutProperty","addSource","removeSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTransition","setLight","sourceId","commands","sourcesRemoved","updateSource","canUpdateGeoJSON","diffLayerPropertyChanges","pluckId","indexById","ValidationError","identifier","__line__","ParsingError$1","validateConstants","unbundle","deepUnbundle","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","elementSpecKey$1","validateArray","arraySpec","validateArrayElement","arrayElementValidator","arrayElementSpec","arrayIndex","validateNumber","validateFunction","stopKeyType","previousStopDomainValue","previousStopDomainZoom","functionValueSpec","functionType","stopDomainValues","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStop","validateStopDomainValue","reportValue","validateExpression","expressionContext","expressionObj","propertyKey","validateEnum","validateFilter","validateNonExpressionFilter","validateProperty","layerSpec","layerType","transitionMatch","tokenMatch","validatePaintProperty","validateLayoutProperty","validateLayer","otherLayer","validateSource","prop$1","mapExpr","reduceExpr","validateLight","lightSpec","rootType","validateString","VALIDATORS","validateGlyphsURL","validateStyleMin","sortErrors","wrapCleanErrors","paintProperty","layoutProperty","jsonlint","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","symbols_","JSONString","STRING","JSONNumber","NUMBER","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","{","}","JSONMemberList","JSONMember",":",",","[","]","JSONElementList","$accept","$end","terminals_","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","first_line","7","9","12","13","15","16","19","20","25","defaultActions","parseError","recoverable","vstack","lstack","lexer","sharedState","setInput","yylloc","yyloc","ranges","preErrorSymbol","newState","token","yyval","lex","errStr","showPosition","loc","last_line","first_column","last_column","_input","_more","_backtrack","matched","conditionStack","ch","unput","oldLines","more","backtrack_lexer","less","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","tempMatch","rules","_currentRules","flex","condition","popState","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","INITIAL","inclusive","validateStyle","normalizePropertyExpression","styleFunction","visit","latest","composite","styleIDs","sourceIDs","compositedSourceLayers","compositeID","removeOrAddSourceCommands","diffSources","beforeLayers","beforeLayer","afterLayer","insertBeforeLayerId","beforeOrder","afterOrder","beforeIndex","afterIndex","tracker","clean","diffLayers","featureFilter","compiled","globalProperties","migrate","migrated","migrateToExpressions","inRange","ToDictionary","end_of_stream","Stream","endOfStream","prepend","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","_streaming","_BOMseen","_decoder","_fatal","_ignoreBOM","UTF8Decoder","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","input_stream","code_points","cp","codePointsToString","unzip","binaryAjax","parseShp","parseDbf","toBuffer","shp","whiteList","getShapefile","resp","parseZip","zip","dbf","lastDotIdx","fileName","getZip","prj","cpg","copyright","IS_INCLUDES","fromIndex","getOwnPropertySymbols","SAFE_CLOSING","riter","skipClosing","ignoreCase","multiline","unicode","sticky","builtinExec","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","strfn","rxfn","BREAK","RETURN","iterable","forOf","setToStringTag","inheritIfRequired","methods","IS_WEAK","ADDER","fixMethod","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","getConstructor","setStrong","Typed","TypedArrayConstructors","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","browser","env","argv","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","serializer","removeSpace","trimSpace","splitSpace","okhash","attrf","get1","numarray","nodeVal","textContent","getMulti","coordPair","ele","heartRate","xml2str","serializeToString","XMLSerializer","kml","gj","styleIndex","styleByHash","styleMapIndex","geotypes","placemarks","styles","styleMaps","pairs","pairsMap","getPlacemark","kmlColor","gxCoords","elems","timeElems","geomsAndTimes","geomNode","geomNodes","geoms","coordTimes","address","styleUrl","description","timeSpan","timeStamp","extendedData","lineStyle","polyStyle","styleHash","styleMapHash","timespan","linestyles","polystyles","pcolor","popacity","datas","simpleDatas","gpx","routes","waypoints","getTrack","getRoute","pointname","heartRates","getProperties","getLineStyle","links","link","is","shared","documentElement","check","buggy","$expm1","expm1","TO_STRING","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","IteratorPrototype","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","searchString","MATCH","$defineProperty","getIteratorMethod","endPos","addToUnscopables","iterated","_k","Arguments","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","defer","invoke","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","port2","port1","onmessage","postMessage","importScripts","PROTOTYPE","WRONG_INDEX","BaseBuffer","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getInt16","getUint16","getInt32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","arr2","_n","_e","_s","_setPrototypeOf","isLE","readTile","_add","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","_rotate","_rotateAround","matMult","_matMult","_unit","perp","_perp","_round","mag","distSqr","angleWith","angleWithSep","b64","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","_keyStr","utf8","chr1","chr2","chr3","enc1","enc2","enc3","enc4","crc32","defaults","CompressedObject","StringWriter","Uint8ArrayWriter","getRawData","_data","getContent","getBinaryData","asBinary","dataToString","asUTF8","utf8decode","utf8encode","ZipObject","date","comment","unixPermissions","dosPermissions","_initialMetadata","asText","asNodeBuffer","asUint8Array","asArrayBuffer","decToHex","dec","fileAdd","dataType","compression","prepareFileAttrs","forceTrailingSlash","createFolders","parentFolder","folderAdd","optimizedBinaryString","lastSlash","generateCompressedObjectFrom","compressionOptions","uncompressedSize","compressedContent","getCompressedContent","compress","compressInputType","compressedSize","generateZipParts","compressedObject","platform","encodeFileName","dosTime","dosDate","useCustomEncoding","encodedFileName","utfEncodedFileName","encodedComment","utfEncodedComment","useUTF8ForFileName","useUTF8ForComment","extraFields","unicodePathExtraField","unicodeCommentExtraField","isDir","extFileAttr","versionMadeBy","getHours","getMinutes","getSeconds","getFullYear","getMonth","getDate","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","filename","relativePath","fileClone","folder","newFolder","kids","generate","writer","zipData","localDirLength","centralDirLength","compressionName","zipPart","dirEnd","CENTRAL_DIRECTORY_END","finalize","crc","STORE","uncompress","uncompressInputType","DEFLATE","-1","-2","-3","-4","-5","-6","earcut","deviation","polygonArea","trianglesArea","wksExt","$Symbol","getKeys","windowNames","getWindowNames","gOPS","$assign","getSymbols","isEnum","factories","partArgs","bound","un","$parseInt","$trim","ws","radix","$parseFloat","log1p","original","memo","isRight","forced","flags","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","$Promise","isNode","newPromiseCapability","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","_v","reaction","exited","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","reason","_a","onrejectionhandled","$reject","$resolve","executor","onFulfilled","onRejected","capability","$$reject","$index","alreadyCalled","race","PromiseCapability","$$resolve","promiseCapability","$iterDefine","SIZE","getEntry","_f","_l","$has","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","ufstore","ownKeys","fillString","stringLength","fillStr","intMaxLength","fillLen","stringFiller","isEntries","adler","crcTable","makeTable","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","buf2binstring","string2buf","m_pos","str_len","buf_len","binstring2buf","buf2string","c_len","utf16buf","utf8border","next_in","avail_in","total_in","next_out","avail_out","total_out","data_type","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","DATA_DESCRIPTOR","nextBoundary","DataReader","StringReader","byteAt","lastIndexOfSignature","sig","readData","checkIndex","readInt","readDate","dostime","ArrayReader","Uint8ArrayReader","sig0","sig1","sig2","sig3","immediate","INTERNAL","REJECTED","FULFILLED","PENDING","resolver","outcome","safelyResolveThenable","QueueItem","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","getThen","thenable","called","onSuccess","tryCatch","resolved","allResolver","outValue","_global","_babelPolyfill","$fails","wksDefine","enumKeys","_create","gOPNExt","$JSON","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","$replacer","symbols","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","digits","aNumberValue","$toFixed","toFixed","ERROR","numToString","acc","fractionDigits","$toPrecision","toPrecision","_isFinite","isSafeInteger","MIN_SAFE_INTEGER","$acosh","acosh","$asinh","asinh","$atanh","atanh","cbrt","clz32","fround","EPSILON32","MAX32","MIN32","$abs","$sign","larg","$imul","imul","xn","yn","xl","yl","LOG10E","tanh","trunc","$fromCodePoint","fromCodePoint","raw","callSite","tpl","$at","codePointAt","$endsWith","endsWith","endPosition","$startsWith","toISOString","$toISOString","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","hint","createProperty","upTo","cloned","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","accumulatedResult","nextSourcePosition","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","unicodeMatching","lim","macrotask","Observer","MutationObserver","WebKitMutationObserver","standalone","createTextNode","observe","characterData","strong","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","$WeakMap","$isView","fin","viewS","viewT","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","deleteProperty","Enumerate","enumerate","getProto","existingDescriptor","ownDesc","setProto","$includes","flatMap","flattenIntoArray","arraySpeciesCreate","sourceLen","IS_CONCAT_SPREADABLE","mapper","thisArg","spreadable","targetIndex","sourceIndex","mapFn","padStart","$pad","WEBKIT_BUG","padEnd","trimLeft","trimRight","getOwnPropertyDescriptors","getDesc","$values","finally","onFinally","MSIE","boundArgs","setInterval","$task","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","IS_WRAP","virtual","iteratorSupported","checkIfIteratorIsSupported","createIterator","serializeParam","deserializeParam","URLSearchParams","typeofSearchString","_fromString","_entries","searchArray","polyfillURLSearchParams","searchParams","checkIfURLIsSupported","_URL","baseElement","implementation","createHTMLDocument","anchorElement","enableSearchUpdate","enableSearchParamsUpdate","methodName","_anchorElement","linkURLWithAnchorAttribute","_updateSearchParams","expectedPort","addPortToOrigin","password","username","polyfillURL","getOrigin","Headers","Request","Response","DOMException","formData","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","headers","consumed","bodyUsed","fileReaderReady","reader","onerror","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","_bodyArrayBuffer","rejected","readAsText","readArrayBufferAsText","oldValue","upcased","credentials","signal","referrer","form","bodyInit","statusText","redirectStatuses","redirect","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","onreadystatechange","polyfill","JSZip","USE_TYPEDARRAY","pako","deflateRaw","inflateRaw","zlib_deflate","strings","ZStream","Deflate","chunkSize","windowBits","memLevel","opt","gzip","ended","strm","deflateInit2","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflate","deflator","onEnd","onData","deflateEnd","configuration_table","trees","adler32","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","flush_pending","pending_buf","pending_out","flush_block_only","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","longest_match","cur_match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","w_size","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","window_size","hash_size","insert","ins_h","hash_shift","hash_mask","deflate_fast","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","DeflateState","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","deflateResetKeep","_tr_init","deflateReset","max_block_size","max_start","deflateInit","old_flush","beg","hcrc","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","tmpDict","dictLength","deflateInfo","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","send_bits","send_code","tree","bi_reverse","gen_codes","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","build_tree","stree","xbits","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","bi_flush","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","inflateSetDictionary","inflate","inflator","next_out_utf8","utf8str","allowBufError","inflateEnd","ungzip","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","COMMENT","HCRC","DICTID","DICT","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","LIT","CHECK","LENGTH","DONE","BAD","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","InflateState","havedict","dmax","wbits","wsize","whave","wnext","hold","lencode","distcode","lenbits","distbits","ncode","nlen","ndist","have","work","lendyn","distdyn","sane","back","was","inflateResetKeep","inflateReset","inflateReset2","lenfix","distfix","virgin","fixedtables","updatewindow","inflateInit","put","_in","_out","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","opts","here","hbuf","inf_leave","xflags","extra_len","inflateInfo","s_window","lcode","dcode","lmask","dmask","dolen","dodist","lbase","lext","dbase","dext","lens_index","table_index","incr","curr","drop","used","huff","base_index","MAXBITS","offs","extra_index","iTop","ZipEntries","zipEntries","checkCRC32","decodeFileName","fileNameStr","decompressed","fileCommentStr","zipComment","NodeBufferReader","ZipEntry","loadOptions","checkSignature","expectedSignature","isSignature","askedIndex","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","decodeParamType","decodeContent","readBlockZip64EndOfCentral","zip64EndOfCentralSize","versionNeeded","zip64ExtensibleData","extraFieldId","extraFieldLength","extraFieldValue","extraDataSize","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","endOfCentralDirOffset","expectedEndOfCentralDirOffset","prepareReader","jszipProto","isEncrypted","bitFlag","useUTF8","prepareCompressedContent","previousIndex","compressedFileData","prepareContent","uncompressedFileData","localExtraFieldsLength","fileNameLength","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","madeBy","extraReader","upath","findExtraFieldUnicodePath","fileNameByteArray","ucomment","findExtraFieldUnicodeComment","commentByteArray","upathField","ucommentField","string2Uint8Array","uint8Array2String","string2Blob","ajax","scheduleDrain","Mutation","observer","scriptEl","oldQueue","polyReduce","cur","ParseShp","parsePoint","parseCoord","parseZPoint","pointXY","parsePointArray","parseZPointArray","parseArrayGroup","partOffset","tot","curNum","pointNumber","nextNum","parseZArrayGroup","parseMultiPoint","mins","maxs","parseZMultiPoint","geoJson","parsePolyline","numParts","parseZPolyline","polyFuncs","parsePolygon","parseZPolygon","shpFuncObj","trans","shpFuncs","getRows","tran","getShpCode","parseFunc","parseHeader","shpCode","getRow","createDecoder","rowFuncs","textData","parseRow","rowHeaders","field","lastUpdated","records","headerLen","recLen","dbfHeader","decimal","dbfRowHeader","StringDecoder","defaultDecoder","isASCIIByte","isASCIICodePoint","encoderError","getEncoding","label_to_encoding","encodings","heading","category","shift_jis_index","big5_index_no_hkscs","encoders","decoders","indexCodePointFor","pointer","indexPointerFor","_encoding","_error_mode","_do_not_flush","ignoreBOM","TextEncoder","_encoder","UTF8Encoder","SingleByteDecoder","SingleByteEncoder","GB18030Decoder","gb18030_first","gb18030_second","gb18030_third","code_point_offset","indexGB18030RangesCodePointFor","GB18030Encoder","gbk_flag","trail","pointer_offset","indexGB18030RangesPointerFor","byte1","byte2","byte3","Big5Decoder","Big5_lead","Big5Encoder","index_","indexBig5PointerFor","EUCJPDecoder","eucjp_jis0212_flag","eucjp_lead","EUCJPEncoder","ISO2022JPDecoder","iso2022jp_decoder_state","iso2022jp_decoder_output_state","iso2022jp_lead","iso2022jp_output_flag","output_flag","ISO2022JPEncoder","iso2022jp_state","ShiftJISDecoder","Shift_JIS_lead","lead_offset","ShiftJISEncoder","indexShiftJISPointerFor","EUCKRDecoder","euckr_lead","EUCKREncoder","convertCodeUnitToBytes","code_unit","utf16be","UTF16Decoder","utf16_be","utf16_lead_byte","utf16_lead_surrogate","lead_surrogate","UTF16Encoder","XUserDefinedDecoder","XUserDefinedEncoder","opt_string","stringToCodePoints","EncodingIndexes","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","copyProps","SafeBuffer","hOP","naiveLength","LRUCache","didTypeWarning","typeCheckKey","_max","_lengthCalculator","_allowStale","stale","_maxAge","maxAge","_dispose","doUse","_cache","isStale","del","shiftLU","_mru","_lruList","use","_lru","_length","_itemCount","Entry","mL","lC","thisp","itemCount","dump","dumpLru","expiresAt","updateLayersOrdering","cO","ColorLayersOrdering","previousSequence","PLAYER_STATE","STOP","PLAY","END","PAUSE","resetTimer","player","clearInterval","waitTimer","keyframe","finishAnimation","isEnded","AnimationPlayer_AnimationPlayer","AnimationPlayer","possibleConstructorReturn_default","getPrototypeOf_default","inherits_default","waitingFrame","resolveWait","timew","AnimationPlayer_Animation","Animation","Core_AnimationPlayer","CameraUtils_targetPosition","targetCoord","rigs","wrapTo180","CameraUtils_tileLayer","isTiledGeometryLayer","getGroundTargetFromCamera","pickedPosition","getLookAtFromMath","CameraUtils_CameraRig","CameraRig","seaLevel","targetWorldPosition","removeProxy","rig","proxyProperty","_this4","setTargetFromCoordinate","cosPlanXY","tilt","setFromPositions","_this5","Tween_default","setfromCamera","tweenGroup","copyObject3D","addPlaceTargetOnGround","applyParams","animationFrameRequester","applyTransformToCamera","anim","removePlaceTargetOnGround","_this6","startAltitude","placeTargetOnGround","getRig","CameraUtils","defaultStopPlaceOnGroundAtEnd","getTransformCameraLookingAtTarget","getParams","transformCameraToLookAtTarget","setProxy","animateCameraToLookAtTarget","_this7","stopPlaceOnGroundAtEnd","sequenceAnimationsToLookAtTarget","_this8","funcs","getDiffParams","second","CONTROL_KEYS","UP","SPACE","SHIFT","CTRL","Controls_StateControl","StateControl","NONE","ORBIT","mouseButton","keyboard","finger","DOLLY","PAN","MOVE_GLOBE","PANORAMIC","_Object$keys2","EPS","rotateStart","rotateEnd","rotateDelta","spherical","sphericalDelta","orbitScale","panStart","panEnd","panDelta","panOffset","dollyStart","dollyEnd","dollyDelta","moveAroundGlobe","cameraTarget","GlobeControls_c","positionObject","newPosition","currentKey","lastTimeMouseMove","enableAnimation","dampingFactor","dampingMove","animationDampingMove","animationDampingOrbital","panVector","lastPosition","lastQuaternion","pickSphere","pickingPoint","enableTargetHelper","helpers","CONTROL_EVENTS","PAN_CHANGED","ORIENTATION_CHANGED","RANGE_CHANGED","CAMERA_TARGET_CHANGED","GlobeControls","targetCoordinate","globeRadius","getStates","isPaused","zoomSpeed","minDistance","minZoom","rotateSpeed","keyPanSpeed","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","handleCollision","enableKeys","enableDamping","startEvent","endEvent","getDollyScale","rotateLeft","rotateUp","panLeft","panUp","_mouseToPan","deltaX","deltaY","gfx","targetDistance","getCameraTargetPosition","dollyIn","dollyScale","dollyOut","quaterPano","quaterAxis","axisX","minDistanceZ","getMinDistanceCameraBoundingSphereObbsUp","sphereCamera","isSphereAboveXYBox","lastNormalizedIntersection","normalizedIntersection","dynamicRadius","slowdownLimit","contraryLimit","slowdownZone","slowdownFactor","contraryPhi","contraryFactor","isStopped","playLater","updateHelper","helper","targetPosition","updateTarget","_onMouseMoveListener","onMouseUp","_onMouseUpListener","_onEndingMove","onKeyUp","_handlingEvent","_onMouseDownListener","inputToState","button","_onMouseWheelListener","stopPropagation","wheelDelta","previousRange","getRange","newRange","_ondblclickListener","lookAtCoordinate","_onTouchStartListener","touchToState","pageX","pageY","_onTouchEndListener","_onTouchMoveListener","_onKeyDownListener","keyCode","_onKeyUpListener","_onContextMenuListener","_updateListener","_onBlurListener","layerTHREEjs","setTilt","isAnimated","setHeading","setRange","getTilt","getHeading","pan","pVector","getCameraOrientation","getCameraCoordinate","getCameraTargetGeoPosition","getLookAtCoordinate","setAnimationEnabled","isAnimationEnabled","getZoom","computeTileZoomFromDistanceCamera","getScale","pixelsToMeters","pixelPitch","pixelsToDegrees","chord","metersToPixels","setScale","setCameraTargetGeoPosition","computeDistanceCameraFromTileZoom","minTilt","maxTilt","setCameraTargetGeoPositionAdvanced","setOrbitalPosition","pickGeoPosition","windowCoords","Controls_GlobeControls","OGCWebServiceHelper_c","layerDimension","tileDimension","SIZE_TEXTURE_TILE","SIZE_DIAGONAL_TEXTURE","OGCWebServiceHelper","wmtsCoords","WGS84G","tileCount","Core_TileMesh","_THREE$Mesh","TileMesh","objectId","rotationAutoUpdate","layerUpdateState","isWMTSSource","isWMSSource","isTMSSource","Crs","PM","getCoordsForSource","findCommonAncestor","parentAtLevel","updateLayersUniforms","cacheBuffer","convertToTile","paramsGeometry","bufferKey","geometryKey","promiseGeometry","cachedBuffers","computeBufferTileGeometry","uvwgs84","newTileGeometry","materialOptions","pTrans","setBBoxZ","isGlobeLayer","horizonCullingPoint","setTileFromTiledLayer","subdivisionVector","boundingSphereCenter","Layer_TiledGeometryLayer","_GeometryLayer","TiledGeometryLayer","schemeTile","sseSubdivisionThreshold","assertThisInitialized_default","level0s","level0","maxElevationLevel","commonAncestor","ObjectRemovalHelper","culling","requestChildrenUpdate","hasEnoughTexturesToSubdivide","subdivision","minSubdivisionLevel","maxSubdivisionLevel","nodeLayer","currentTexture","maxDeltaElevationLevel","screenSize","extentsInsideLimit","inError","_extents","worldToScaledEllipsoid","GlobeLayer_cameraPosition","magnitudeSquared","scaledHorizonCullingPoint","Globe_GlobeLayer","_TiledGeometryLayer","GlobeLayer","maxDeltaElevation","get_default","occupancy","vtMagnitudeSquared","preSinus","sinus","CoordStars","getSunPosition","getAzimuth","getAltitude","toJulian","toDays","getSolarMeanAnomaly","getEclipticLongitude","getEquationOfCenter","getRightAscension","lw","getSiderealTime","EclipticLongitude","declinaison","ascension","SiderealTime","getSunPositionInScene","Geographic_CoordStars","skyShader","luminance","turbidity","reileigh","mieCoefficient","mieDirectionalG","v3LightPosition","SkyShader","Sky","skyUniforms","skyMat","skyGeo","GlowFS","GlowVS","LIGHTING_POSITION","coordCam","coordGeoCam","skyBaseColor","colorSky","spaceColor","mfogDistance","Globe_Atmosphere","Atmosphere","atmoIN","sphereGeometry","basicAtmosphereOut","basicAtmosphere","realisticAtmosphere","materialAtmoIn","basicAtmosphereIn","realisticLightingPosition","fogDistance","lightingEnabled","lightPosition","atmosphere","uniformsAtmosphere","v3InvWavelength","fCameraHeight","fCameraHeight2","fInnerRadius","fInnerRadius2","fOuterRadius","fOuterRadius2","fKrESun","fKmESun","fKr4PI","fKm4PI","fScale","fScaleDepth","fScaleOverScaleDepth","g2","nSamples","fSamples","tDisplacement","tSkyboxDiffuse","fNightScale","geometryAtmosphereIn","materialAtmosphereIn","geometryAtmosphereOut","materialAtmosphereOut","skyDome","effectController","bool","_initRealisticLighning","GLOBE_VIEW_EVENTS","GLOBE_INITIALIZED","LAYER_ADDED","COLOR_LAYERS_ORDER_CHANGED","GlobeView","positionCamera","sun","positionTargetCamera","noControls","controls","colorLayerCount","layerPromise","Prefab_GlobeView","PlanarTileBuilder_quaternion","_center","Planar_PlanarTileBuilder","PlanarTileBuilder","Renderer_OBB","Planar_PlanarLayer","PlanarLayer","isPlanarLayer","PlanarView","Prefab_PlanarView","UPDATE_STATE","IDLE","DEFINITIVE_ERROR","FINISHED","PAUSE_BETWEEN_ERRORS","LayerUpdateState","lastErrorTimestamp","errorCount","canTryUpdate","secondsUntilNextTry","newTry","noMoreUpdatePossible","failure","definitive","Layer_LayerUpdateState","MAX_RETRY","SyntaxError","definitiveError","FeatureProcessing_coord","FeatureProcessing_vector","extentInsideSource","extentInsideLimit","FeatureProcessing_quaternion","FeatureProcessing","extentDest","_extentsSource","isApplied","minAltitude","assignLayer","onMeshCreated","applyOffset","offsetAltitude","getSourceExtent","tiledExtentParent","findAncestorFromLevel","refinementCommandCancellationFn","buildCommand","updateLayeredMaterialNodeImagery","noTextureParentOutsideLimit","initFromParent","getZoomForLayer","destinationLevel","LayerUpdateStrategy","updateLayeredMaterialNodeElevation","useMinMaxFromParent","_computeMinMaxElevati","XbilParser","nodeExtent","elevation","_computeMinMaxElevati2","_min","nodeParent","replaceNoDataValueFromParent","removeLayeredMaterialNodeLayer","Renderer_OrientedImageCamera","_THREE$PerspectiveCam","OrientedImageCamera","focal","textureAspect","MOVEMENTS","38","40","37","39","33","noSpeed","34","wheelup","oneshot","wheeldown","onDocumentMouseUp","_isMouseDown","onDocumentMouseWheel","moves","_camera3D","Controls_FlyControls","FlyControls","moveSpeed","_onMouseDownMouseX","_onMouseDownMouseY","bindedPM","pxToAngleRatio","move","focusOnMouseOver","focusOnClick","_move","limitRotation","rot","applyRotation","FirstPersonControls_MOVEMENTS","moveCameraVerticalPlanar","FirstPersonControls_normal","moveCameraVerticalGlobe","Controls_FirstPersonControls","FirstPersonControls","isFirstPersonControls","panoramaRatio","snapshot","disableEventListeners","onMouseDown","onMouseMove","onKeyDown","onMouseWheel","moveCameraVertical","preserveRotationOnX","_stateOnMouseDown","StreetControls_material","updateSurfaces","surfaces","norm","StreetControls_target","pick","buildingsLayer","pickGround","pickObject","pickNothing","distanceToGround","buildings","computeTime","Controls_StreetControls","_FirstPersonControls","StreetControls","geomCircle","geomPlane","rectangle","isStreetControls","previousPosition","currentPosition","nextPosition","keyGoToNextPosition","keyGoToPreviousPosition","keySetCameraToCurrentPosition","surfaceGround","surfaceWall","wallMaxDistance","animationDurationWall","newCurrentPosition","newNextPosition","newPreviousPosition","_stateOnMouseDrag","onClickOnGround","onClickOnWall","stopAnimations","groundTarget","wallTarget","setCameraOnPosition","moveCameraTo","animateCameraLookAt","setCameraToCurrentPosition","mouseButtons","LEFTCLICK","MIDDLECLICK","RIGHTCLICK","STATE","DRAG","ROTATE","TRAVEL","vectorZero","Controls_PlanarControls","enableRotation","maxPanSpeed","minPanSpeed","zoomTravelTime","zoomInFactor","zoomOutFactor","maxAltitude","groundLevel","autoTravelTimeMin","autoTravelTimeMax","autoTravelTimeDist","smartZoomHeightMin","smartZoomHeightMax","instantTravel","minZenithAngle","maxZenithAngle","focusOnMouseClick","startPosition","startQuaternion","mousePosition","lastMousePosition","deltaMousePosition","dragStart","dragEnd","dragDelta","centerPoint","travelEndPos","travelStartPos","travelStartRot","travelEndRot","travelAlpha","travelDuration","travelUseRotation","travelUseSmooth","_handlerOnKeyDown","goToTopView","goToStartView","initiateSmartZoom","_handlerOnMouseDown","updateMousePositionAndDelta","ctrlKey","initiateRotation","initiateDrag","initiatePan","updateMouseCursorType","_handlerOnMouseUp","_handlerOnMouseMove","_handlerOnMouseWheel","initiateZoom","handleTravel","handleDragMovement","handleRotation","handlePanMovement","getWorldPointAtScreenXY","getWorldPointFromMathPlaneAtScreenXY","distToGround","panSpeed","newAltitude","quat","thetaDelta","phiDelta","pointUnderCursor","newPos","initiateTravel","targetHeight","moveTarget","targetPos","travelTime","targetOrientation","useSmooth","normalizedDistance","angularDifference","endTravel","topViewPos","targetQuat","posXY","addInputListeners","removeInputListeners","cursor","getProperty","randomColor","fillColorArray","fillBatchIdArray","batchId","batchIdArray","Feature2Mesh_coord","coordinatesToVertices","ptsIn","offsetOut","countIn","startIn","fnAltitude","endIn","addExtrudedPolygonSideFaces","startIndice","pointMaterial","Feature2Mesh_color","Feature2Mesh_material","featureToMesh","batchIds","geom","featureToPoint","countIndices","featureToLine","Feature2Mesh_area","totalVertices","colorTop","lastIndice","startTop","endTop","geomVertices","holesOffsets","earcut_default","indice","featureToExtrudedPolygon","featureToPolygon","Feature2Mesh","collection","featuresToThree","isFeatureSingleGeometryUnderCoordinate","coordinate","linePoints","x21","y21","pointIsOverLine","polygonPoints","xi","yi","xj","yj","pointIsInsidePolygon","squaredEpsilon","xP","yP","getClosestPoint","isFeatureUnderCoordinate","featCoord","under","FeaturesUtils","filterFeaturesUnderCoordinate","quaternionENUFromGeodesicNormal","ENUQuat","OrientationUtils","localQuaternionFromAttitude","attitude","roll","quaternionFromRollPitchHeading","omega","kappa","quaternionFromOmegaPhiKappa","globeQuaternionFromAttitude","quaternionFromAttitude","needsENUFromGeodesicNormal","color_layers_pars_fragment","elevation_pars_vertex","elevation_vertex","lighting_fragment","lighting_pars_fragment","mode_depth_fragment","mode_id_fragment","mode_pars_fragment","overlay_fragment","overlay_pars_fragment","pitUV","precision_qualifier","projective_texturing_vertex","projective_texturing_pars_vertex","projective_texturing_pars_fragment","project_pars_vertex","install","Shader_ShaderChunk","drawPolygon","invCtxScale","canBeFilled","_drawPolygon","beginPath","strokeStyle","globalAlpha","fillStyle","drawPoint","Feature2Texture_coord","drawFeature","scaleRadius","geometryStyle","Feature2Texture_scale","extentTransformed","Feature2Texture","sizeTexture","backgroundColor","fillRect","globalCompositeOperation","imageSmoothingEnabled","transformedCopy","setTransform","extentTexture","textureLayer","textureConverter","backgroundLayer","textureColorLayer","Layer_ColorLayer","ColorLayer","Layer_ElevationLayer","ElevationLayer","textureVS","textureFS","ndcToTextureMatrix","Renderer_OrientedImageMaterial","OrientedImageMaterial","NUM_TEXTURES","USE_DISTORTION","distortion","alphaBorder","DEBUG_ALPHA_BORDER","debugAlphaBorder","textureMatrix","textureMatrixWorldInverse","polynom","pps","l1l2","projectiveTextureAlphaBorder","projectiveTextureDistortion","projectiveTextureMatrix","projectiveTexture","oldTexture","viewCamera","setMatrix3","matrix3","CameraCalibrationParser","calibration","rotationInverse","poly357","etats","parseCalibration","OrientedImageLayer_coord","Layer_OrientedImageLayer","OrientedImageLayer","createBackground","backgroundDistance","currentPano","onPanoChanged","panos","isGlobe","pano","minD","minI","newPano","previousPanoPosition","getPreviousPano","currentPanoPosition","getCurrentPano","nextPanoPosition","getNextPano","imagesInfo","cam","cameraId","panoId","updatePano","src_Source_Source","Source","isSource","Source_FileSource","_Source","FileSource","localExtent","URLBuilder_extent","URLBuilder","bboxInUnit","axisOrder","Source_TMSSource","TMSSource","Source_WFSSource","WFSSource","isWFSSource","vendorSpecific","getCapUrl","errorElem","querySelector","errorMessage","Source_WMSSource","WMSSource","crsPropName","Source_WMTSSource","WMTSSource","tileMatrixSetLimits","arrayLimits","minTileRow","maxTileRow","minTileCol","maxTileCol","Source_OrientedImageSource","OrientedImageSource","isOrientedImageSource","imageInfo","imageUrl","GpxParser","togeojson_default","KMLParser","BatchTableHierarchyExtensionParser_BatchTableHierarchyExtension","_$3dTilesAbstractExte","BatchTableHierarchyExtension","classes","inverseHierarchy","instancesIdxs","classCounter","parentIdsCounter","parentCounts","instancesLength","parentIds","classId","classIds","instanceIdx","instanceProperties","instanceClassId","featureClass","instances","pickingInfo","parentId","BatchTableHierarchyExtensionParser","ShapefileParser","lib_default","shx","lib"],"mappings":"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mBACA,WACA,aACA,eACA,eACA,aACA,YACA,WACA,aACA,mBAEAp4P,KAAA,cAEA,CACAo4P,OAAA,CACA,kBACA,WACA,WACA,QACA,SACA,aACA,aACA,YACA,WACA,aACA,kBACA,gBAEAp4P,KAAA,cAEA,CACAo4P,OAAA,CACA,cACA,mBACA,SACA,aACA,eACA,aACA,YACA,WACA,aACA,kBACA,UAEAp4P,KAAA,cAEA,CACAo4P,OAAA,CACA,cACA,eACA,WAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,cACA,cACA,aACA,aACA,YACA,KACA,UAEAp4P,KAAA,eAEA,CACAo4P,OAAA,CACA,cACA,aACA,aAEAp4P,KAAA,eAEA,CACAo4P,OAAA,CACA,cACA,aACA,aAEAp4P,KAAA,eAEA,CACAo4P,OAAA,CACA,cACA,cACA,aACA,YACA,cACA,MAEAp4P,KAAA,eAEA,CACAo4P,OAAA,CACA,eAEAp4P,KAAA,eAEA,CACAo4P,OAAA,CACA,UACA,MACA,OACA,SACA,UAEAp4P,KAAA,UAEA,CACAo4P,OAAA,CACA,UACA,UAEAp4P,KAAA,UAEA,CACAo4P,OAAA,CACA,cACA,MACA,YACA,eAEAp4P,KAAA,aAEA,CACAo4P,OAAA,CACA,UACA,cACA,aACA,YACA,UACA,eAEAp4P,KAAA,eAEA,CACAo4P,OAAA,CACA,SACA,eACA,YAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,SACA,eACA,YAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,iBACA,QACA,SACA,QACA,cACA,SACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,SACA,WACA,eACA,YAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,SACA,eACA,YAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,SACA,cACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,SACA,eACA,YAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,SACA,eACA,YAEAp4P,KAAA,gBAEA,CACAo4P,OAAA,CACA,SACA,eACA,YAEAp4P,KAAA,g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","file":"itowns.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"itowns\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"itowns\"] = factory();\n\telse\n\t\troot[\"itowns\"] = factory();\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp_name_\"] = window[\"webpackJsonp_name_\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([351]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// Polyfills\n\nif ( Number.EPSILON === undefined ) {\n\n\tNumber.EPSILON = Math.pow( 2, - 52 );\n\n}\n\nif ( Number.isInteger === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n\n\tNumber.isInteger = function ( value ) {\n\n\t\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\n\n\t};\n\n}\n\n//\n\nif ( Math.sign === undefined ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\n\n\tMath.sign = function ( x ) {\n\n\t\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\n\n\t};\n\n}\n\nif ( 'name' in Function.prototype === false ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\n\n\tObject.defineProperty( Function.prototype, 'name', {\n\n\t\tget: function () {\n\n\t\t\treturn this.toString().match( /^\\s*function\\s*([^\\(\\s]*)/ )[ 1 ];\n\n\t\t}\n\n\t} );\n\n}\n\nif ( Object.assign === undefined ) {\n\n\t// Missing in IE\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\n\t( function () {\n\n\t\tObject.assign = function ( target ) {\n\n\t\t\tif ( target === undefined || target === null ) {\n\n\t\t\t\tthrow new TypeError( 'Cannot convert undefined or null to object' );\n\n\t\t\t}\n\n\t\t\tvar output = Object( target );\n\n\t\t\tfor ( var index = 1; index < arguments.length; index ++ ) {\n\n\t\t\t\tvar source = arguments[ index ];\n\n\t\t\t\tif ( source !== undefined && source !== null ) {\n\n\t\t\t\t\tfor ( var nextKey in source ) {\n\n\t\t\t\t\t\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\n\n\t\t\t\t\t\t\toutput[ nextKey ] = source[ nextKey ];\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 output;\n\n\t\t};\n\n\t} )();\n\n}\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nfunction EventDispatcher() {}\n\nObject.assign( EventDispatcher.prototype, {\n\n\taddEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tvar listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t},\n\n\thasEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tvar listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t},\n\n\tremoveEventListener: function ( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tvar index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tdispatchEvent: function ( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tvar listeners = this._listeners;\n\t\tvar listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\tvar array = listenerArray.slice( 0 );\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n} );\n\nvar REVISION = '105';\nvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\nvar CullFaceNone = 0;\nvar CullFaceBack = 1;\nvar CullFaceFront = 2;\nvar CullFaceFrontBack = 3;\nvar FrontFaceDirectionCW = 0;\nvar FrontFaceDirectionCCW = 1;\nvar BasicShadowMap = 0;\nvar PCFShadowMap = 1;\nvar PCFSoftShadowMap = 2;\nvar FrontSide = 0;\nvar BackSide = 1;\nvar DoubleSide = 2;\nvar FlatShading = 1;\nvar SmoothShading = 2;\nvar NoColors = 0;\nvar FaceColors = 1;\nvar VertexColors = 2;\nvar NoBlending = 0;\nvar NormalBlending = 1;\nvar AdditiveBlending = 2;\nvar SubtractiveBlending = 3;\nvar MultiplyBlending = 4;\nvar CustomBlending = 5;\nvar AddEquation = 100;\nvar SubtractEquation = 101;\nvar ReverseSubtractEquation = 102;\nvar MinEquation = 103;\nvar MaxEquation = 104;\nvar ZeroFactor = 200;\nvar OneFactor = 201;\nvar SrcColorFactor = 202;\nvar OneMinusSrcColorFactor = 203;\nvar SrcAlphaFactor = 204;\nvar OneMinusSrcAlphaFactor = 205;\nvar DstAlphaFactor = 206;\nvar OneMinusDstAlphaFactor = 207;\nvar DstColorFactor = 208;\nvar OneMinusDstColorFactor = 209;\nvar SrcAlphaSaturateFactor = 210;\nvar NeverDepth = 0;\nvar AlwaysDepth = 1;\nvar LessDepth = 2;\nvar LessEqualDepth = 3;\nvar EqualDepth = 4;\nvar GreaterEqualDepth = 5;\nvar GreaterDepth = 6;\nvar NotEqualDepth = 7;\nvar MultiplyOperation = 0;\nvar MixOperation = 1;\nvar AddOperation = 2;\nvar NoToneMapping = 0;\nvar LinearToneMapping = 1;\nvar ReinhardToneMapping = 2;\nvar Uncharted2ToneMapping = 3;\nvar CineonToneMapping = 4;\nvar ACESFilmicToneMapping = 5;\n\nvar UVMapping = 300;\nvar CubeReflectionMapping = 301;\nvar CubeRefractionMapping = 302;\nvar EquirectangularReflectionMapping = 303;\nvar EquirectangularRefractionMapping = 304;\nvar SphericalReflectionMapping = 305;\nvar CubeUVReflectionMapping = 306;\nvar CubeUVRefractionMapping = 307;\nvar RepeatWrapping = 1000;\nvar ClampToEdgeWrapping = 1001;\nvar MirroredRepeatWrapping = 1002;\nvar NearestFilter = 1003;\nvar NearestMipMapNearestFilter = 1004;\nvar NearestMipMapLinearFilter = 1005;\nvar LinearFilter = 1006;\nvar LinearMipMapNearestFilter = 1007;\nvar LinearMipMapLinearFilter = 1008;\nvar UnsignedByteType = 1009;\nvar ByteType = 1010;\nvar ShortType = 1011;\nvar UnsignedShortType = 1012;\nvar IntType = 1013;\nvar UnsignedIntType = 1014;\nvar FloatType = 1015;\nvar HalfFloatType = 1016;\nvar UnsignedShort4444Type = 1017;\nvar UnsignedShort5551Type = 1018;\nvar UnsignedShort565Type = 1019;\nvar UnsignedInt248Type = 1020;\nvar AlphaFormat = 1021;\nvar RGBFormat = 1022;\nvar RGBAFormat = 1023;\nvar LuminanceFormat = 1024;\nvar LuminanceAlphaFormat = 1025;\nvar RGBEFormat = RGBAFormat;\nvar DepthFormat = 1026;\nvar DepthStencilFormat = 1027;\nvar RedFormat = 1028;\nvar RGB_S3TC_DXT1_Format = 33776;\nvar RGBA_S3TC_DXT1_Format = 33777;\nvar RGBA_S3TC_DXT3_Format = 33778;\nvar RGBA_S3TC_DXT5_Format = 33779;\nvar RGB_PVRTC_4BPPV1_Format = 35840;\nvar RGB_PVRTC_2BPPV1_Format = 35841;\nvar RGBA_PVRTC_4BPPV1_Format = 35842;\nvar RGBA_PVRTC_2BPPV1_Format = 35843;\nvar RGB_ETC1_Format = 36196;\nvar RGBA_ASTC_4x4_Format = 37808;\nvar RGBA_ASTC_5x4_Format = 37809;\nvar RGBA_ASTC_5x5_Format = 37810;\nvar RGBA_ASTC_6x5_Format = 37811;\nvar RGBA_ASTC_6x6_Format = 37812;\nvar RGBA_ASTC_8x5_Format = 37813;\nvar RGBA_ASTC_8x6_Format = 37814;\nvar RGBA_ASTC_8x8_Format = 37815;\nvar RGBA_ASTC_10x5_Format = 37816;\nvar RGBA_ASTC_10x6_Format = 37817;\nvar RGBA_ASTC_10x8_Format = 37818;\nvar RGBA_ASTC_10x10_Format = 37819;\nvar RGBA_ASTC_12x10_Format = 37820;\nvar RGBA_ASTC_12x12_Format = 37821;\nvar LoopOnce = 2200;\nvar LoopRepeat = 2201;\nvar LoopPingPong = 2202;\nvar InterpolateDiscrete = 2300;\nvar InterpolateLinear = 2301;\nvar InterpolateSmooth = 2302;\nvar ZeroCurvatureEnding = 2400;\nvar ZeroSlopeEnding = 2401;\nvar WrapAroundEnding = 2402;\nvar TrianglesDrawMode = 0;\nvar TriangleStripDrawMode = 1;\nvar TriangleFanDrawMode = 2;\nvar LinearEncoding = 3000;\nvar sRGBEncoding = 3001;\nvar GammaEncoding = 3007;\nvar RGBEEncoding = 3002;\nvar LogLuvEncoding = 3003;\nvar RGBM7Encoding = 3004;\nvar RGBM16Encoding = 3005;\nvar RGBDEncoding = 3006;\nvar BasicDepthPacking = 3200;\nvar RGBADepthPacking = 3201;\nvar TangentSpaceNormalMap = 0;\nvar ObjectSpaceNormalMap = 1;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar _Math = {\n\n\tDEG2RAD: Math.PI / 180,\n\tRAD2DEG: 180 / Math.PI,\n\n\tgenerateUUID: ( function () {\n\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\t\tvar lut = [];\n\n\t\tfor ( var i = 0; i < 256; i ++ ) {\n\n\t\t\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\n\n\t\t}\n\n\t\treturn function generateUUID() {\n\n\t\t\tvar d0 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d1 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d2 = Math.random() * 0xffffffff | 0;\n\t\t\tvar d3 = Math.random() * 0xffffffff | 0;\n\t\t\tvar uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\n\t\t\t\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\n\n\t\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\n\t\t\treturn uuid.toUpperCase();\n\n\t\t};\n\n\t} )(),\n\n\tclamp: function ( value, min, max ) {\n\n\t\treturn Math.max( min, Math.min( max, value ) );\n\n\t},\n\n\t// compute euclidian modulo of m % n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\teuclideanModulo: function ( n, m ) {\n\n\t\treturn ( ( n % m ) + m ) % m;\n\n\t},\n\n\t// Linear mapping from range to range \n\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\n\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n\t},\n\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\n\n\tlerp: function ( x, y, t ) {\n\n\t\treturn ( 1 - t ) * x + t * y;\n\n\t},\n\n\t// http://en.wikipedia.org/wiki/Smoothstep\n\n\tsmoothstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * ( 3 - 2 * x );\n\n\t},\n\n\tsmootherstep: function ( x, min, max ) {\n\n\t\tif ( x <= min ) return 0;\n\t\tif ( x >= max ) return 1;\n\n\t\tx = ( x - min ) / ( max - min );\n\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n\t},\n\n\t// Random integer from interval\n\n\trandInt: function ( low, high ) {\n\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n\t},\n\n\t// Random float from interval\n\n\trandFloat: function ( low, high ) {\n\n\t\treturn low + Math.random() * ( high - low );\n\n\t},\n\n\t// Random float from <-range/2, range/2> interval\n\n\trandFloatSpread: function ( range ) {\n\n\t\treturn range * ( 0.5 - Math.random() );\n\n\t},\n\n\tdegToRad: function ( degrees ) {\n\n\t\treturn degrees * _Math.DEG2RAD;\n\n\t},\n\n\tradToDeg: function ( radians ) {\n\n\t\treturn radians * _Math.RAD2DEG;\n\n\t},\n\n\tisPowerOfTwo: function ( value ) {\n\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n\t},\n\n\tceilPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n\t},\n\n\tfloorPowerOfTwo: function ( value ) {\n\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author philogb / http://blog.thejit.org/\n * @author egraether / http://egraether.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nfunction Vector2( x, y ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\n}\n\nObject.defineProperties( Vector2.prototype, {\n\n\t\"width\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.x = value;\n\n\t\t}\n\n\t},\n\n\t\"height\": {\n\n\t\tget: function () {\n\n\t\t\treturn this.y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis.y = value;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tisVector2: true,\n\n\tset: function ( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t},\n\n\tcross: function ( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tangle: function () {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tvar angle = Math.atan2( this.y, this.x );\n\n\t\tif ( angle < 0 ) angle += 2 * Math.PI;\n\n\t\treturn angle;\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t},\n\n\trotateAround: function ( center, angle ) {\n\n\t\tvar c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tvar x = this.x - center.x;\n\t\tvar y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Quaternion( x, y, z, w ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Quaternion, {\n\n\tslerp: function ( qa, qb, qm, t ) {\n\n\t\treturn qm.copy( qa ).slerp( qb, t );\n\n\t},\n\n\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tvar x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ],\n\n\t\t\tx1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tvar s = 1 - t,\n\n\t\t\t\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tvar sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tvar tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n} );\n\nObject.defineProperties( Quaternion.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tw: {\n\n\t\tget: function () {\n\n\t\t\treturn this._w;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._w = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Quaternion.prototype, {\n\n\tisQuaternion: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t},\n\n\tcopy: function ( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromEuler: function ( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tvar cos = Math.cos;\n\t\tvar sin = Math.sin;\n\n\t\tvar c1 = cos( x / 2 );\n\t\tvar c2 = cos( y / 2 );\n\t\tvar c3 = cos( z / 2 );\n\n\t\tvar s1 = sin( x / 2 );\n\t\tvar s2 = sin( y / 2 );\n\t\tvar s3 = sin( z / 2 );\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\n\t\t}\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromAxisAngle: function ( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33,\n\t\t\ts;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\ts = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromUnitVectors: function ( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tvar EPS = 0.000001;\n\n\t\tvar r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < EPS ) {\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t},\n\n\tangleTo: function ( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t},\n\n\trotateTowards: function ( q, step ) {\n\n\t\tvar angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tvar t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t},\n\n\tinverse: function () {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t},\n\n\tconjugate: function () {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\tvar l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( q, p ) {\n\n\t\tif ( p !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\n\t\t\treturn this.multiplyQuaternions( q, p );\n\n\t\t}\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t},\n\n\tpremultiply: function ( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t},\n\n\tmultiplyQuaternions: function ( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tslerp: function ( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tvar x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tvar s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\treturn this.normalize();\n\n\t\t}\n\n\t\tvar sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector3( x, y, z ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\n}\n\nObject.assign( Vector3.prototype, {\n\n\tisVector3: true,\n\n\tset: function ( x, y, z ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\n\t\t\treturn this.multiplyVectors( v, w );\n\n\t\t}\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyVectors: function ( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyEuler: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyEuler( euler ) {\n\n\t\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t\t}\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyAxisAngle: function () {\n\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function applyAxisAngle( axis, angle ) {\n\n\t\t\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix3: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tvar ix = qw * x + qy * z - qz * y;\n\t\tvar iy = qw * y + qz * x - qx * z;\n\t\tvar iz = qw * z + qx * y - qy * x;\n\t\tvar iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t},\n\n\tproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t},\n\n\tunproject: function ( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t},\n\n\ttransformDirection: function ( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tvar x = this.x, y = this.y, z = this.z;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t},\n\n\tdivide: function ( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function ( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t},\n\n\t// TODO lengthSquared?\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tcross: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\n\t\t\treturn this.crossVectors( v, w );\n\n\t\t}\n\n\t\treturn this.crossVectors( this, v );\n\n\t},\n\n\tcrossVectors: function ( a, b ) {\n\n\t\tvar ax = a.x, ay = a.y, az = a.z;\n\t\tvar bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t},\n\n\tprojectOnVector: function ( vector ) {\n\n\t\tvar scalar = vector.dot( this ) / vector.lengthSq();\n\n\t\treturn this.copy( vector ).multiplyScalar( scalar );\n\n\t},\n\n\tprojectOnPlane: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function projectOnPlane( planeNormal ) {\n\n\t\t\tv1.copy( this ).projectOnVector( planeNormal );\n\n\t\t\treturn this.sub( v1 );\n\n\t\t};\n\n\t}(),\n\n\treflect: function () {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function reflect( normal ) {\n\n\t\t\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t\t};\n\n\t}(),\n\n\tangleTo: function ( v ) {\n\n\t\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\n\n\t},\n\n\tdistanceTo: function ( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t},\n\n\tdistanceToSquared: function ( v ) {\n\n\t\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t},\n\n\tmanhattanDistanceTo: function ( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t},\n\n\tsetFromSpherical: function ( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t},\n\n\tsetFromSphericalCoords: function ( radius, phi, theta ) {\n\n\t\tvar sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCylindrical: function ( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t},\n\n\tsetFromCylindricalCoords: function ( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixPosition: function ( m ) {\n\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixScale: function ( m ) {\n\n\t\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrixColumn: function ( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n * @author tschw\n */\n\nfunction Matrix3() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0,\n\t\t0, 1, 0,\n\t\t0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix3.prototype, {\n\n\tisMatrix3: true,\n\n\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix4: function ( m ) {\n\n\t\tvar me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix3( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t},\n\n\tgetInverse: function ( matrix, throwOnDegenerate ) {\n\n\t\tif ( matrix && matrix.isMatrix4 ) {\n\n\t\t\tconsole.error( \"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\" );\n\n\t\t}\n\n\t\tvar me = matrix.elements,\n\t\t\tte = this.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\n\t\t\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\n\t\t\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar tmp, m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tgetNormalMatrix: function ( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\n\n\t},\n\n\ttransposeIntoArray: function ( r ) {\n\n\t\tvar m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tvar c = Math.cos( rotation );\n\t\tvar s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t},\n\n\tscale: function ( sx, sy ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t},\n\n\trotate: function ( theta ) {\n\n\t\tvar c = Math.cos( theta );\n\t\tvar s = Math.sin( theta );\n\n\t\tvar te = this.elements;\n\n\t\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( tx, ty ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar _canvas;\n\nvar ImageUtils = {\n\n\tgetDataURL: function ( image ) {\n\n\t\tvar canvas;\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t} else if ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tvar context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n */\n\nvar textureId = 0;\n\nfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\n\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\n\tthis.mipmaps = [];\n\n\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\n\n\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\n\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\n\n\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\n\n\tthis.format = format !== undefined ? format : RGBAFormat;\n\tthis.type = type !== undefined ? type : UnsignedByteType;\n\n\tthis.offset = new Vector2( 0, 0 );\n\tthis.repeat = new Vector2( 1, 1 );\n\tthis.center = new Vector2( 0, 0 );\n\tthis.rotation = 0;\n\n\tthis.matrixAutoUpdate = true;\n\tthis.matrix = new Matrix3();\n\n\tthis.generateMipmaps = true;\n\tthis.premultiplyAlpha = false;\n\tthis.flipY = true;\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t//\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\n\n\tthis.version = 0;\n\tthis.onUpdate = null;\n\n}\n\nTexture.DEFAULT_IMAGE = undefined;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Texture,\n\n\tisTexture: true,\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.image = source.image;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tvar output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( this.image !== undefined ) {\n\n\t\t\t// TODO: Move to THREE.Image\n\n\t\t\tvar image = this.image;\n\n\t\t\tif ( image.uuid === undefined ) {\n\n\t\t\t\timage.uuid = _Math.generateUUID(); // UGH\n\n\t\t\t}\n\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\n\n\t\t\t\tvar url;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\t// process array of images e.g. CubeTexture\n\n\t\t\t\t\turl = [];\n\n\t\t\t\t\tfor ( var i = 0, l = image.length; i < l; i ++ ) {\n\n\t\t\t\t\t\turl.push( ImageUtils.getDataURL( image[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// process single image\n\n\t\t\t\t\turl = ImageUtils.getDataURL( image );\n\n\t\t\t\t}\n\n\t\t\t\tmeta.images[ image.uuid ] = {\n\t\t\t\t\tuuid: image.uuid,\n\t\t\t\t\turl: url\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\toutput.image = image.uuid;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t},\n\n\ttransformUv: function ( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n} );\n\nObject.defineProperty( Texture.prototype, \"needsUpdate\", {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author mikael emtinger / http://gomo.se/\n * @author egraether / http://egraether.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Vector4( x, y, z, w ) {\n\n\tthis.x = x || 0;\n\tthis.y = y || 0;\n\tthis.z = z || 0;\n\tthis.w = ( w !== undefined ) ? w : 1;\n\n}\n\nObject.assign( Vector4.prototype, {\n\n\tisVector4: true,\n\n\tset: function ( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetX: function ( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponent: function ( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetComponent: function ( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t},\n\n\tcopy: function ( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t},\n\n\tadd: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\n\t\t\treturn this.addVectors( v, w );\n\n\t\t}\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t},\n\n\taddVectors: function ( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t},\n\n\taddScaledVector: function ( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( v, w ) {\n\n\t\tif ( w !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\n\t\t\treturn this.subVectors( v, w );\n\n\t\t}\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t},\n\n\tsubScalar: function ( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t},\n\n\tsubVectors: function ( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function ( m ) {\n\n\t\tvar x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tvar e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t},\n\n\tdivideScalar: function ( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t},\n\n\tsetAxisAngleFromQuaternion: function ( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tvar s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetAxisAngleFromRotationMatrix: function ( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar angle, x, y, z,\t\t// variables for result\n\t\t\tepsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tvar xx = ( m11 + 1 ) / 2;\n\t\t\tvar yy = ( m22 + 1 ) / 2;\n\t\t\tvar zz = ( m33 + 1 ) / 2;\n\t\t\tvar xy = ( m12 + m21 ) / 4;\n\t\t\tvar xz = ( m13 + m31 ) / 4;\n\t\t\tvar yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t ( m13 - m31 ) * ( m13 - m31 ) +\n\t\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmin: function ( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tmax: function ( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t},\n\n\tclamp: function ( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t},\n\n\tclampScalar: function () {\n\n\t\tvar min, max;\n\n\t\treturn function clampScalar( minVal, maxVal ) {\n\n\t\t\tif ( min === undefined ) {\n\n\t\t\t\tmin = new Vector4();\n\t\t\t\tmax = new Vector4();\n\n\t\t\t}\n\n\t\t\tmin.set( minVal, minVal, minVal, minVal );\n\t\t\tmax.set( maxVal, maxVal, maxVal, maxVal );\n\n\t\t\treturn this.clamp( min, max );\n\n\t\t};\n\n\t}(),\n\n\tclampLength: function ( min, max ) {\n\n\t\tvar length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t},\n\n\tfloor: function () {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tceil: function () {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tround: function () {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t},\n\n\troundToZero: function () {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t},\n\n\tdot: function ( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t},\n\n\tlengthSq: function () {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t},\n\n\tlength: function () {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t},\n\n\tmanhattanLength: function () {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t},\n\n\tnormalize: function () {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t},\n\n\tsetLength: function ( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t},\n\n\tlerp: function ( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpVectors: function ( v1, v2, alpha ) {\n\n\t\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\n\n\t},\n\n\tequals: function ( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t},\n\n\tfromBufferAttribute: function ( attribute, index, offset ) {\n\n\t\tif ( offset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\n\n\t\t}\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author szimek / https://github.com/szimek/\n * @author alteredq / http://alteredqualia.com/\n * @author Marius Kintel / https://github.com/kintel\n */\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nfunction WebGLRenderTarget( width, height, options ) {\n\n\tthis.width = width;\n\tthis.height = height;\n\n\tthis.scissor = new Vector4( 0, 0, width, height );\n\tthis.scissorTest = false;\n\n\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\toptions = options || {};\n\n\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n}\n\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: WebGLRenderTarget,\n\n\tisWebGLRenderTarget: true,\n\n\tsetSize: function ( width, height ) {\n\n\t\tif ( this.width !== width || this.height !== height ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\t\tthis.depthTexture = source.depthTexture;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * @author Matt DesLauriers / @mattdesl\n */\n\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n\tthis.samples = 4;\n\n}\n\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\n\n\tconstructor: WebGLMultisampleRenderTarget,\n\n\tisWebGLMultisampleRenderTarget: true,\n\n\tcopy: function ( source ) {\n\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com\n */\n\nfunction WebGLRenderTargetCube( width, height, options ) {\n\n\tWebGLRenderTarget.call( this, width, height, options );\n\n}\n\nWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\nWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\n\nWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { data: data, width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\tthis.unpackAlignment = 1;\n\n}\n\nDataTexture.prototype = Object.create( Texture.prototype );\nDataTexture.prototype.constructor = DataTexture;\n\nDataTexture.prototype.isDataTexture = true;\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\n\n}\n\nObject.assign( Box3.prototype, {\n\n\tisBox3: true,\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromArray: function ( array ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tvar x = array[ i ];\n\t\t\tvar y = array[ i + 1 ];\n\t\t\tvar z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromBufferAttribute: function ( attribute ) {\n\n\t\tvar minX = + Infinity;\n\t\tvar minY = + Infinity;\n\t\tvar minZ = + Infinity;\n\n\t\tvar maxX = - Infinity;\n\t\tvar maxY = - Infinity;\n\t\tvar maxZ = - Infinity;\n\n\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tvar x = attribute.getX( i );\n\t\t\tvar y = attribute.getY( i );\n\t\t\tvar z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\texpandByObject: function () {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tvar scope, i, l;\n\n\t\tvar v1 = new Vector3();\n\n\t\tfunction traverse( node ) {\n\n\t\t\tvar geometry = node.geometry;\n\n\t\t\tif ( geometry !== undefined ) {\n\n\t\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\t\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tv1.copy( vertices[ i ] );\n\t\t\t\t\t\tv1.applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\tscope.expandByPoint( v1 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( geometry.isBufferGeometry ) {\n\n\t\t\t\t\tvar attribute = geometry.attributes.position;\n\n\t\t\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\t\t\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\n\n\t\t\t\t\t\t\tscope.expandByPoint( v1 );\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\treturn function expandByObject( object ) {\n\n\t\t\tscope = this;\n\n\t\t\tobject.updateMatrixWorld( true );\n\n\t\t\tobject.traverse( traverse );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t},\n\n\tintersectsSphere: ( function () {\n\n\t\tvar closestPoint = new Vector3();\n\n\t\treturn function intersectsSphere( sphere ) {\n\n\t\t\t// Find the point on the AABB closest to the sphere center.\n\t\t\tthis.clampPoint( sphere.center, closestPoint );\n\n\t\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\t\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t\t};\n\n\t} )(),\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tvar min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t},\n\n\tintersectsTriangle: ( function () {\n\n\t\t// triangle centered vertices\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\t// triangle edge vectors\n\t\tvar f0 = new Vector3();\n\t\tvar f1 = new Vector3();\n\t\tvar f2 = new Vector3();\n\n\t\tvar testAxis = new Vector3();\n\n\t\tvar center = new Vector3();\n\t\tvar extents = new Vector3();\n\n\t\tvar triangleNormal = new Vector3();\n\n\t\tfunction satForAxes( axes ) {\n\n\t\t\tvar i, j;\n\n\t\t\tfor ( i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t\t\ttestAxis.fromArray( axes, i );\n\t\t\t\t// project the aabb onto the seperating axis\n\t\t\t\tvar r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z );\n\t\t\t\t// project all 3 vertices of the triangle onto the seperating axis\n\t\t\t\tvar p0 = v0.dot( testAxis );\n\t\t\t\tvar p1 = v1.dot( testAxis );\n\t\t\t\tvar p2 = v2.dot( testAxis );\n\t\t\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\t\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t\t\t// the axis is seperating and we can exit\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\treturn function intersectsTriangle( triangle ) {\n\n\t\t\tif ( this.isEmpty() ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// compute box center and extents\n\t\t\tthis.getCenter( center );\n\t\t\textents.subVectors( this.max, center );\n\n\t\t\t// translate triangle to aabb origin\n\t\t\tv0.subVectors( triangle.a, center );\n\t\t\tv1.subVectors( triangle.b, center );\n\t\t\tv2.subVectors( triangle.c, center );\n\n\t\t\t// compute edge vectors for triangle\n\t\t\tf0.subVectors( v1, v0 );\n\t\t\tf1.subVectors( v2, v1 );\n\t\t\tf2.subVectors( v0, v2 );\n\n\t\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\t\tvar axes = [\n\t\t\t\t0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y,\n\t\t\t\tf0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x,\n\t\t\t\t- f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0\n\t\t\t];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// test 3 face normals from the aabb\n\t\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\t\tif ( ! satForAxes( axes ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t\t// finally testing the face normal of the triangle\n\t\t\t// use already existing triangle edge vectors here\n\t\t\ttriangleNormal.crossVectors( f0, f1 );\n\t\t\taxes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ];\n\t\t\treturn satForAxes( axes );\n\n\t\t};\n\n\t} )(),\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tgetBoundingSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getBoundingSphere( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\n\t\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\n\n\t\t\t}\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( v1 ).length() * 0.5;\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar points = [\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3(),\n\t\t\tnew Vector3()\n\t\t];\n\n\t\treturn function applyMatrix4( matrix ) {\n\n\t\t\t// transform of empty box is an empty box.\n\t\t\tif ( this.isEmpty() ) return this;\n\n\t\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Sphere( center, radius ) {\n\n\tthis.center = ( center !== undefined ) ? center : new Vector3();\n\tthis.radius = ( radius !== undefined ) ? radius : 0;\n\n}\n\nObject.assign( Sphere.prototype, {\n\n\tset: function ( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function setFromPoints( points, optionalCenter ) {\n\n\t\t\tvar center = this.center;\n\n\t\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\t\tcenter.copy( optionalCenter );\n\n\t\t\t} else {\n\n\t\t\t\tbox.setFromPoints( points ).getCenter( center );\n\n\t\t\t}\n\n\t\t\tvar maxRadiusSq = 0;\n\n\t\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t\t}\n\n\t\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t},\n\n\tempty: function () {\n\n\t\treturn ( this.radius <= 0 );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tvar deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t},\n\n\tgetBoundingBox: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\n\t\t\ttarget = new Box3();\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Plane( normal, constant ) {\n\n\t// normal is assumed to be normalized\n\n\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\n\tthis.constant = ( constant !== undefined ) ? constant : 0;\n\n}\n\nObject.assign( Plane.prototype, {\n\n\tset: function ( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t},\n\n\tsetComponents: function ( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCoplanarPoints: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function setFromCoplanarPoints( a, b, c ) {\n\n\t\t\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\n\n\t\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t},\n\n\tnormalize: function () {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tvar inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t},\n\n\tnegate: function () {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t},\n\n\tdistanceToSphere: function ( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t},\n\n\tprojectPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t},\n\n\tintersectLine: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectLine( line, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar direction = line.delta( v1 );\n\n\t\t\tvar denominator = this.normal.dot( direction );\n\n\t\t\tif ( denominator === 0 ) {\n\n\t\t\t\t// line is coplanar, return origin\n\t\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\t\treturn target.copy( line.start );\n\n\t\t\t\t}\n\n\t\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t\t};\n\n\t}(),\n\n\tintersectsLine: function ( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tvar startSign = this.distanceToPoint( line.start );\n\t\tvar endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t},\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t},\n\n\tcoplanarPoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t},\n\n\tapplyMatrix4: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar m1 = new Matrix3();\n\n\t\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\t\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\n\n\t\t\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\n\n\t\t\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / http://clara.io\n */\n\nfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\n\n\tthis.planes = [\n\n\t\t( p0 !== undefined ) ? p0 : new Plane(),\n\t\t( p1 !== undefined ) ? p1 : new Plane(),\n\t\t( p2 !== undefined ) ? p2 : new Plane(),\n\t\t( p3 !== undefined ) ? p3 : new Plane(),\n\t\t( p4 !== undefined ) ? p4 : new Plane(),\n\t\t( p5 !== undefined ) ? p5 : new Plane()\n\n\t];\n\n}\n\nObject.assign( Frustum.prototype, {\n\n\tset: function ( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tvar planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( frustum ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromMatrix: function ( m ) {\n\n\t\tvar planes = this.planes;\n\t\tvar me = m.elements;\n\t\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\tintersectsObject: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsObject( 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\tsphere.copy( geometry.boundingSphere )\n\t\t\t\t.applyMatrix4( object.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSprite: function () {\n\n\t\tvar sphere = new Sphere();\n\n\t\treturn function intersectsSprite( sprite ) {\n\n\t\t\tsphere.center.set( 0, 0, 0 );\n\t\t\tsphere.radius = 0.7071067811865476;\n\t\t\tsphere.applyMatrix4( sprite.matrixWorld );\n\n\t\t\treturn this.intersectsSphere( sphere );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\tvar planes = this.planes;\n\t\tvar center = sphere.center;\n\t\tvar negRadius = - sphere.radius;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tvar distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tintersectsBox: function () {\n\n\t\tvar p = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\tvar planes = this.planes;\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tvar plane = planes[ i ];\n\n\t\t\t\t// corner at max distance\n\n\t\t\t\tp.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t\tp.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t\tp.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\t\tif ( plane.distanceToPoint( p ) < 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\tcontainsPoint: function ( point ) {\n\n\t\tvar planes = this.planes;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author philogb / http://blog.thejit.org/\n * @author jordi_ros / http://plattsoft.com\n * @author D1plo1d / http://github.com/D1plo1d\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author timknip / http://www.floorplanner.com/\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Matrix4() {\n\n\tthis.elements = [\n\n\t\t1, 0, 0, 0,\n\t\t0, 1, 0, 0,\n\t\t0, 0, 1, 0,\n\t\t0, 0, 0, 1\n\n\t];\n\n\tif ( arguments.length > 0 ) {\n\n\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\n\n\t}\n\n}\n\nObject.assign( Matrix4.prototype, {\n\n\tisMatrix4: true,\n\n\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t},\n\n\tidentity: function () {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t},\n\n\tcopy: function ( m ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t},\n\n\tcopyPosition: function ( m ) {\n\n\t\tvar te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t},\n\n\textractBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t},\n\n\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\textractRotation: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function extractRotation( m ) {\n\n\t\t\t// this method does not support reflection matrices\n\n\t\t\tvar te = this.elements;\n\t\t\tvar me = m.elements;\n\n\t\t\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\n\t\t\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\n\t\t\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\t\tte[ 3 ] = 0;\n\n\t\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\t\tte[ 7 ] = 0;\n\n\t\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\t\tte[ 11 ] = 0;\n\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}(),\n\n\tmakeRotationFromEuler: function ( euler ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\n\t\tvar x = euler.x, y = euler.y, z = euler.z;\n\t\tvar a = Math.cos( x ), b = Math.sin( x );\n\t\tvar c = Math.cos( y ), d = Math.sin( y );\n\t\tvar e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationFromQuaternion: function () {\n\n\t\tvar zero = new Vector3( 0, 0, 0 );\n\t\tvar one = new Vector3( 1, 1, 1 );\n\n\t\treturn function makeRotationFromQuaternion( q ) {\n\n\t\t\treturn this.compose( zero, q, one );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar x = new Vector3();\n\t\tvar y = new Vector3();\n\t\tvar z = new Vector3();\n\n\t\treturn function lookAt( eye, target, up ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tz.subVectors( eye, target );\n\n\t\t\tif ( z.lengthSq() === 0 ) {\n\n\t\t\t\t// eye and target are in the same position\n\n\t\t\t\tz.z = 1;\n\n\t\t\t}\n\n\t\t\tz.normalize();\n\t\t\tx.crossVectors( up, z );\n\n\t\t\tif ( x.lengthSq() === 0 ) {\n\n\t\t\t\t// up and z are parallel\n\n\t\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t\tz.x += 0.0001;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz.z += 0.0001;\n\n\t\t\t\t}\n\n\t\t\t\tz.normalize();\n\t\t\t\tx.crossVectors( up, z );\n\n\t\t\t}\n\n\t\t\tx.normalize();\n\t\t\ty.crossVectors( z, x );\n\n\t\t\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\n\t\t\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\n\t\t\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmultiply: function ( m, n ) {\n\n\t\tif ( n !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\n\t\t\treturn this.multiplyMatrices( m, n );\n\n\t\t}\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t},\n\n\tpremultiply: function ( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t},\n\n\tmultiplyMatrices: function ( a, b ) {\n\n\t\tvar ae = a.elements;\n\t\tvar be = b.elements;\n\t\tvar te = this.elements;\n\n\t\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tvar te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t},\n\n\tapplyToBufferAttribute: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function applyToBufferAttribute( attribute ) {\n\n\t\t\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\t\tv1.x = attribute.getX( i );\n\t\t\t\tv1.y = attribute.getY( i );\n\t\t\t\tv1.z = attribute.getZ( i );\n\n\t\t\t\tv1.applyMatrix4( this );\n\n\t\t\t\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\n\n\t\t\t}\n\n\t\t\treturn attribute;\n\n\t\t};\n\n\t}(),\n\n\tdeterminant: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t},\n\n\ttranspose: function () {\n\n\t\tvar te = this.elements;\n\t\tvar tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t},\n\n\tsetPosition: function ( x, y, z ) {\n\n\t\tvar te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetInverse: function ( m, throwOnDegenerate ) {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tvar te = this.elements,\n\t\t\tme = m.elements,\n\n\t\t\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\n\t\t\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\n\t\t\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\n\t\t\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) {\n\n\t\t\tvar msg = \"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\";\n\n\t\t\tif ( throwOnDegenerate === true ) {\n\n\t\t\t\tthrow new Error( msg );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( msg );\n\n\t\t\t}\n\n\t\t\treturn this.identity();\n\n\t\t}\n\n\t\tvar detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t},\n\n\tscale: function ( v ) {\n\n\t\tvar te = this.elements;\n\t\tvar x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxScaleOnAxis: function () {\n\n\t\tvar te = this.elements;\n\n\t\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t},\n\n\tmakeTranslation: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationX: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationY: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationZ: function ( theta ) {\n\n\t\tvar c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeRotationAxis: function ( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tvar c = Math.cos( angle );\n\t\tvar s = Math.sin( angle );\n\t\tvar t = 1 - c;\n\t\tvar x = axis.x, y = axis.y, z = axis.z;\n\t\tvar tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\t return this;\n\n\t},\n\n\tmakeScale: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tmakeShear: function ( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, y, z, 0,\n\t\t\tx, 1, z, 0,\n\t\t\tx, y, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t},\n\n\tcompose: function ( position, quaternion, scale ) {\n\n\t\tvar te = this.elements;\n\n\t\tvar x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tvar x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tvar xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tvar yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tvar wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tvar sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tdecompose: function () {\n\n\t\tvar vector = new Vector3();\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function decompose( position, quaternion, scale ) {\n\n\t\t\tvar te = this.elements;\n\n\t\t\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\t\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\t\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t\t// if determine is negative, we need to invert one scale\n\t\t\tvar det = this.determinant();\n\t\t\tif ( det < 0 ) sx = - sx;\n\n\t\t\tposition.x = te[ 12 ];\n\t\t\tposition.y = te[ 13 ];\n\t\t\tposition.z = te[ 14 ];\n\n\t\t\t// scale the rotation part\n\t\t\tmatrix.copy( this );\n\n\t\t\tvar invSX = 1 / sx;\n\t\t\tvar invSY = 1 / sy;\n\t\t\tvar invSZ = 1 / sz;\n\n\t\t\tmatrix.elements[ 0 ] *= invSX;\n\t\t\tmatrix.elements[ 1 ] *= invSX;\n\t\t\tmatrix.elements[ 2 ] *= invSX;\n\n\t\t\tmatrix.elements[ 4 ] *= invSY;\n\t\t\tmatrix.elements[ 5 ] *= invSY;\n\t\t\tmatrix.elements[ 6 ] *= invSY;\n\n\t\t\tmatrix.elements[ 8 ] *= invSZ;\n\t\t\tmatrix.elements[ 9 ] *= invSZ;\n\t\t\tmatrix.elements[ 10 ] *= invSZ;\n\n\t\t\tquaternion.setFromRotationMatrix( matrix );\n\n\t\t\tscale.x = sx;\n\t\t\tscale.y = sy;\n\t\t\tscale.z = sz;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tmakePerspective: function ( left, right, top, bottom, near, far ) {\n\n\t\tif ( far === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\n\n\t\t}\n\n\t\tvar te = this.elements;\n\t\tvar x = 2 * near / ( right - left );\n\t\tvar y = 2 * near / ( top - bottom );\n\n\t\tvar a = ( right + left ) / ( right - left );\n\t\tvar b = ( top + bottom ) / ( top - bottom );\n\t\tvar c = - ( far + near ) / ( far - near );\n\t\tvar d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t},\n\n\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\n\n\t\tvar te = this.elements;\n\t\tvar w = 1.0 / ( right - left );\n\t\tvar h = 1.0 / ( top - bottom );\n\t\tvar p = 1.0 / ( far - near );\n\n\t\tvar x = ( right + left ) * w;\n\t\tvar y = ( top + bottom ) * h;\n\t\tvar z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( matrix ) {\n\n\t\tvar te = this.elements;\n\t\tvar me = matrix.elements;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tfor ( var i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tvar te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n} );\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( 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\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\t\\tvarying vec3 vViewPosition;\\n\\t#endif\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#ifdef USE_COLOR\\n\\tvColor.xyz = color.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.14159265359\\n#define PI2 6.28318530718\\n#define PI_HALF 1.5707963267949\\n#define RECIPROCAL_PI 0.31830988618\\n#define RECIPROCAL_PI2 0.15915494\\n#define LOG2 1.442695\\n#define EPSILON 1e-6\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n#define cubeUV_textureSize (1024.0)\\nint getFaceFromDirection(vec3 direction) {\\n\\tvec3 absDirection = abs(direction);\\n\\tint face = -1;\\n\\tif( absDirection.x > absDirection.z ) {\\n\\t\\tif(absDirection.x > absDirection.y )\\n\\t\\t\\tface = direction.x > 0.0 ? 0 : 3;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\telse {\\n\\t\\tif(absDirection.z > absDirection.y )\\n\\t\\t\\tface = direction.z > 0.0 ? 2 : 5;\\n\\t\\telse\\n\\t\\t\\tface = direction.y > 0.0 ? 1 : 4;\\n\\t}\\n\\treturn face;\\n}\\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\n\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\n\\tfloat dxRoughness = dFdx(roughness);\\n\\tfloat dyRoughness = dFdy(roughness);\\n\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\n\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\n\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\n\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\n\\tfloat mipLevel = 0.5 * log2(d);\\n\\treturn vec2(floor(mipLevel), fract(mipLevel));\\n}\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\n\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\n\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\n\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\n\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\n\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\n\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\n\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\n\\tbool bRes = mipLevel == 0.0;\\n\\tscale = bRes && (scale < a) ? a : scale;\\n\\tvec3 r;\\n\\tvec2 offset;\\n\\tint face = getFaceFromDirection(direction);\\n\\tfloat rcpPowScale = 1.0 / powScale;\\n\\tif( face == 0) {\\n\\t\\tr = vec3(direction.x, -direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 1) {\\n\\t\\tr = vec3(direction.y, direction.x, direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 2) {\\n\\t\\tr = vec3(direction.z, direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\n\\t}\\n\\telse if( face == 3) {\\n\\t\\tr = vec3(direction.x, direction.z, direction.y);\\n\\t\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse if( face == 4) {\\n\\t\\tr = vec3(direction.y, direction.x, -direction.z);\\n\\t\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\telse {\\n\\t\\tr = vec3(direction.z, -direction.x, direction.y);\\n\\t\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\n\\t\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\n\\t}\\n\\tr = normalize(r);\\n\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\n\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\n\\tvec2 base = offset + vec2( texelOffset );\\n\\treturn base + s * ( scale - 2.0 * texelOffset );\\n}\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\\n\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\n\\tfloat r1 = floor(roughnessVal);\\n\\tfloat r2 = r1 + 1.0;\\n\\tfloat t = fract(roughnessVal);\\n\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\n\\tfloat s = mipInfo.y;\\n\\tfloat level0 = mipInfo.x;\\n\\tfloat level1 = level0 + 1.0;\\n\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\n\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\n\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\n\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\n\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\n\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\n\\tvec4 result = mix(color10, color20, t);\\n\\treturn vec4(result.rgb, 1.0);\\n}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = normalMatrix * objectNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = normalMatrix * objectTangent;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = min( floor( D ) / 255.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\tvec2 sampleUV;\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\tvec4 envColor = texture2D( envMap, sampleUV );\\n\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\treflectVec = normalize( reflectVec );\\n\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\n\\t\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_fragment = \"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\n\\tuniform float reflectivity;\\n\\tuniform float envMapIntensity;\\n#endif\\n#ifdef USE_ENVMAP\\n\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar 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\nvar 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\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = -mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef TOON\\n\\tuniform sampler2D gradientMap;\\n\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\t\\tfloat dotNL = dot( normal, lightDirection );\\n\\t\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t\\t#ifdef USE_GRADIENTMAP\\n\\t\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_pars_begin = \"uniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t\\tfloat shadowCameraNear;\\n\\t\\tfloat shadowCameraFar;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t\\tint shadow;\\n\\t\\tfloat shadowBias;\\n\\t\\tfloat shadowRadius;\\n\\t\\tvec2 shadowMapSize;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\\n\\t\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\n\\t\\t\\tvec2 sampleUV;\\n\\t\\t\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\t\\t\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_SPHERE )\\n\\t\\t\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tvec3\\tspecularColor;\\n\\tfloat\\tspecularShininess;\\n\\tfloat\\tspecularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifdef TOON\\n\\t\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#else\\n\\t\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\t\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#endif\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar 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\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3\\tdiffuseColor;\\n\\tfloat\\tspecularRoughness;\\n\\tvec3\\tspecularColor;\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoat;\\n\\t\\tfloat clearCoatRoughness;\\n\\t#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\n\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\t#endif\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifndef STANDARD\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\tfloat dotNL = dotNV;\\n\\t\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\n\\t#else\\n\\t\\tfloat clearCoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearCoatInv = 1.0 - clearCoatDHR;\\n\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec3 singleScattering = vec3( 0.0 );\\n\\t\\tvec3 multiScattering = vec3( 0.0 );\\n\\t\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\t\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\\n\\t\\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\\n\\t\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n\\t#else\\n\\t\\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\n\\t#endif\\n\\t#ifndef STANDARD\\n\\t\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\n\\t#endif\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = normalize( vViewPosition );\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#ifdef USE_SHADOWMAP\\n\\t\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearCoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#ifndef STANDARD\\n\\t\\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t#else\\n\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\tgl_Position.z *= gl_Position.w;\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#ifdef USE_MAP\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\";\n\nvar map_particle_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform mat3 uvTransform;\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal += ( 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\nvar 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\nvar 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\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t#ifdef FLIP_SIDED\\n\\t\\t\\tnormal = - normal;\\n\\t\\t#endif\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\tnormal = normalize( normalMatrix * normal );\\n\\t#else\\n\\t\\t#ifdef USE_TANGENT\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy = normalScale * mapN.xy;\\n\\t\\t\\tnormal = normalize( vTBN * mapN );\\n\\t\\t#else\\n\\t\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\n\\t\\t#endif\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n\\t#ifdef OBJECTSPACE_NORMALMAP\\n\\t\\tuniform mat3 normalMatrix;\\n\\t#else\\n\\t\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\n\\t\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\t\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t\\t\\tmapN.xy *= normalScale;\\n\\t\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\treturn normalize( tsn * mapN );\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#if defined( DITHERING )\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#if defined( DITHERING )\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\n\\t\\tconst vec2 offset = vec2( 0.0, 1.0 );\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / size;\\n\\t\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\n\\t\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\n\\t\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\n\\t\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\n\\t\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\n\\t\\tvec2 f = fract( uv * size + 0.5 );\\n\\t\\tfloat a = mix( lb, lt, f.y );\\n\\t\\tfloat b = mix( rb, rt, f.y );\\n\\t\\tfloat c = mix( a, b, f.x );\\n\\t\\treturn c;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar 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\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\n\\t}\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHTS > 0\\n\\tDirectionalLight directionalLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHTS > 0\\n\\tSpotLight spotLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#if NUM_POINT_LIGHTS > 0\\n\\tPointLight pointLight;\\n\\t#pragma unroll_loop\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nuniform float toneMappingWhitePoint;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\\n}\";\n\nvar 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\nvar uv_pars_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = uv2;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\n#endif\";\n\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nvar cube_frag = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\n\\t#endif\\n}\";\n\nvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV;\\n\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\n\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvLineDistance = scale * lineDistance;\\n\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_frag = \"#define PHYSICAL\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifndef STANDARD\\n\\tuniform float clearCoat;\\n\\tuniform float clearCoatRoughness;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar meshphysical_vert = \"#define PHYSICAL\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\n\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n}\";\n\nvar shadow_vert = \"#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nvar ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_frag: background_frag,\n\tbackground_vert: background_vert,\n\tcube_frag: cube_frag,\n\tcube_vert: cube_vert,\n\tdepth_frag: depth_frag,\n\tdepth_vert: depth_vert,\n\tdistanceRGBA_frag: distanceRGBA_frag,\n\tdistanceRGBA_vert: distanceRGBA_vert,\n\tequirect_frag: equirect_frag,\n\tequirect_vert: equirect_vert,\n\tlinedashed_frag: linedashed_frag,\n\tlinedashed_vert: linedashed_vert,\n\tmeshbasic_frag: meshbasic_frag,\n\tmeshbasic_vert: meshbasic_vert,\n\tmeshlambert_frag: meshlambert_frag,\n\tmeshlambert_vert: meshlambert_vert,\n\tmeshmatcap_frag: meshmatcap_frag,\n\tmeshmatcap_vert: meshmatcap_vert,\n\tmeshphong_frag: meshphong_frag,\n\tmeshphong_vert: meshphong_vert,\n\tmeshphysical_frag: meshphysical_frag,\n\tmeshphysical_vert: meshphysical_vert,\n\tnormal_frag: normal_frag,\n\tnormal_vert: normal_vert,\n\tpoints_frag: points_frag,\n\tpoints_vert: points_vert,\n\tshadow_frag: shadow_frag,\n\tshadow_vert: shadow_vert,\n\tsprite_frag: sprite_frag,\n\tsprite_vert: sprite_vert\n};\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tvar dst = {};\n\n\tfor ( var u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( var p in src[ u ] ) {\n\n\t\t\tvar property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tvar merged = {};\n\n\tfor ( var u = 0; u < uniforms.length; u ++ ) {\n\n\t\tvar tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( var p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\n// Legacy\n\nvar UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nfunction Color( r, g, b ) {\n\n\tif ( g === undefined && b === undefined ) {\n\n\t\t// r is THREE.Color, hex or string\n\t\treturn this.set( r );\n\n\t}\n\n\treturn this.setRGB( r, g, b );\n\n}\n\nObject.assign( Color.prototype, {\n\n\tisColor: true,\n\n\tr: 1, g: 1, b: 1,\n\n\tset: function ( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetScalar: function ( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t},\n\n\tsetHex: function ( hex ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\treturn this;\n\n\t},\n\n\tsetRGB: function ( r, g, b ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\treturn this;\n\n\t},\n\n\tsetHSL: function () {\n\n\t\tfunction hue2rgb( p, q, t ) {\n\n\t\t\tif ( t < 0 ) t += 1;\n\t\t\tif ( t > 1 ) t -= 1;\n\t\t\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\t\t\tif ( t < 1 / 2 ) return q;\n\t\t\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\t\t\treturn p;\n\n\t\t}\n\n\t\treturn function setHSL( h, s, l ) {\n\n\t\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\t\th = _Math.euclideanModulo( h, 1 );\n\t\t\ts = _Math.clamp( s, 0, 1 );\n\t\t\tl = _Math.clamp( l, 0, 1 );\n\n\t\t\tif ( s === 0 ) {\n\n\t\t\t\tthis.r = this.g = this.b = l;\n\n\t\t\t} else {\n\n\t\t\t\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\t\tvar q = ( 2 * l ) - p;\n\n\t\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetStyle: function ( style ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tvar color;\n\t\t\tvar name = m[ 1 ];\n\t\t\tvar components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^([0-9]*\\.?[0-9]+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(,\\s*([0-9]*\\.?[0-9]+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tvar h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tvar s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tvar l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 5 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tvar hex = m[ 1 ];\n\t\t\tvar size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\t// color keywords\n\t\t\tvar hex = ColorKeywords[ style ];\n\n\t\t\tif ( hex !== undefined ) {\n\n\t\t\t\t// red\n\t\t\t\tthis.setHex( hex );\n\n\t\t\t} else {\n\n\t\t\t\t// unknown color\n\t\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t},\n\n\tcopy: function ( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t},\n\n\tcopyGammaToLinear: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tthis.r = Math.pow( color.r, gammaFactor );\n\t\tthis.g = Math.pow( color.g, gammaFactor );\n\t\tthis.b = Math.pow( color.b, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopyLinearToGamma: function ( color, gammaFactor ) {\n\n\t\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\n\n\t\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\n\n\t\tthis.r = Math.pow( color.r, safeInverse );\n\t\tthis.g = Math.pow( color.g, safeInverse );\n\t\tthis.b = Math.pow( color.b, safeInverse );\n\n\t\treturn this;\n\n\t},\n\n\tconvertGammaToLinear: function ( gammaFactor ) {\n\n\t\tthis.copyGammaToLinear( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToGamma: function ( gammaFactor ) {\n\n\t\tthis.copyLinearToGamma( this, gammaFactor );\n\n\t\treturn this;\n\n\t},\n\n\tcopySRGBToLinear: function () {\n\n\t\tfunction SRGBToLinear( c ) {\n\n\t\t\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n\t\t}\n\n\t\treturn function copySRGBToLinear( color ) {\n\n\t\t\tthis.r = SRGBToLinear( color.r );\n\t\t\tthis.g = SRGBToLinear( color.g );\n\t\t\tthis.b = SRGBToLinear( color.b );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tcopyLinearToSRGB: function () {\n\n\t\tfunction LinearToSRGB( c ) {\n\n\t\t\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n\t\t}\n\n\t\treturn function copyLinearToSRGB( color ) {\n\n\t\t\tthis.r = LinearToSRGB( color.r );\n\t\t\tthis.g = LinearToSRGB( color.g );\n\t\t\tthis.b = LinearToSRGB( color.b );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tconvertSRGBToLinear: function () {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t},\n\n\tconvertLinearToSRGB: function () {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t},\n\n\tgetHex: function () {\n\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\n\n\t},\n\n\tgetHexString: function () {\n\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\n\n\t},\n\n\tgetHSL: function ( target ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\n\n\t\t}\n\n\t\tvar r = this.r, g = this.g, b = this.b;\n\n\t\tvar max = Math.max( r, g, b );\n\t\tvar min = Math.min( r, g, b );\n\n\t\tvar hue, saturation;\n\t\tvar lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tvar delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t},\n\n\tgetStyle: function () {\n\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\n\n\t},\n\n\toffsetHSL: function () {\n\n\t\tvar hsl = {};\n\n\t\treturn function ( h, s, l ) {\n\n\t\t\tthis.getHSL( hsl );\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}(),\n\n\tadd: function ( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t},\n\n\taddColors: function ( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t},\n\n\taddScalar: function ( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t},\n\n\tsub: function ( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t},\n\n\tmultiply: function ( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t},\n\n\tmultiplyScalar: function ( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t},\n\n\tlerpHSL: function () {\n\n\t\tvar hslA = { h: 0, s: 0, l: 0 };\n\t\tvar hslB = { h: 0, s: 0, l: 0 };\n\n\t\treturn function lerpHSL( color, alpha ) {\n\n\t\t\tthis.getHSL( hslA );\n\t\t\tcolor.getHSL( hslB );\n\n\t\t\tvar h = _Math.lerp( hslA.h, hslB.h, alpha );\n\t\t\tvar s = _Math.lerp( hslA.s, hslB.s, alpha );\n\t\t\tvar l = _Math.lerp( hslA.l, hslB.l, alpha );\n\n\t\t\tthis.setHSL( h, s, l );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t},\n\n\tfromArray: function ( array, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn this.getHex();\n\n\t}\n\n} );\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nvar UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() },\n\n\t\talphaMap: { value: null },\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 },\n\t\trefractionRatio: { value: 0.98 },\n\t\tmaxMipLevel: { value: 0 }\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {},\n\n\t\t\tshadow: {},\n\t\t\tshadowBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tuvTransform: { value: new Matrix3() }\n\n\t}\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n */\n\nvar ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 0.5 },\n\t\t\t\tmetalness: { value: 0.5 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.normal_vert,\n\t\tfragmentShader: ShaderChunk.normal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\t/* -------------------------------------------------------------------------\n\t//\tCube map shader\n\t ------------------------------------------------------------------------- */\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearCoat: { value: 0 },\n\t\t\tclearCoatRoughness: { value: 0 }\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAnimation() {\n\n\tvar context = null;\n\tvar isAnimating = false;\n\tvar animationLoop = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tif ( isAnimating === false ) return;\n\n\t\tanimationLoop( time, frame );\n\n\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\tcontext.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLAttributes( gl ) {\n\n\tvar buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar usage = attribute.dynamic ? 35048 : 35044;\n\n\t\tvar buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tvar type = 5126;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Float64Array ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\ttype = 5123;\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tvar array = attribute.array;\n\t\tvar updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( attribute.dynamic === false ) {\n\n\t\t\tgl.bufferData( bufferType, array, 35044 );\n\n\t\t} else if ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else if ( updateRange.count === 0 ) {\n\n\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} else {\n\n\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tvar data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Face3( a, b, c, normal, color, materialIndex ) {\n\n\tthis.a = a;\n\tthis.b = b;\n\tthis.c = c;\n\n\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\n\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\n\n\tthis.color = ( color && color.isColor ) ? color : new Color();\n\tthis.vertexColors = Array.isArray( color ) ? color : [];\n\n\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\n\n}\n\nObject.assign( Face3.prototype, {\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.a = source.a;\n\t\tthis.b = source.b;\n\t\tthis.c = source.c;\n\n\t\tthis.normal.copy( source.normal );\n\t\tthis.color.copy( source.color );\n\n\t\tthis.materialIndex = source.materialIndex;\n\n\t\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\n\n\t\t}\n\n\t\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\n\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author bhouston / http://clara.io\n */\n\nfunction Euler( x, y, z, order ) {\n\n\tthis._x = x || 0;\n\tthis._y = y || 0;\n\tthis._z = z || 0;\n\tthis._order = order || Euler.DefaultOrder;\n\n}\n\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nEuler.DefaultOrder = 'XYZ';\n\nObject.defineProperties( Euler.prototype, {\n\n\tx: {\n\n\t\tget: function () {\n\n\t\t\treturn this._x;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._x = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\ty: {\n\n\t\tget: function () {\n\n\t\t\treturn this._y;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._y = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\tz: {\n\n\t\tget: function () {\n\n\t\t\treturn this._z;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._z = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t},\n\n\torder: {\n\n\t\tget: function () {\n\n\t\t\treturn this._order;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tthis._order = value;\n\t\t\tthis.onChangeCallback();\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( Euler.prototype, {\n\n\tisEuler: true,\n\n\tset: function ( x, y, z, order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order || this._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t},\n\n\tcopy: function ( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromRotationMatrix: function ( m, order, update ) {\n\n\t\tvar clamp = _Math.clamp;\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tvar te = m.elements;\n\t\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\torder = order || this._order;\n\n\t\tif ( order === 'XYZ' ) {\n\n\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m13 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'YXZ' ) {\n\n\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m23 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\tthis._z = 0;\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZXY' ) {\n\n\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m32 ) < 0.99999 ) {\n\n\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._y = 0;\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'ZYX' ) {\n\n\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m31 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'YZX' ) {\n\n\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m21 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t}\n\n\t\t} else if ( order === 'XZY' ) {\n\n\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\tif ( Math.abs( m12 ) < 0.99999 ) {\n\n\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\tthis._y = 0;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update !== false ) this.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\tsetFromQuaternion: function () {\n\n\t\tvar matrix = new Matrix4();\n\n\t\treturn function setFromQuaternion( q, order, update ) {\n\n\t\t\tmatrix.makeRotationFromQuaternion( q );\n\n\t\t\treturn this.setFromRotationMatrix( matrix, order, update );\n\n\t\t};\n\n\t}(),\n\n\tsetFromVector3: function ( v, order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\n\n\t},\n\n\treorder: function () {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\tvar q = new Quaternion();\n\n\t\treturn function reorder( newOrder ) {\n\n\t\t\tq.setFromEuler( this );\n\n\t\t\treturn this.setFromQuaternion( q, newOrder );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis.onChangeCallback();\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function ( array, offset ) {\n\n\t\tif ( array === undefined ) array = [];\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t},\n\n\ttoVector3: function ( optionalResult ) {\n\n\t\tif ( optionalResult ) {\n\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\n\n\t\t} else {\n\n\t\t\treturn new Vector3( this._x, this._y, this._z );\n\n\t\t}\n\n\t},\n\n\tonChange: function ( callback ) {\n\n\t\tthis.onChangeCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tonChangeCallback: function () {}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Layers() {\n\n\tthis.mask = 1 | 0;\n\n}\n\nObject.assign( Layers.prototype, {\n\n\tset: function ( channel ) {\n\n\t\tthis.mask = 1 << channel | 0;\n\n\t},\n\n\tenable: function ( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t},\n\n\ttoggle: function ( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t},\n\n\tdisable: function ( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t},\n\n\ttest: function ( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author elephantatwork / www.elephantatwork.ch\n */\n\nvar object3DId = 0;\n\nfunction Object3D() {\n\n\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Object3D';\n\n\tthis.parent = null;\n\tthis.children = [];\n\n\tthis.up = Object3D.DefaultUp.clone();\n\n\tvar position = new Vector3();\n\tvar rotation = new Euler();\n\tvar quaternion = new Quaternion();\n\tvar scale = new Vector3( 1, 1, 1 );\n\n\tfunction onRotationChange() {\n\n\t\tquaternion.setFromEuler( rotation, false );\n\n\t}\n\n\tfunction onQuaternionChange() {\n\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t}\n\n\trotation.onChange( onRotationChange );\n\tquaternion.onChange( onQuaternionChange );\n\n\tObject.defineProperties( this, {\n\t\tposition: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: position\n\t\t},\n\t\trotation: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: rotation\n\t\t},\n\t\tquaternion: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: quaternion\n\t\t},\n\t\tscale: {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: scale\n\t\t},\n\t\tmodelViewMatrix: {\n\t\t\tvalue: new Matrix4()\n\t\t},\n\t\tnormalMatrix: {\n\t\t\tvalue: new Matrix3()\n\t\t}\n\t} );\n\n\tthis.matrix = new Matrix4();\n\tthis.matrixWorld = new Matrix4();\n\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\tthis.matrixWorldNeedsUpdate = false;\n\n\tthis.layers = new Layers();\n\tthis.visible = true;\n\n\tthis.castShadow = false;\n\tthis.receiveShadow = false;\n\n\tthis.frustumCulled = true;\n\tthis.renderOrder = 0;\n\n\tthis.userData = {};\n\n}\n\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Object3D,\n\n\tisObject3D: true,\n\n\tonBeforeRender: function () {},\n\tonAfterRender: function () {},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t},\n\n\tapplyQuaternion: function ( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t},\n\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t},\n\n\tsetRotationFromEuler: function ( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t},\n\n\tsetRotationFromMatrix: function ( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t},\n\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t},\n\n\trotateOnAxis: function () {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.multiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateOnWorldAxis: function () {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\tvar q1 = new Quaternion();\n\n\t\treturn function rotateOnWorldAxis( axis, angle ) {\n\n\t\t\tq1.setFromAxisAngle( axis, angle );\n\n\t\t\tthis.quaternion.premultiply( q1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\treturn this.rotateOnAxis( v1, angle );\n\n\t\t};\n\n\t}(),\n\n\ttranslateOnAxis: function () {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function translateOnAxis( axis, distance ) {\n\n\t\t\tv1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\t\tthis.position.add( v1.multiplyScalar( distance ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslateX: function () {\n\n\t\tvar v1 = new Vector3( 1, 0, 0 );\n\n\t\treturn function translateX( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateY: function () {\n\n\t\tvar v1 = new Vector3( 0, 1, 0 );\n\n\t\treturn function translateY( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\ttranslateZ: function () {\n\n\t\tvar v1 = new Vector3( 0, 0, 1 );\n\n\t\treturn function translateZ( distance ) {\n\n\t\t\treturn this.translateOnAxis( v1, distance );\n\n\t\t};\n\n\t}(),\n\n\tlocalToWorld: function ( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t},\n\n\tworldToLocal: function () {\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function worldToLocal( vector ) {\n\n\t\t\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tvar q1 = new Quaternion();\n\t\tvar m1 = new Matrix4();\n\t\tvar target = new Vector3();\n\t\tvar position = new Vector3();\n\n\t\treturn function lookAt( x, y, z ) {\n\n\t\t\tif ( x.isVector3 ) {\n\n\t\t\t\ttarget.copy( x );\n\n\t\t\t} else {\n\n\t\t\t\ttarget.set( x, y, z );\n\n\t\t\t}\n\n\t\t\tvar parent = this.parent;\n\n\t\t\tthis.updateWorldMatrix( true, false );\n\n\t\t\tposition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t\tm1.lookAt( position, target, this.up );\n\n\t\t\t} else {\n\n\t\t\t\tm1.lookAt( target, position, this.up );\n\n\t\t\t}\n\n\t\t\tthis.quaternion.setFromRotationMatrix( m1 );\n\n\t\t\tif ( parent ) {\n\n\t\t\t\tm1.extractRotation( parent.matrixWorld );\n\t\t\t\tq1.setFromRotationMatrix( m1 );\n\t\t\t\tthis.quaternion.premultiply( q1.inverse() );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tadd: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object can't be added as a child of itself.\", object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( ( object && object.isObject3D ) ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tobject.dispatchEvent( { type: 'added' } );\n\n\t\t\tthis.children.push( object );\n\n\t\t} else {\n\n\t\t\tconsole.error( \"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tremove: function ( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( var i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( { type: 'removed' } );\n\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tattach: function () {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\tvar m = new Matrix4();\n\n\t\treturn function attach( object ) {\n\n\t\t\tthis.updateWorldMatrix( true, false );\n\n\t\t\tm.getInverse( this.matrixWorld );\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t\tm.multiply( object.parent.matrixWorld );\n\n\t\t\t}\n\n\t\t\tobject.applyMatrix( m );\n\n\t\t\tobject.updateWorldMatrix( false, false );\n\n\t\t\tthis.add( object );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tgetObjectById: function ( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t},\n\n\tgetObjectByName: function ( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t},\n\n\tgetObjectByProperty: function ( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tvar child = this.children[ i ];\n\t\t\tvar object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t},\n\n\tgetWorldPosition: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t},\n\n\tgetWorldQuaternion: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar scale = new Vector3();\n\n\t\treturn function getWorldQuaternion( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\n\t\t\t\ttarget = new Quaternion();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, target, scale );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldScale: function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\n\t\treturn function getWorldScale( target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, target );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t},\n\n\traycast: function () {},\n\n\ttraverse: function ( callback ) {\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseVisible: function ( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t},\n\n\ttraverseAncestors: function ( callback ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t},\n\n\tupdateMatrix: function () {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tvar children = this.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t},\n\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\n\n\t\tvar parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\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 ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tvar output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tvar object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode;\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tvar parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tvar shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tvar shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tvar uuids = [];\n\n\t\t\t\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( var i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tvar geometries = extractFromCache( meta.geometries );\n\t\t\tvar materials = extractFromCache( meta.materials );\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\t\t\tvar shapes = extractFromCache( meta.shapes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\t\t\treturn values;\n\n\t\t}\n\n\t},\n\n\tclone: function ( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t},\n\n\tcopy: function ( source, recursive ) {\n\n\t\tif ( recursive === undefined ) recursive = true;\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( var i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tvar child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author kile / http://kile.stravaganza.org/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author bhouston / http://clara.io\n */\n\nvar geometryId = 0; // Geometry uses even numbers as Id\n\nfunction Geometry() {\n\n\tObject.defineProperty( this, 'id', { value: geometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Geometry';\n\n\tthis.vertices = [];\n\tthis.colors = [];\n\tthis.faces = [];\n\tthis.faceVertexUvs = [[]];\n\n\tthis.morphTargets = [];\n\tthis.morphNormals = [];\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\tthis.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.elementsNeedUpdate = false;\n\tthis.verticesNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.lineDistancesNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Geometry,\n\n\tisGeometry: true,\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertex.applyMatrix4( matrix );\n\n\t\t}\n\n\t\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.verticesNeedUpdate = true;\n\t\tthis.normalsNeedUpdate = true;\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tfromBufferGeometry: function ( geometry ) {\n\n\t\tvar scope = this;\n\n\t\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\n\t\tvar attributes = geometry.attributes;\n\n\t\tvar positions = attributes.position.array;\n\t\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\n\t\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\n\t\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\n\t\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\n\n\t\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\n\n\t\tfor ( var i = 0; i < positions.length; i += 3 ) {\n\n\t\t\tscope.vertices.push( new Vector3().fromArray( positions, i ) );\n\n\t\t\tif ( colors !== undefined ) {\n\n\t\t\t\tscope.colors.push( new Color().fromArray( colors, i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction addFace( a, b, c, materialIndex ) {\n\n\t\t\tvar vertexColors = ( colors === undefined ) ? [] : [\n\t\t\t\tscope.colors[ a ].clone(),\n\t\t\t\tscope.colors[ b ].clone(),\n\t\t\t\tscope.colors[ c ].clone() ];\n\n\t\t\tvar vertexNormals = ( normals === undefined ) ? [] : [\n\t\t\t\tnew Vector3().fromArray( normals, a * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, b * 3 ),\n\t\t\t\tnew Vector3().fromArray( normals, c * 3 )\n\t\t\t];\n\n\t\t\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\n\n\t\t\tscope.faces.push( face );\n\n\t\t\tif ( uvs !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t\tif ( uvs2 !== undefined ) {\n\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\n\t\t\t\t\tnew Vector2().fromArray( uvs2, a * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, b * 2 ),\n\t\t\t\t\tnew Vector2().fromArray( uvs2, c * 2 )\n\t\t\t\t] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = geometry.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tfor ( var i = 0; i < groups.length; i ++ ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tvar start = group.start;\n\t\t\t\tvar count = group.count;\n\n\t\t\t\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\t\t\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( indices !== undefined ) {\n\n\t\t\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\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}\n\n\t\tthis.computeFaceNormals();\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tnormalize: function () {\n\n\t\tthis.computeBoundingSphere();\n\n\t\tvar center = this.boundingSphere.center;\n\t\tvar radius = this.boundingSphere.radius;\n\n\t\tvar s = radius === 0 ? 1 : 1.0 / radius;\n\n\t\tvar matrix = new Matrix4();\n\t\tmatrix.set(\n\t\t\ts, 0, 0, - s * center.x,\n\t\t\t0, s, 0, - s * center.y,\n\t\t\t0, 0, s, - s * center.z,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\tthis.applyMatrix( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tcomputeFaceNormals: function () {\n\n\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tvar face = this.faces[ f ];\n\n\t\t\tvar vA = this.vertices[ face.a ];\n\t\t\tvar vB = this.vertices[ face.b ];\n\t\t\tvar vC = this.vertices[ face.c ];\n\n\t\t\tcb.subVectors( vC, vB );\n\t\t\tab.subVectors( vA, vB );\n\t\t\tcb.cross( ab );\n\n\t\t\tcb.normalize();\n\n\t\t\tface.normal.copy( cb );\n\n\t\t}\n\n\t},\n\n\tcomputeVertexNormals: function ( areaWeighted ) {\n\n\t\tif ( areaWeighted === undefined ) areaWeighted = true;\n\n\t\tvar v, vl, f, fl, face, vertices;\n\n\t\tvertices = new Array( this.vertices.length );\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ] = new Vector3();\n\n\t\t}\n\n\t\tif ( areaWeighted ) {\n\n\t\t\t// vertex normals weighted by triangle areas\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\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\tvA = this.vertices[ face.a ];\n\t\t\t\tvB = this.vertices[ face.b ];\n\t\t\t\tvC = this.vertices[ face.c ];\n\n\t\t\t\tcb.subVectors( vC, vB );\n\t\t\t\tab.subVectors( vA, vB );\n\t\t\t\tcb.cross( ab );\n\n\t\t\t\tvertices[ face.a ].add( cb );\n\t\t\t\tvertices[ face.b ].add( cb );\n\t\t\t\tvertices[ face.c ].add( cb );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.computeFaceNormals();\n\n\t\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\t\tface = this.faces[ f ];\n\n\t\t\t\tvertices[ face.a ].add( face.normal );\n\t\t\t\tvertices[ face.b ].add( face.normal );\n\t\t\t\tvertices[ face.c ].add( face.normal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\n\n\t\t\tvertices[ v ].normalize();\n\n\t\t}\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeFlatVertexNormals: function () {\n\n\t\tvar f, fl, face;\n\n\t\tthis.computeFaceNormals();\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\n\n\t\t\t} else {\n\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.faces.length > 0 ) {\n\n\t\t\tthis.normalsNeedUpdate = true;\n\n\t\t}\n\n\t},\n\n\tcomputeMorphNormals: function () {\n\n\t\tvar i, il, f, fl, face;\n\n\t\t// save original normals\n\t\t// - create temp variables on first access\n\t\t// otherwise just copy (for faster repeated calls)\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tif ( ! face.__originalFaceNormal ) {\n\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\n\n\t\t\t} else {\n\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\n\n\t\t\t}\n\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\n\n\t\t\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\n\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\n\n\t\t\t\t} else {\n\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// use temp geometry to compute face and vertex normals for each morph\n\n\t\tvar tmpGeo = new Geometry();\n\t\ttmpGeo.faces = this.faces;\n\n\t\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\n\n\t\t\t// create on first access\n\n\t\t\tif ( ! this.morphNormals[ i ] ) {\n\n\t\t\t\tthis.morphNormals[ i ] = {};\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\n\n\t\t\t\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\n\t\t\t\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\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\tfaceNormal = new Vector3();\n\t\t\t\t\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\n\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar morphNormals = this.morphNormals[ i ];\n\n\t\t\t// set vertices to morph target\n\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\n\n\t\t\t// compute morph normals\n\n\t\t\ttmpGeo.computeFaceNormals();\n\t\t\ttmpGeo.computeVertexNormals();\n\n\t\t\t// store morph normals\n\n\t\t\tvar faceNormal, vertexNormals;\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\tfaceNormal = morphNormals.faceNormals[ f ];\n\t\t\t\tvertexNormals = morphNormals.vertexNormals[ f ];\n\n\t\t\t\tfaceNormal.copy( face.normal );\n\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// restore original normals\n\n\t\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\n\n\t\t\tface = this.faces[ f ];\n\n\t\t\tface.normal = face.__originalFaceNormal;\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\n\n\t\t}\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.setFromPoints( this.vertices );\n\n\t},\n\n\tcomputeBoundingSphere: function () {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\n\n\t},\n\n\tmerge: function ( geometry, matrix, materialIndexOffset ) {\n\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\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\t\t\tcolors1 = this.colors,\n\t\t\tcolors2 = geometry.colors;\n\n\t\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\n\n\t\tif ( matrix !== undefined ) {\n\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t}\n\n\t\t// vertices\n\n\t\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\n\n\t\t\tvar vertex = vertices2[ i ];\n\n\t\t\tvar vertexCopy = vertex.clone();\n\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\n\n\t\t\tvertices1.push( vertexCopy );\n\n\t\t}\n\n\t\t// colors\n\n\t\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\n\n\t\t\tcolors1.push( colors2[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\n\n\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\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\n\t\t\tfaceCopy.normal.copy( face.normal );\n\n\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\n\n\t\t\t\tif ( normalMatrix !== undefined ) {\n\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\n\n\t\t\t\t}\n\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\n\n\t\t\t}\n\n\t\t\tfaceCopy.color.copy( face.color );\n\n\t\t\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\n\n\t\t\t\tcolor = faceVertexColors[ j ];\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\n\n\t\t\t}\n\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\n\n\t\t\tfaces1.push( faceCopy );\n\n\t\t}\n\n\t\t// uvs\n\n\t\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\n\n\t\t\tvar uv = uvs2[ i ], uvCopy = [];\n\n\t\t\tif ( uv === undefined ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\n\n\t\t\t\tuvCopy.push( uv[ j ].clone() );\n\n\t\t\t}\n\n\t\t\tuvs1.push( uvCopy );\n\n\t\t}\n\n\t},\n\n\tmergeMesh: function ( mesh ) {\n\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\n\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\n\n\t\tthis.merge( mesh.geometry, mesh.matrix );\n\n\t},\n\n\t/*\n\t * Checks for duplicate vertices with hashmap.\n\t * Duplicated vertices are removed\n\t * and faces' vertices are updated.\n\t */\n\n\tmergeVertices: function () {\n\n\t\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n\t\tvar unique = [], changes = [];\n\n\t\tvar v, key;\n\t\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n\t\tvar precision = Math.pow( 10, precisionPoints );\n\t\tvar i, il, face;\n\t\tvar indices, j, jl;\n\n\t\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\n\n\t\t\tv = this.vertices[ i ];\n\t\t\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\n\n\t\t\tif ( verticesMap[ key ] === undefined ) {\n\n\t\t\t\tverticesMap[ key ] = i;\n\t\t\t\tunique.push( this.vertices[ i ] );\n\t\t\t\tchanges[ i ] = unique.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// if faces are completely degenerate after merging vertices, we\n\t\t// have to remove them from the geometry.\n\t\tvar faceIndicesToRemove = [];\n\n\t\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\n\n\t\t\tface = this.faces[ i ];\n\n\t\t\tface.a = changes[ face.a ];\n\t\t\tface.b = changes[ face.b ];\n\t\t\tface.c = changes[ face.c ];\n\n\t\t\tindices = [ face.a, face.b, face.c ];\n\n\t\t\t// if any duplicate vertices are found in a Face3\n\t\t\t// we have to remove the face as nothing can be saved\n\t\t\tfor ( var n = 0; n < 3; n ++ ) {\n\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\n\n\t\t\t\t\tfaceIndicesToRemove.push( i );\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\n\n\t\t\tvar idx = faceIndicesToRemove[ i ];\n\n\t\t\tthis.faces.splice( idx, 1 );\n\n\t\t\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Use unique set of vertices\n\n\t\tvar diff = this.vertices.length - unique.length;\n\t\tthis.vertices = unique;\n\t\treturn diff;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.vertices = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsortFacesByMaterialIndex: function () {\n\n\t\tvar faces = this.faces;\n\t\tvar length = faces.length;\n\n\t\t// tag faces\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tfaces[ i ]._id = i;\n\n\t\t}\n\n\t\t// sort faces\n\n\t\tfunction materialIndexSort( a, b ) {\n\n\t\t\treturn a.materialIndex - b.materialIndex;\n\n\t\t}\n\n\t\tfaces.sort( materialIndexSort );\n\n\t\t// sort uvs\n\n\t\tvar uvs1 = this.faceVertexUvs[ 0 ];\n\t\tvar uvs2 = this.faceVertexUvs[ 1 ];\n\n\t\tvar newUvs1, newUvs2;\n\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar id = faces[ i ]._id;\n\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\n\n\t\t}\n\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Geometry',\n\t\t\t\tgenerator: 'Geometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Geometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tvar vertices = [];\n\n\t\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\n\n\t\t\tvar vertex = this.vertices[ i ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tvar faces = [];\n\t\tvar normals = [];\n\t\tvar normalsHash = {};\n\t\tvar colors = [];\n\t\tvar colorsHash = {};\n\t\tvar uvs = [];\n\t\tvar uvsHash = {};\n\n\t\tfor ( var i = 0; i < this.faces.length; i ++ ) {\n\n\t\t\tvar face = this.faces[ i ];\n\n\t\t\tvar hasMaterial = true;\n\t\t\tvar hasFaceUv = false; // deprecated\n\t\t\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\n\t\t\tvar hasFaceNormal = face.normal.length() > 0;\n\t\t\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\n\t\t\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\n\t\t\tvar hasFaceVertexColor = face.vertexColors.length > 0;\n\n\t\t\tvar faceType = 0;\n\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\n\n\t\t\tfaces.push( faceType );\n\t\t\tfaces.push( face.a, face.b, face.c );\n\t\t\tfaces.push( face.materialIndex );\n\n\t\t\tif ( hasFaceVertexUv ) {\n\n\t\t\t\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceNormal ) {\n\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexNormal ) {\n\n\t\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t\tif ( hasFaceColor ) {\n\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexColor ) {\n\n\t\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\t\tfaces.push(\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction setBit( value, position, enabled ) {\n\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\n\n\t\t}\n\n\t\tfunction getNormalIndex( normal ) {\n\n\t\t\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\n\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn normalsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\treturn normalsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getColorIndex( color ) {\n\n\t\t\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\n\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn colorsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tcolorsHash[ hash ] = colors.length;\n\t\t\tcolors.push( color.getHex() );\n\n\t\t\treturn colorsHash[ hash ];\n\n\t\t}\n\n\t\tfunction getUvIndex( uv ) {\n\n\t\t\tvar hash = uv.x.toString() + uv.y.toString();\n\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\n\n\t\t\t\treturn uvsHash[ hash ];\n\n\t\t\t}\n\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\treturn uvsHash[ hash ];\n\n\t\t}\n\n\t\tdata.data = {};\n\n\t\tdata.data.vertices = vertices;\n\t\tdata.data.normals = normals;\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\n\t\tdata.data.faces = faces;\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new Geometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar i, il, j, jl, k, kl;\n\n\t\t// reset\n\n\t\tthis.vertices = [];\n\t\tthis.colors = [];\n\t\tthis.faces = [];\n\t\tthis.faceVertexUvs = [[]];\n\t\tthis.morphTargets = [];\n\t\tthis.morphNormals = [];\n\t\tthis.skinWeights = [];\n\t\tthis.skinIndices = [];\n\t\tthis.lineDistances = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// vertices\n\n\t\tvar vertices = source.vertices;\n\n\t\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\n\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\n\n\t\t}\n\n\t\t// colors\n\n\t\tvar colors = source.colors;\n\n\t\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\n\n\t\t\tthis.colors.push( colors[ i ].clone() );\n\n\t\t}\n\n\t\t// faces\n\n\t\tvar faces = source.faces;\n\n\t\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\n\n\t\t\tthis.faces.push( faces[ i ].clone() );\n\n\t\t}\n\n\t\t// face vertex uvs\n\n\t\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\n\n\t\t\tvar faceVertexUvs = source.faceVertexUvs[ i ];\n\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\n\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\n\n\t\t\t\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\n\n\t\t\t\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\n\n\t\t\t\t\tvar uv = uvs[ k ];\n\n\t\t\t\t\tuvsCopy.push( uv.clone() );\n\n\t\t\t\t}\n\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphTargets = source.morphTargets;\n\n\t\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = {};\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\n\n\t\t\t// vertices\n\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\n\n\t\t\t\tmorphTarget.vertices = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// normals\n\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\n\n\t\t\t\tmorphTarget.normals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.push( morphTarget );\n\n\t\t}\n\n\t\t// morph normals\n\n\t\tvar morphNormals = source.morphNormals;\n\n\t\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\n\n\t\t\tvar morphNormal = {};\n\n\t\t\t// vertex normals\n\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.vertexNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\n\t\t\t\t\tvar destVertexNormal = {};\n\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\n\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// face normals\n\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\n\n\t\t\t\tmorphNormal.faceNormals = [];\n\n\t\t\t\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.morphNormals.push( morphNormal );\n\n\t\t}\n\n\t\t// skin weights\n\n\t\tvar skinWeights = source.skinWeights;\n\n\t\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\n\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\n\n\t\t}\n\n\t\t// skin indices\n\n\t\tvar skinIndices = source.skinIndices;\n\n\t\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\n\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\n\n\t\t}\n\n\t\t// line distances\n\n\t\tvar lineDistances = source.lineDistances;\n\n\t\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\n\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// update flags\n\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferAttribute( array, itemSize, normalized ) {\n\n\tif ( Array.isArray( array ) ) {\n\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t}\n\n\tthis.name = '';\n\n\tthis.array = array;\n\tthis.itemSize = itemSize;\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\tthis.normalized = normalized === true;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( BufferAttribute.prototype, {\n\n\tisBufferAttribute: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyArray: function ( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t},\n\n\tcopyColorsArray: function ( colors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tvar color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector2sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector3sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcopyVector4sArray: function ( vectors ) {\n\n\t\tvar array = this.array, offset = 0;\n\n\t\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tvar vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t},\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\treturn {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.prototype.slice.call( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t}\n\n} );\n\n//\n\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\n\n}\n\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\n\n\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\n\n}\n\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\n\n\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\n\n}\n\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\n\n\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\n\n}\n\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\n\n\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\n\n}\n\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\n\n\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\n\n}\n\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\n\n\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\n\n}\n\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\n\n\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\n\n}\n\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\n\n\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\n\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\n\n}\n\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectGeometry() {\n\n\tthis.vertices = [];\n\tthis.normals = [];\n\tthis.colors = [];\n\tthis.uvs = [];\n\tthis.uvs2 = [];\n\n\tthis.groups = [];\n\n\tthis.morphTargets = {};\n\n\tthis.skinWeights = [];\n\tthis.skinIndices = [];\n\n\t// this.lineDistances = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\t// update flags\n\n\tthis.verticesNeedUpdate = false;\n\tthis.normalsNeedUpdate = false;\n\tthis.colorsNeedUpdate = false;\n\tthis.uvsNeedUpdate = false;\n\tthis.groupsNeedUpdate = false;\n\n}\n\nObject.assign( DirectGeometry.prototype, {\n\n\tcomputeGroups: function ( geometry ) {\n\n\t\tvar group;\n\t\tvar groups = [];\n\t\tvar materialIndex = undefined;\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\t// materials\n\n\t\t\tif ( face.materialIndex !== materialIndex ) {\n\n\t\t\t\tmaterialIndex = face.materialIndex;\n\n\t\t\t\tif ( group !== undefined ) {\n\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\t\t\tgroups.push( group );\n\n\t\t\t\t}\n\n\t\t\t\tgroup = {\n\t\t\t\t\tstart: i * 3,\n\t\t\t\t\tmaterialIndex: materialIndex\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( group !== undefined ) {\n\n\t\t\tgroup.count = ( i * 3 ) - group.start;\n\t\t\tgroups.push( group );\n\n\t\t}\n\n\t\tthis.groups = groups;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tvar faces = geometry.faces;\n\t\tvar vertices = geometry.vertices;\n\t\tvar faceVertexUvs = geometry.faceVertexUvs;\n\n\t\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\n\t\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\n\n\t\t// morphs\n\n\t\tvar morphTargets = geometry.morphTargets;\n\t\tvar morphTargetsLength = morphTargets.length;\n\n\t\tvar morphTargetsPosition;\n\n\t\tif ( morphTargetsLength > 0 ) {\n\n\t\t\tmorphTargetsPosition = [];\n\n\t\t\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsPosition[ i ] = {\n\t\t\t\t\tname: morphTargets[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\n\n\t\t}\n\n\t\tvar morphNormals = geometry.morphNormals;\n\t\tvar morphNormalsLength = morphNormals.length;\n\n\t\tvar morphTargetsNormal;\n\n\t\tif ( morphNormalsLength > 0 ) {\n\n\t\t\tmorphTargetsNormal = [];\n\n\t\t\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\n\n\t\t\t\tmorphTargetsNormal[ i ] = {\n\t\t\t\t\tname: morphNormals[ i ].name,\n\t\t\t\t \tdata: []\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\n\n\t\t}\n\n\t\t// skins\n\n\t\tvar skinIndices = geometry.skinIndices;\n\t\tvar skinWeights = geometry.skinWeights;\n\n\t\tvar hasSkinIndices = skinIndices.length === vertices.length;\n\t\tvar hasSkinWeights = skinWeights.length === vertices.length;\n\n\t\t//\n\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\n\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < faces.length; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\n\n\t\t\tvar vertexNormals = face.vertexNormals;\n\n\t\t\tif ( vertexNormals.length === 3 ) {\n\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar normal = face.normal;\n\n\t\t\t\tthis.normals.push( normal, normal, normal );\n\n\t\t\t}\n\n\t\t\tvar vertexColors = face.vertexColors;\n\n\t\t\tif ( vertexColors.length === 3 ) {\n\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\n\n\t\t\t} else {\n\n\t\t\t\tvar color = face.color;\n\n\t\t\t\tthis.colors.push( color, color, color );\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\n\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasFaceVertexUv2 === true ) {\n\n\t\t\t\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\n\n\t\t\t\tif ( vertexUvs !== undefined ) {\n\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\n\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// morphs\n\n\t\t\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ j ].vertices;\n\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\n\n\t\t\t}\n\n\t\t\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\n\n\t\t\t\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\n\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\n\n\t\t\t}\n\n\t\t\t// skins\n\n\t\t\tif ( hasSkinIndices ) {\n\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\n\n\t\t\t}\n\n\t\t\tif ( hasSkinWeights ) {\n\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.computeGroups( geometry );\n\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction arrayMax( array ) {\n\n\tif ( array.length === 0 ) return - Infinity;\n\n\tvar max = array[ 0 ];\n\n\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\n\n\t\tif ( array[ i ] > max ) max = array[ i ];\n\n\t}\n\n\treturn max;\n\n}\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\n\nfunction BufferGeometry() {\n\n\tObject.defineProperty( this, 'id', { value: bufferGeometryId += 2 } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'BufferGeometry';\n\n\tthis.index = null;\n\tthis.attributes = {};\n\n\tthis.morphAttributes = {};\n\n\tthis.groups = [];\n\n\tthis.boundingBox = null;\n\tthis.boundingSphere = null;\n\n\tthis.drawRange = { start: 0, count: Infinity };\n\n\tthis.userData = {};\n\n}\n\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: BufferGeometry,\n\n\tisBufferGeometry: true,\n\n\tgetIndex: function () {\n\n\t\treturn this.index;\n\n\t},\n\n\tsetIndex: function ( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t},\n\n\taddAttribute: function ( name, attribute ) {\n\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\n\n\t\t\treturn this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\n\n\t\t}\n\n\t\tif ( name === 'index' ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\n\t\t\tthis.setIndex( attribute );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t},\n\n\tgetAttribute: function ( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t},\n\n\tremoveAttribute: function ( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t},\n\n\taddGroup: function ( start, count, materialIndex ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\n\n\t\t} );\n\n\t},\n\n\tclearGroups: function () {\n\n\t\tthis.groups = [];\n\n\t},\n\n\tsetDrawRange: function ( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t},\n\n\tapplyMatrix: function ( matrix ) {\n\n\t\tvar position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tmatrix.applyToBufferAttribute( position );\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tvar normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormalMatrix.applyToBufferAttribute( normal );\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tvar tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\t// Tangent is vec4, but the '.w' component is a sign value (+1/-1).\n\t\t\tnormalMatrix.applyToBufferAttribute( tangent );\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\trotateX: function () {\n\n\t\t// rotate geometry around world x-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateX( angle ) {\n\n\t\t\tm1.makeRotationX( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateY: function () {\n\n\t\t// rotate geometry around world y-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateY( angle ) {\n\n\t\t\tm1.makeRotationY( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\trotateZ: function () {\n\n\t\t// rotate geometry around world z-axis\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function rotateZ( angle ) {\n\n\t\t\tm1.makeRotationZ( angle );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\ttranslate: function () {\n\n\t\t// translate geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function translate( x, y, z ) {\n\n\t\t\tm1.makeTranslation( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tscale: function () {\n\n\t\t// scale geometry\n\n\t\tvar m1 = new Matrix4();\n\n\t\treturn function scale( x, y, z ) {\n\n\t\t\tm1.makeScale( x, y, z );\n\n\t\t\tthis.applyMatrix( m1 );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tlookAt: function () {\n\n\t\tvar obj = new Object3D();\n\n\t\treturn function lookAt( vector ) {\n\n\t\t\tobj.lookAt( vector );\n\n\t\t\tobj.updateMatrix();\n\n\t\t\tthis.applyMatrix( obj.matrix );\n\n\t\t};\n\n\t}(),\n\n\tcenter: function () {\n\n\t\tvar offset = new Vector3();\n\n\t\treturn function center() {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t\tthis.boundingBox.getCenter( offset ).negate();\n\n\t\t\tthis.translate( offset.x, offset.y, offset.z );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tsetFromObject: function ( object ) {\n\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isPoints || object.isLine ) {\n\n\t\t\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\n\t\t\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\n\n\t\t\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\n\t\t\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\n\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\n\n\t\t\t\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\n\n\t\t\t\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t\t}\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t\t}\n\n\t\t} else if ( object.isMesh ) {\n\n\t\t\tif ( geometry && geometry.isGeometry ) {\n\n\t\t\t\tthis.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tvar position = [];\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t},\n\n\tupdateFromObject: function ( object ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tvar direct = geometry.__directGeometry;\n\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\n\n\t\t\t\tdirect = undefined;\n\t\t\t\tgeometry.elementsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( direct === undefined ) {\n\n\t\t\t\treturn this.fromGeometry( geometry );\n\n\t\t\t}\n\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\t\t\tgeometry.normalsNeedUpdate = false;\n\t\t\tgeometry.colorsNeedUpdate = false;\n\t\t\tgeometry.uvsNeedUpdate = false;\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t\tgeometry = direct;\n\n\t\t}\n\n\t\tvar attribute;\n\n\t\tif ( geometry.verticesNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.position;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.verticesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.normalsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.normal;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.normalsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.colorsNeedUpdate === true ) {\n\n\t\t\tattribute = this.attributes.color;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.colorsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.uvsNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.uv;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.uvsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\n\n\t\t\tattribute = this.attributes.lineDistance;\n\n\t\t\tif ( attribute !== undefined ) {\n\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\n\t\t\t\tattribute.needsUpdate = true;\n\n\t\t\t}\n\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( geometry.groupsNeedUpdate ) {\n\n\t\t\tgeometry.computeGroups( object.geometry );\n\t\t\tthis.groups = geometry.groups;\n\n\t\t\tgeometry.groupsNeedUpdate = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tfromGeometry: function ( geometry ) {\n\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\n\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\n\n\t},\n\n\tfromDirectGeometry: function ( geometry ) {\n\n\t\tvar positions = new Float32Array( geometry.vertices.length * 3 );\n\t\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\n\n\t\tif ( geometry.normals.length > 0 ) {\n\n\t\t\tvar normals = new Float32Array( geometry.normals.length * 3 );\n\t\t\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\n\n\t\t}\n\n\t\tif ( geometry.colors.length > 0 ) {\n\n\t\t\tvar colors = new Float32Array( geometry.colors.length * 3 );\n\t\t\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs.length > 0 ) {\n\n\t\t\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\n\t\t\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\n\n\t\t}\n\n\t\tif ( geometry.uvs2.length > 0 ) {\n\n\t\t\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\n\t\t\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\n\n\t\t}\n\n\t\t// groups\n\n\t\tthis.groups = geometry.groups;\n\n\t\t// morphs\n\n\t\tfor ( var name in geometry.morphTargets ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphTargets = geometry.morphTargets[ name ];\n\n\t\t\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\n\n\t\t\t\tvar morphTarget = morphTargets[ i ];\n\n\t\t\t\tvar attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\n\t\t\t\tattribute.name = morphTarget.name;\n\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// skinning\n\n\t\tif ( geometry.skinIndices.length > 0 ) {\n\n\t\t\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\n\n\t\t}\n\n\t\tif ( geometry.skinWeights.length > 0 ) {\n\n\t\t\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\n\t\t\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcomputeBoundingBox: function () {\n\n\t\tvar box = new Box3();\n\n\t\treturn function computeBoundingBox() {\n\n\t\t\tif ( this.boundingBox === null ) {\n\n\t\t\t\tthis.boundingBox = new Box3();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\t\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif ( position !== undefined ) {\n\n\t\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t\tbox.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( box.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( box.max );\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.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}(),\n\n\tcomputeBoundingSphere: function () {\n\n\t\tvar box = new Box3();\n\t\tvar boxMorphTargets = new Box3();\n\t\tvar vector = new Vector3();\n\n\t\treturn function computeBoundingSphere() {\n\n\t\t\tif ( this.boundingSphere === null ) {\n\n\t\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t\t}\n\n\t\t\tvar position = this.attributes.position;\n\t\t\tvar morphAttributesPosition = this.morphAttributes.position;\n\n\t\t\tif ( position ) {\n\n\t\t\t\t// first, find the center of the bounding sphere\n\n\t\t\t\tvar center = this.boundingSphere.center;\n\n\t\t\t\tbox.setFromBufferAttribute( position );\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t\tboxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\t\tbox.expandByPoint( boxMorphTargets.min );\n\t\t\t\t\t\tbox.expandByPoint( boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbox.getCenter( center );\n\n\t\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\t\tvar maxRadiusSq = 0;\n\n\t\t\t\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t\tvector.fromBufferAttribute( position, i );\n\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\n\n\t\t\t\t}\n\n\t\t\t\t// process morph attributes if present\n\n\t\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\t\tfor ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar morphAttribute = morphAttributesPosition[ i ];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvector.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\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\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\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}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\tcomputeFaceNormals: function () {\n\n\t\t// backwards compatibility\n\n\t},\n\n\tcomputeVertexNormals: function () {\n\n\t\tvar index = this.index;\n\t\tvar attributes = this.attributes;\n\n\t\tif ( attributes.position ) {\n\n\t\t\tvar positions = attributes.position.array;\n\n\t\t\tif ( attributes.normal === undefined ) {\n\n\t\t\t\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tvar array = attributes.normal.array;\n\n\t\t\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t\t\tarray[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar normals = attributes.normal.array;\n\n\t\t\tvar vA, vB, vC;\n\t\t\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tvar cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tvar indices = index.array;\n\n\t\t\t\tfor ( var i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tvA = indices[ i + 0 ] * 3;\n\t\t\t\t\tvB = indices[ i + 1 ] * 3;\n\t\t\t\t\tvC = indices[ i + 2 ] * 3;\n\n\t\t\t\t\tpA.fromArray( positions, vA );\n\t\t\t\t\tpB.fromArray( positions, vB );\n\t\t\t\t\tpC.fromArray( positions, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ vA ] += cb.x;\n\t\t\t\t\tnormals[ vA + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vA + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vB ] += cb.x;\n\t\t\t\t\tnormals[ vB + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vB + 2 ] += cb.z;\n\n\t\t\t\t\tnormals[ vC ] += cb.x;\n\t\t\t\t\tnormals[ vC + 1 ] += cb.y;\n\t\t\t\t\tnormals[ vC + 2 ] += cb.z;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\n\n\t\t\t\t\tpA.fromArray( positions, i );\n\t\t\t\t\tpB.fromArray( positions, i + 3 );\n\t\t\t\t\tpC.fromArray( positions, i + 6 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormals[ i ] = cb.x;\n\t\t\t\t\tnormals[ i + 1 ] = cb.y;\n\t\t\t\t\tnormals[ i + 2 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 3 ] = cb.x;\n\t\t\t\t\tnormals[ i + 4 ] = cb.y;\n\t\t\t\t\tnormals[ i + 5 ] = cb.z;\n\n\t\t\t\t\tnormals[ i + 6 ] = cb.x;\n\t\t\t\t\tnormals[ i + 7 ] = cb.y;\n\t\t\t\t\tnormals[ i + 8 ] = cb.z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tattributes.normal.needsUpdate = true;\n\n\t\t}\n\n\t},\n\n\tmerge: function ( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tvar attribute1 = attributes[ key ];\n\t\t\tvar attributeArray1 = attribute1.array;\n\n\t\t\tvar attribute2 = geometry.attributes[ key ];\n\t\t\tvar attributeArray2 = attribute2.array;\n\n\t\t\tvar attributeOffset = attribute2.itemSize * offset;\n\t\t\tvar length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tnormalizeNormals: function () {\n\n\t\tvar vector = new Vector3();\n\n\t\treturn function normalizeNormals() {\n\n\t\t\tvar normals = this.attributes.normal;\n\n\t\t\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t\tvector.x = normals.getX( i );\n\t\t\t\tvector.y = normals.getY( i );\n\t\t\t\tvector.z = normals.getZ( i );\n\n\t\t\t\tvector.normalize();\n\n\t\t\t\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoNonIndexed: function () {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tvar array = attribute.array;\n\t\t\tvar itemSize = attribute.itemSize;\n\n\t\t\tvar array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tvar index = 0, index2 = 0;\n\n\t\t\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\tfor ( var j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tvar geometry2 = new BufferGeometry();\n\n\t\tvar indices = this.index.array;\n\t\tvar attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( var name in attributes ) {\n\n\t\t\tvar attribute = attributes[ name ];\n\n\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.addAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tvar morphAttributes = this.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar morphArray = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( var i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = morphAttribute[ i ];\n\n\t\t\t\tvar newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = this.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\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tvar parameters = this.parameters;\n\n\t\t\tfor ( var key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\tdata.data = { attributes: {} };\n\n\t\tvar index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tvar attributes = this.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\n\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\tdata.data.attributes[ key ] = attributeData;\n\n\t\t}\n\n\t\tvar morphAttributes = {};\n\t\tvar hasMorphAttributes = false;\n\n\t\tfor ( var key in this.morphAttributes ) {\n\n\t\t\tvar attributeArray = this.morphAttributes[ key ];\n\n\t\t\tvar array = [];\n\n\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tvar attribute = attributeArray[ i ];\n\n\t\t\t\tvar attributeData = attribute.toJSON();\n\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\n\n\t\t\t\tarray.push( attributeData );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) data.data.morphAttributes = morphAttributes;\n\n\t\tvar groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tvar boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\t/*\n\t\t // Handle primitives\n\n\t\t var parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t var values = [];\n\n\t\t for ( var key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t var geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n\t\treturn new BufferGeometry().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tvar name, i, l;\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\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\t// attributes\n\n\t\tvar attributes = source.attributes;\n\n\t\tfor ( 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\t// morph attributes\n\n\t\tvar morphAttributes = source.morphAttributes;\n\n\t\tfor ( name in morphAttributes ) {\n\n\t\t\tvar array = [];\n\t\t\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone() );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\t// groups\n\n\t\tvar groups = source.groups;\n\n\t\tfor ( 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.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tvar boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tvar boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// BoxGeometry\n\nfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'BoxGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\n\tthis.mergeVertices();\n\n}\n\nBoxGeometry.prototype = Object.create( Geometry.prototype );\nBoxGeometry.prototype.constructor = BoxGeometry;\n\n// BoxBufferGeometry\n\nfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'BoxBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\tdepth: depth,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tdepthSegments: depthSegments\n\t};\n\n\tvar scope = this;\n\n\twidth = width || 1;\n\theight = height || 1;\n\tdepth = depth || 1;\n\n\t// segments\n\n\twidthSegments = Math.floor( widthSegments ) || 1;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\tdepthSegments = Math.floor( depthSegments ) || 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar numberOfVertices = 0;\n\tvar groupStart = 0;\n\n\t// build each side of the box geometry\n\n\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\tvar segmentWidth = width / gridX;\n\t\tvar segmentHeight = height / gridY;\n\n\t\tvar widthHalf = width / 2;\n\t\tvar heightHalf = height / 2;\n\t\tvar depthHalf = depth / 2;\n\n\t\tvar gridX1 = gridX + 1;\n\t\tvar gridY1 = gridY + 1;\n\n\t\tvar vertexCounter = 0;\n\t\tvar groupCount = 0;\n\n\t\tvar ix, iy;\n\n\t\tvar vector = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tvar y = iy * segmentHeight - heightHalf;\n\n\t\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tvar x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// set values to correct vector component\n\n\t\t\t\tvector[ u ] = 0;\n\t\t\t\tvector[ v ] = 0;\n\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t// uvs\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t// counters\n\n\t\t\t\tvertexCounter += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\t// 1. you need three indices to draw a single face\n\t\t// 2. a single segment consists of two faces\n\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tvar a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// increase counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t\t// update total number of vertices\n\n\t\tnumberOfVertices += vertexCounter;\n\n\t}\n\n}\n\nBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PlaneGeometry\n\nfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PlaneGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\n\tthis.mergeVertices();\n\n}\n\nPlaneGeometry.prototype = Object.create( Geometry.prototype );\nPlaneGeometry.prototype.constructor = PlaneGeometry;\n\n// PlaneBufferGeometry\n\nfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PlaneBufferGeometry';\n\n\tthis.parameters = {\n\t\twidth: width,\n\t\theight: height,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments\n\t};\n\n\twidth = width || 1;\n\theight = height || 1;\n\n\tvar width_half = width / 2;\n\tvar height_half = height / 2;\n\n\tvar gridX = Math.floor( widthSegments ) || 1;\n\tvar gridY = Math.floor( heightSegments ) || 1;\n\n\tvar gridX1 = gridX + 1;\n\tvar gridY1 = gridY + 1;\n\n\tvar segment_width = width / gridX;\n\tvar segment_height = height / gridY;\n\n\tvar ix, iy;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy < gridY1; iy ++ ) {\n\n\t\tvar y = iy * segment_height - height_half;\n\n\t\tfor ( ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\tvar x = ix * segment_width - width_half;\n\n\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\tuvs.push( ix / gridX );\n\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < gridY; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\tvar a = ix + gridX1 * iy;\n\t\t\tvar b = ix + gridX1 * ( iy + 1 );\n\t\t\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\tvar d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar materialId = 0;\n\nfunction Material() {\n\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.name = '';\n\tthis.type = 'Material';\n\n\tthis.fog = true;\n\tthis.lights = true;\n\n\tthis.blending = NormalBlending;\n\tthis.side = FrontSide;\n\tthis.flatShading = false;\n\tthis.vertexTangents = false;\n\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\n\n\tthis.opacity = 1;\n\tthis.transparent = false;\n\n\tthis.blendSrc = SrcAlphaFactor;\n\tthis.blendDst = OneMinusSrcAlphaFactor;\n\tthis.blendEquation = AddEquation;\n\tthis.blendSrcAlpha = null;\n\tthis.blendDstAlpha = null;\n\tthis.blendEquationAlpha = null;\n\n\tthis.depthFunc = LessEqualDepth;\n\tthis.depthTest = true;\n\tthis.depthWrite = true;\n\n\tthis.clippingPlanes = null;\n\tthis.clipIntersection = false;\n\tthis.clipShadows = false;\n\n\tthis.shadowSide = null;\n\n\tthis.colorWrite = true;\n\n\tthis.precision = null; // override the renderer's default precision for this material\n\n\tthis.polygonOffset = false;\n\tthis.polygonOffsetFactor = 0;\n\tthis.polygonOffsetUnits = 0;\n\n\tthis.dithering = false;\n\n\tthis.alphaTest = 0;\n\tthis.premultipliedAlpha = false;\n\n\tthis.visible = true;\n\n\tthis.userData = {};\n\n\tthis.needsUpdate = true;\n\n}\n\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: Material,\n\n\tisMaterial: true,\n\n\tonBeforeCompile: function () {},\n\n\tsetValues: function ( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( var key in values ) {\n\n\t\t\tvar newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.Material: '\" + key + \"' parameter is undefined.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatability if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( \"THREE.\" + this.type + \": '\" + key + \"' is not a property of this material.\" );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRoot ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\n\t\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\n\t\t}\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\n\t\tif ( this.skinning === true ) data.skinning = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tvar values = [];\n\n\t\t\tfor ( var key in cache ) {\n\n\t\t\t\tvar data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRoot ) {\n\n\t\t\tvar textures = extractFromCache( meta.textures );\n\t\t\tvar images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.flatShading = source.flatShading;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.clipShadows = source.clipShadows;\n\t\tthis.clipIntersection = source.clipIntersection;\n\n\t\tvar srcPlanes = source.clippingPlanes,\n\t\t\tdstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tvar n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( var i = 0; i !== n; ++ i )\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\treturn this;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * defines: { \"label\" : \"value\" },\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\n *\n * fragmentShader: ,\n * vertexShader: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * lights: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction ShaderMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShaderMaterial';\n\n\tthis.defines = {};\n\tthis.uniforms = {};\n\n\tthis.vertexShader = default_vertex;\n\tthis.fragmentShader = default_fragment;\n\n\tthis.linewidth = 1;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false; // set to use scene fog\n\tthis.lights = false; // set to use scene lights\n\tthis.clipping = false; // set to use user-defined clipping planes\n\n\tthis.skinning = false; // set to use skinning attribute streams\n\tthis.morphTargets = false; // set to use morph targets\n\tthis.morphNormals = false; // set to use morph normals\n\n\tthis.extensions = {\n\t\tderivatives: false, // set to use derivatives\n\t\tfragDepth: false, // set to use fragment depth values\n\t\tdrawBuffers: false, // set to use draw buffers\n\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t};\n\n\t// When rendered geometry doesn't include these attributes but the material does,\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\tthis.defaultAttributeValues = {\n\t\t'color': [ 1, 1, 1 ],\n\t\t'uv': [ 0, 0 ],\n\t\t'uv2': [ 0, 0 ]\n\t};\n\n\tthis.index0AttributeName = undefined;\n\tthis.uniformsNeedUpdate = false;\n\n\tif ( parameters !== undefined ) {\n\n\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t}\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n}\n\nShaderMaterial.prototype = Object.create( Material.prototype );\nShaderMaterial.prototype.constructor = ShaderMaterial;\n\nShaderMaterial.prototype.isShaderMaterial = true;\n\nShaderMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.fragmentShader = source.fragmentShader;\n\tthis.vertexShader = source.vertexShader;\n\n\tthis.uniforms = cloneUniforms( source.uniforms );\n\n\tthis.defines = Object.assign( {}, source.defines );\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.lights = source.lights;\n\tthis.clipping = source.clipping;\n\n\tthis.skinning = source.skinning;\n\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\tthis.extensions = source.extensions;\n\n\treturn this;\n\n};\n\nShaderMaterial.prototype.toJSON = function ( meta ) {\n\n\tvar data = Material.prototype.toJSON.call( this, meta );\n\n\tdata.uniforms = {};\n\n\tfor ( var name in this.uniforms ) {\n\n\t\tvar uniform = this.uniforms[ name ];\n\t\tvar value = uniform.value;\n\n\t\tif ( value && value.isTexture ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 't',\n\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t};\n\n\t\t} else if ( value && value.isColor ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'c',\n\t\t\t\tvalue: value.getHex()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v2',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'v4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm3',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\ttype: 'm4',\n\t\t\t\tvalue: value.toArray()\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tdata.uniforms[ name ] = {\n\t\t\t\tvalue: value\n\t\t\t};\n\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t}\n\n\t}\n\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\tdata.vertexShader = this.vertexShader;\n\tdata.fragmentShader = this.fragmentShader;\n\n\tvar extensions = {};\n\n\tfor ( var key in this.extensions ) {\n\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t}\n\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\treturn data;\n\n};\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Ray( origin, direction ) {\n\n\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\n\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\n\n}\n\nObject.assign( Ray.prototype, {\n\n\tset: function ( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t},\n\n\tlookAt: function ( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t},\n\n\trecast: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function recast( t ) {\n\n\t\t\tthis.origin.copy( this.at( t, v1 ) );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tvar directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t},\n\n\tdistanceToPoint: function ( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t},\n\n\tdistanceSqToPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function distanceSqToPoint( point ) {\n\n\t\t\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t\t// point behind the ray\n\n\t\t\tif ( directionDistance < 0 ) {\n\n\t\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t\t}\n\n\t\t\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\t\treturn v1.distanceToSquared( point );\n\n\t\t};\n\n\t}(),\n\n\tdistanceSqToSegment: function () {\n\n\t\tvar segCenter = new Vector3();\n\t\tvar segDir = new Vector3();\n\t\tvar diff = new Vector3();\n\n\t\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t\t// It returns the min distance between the ray and the segment\n\t\t\t// defined by v0 and v1\n\t\t\t// It can also set two optional targets :\n\t\t\t// - The closest point on the ray\n\t\t\t// - The closest point on the segment\n\n\t\t\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t\tsegDir.copy( v1 ).sub( v0 ).normalize();\n\t\t\tdiff.copy( this.origin ).sub( segCenter );\n\n\t\t\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\t\tvar a01 = - this.direction.dot( segDir );\n\t\t\tvar b0 = diff.dot( this.direction );\n\t\t\tvar b1 = - diff.dot( segDir );\n\t\t\tvar c = diff.lengthSq();\n\t\t\tvar det = Math.abs( 1 - a01 * a01 );\n\t\t\tvar s0, s1, sqrDist, extDet;\n\n\t\t\tif ( det > 0 ) {\n\n\t\t\t\t// The ray and segment are not parallel.\n\n\t\t\t\ts0 = a01 * b1 - b0;\n\t\t\t\ts1 = a01 * b0 - b1;\n\t\t\t\textDet = segExtent * det;\n\n\t\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\t\tvar invDet = 1 / det;\n\t\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\t\ts1 *= invDet;\n\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} else {\n\n\t\t\t\t\t\t\t// region 1\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\t// region 5\n\n\t\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t\t// region 4\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 3\n\n\t\t\t\t\t\ts0 = 0;\n\t\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 2\n\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Ray and segment are parallel.\n\n\t\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnRay ) {\n\n\t\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t\t}\n\n\t\t\tif ( optionalPointOnSegment ) {\n\n\t\t\t\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\n\n\t\t\t}\n\n\t\t\treturn sqrDist;\n\n\t\t};\n\n\t}(),\n\n\tintersectSphere: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function intersectSphere( sphere, target ) {\n\n\t\t\tv1.subVectors( sphere.center, this.origin );\n\t\t\tvar tca = v1.dot( this.direction );\n\t\t\tvar d2 = v1.dot( v1 ) - tca * tca;\n\t\t\tvar radius2 = sphere.radius * sphere.radius;\n\n\t\t\tif ( d2 > radius2 ) return null;\n\n\t\t\tvar thc = Math.sqrt( radius2 - d2 );\n\n\t\t\t// t0 = first intersect point - entrance on front of sphere\n\t\t\tvar t0 = tca - thc;\n\n\t\t\t// t1 = second intersect point - exit point on back of sphere\n\t\t\tvar t1 = tca + thc;\n\n\t\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t\t// test to see if t0 is behind the ray:\n\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// in order to always return an intersect point that is in front of the ray.\n\t\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\t\treturn this.at( t0, target );\n\n\t\t};\n\n\t}(),\n\n\tintersectsSphere: function ( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t},\n\n\tdistanceToPlane: function ( plane ) {\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t},\n\n\tintersectPlane: function ( plane, target ) {\n\n\t\tvar t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t},\n\n\tintersectsPlane: function ( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tvar distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tvar denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t},\n\n\tintersectBox: function ( box, target ) {\n\n\t\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tvar invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tvar origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t},\n\n\tintersectsBox: ( function () {\n\n\t\tvar v = new Vector3();\n\n\t\treturn function intersectsBox( box ) {\n\n\t\t\treturn this.intersectBox( box, v ) !== null;\n\n\t\t};\n\n\t} )(),\n\n\tintersectTriangle: function () {\n\n\t\t// Compute the offset origin, edges, and normal.\n\t\tvar diff = new Vector3();\n\t\tvar edge1 = new Vector3();\n\t\tvar edge2 = new Vector3();\n\t\tvar normal = new Vector3();\n\n\t\treturn function intersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t\tedge1.subVectors( b, a );\n\t\t\tedge2.subVectors( c, a );\n\t\t\tnormal.crossVectors( edge1, edge2 );\n\n\t\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\t\tvar DdN = this.direction.dot( normal );\n\t\t\tvar sign;\n\n\t\t\tif ( DdN > 0 ) {\n\n\t\t\t\tif ( backfaceCulling ) return null;\n\t\t\t\tsign = 1;\n\n\t\t\t} else if ( DdN < 0 ) {\n\n\t\t\t\tsign = - 1;\n\t\t\t\tDdN = - DdN;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tdiff.subVectors( this.origin, a );\n\t\t\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\n\n\t\t\t// b1 < 0, no intersection\n\t\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\n\n\t\t\t// b2 < 0, no intersection\n\t\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// b1+b2 > 1, no intersection\n\t\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Line intersects triangle, check if ray does.\n\t\t\tvar QdN = - sign * diff.dot( normal );\n\n\t\t\t// t < 0, no intersection\n\t\t\tif ( QdN < 0 ) {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t\t// Ray intersects triangle.\n\t\t\treturn this.at( QdN / DdN, target );\n\n\t\t};\n\n\t}(),\n\n\tapplyMatrix4: function ( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Triangle( a, b, c ) {\n\n\tthis.a = ( a !== undefined ) ? a : new Vector3();\n\tthis.b = ( b !== undefined ) ? b : new Vector3();\n\tthis.c = ( c !== undefined ) ? c : new Vector3();\n\n}\n\nObject.assign( Triangle, {\n\n\tgetNormal: function () {\n\n\t\tvar v0 = new Vector3();\n\n\t\treturn function getNormal( a, b, c, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\ttarget.subVectors( c, b );\n\t\t\tv0.subVectors( a, b );\n\t\t\ttarget.cross( v0 );\n\n\t\t\tvar targetLengthSq = target.lengthSq();\n\t\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t\t}\n\n\t\t\treturn target.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\tgetBarycoord: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function getBarycoord( point, a, b, c, target ) {\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\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\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 target.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 target.set( 1 - u - v, v, u );\n\n\t\t};\n\n\t}(),\n\n\tcontainsPoint: function () {\n\n\t\tvar v1 = new Vector3();\n\n\t\treturn function containsPoint( point, a, b, c ) {\n\n\t\t\tTriangle.getBarycoord( point, a, b, c, v1 );\n\n\t\t\treturn ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 );\n\n\t\t};\n\n\t}(),\n\n\tgetUV: function () {\n\n\t\tvar barycoord = new Vector3();\n\n\t\treturn function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\t\tthis.getBarycoord( point, p1, p2, p3, barycoord );\n\n\t\t\ttarget.set( 0, 0 );\n\t\t\ttarget.addScaledVector( uv1, barycoord.x );\n\t\t\ttarget.addScaledVector( uv2, barycoord.y );\n\t\t\ttarget.addScaledVector( uv3, barycoord.z );\n\n\t\t\treturn target;\n\n\t\t};\n\n\t}(),\n\n\tisFrontFacing: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function isFrontFacing( a, b, c, direction ) {\n\n\t\t\tv0.subVectors( c, b );\n\t\t\tv1.subVectors( a, b );\n\n\t\t\t// strictly front facing\n\t\t\treturn ( v0.cross( v1 ).dot( direction ) < 0 ) ? true : false;\n\n\t\t};\n\n\t}()\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tset: function ( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t},\n\n\tgetArea: function () {\n\n\t\tvar v0 = new Vector3();\n\t\tvar v1 = new Vector3();\n\n\t\treturn function getArea() {\n\n\t\t\tv0.subVectors( this.c, this.b );\n\t\t\tv1.subVectors( this.a, this.b );\n\n\t\t\treturn v0.cross( v1 ).length() * 0.5;\n\n\t\t};\n\n\t}(),\n\n\tgetMidpoint: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t},\n\n\tgetNormal: function ( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t},\n\n\tgetPlane: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t},\n\n\tgetBarycoord: function ( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t},\n\n\tgetUV: function ( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t},\n\n\tisFrontFacing: function ( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t},\n\n\tclosestPointToPoint: function () {\n\n\t\tvar vab = new Vector3();\n\t\tvar vac = new Vector3();\n\t\tvar vbc = new Vector3();\n\t\tvar vap = new Vector3();\n\t\tvar vbp = new Vector3();\n\t\tvar vcp = new Vector3();\n\n\t\treturn function closestPointToPoint( p, target ) {\n\n\t\t\tif ( target === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\n\t\t\t\ttarget = new Vector3();\n\n\t\t\t}\n\n\t\t\tvar a = this.a, b = this.b, c = this.c;\n\t\t\tvar v, w;\n\n\t\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t\tvab.subVectors( b, a );\n\t\t\tvac.subVectors( c, a );\n\t\t\tvap.subVectors( p, a );\n\t\t\tvar d1 = vab.dot( vap );\n\t\t\tvar d2 = vac.dot( vap );\n\t\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\t\treturn target.copy( a );\n\n\t\t\t}\n\n\t\t\tvbp.subVectors( p, b );\n\t\t\tvar d3 = vab.dot( vbp );\n\t\t\tvar d4 = vac.dot( vbp );\n\t\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\t\treturn target.copy( b );\n\n\t\t\t}\n\n\t\t\tvar vc = d1 * d4 - d3 * d2;\n\t\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\t\treturn target.copy( a ).addScaledVector( vab, v );\n\n\t\t\t}\n\n\t\t\tvcp.subVectors( p, c );\n\t\t\tvar d5 = vab.dot( vcp );\n\t\t\tvar d6 = vac.dot( vcp );\n\t\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\t\treturn target.copy( c );\n\n\t\t\t}\n\n\t\t\tvar vb = d5 * d2 - d1 * d6;\n\t\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\t\treturn target.copy( a ).addScaledVector( vac, w );\n\n\t\t\t}\n\n\t\t\tvar va = d3 * d6 - d5 * d4;\n\t\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t\tvbc.subVectors( c, b );\n\t\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\t\treturn target.copy( b ).addScaledVector( vbc, w ); // edge region of BC\n\n\t\t\t}\n\n\t\t\t// face region\n\t\t\tvar denom = 1 / ( va + vb + vc );\n\t\t\t// u = va * denom\n\t\t\tv = vb * denom;\n\t\t\tw = vc * denom;\n\t\t\treturn target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w );\n\n\t\t};\n\n\t}(),\n\n\tequals: function ( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * depthTest: ,\n * depthWrite: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: \n * }\n */\n\nfunction MeshBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshBasicMaterial';\n\n\tthis.color = new Color( 0xffffff ); // emissive\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\n\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\n\nMeshBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author mikael emtinger / http://gomo.se/\n * @author jonobr1 / http://jonobr1.com/\n */\n\nfunction Mesh( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Mesh';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\n\n\tthis.drawMode = TrianglesDrawMode;\n\n\tthis.updateMorphTargets();\n\n}\n\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Mesh,\n\n\tisMesh: true,\n\n\tsetDrawMode: function ( value ) {\n\n\t\tthis.drawMode = value;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.drawMode = source.drawMode;\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tupdateMorphTargets: function () {\n\n\t\tvar geometry = this.geometry;\n\t\tvar m, ml, name;\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tvar morphAttributes = geometry.morphAttributes;\n\t\t\tvar keys = Object.keys( morphAttributes );\n\n\t\t\tif ( keys.length > 0 ) {\n\n\t\t\t\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\t\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\t\tname = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar morphTargets = geometry.morphTargets;\n\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\n\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar tempA = new Vector3();\n\t\tvar tempB = new Vector3();\n\t\tvar tempC = new Vector3();\n\n\t\tvar morphA = new Vector3();\n\t\tvar morphB = new Vector3();\n\t\tvar morphC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tvar intersectionPoint = new Vector3();\n\t\tvar intersectionPointWorld = new Vector3();\n\n\t\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\t\t\tvar intersect;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t\t\t} else {\n\n\t\t\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t\t\t}\n\n\t\t\tif ( intersect === null ) return null;\n\n\t\t\tintersectionPointWorld.copy( point );\n\t\t\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\t\t\treturn {\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectionPointWorld.clone(),\n\t\t\t\tobject: object\n\t\t\t};\n\n\t\t}\n\n\t\tfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( position, a );\n\t\t\tvB.fromBufferAttribute( position, b );\n\t\t\tvC.fromBufferAttribute( position, c );\n\n\t\t\tvar morphInfluences = object.morphTargetInfluences;\n\n\t\t\tif ( material.morphTargets && morphPosition && morphInfluences ) {\n\n\t\t\t\tmorphA.set( 0, 0, 0 );\n\t\t\t\tmorphB.set( 0, 0, 0 );\n\t\t\t\tmorphC.set( 0, 0, 0 );\n\n\t\t\t\tfor ( var i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar influence = morphInfluences[ i ];\n\t\t\t\t\tvar morphAttribute = morphPosition[ i ];\n\n\t\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t\ttempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t\t\ttempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t\t\ttempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\t\t\tmorphA.addScaledVector( tempA.sub( vA ), influence );\n\t\t\t\t\tmorphB.addScaledVector( tempB.sub( vB ), influence );\n\t\t\t\t\tmorphC.addScaledVector( tempC.sub( vC ), influence );\n\n\t\t\t\t}\n\n\t\t\t\tvA.add( morphA );\n\t\t\t\tvB.add( morphB );\n\t\t\t\tvC.add( morphC );\n\n\t\t\t}\n\n\t\t\tvar intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );\n\n\t\t\tif ( intersection ) {\n\n\t\t\t\tif ( uv ) {\n\n\t\t\t\t\tuvA.fromBufferAttribute( uv, a );\n\t\t\t\t\tuvB.fromBufferAttribute( uv, b );\n\t\t\t\t\tuvC.fromBufferAttribute( uv, c );\n\n\t\t\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t}\n\n\t\t\t\tvar face = new Face3( a, b, c );\n\t\t\t\tTriangle.getNormal( vA, vB, vC, face.normal );\n\n\t\t\t\tintersection.face = face;\n\n\t\t\t}\n\n\t\t\treturn intersection;\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar material = this.material;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\tif ( material === undefined ) return;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\t// Check boundingBox before continuing\n\n\t\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\t\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t\t}\n\n\t\t\tvar intersection;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar a, b, c;\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar position = geometry.attributes.position;\n\t\t\t\tvar morphPosition = geometry.morphAttributes.position;\n\t\t\t\tvar uv = geometry.attributes.uv;\n\t\t\t\tvar groups = geometry.groups;\n\t\t\t\tvar drawRange = geometry.drawRange;\n\t\t\t\tvar i, j, il, jl;\n\t\t\t\tvar group, groupMaterial;\n\t\t\t\tvar start, end;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\t// indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = index.getX( j );\n\t\t\t\t\t\t\t\tb = index.getX( j + 1 );\n\t\t\t\t\t\t\t\tc = index.getX( j + 2 );\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\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} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = index.getX( i );\n\t\t\t\t\t\t\tb = index.getX( i + 1 );\n\t\t\t\t\t\t\tc = index.getX( i + 2 );\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, 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 indexed 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 ( position !== undefined ) {\n\n\t\t\t\t\t// non-indexed buffer geometry\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\tgroup = groups[ i ];\n\t\t\t\t\t\t\tgroupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tstart = Math.max( group.start, drawRange.start );\n\t\t\t\t\t\t\tend = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\t\tfor ( j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\t\t\ta = j;\n\t\t\t\t\t\t\t\tb = j + 1;\n\t\t\t\t\t\t\t\tc = j + 2;\n\n\t\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, morphPosition, uv, a, b, c );\n\n\t\t\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\t\t\tintersects.push( intersection );\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} else {\n\n\t\t\t\t\t\tstart = Math.max( 0, drawRange.start );\n\t\t\t\t\t\tend = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\t\t\tfor ( i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\t\t\ta = i;\n\t\t\t\t\t\t\tb = i + 1;\n\t\t\t\t\t\t\tc = i + 2;\n\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, morphPosition, uv, 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 non-indexed 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}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar fvA, fvB, fvC;\n\t\t\t\tvar isMultiMaterial = Array.isArray( material );\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar faces = geometry.faces;\n\t\t\t\tvar uvs;\n\n\t\t\t\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\n\t\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\n\n\t\t\t\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\n\n\t\t\t\t\tvar face = faces[ f ];\n\t\t\t\t\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\n\n\t\t\t\t\tif ( faceMaterial === undefined ) continue;\n\n\t\t\t\t\tfvA = vertices[ face.a ];\n\t\t\t\t\tfvB = vertices[ face.b ];\n\t\t\t\t\tfvC = vertices[ face.c ];\n\n\t\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tif ( uvs && uvs[ f ] ) {\n\n\t\t\t\t\t\t\tvar uvs_f = uvs[ f ];\n\t\t\t\t\t\t\tuvA.copy( uvs_f[ 0 ] );\n\t\t\t\t\t\t\tuvB.copy( uvs_f[ 1 ] );\n\t\t\t\t\t\t\tuvC.copy( uvs_f[ 2 ] );\n\n\t\t\t\t\t\t\tintersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tintersection.face = face;\n\t\t\t\t\t\tintersection.faceIndex = f;\n\t\t\t\t\t\tintersects.push( intersection );\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}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBackground( renderer, state, objects, premultipliedAlpha ) {\n\n\tvar clearColor = new Color( 0x000000 );\n\tvar clearAlpha = 0;\n\n\tvar planeMesh;\n\tvar boxMesh;\n\t// Store the current background texture and its `version`\n\t// so we can recompile the material accordingly.\n\tvar currentBackground = null;\n\tvar currentBackgroundVersion = 0;\n\n\tfunction render( renderList, scene, camera, forceClear ) {\n\n\t\tvar background = scene.background;\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tvar vr = renderer.vr;\n\t\tvar session = vr.getSession && vr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\t\t\tcurrentBackground = null;\n\t\t\tcurrentBackgroundVersion = 0;\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\t\t\tcurrentBackground = null;\n\t\t\tcurrentBackgroundVersion = 0;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.removeAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.removeAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.tCube.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tvar texture = background.isWebGLRenderTargetCube ? background.texture : background;\n\t\t\tboxMesh.material.uniforms.tCube.value = texture;\n\t\t\tboxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t currentBackgroundVersion !== texture.version ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = texture.version;\n\n\t\t\t}\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\ttype: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.removeAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\t currentBackgroundVersion !== background.version ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\n\t\t\t}\n\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha !== undefined ? alpha : 1;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\n\n\t\t\textension = 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}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tvar maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tvar isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;\n\n\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tvar maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tvar maxTextures = gl.getParameter( 34930 );\n\tvar maxVertexTextures = gl.getParameter( 35660 );\n\tvar maxTextureSize = gl.getParameter( 3379 );\n\tvar maxCubemapSize = gl.getParameter( 34076 );\n\n\tvar maxAttributes = gl.getParameter( 34921 );\n\tvar maxVertexUniforms = gl.getParameter( 36347 );\n\tvar maxVaryings = gl.getParameter( 36348 );\n\tvar maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tvar vertexTextures = maxVertexTextures > 0;\n\tvar floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\n\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tvar maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\n/**\n * @author tschw\n */\n\nfunction WebGLClipping() {\n\n\tvar scope = this,\n\n\t\tglobalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false,\n\n\t\tplane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tvar enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4,\n\n\t\t\t\tdstArray = cache.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\n\n\t\t\tfor ( var i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tcache.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tvar nPlanes = planes !== null ? planes.length : 0,\n\t\t\tdstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tvar flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLExtensions( gl ) {\n\n\tvar extensions = {};\n\n\treturn {\n\n\t\tget: function ( name ) {\n\n\t\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\t\treturn extensions[ name ];\n\n\t\t\t}\n\n\t\t\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\tdefault:\n\t\t\t\t\textension = gl.getExtension( name );\n\n\t\t\t}\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\textensions[ name ] = extension;\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLGeometries( gl, attributes, info ) {\n\n\tvar geometries = {};\n\tvar wireframeAttributes = {};\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tvar geometry = event.target;\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry.index !== null ) {\n\n\t\t\tattributes.remove( buffergeometry.index );\n\n\t\t}\n\n\t\tfor ( var name in buffergeometry.attributes ) {\n\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tvar attribute = wireframeAttributes[ buffergeometry.id ];\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\tdelete wireframeAttributes[ buffergeometry.id ];\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tvar buffergeometry = geometries[ geometry.id ];\n\n\t\tif ( buffergeometry ) return buffergeometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\tbuffergeometry = geometry;\n\n\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\n\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\n\n\t\t\t}\n\n\t\t\tbuffergeometry = geometry._bufferGeometry;\n\n\t\t}\n\n\t\tgeometries[ geometry.id ] = buffergeometry;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tvar index = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tfor ( var name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tvar morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( var name in morphAttributes ) {\n\n\t\t\tvar array = morphAttributes[ name ];\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tvar attribute = wireframeAttributes[ geometry.id ];\n\n\t\tif ( attribute ) return attribute;\n\n\t\tvar indices = [];\n\n\t\tvar geometryIndex = geometry.index;\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\t// console.time( 'wireframe' );\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tvar array = geometryIndex.array;\n\n\t\t\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tvar a = array[ i + 0 ];\n\t\t\t\tvar b = array[ i + 1 ];\n\t\t\t\tvar c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tvar array = geometryAttributes.position.array;\n\n\t\t\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tvar a = i + 0;\n\t\t\t\tvar b = i + 1;\n\t\t\t\tvar c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// console.timeEnd( 'wireframe' );\n\n\t\tattribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\n\t\tattributes.update( attribute, 34963 );\n\n\t\twireframeAttributes[ geometry.id ] = attribute;\n\n\t\treturn attribute;\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tvar mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tvar type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode );\n\n\t}\n\n\tfunction renderInstances( geometry, start, count ) {\n\n\t\tvar extension;\n\n\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\textension = gl;\n\n\t\t} else {\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.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\n\n\t\tinfo.update( count, mode, geometry.maxInstancedCount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLInfo( gl ) {\n\n\tvar memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tvar render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\tinstanceCount = instanceCount || 1;\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 5:\n\t\t\tcase 6:\n\t\t\t\trender.triangles += instanceCount * ( count - 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction WebGLMorphtargets( gl ) {\n\n\tvar influencesList = {};\n\tvar morphInfluences = new Float32Array( 8 );\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tvar objectInfluences = object.morphTargetInfluences;\n\n\t\tvar length = objectInfluences.length;\n\n\t\tvar influences = influencesList[ geometry.id ];\n\n\t\tif ( influences === undefined ) {\n\n\t\t\t// initialise list\n\n\t\t\tinfluences = [];\n\n\t\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t}\n\n\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t}\n\n\t\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\n\t\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\n\n\t\t// Remove current morphAttributes\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence[ 1 ] !== 0 ) {\n\n\t\t\t\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\n\t\t\t\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Collect influences\n\n\t\tfor ( var i = 0; i < length; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tinfluence[ 0 ] = i;\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t}\n\n\t\tinfluences.sort( absNumericalSort );\n\n\t\t// Add morphAttributes\n\n\t\tfor ( var i = 0; i < 8; i ++ ) {\n\n\t\t\tvar influence = influences[ i ];\n\n\t\t\tif ( influence ) {\n\n\t\t\t\tvar index = influence[ 0 ];\n\t\t\t\tvar value = influence[ 1 ];\n\n\t\t\t\tif ( value ) {\n\n\t\t\t\t\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\t\t\t\t\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLObjects( geometries, info ) {\n\n\tvar updateList = {};\n\n\tfunction update( object ) {\n\n\t\tvar frame = info.render.frame;\n\n\t\tvar geometry = object.geometry;\n\t\tvar buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateList[ buffergeometry.id ] !== frame ) {\n\n\t\t\tif ( geometry.isGeometry ) {\n\n\t\t\t\tbuffergeometry.updateFromObject( object );\n\n\t\t\t}\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateList[ buffergeometry.id ] = frame;\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\timages = images !== undefined ? images : [];\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\tformat = format !== undefined ? format : RGBFormat;\n\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.flipY = false;\n\n}\n\nCubeTexture.prototype = Object.create( Texture.prototype );\nCubeTexture.prototype.constructor = CubeTexture;\n\nCubeTexture.prototype.isCubeTexture = true;\n\nObject.defineProperty( CubeTexture.prototype, 'images', {\n\n\tget: function () {\n\n\t\treturn this.image;\n\n\t},\n\n\tset: function ( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n} );\n\n/**\n * @author Takahiro https://github.com/takahirox\n */\n\nfunction DataTexture2DArray( data, width, height, depth ) {\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data, width: width, height: height, depth: depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n}\n\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\n\n/**\n * @author Artur Trzesiok\n */\n\nfunction DataTexture3D( data, width, height, depth ) {\n\n\t// We're going to add .setXXX() methods for setting properties later.\n\t// Users can still set in DataTexture3D directly.\n\t//\n\t//\tvar texture = new THREE.DataTexture3D( data, width, height, depth );\n\t// \ttexture.anisotropy = 16;\n\t//\n\t// See #14839\n\n\tTexture.call( this, null );\n\n\tthis.image = { data: data, width: width, height: height, depth: depth };\n\n\tthis.magFilter = NearestFilter;\n\tthis.minFilter = NearestFilter;\n\n\tthis.wrapR = ClampToEdgeWrapping;\n\n\tthis.generateMipmaps = false;\n\tthis.flipY = false;\n\n}\n\nDataTexture3D.prototype = Object.create( Texture.prototype );\nDataTexture3D.prototype.constructor = DataTexture3D;\nDataTexture3D.prototype.isDataTexture3D = true;\n\n/**\n * @author tschw\n * @author Mugen87 / https://github.com/Mugen87\n * @author mrdoob / http://mrdoob.com/\n *\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nvar emptyTexture = new Texture();\nvar emptyTexture2dArray = new DataTexture2DArray();\nvar emptyTexture3d = new DataTexture3D();\nvar emptyCubeTexture = new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nvar arrayCacheF32 = [];\nvar arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nvar mat4array = new Float32Array( 16 );\nvar mat3array = new Float32Array( 9 );\nvar mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tvar firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tvar n = nBlocks * blockSize,\n\t\tr = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( var i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( var i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tvar r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( var i = 0; i !== n; ++ i )\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tvar cache = this.cache;\n\tvar elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tvar cache = this.cache;\n\tvar unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\n\nfunction setValueV1i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\nfunction setValueV2i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tvar cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\n\t\tcase 0x8b5f: return setValueT3D1; // SAMPLER_3D\n\t\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\n\t\tcase 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t}\n\n}\n\n// Array of scalars\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n\n// Array of vectors (flat or from THREE classes)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (flat or from THREE clases)\n\nfunction setValueM2Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tvar data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of textures (2D / Cube)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tvar n = v.length;\n\n\tvar units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( var i = 0; i !== n; ++ i ) {\n\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x8b5e: return setValueT1Array; // SAMPLER_2D\n\t\tcase 0x8b60: return setValueT6Array; // SAMPLER_CUBE\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nfunction SingleUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nfunction PureArrayUniform( id, activeInfo, addr ) {\n\n\tthis.id = id;\n\tthis.addr = addr;\n\tthis.cache = [];\n\tthis.size = activeInfo.size;\n\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t// this.path = activeInfo.name; // DEBUG\n\n}\n\nPureArrayUniform.prototype.updateCache = function ( data ) {\n\n\tvar cache = this.cache;\n\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\n\n\t\tthis.cache = new Float32Array( data.length );\n\n\t}\n\n\tcopyArray( cache, data );\n\n};\n\nfunction StructuredUniform( id ) {\n\n\tthis.id = id;\n\n\tthis.seq = [];\n\tthis.map = {};\n\n}\n\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\n\n\tvar seq = this.seq;\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t}\n\n};\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nvar RePathPart = /([\\w\\d_]+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tvar path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tvar match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex,\n\n\t\t\tid = match[ 1 ],\n\t\t\tidIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tvar map = container.map, next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nfunction WebGLUniforms( gl, program ) {\n\n\tthis.seq = [];\n\tthis.map = {};\n\n\tvar n = gl.getProgramParameter( program, 35718 );\n\n\tfor ( var i = 0; i < n; ++ i ) {\n\n\t\tvar info = gl.getActiveUniform( program, i ),\n\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\tparseUniform( info, addr, this );\n\n\t}\n\n}\n\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\n\n\tvar u = this.map[ name ];\n\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n};\n\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\n\n\tvar v = object[ name ];\n\n\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n};\n\n\n// Static interface\n\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ],\n\t\t\tv = values[ u.id ];\n\n\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t}\n\n\t}\n\n};\n\nWebGLUniforms.seqWithValue = function ( seq, values ) {\n\n\tvar r = [];\n\n\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\tvar u = seq[ i ];\n\t\tif ( u.id in values ) r.push( u );\n\n\t}\n\n\treturn r;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction addLineNumbers( string ) {\n\n\tvar lines = string.split( '\\n' );\n\n\tfor ( var i = 0; i < lines.length; i ++ ) {\n\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\n\n\t}\n\n\treturn lines.join( '\\n' );\n\n}\n\nfunction WebGLShader( gl, type, string, debug ) {\n\n\tvar shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\tif ( debug === true ) {\n\n\t\tif ( gl.getShaderParameter( shader, 35713 ) === false ) {\n\n\t\t\tconsole.error( 'THREE.WebGLShader: Shader couldn\\'t compile.' );\n\n\t\t}\n\n\t\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\n\n\t\t}\n\n\t}\n\n\t// --enable-privileged-webgl-extension\n\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\treturn shader;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar programIdCount = 0;\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tcase RGBEEncoding:\n\t\t\treturn [ 'RGBE', '( value )' ];\n\t\tcase RGBM7Encoding:\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\n\t\tcase RGBM16Encoding:\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\n\t\tcase RGBDEncoding:\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\n\t\tcase GammaEncoding:\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported encoding: ' + encoding );\n\n\t}\n\n}\n\nfunction getTexelDecodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tvar components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tvar toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase Uncharted2ToneMapping:\n\t\t\ttoneMappingName = 'Uncharted2';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( extensions, parameters, rendererExtensions ) {\n\n\textensions = extensions || {};\n\n\tvar chunks = [\n\t\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tvar chunks = [];\n\n\tfor ( var name in defines ) {\n\n\t\tvar value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tvar attributes = {};\n\n\tvar n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( var i = 0; i < n; i ++ ) {\n\n\t\tvar info = gl.getActiveAttrib( program, i );\n\t\tvar name = info.name;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\nfunction parseIncludes( string ) {\n\n\tvar pattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\n\tfunction replace( match, include ) {\n\n\t\tvar replace = ShaderChunk[ include ];\n\n\t\tif ( replace === undefined ) {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t\treturn parseIncludes( replace );\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction unrollLoops( string ) {\n\n\tvar pattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\n\n\tfunction replace( match, start, end, snippet ) {\n\n\t\tvar unroll = '';\n\n\t\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\t\tunroll += snippet.replace( /\\[ i \\]/g, '[ ' + i + ' ]' );\n\n\t\t}\n\n\t\treturn unroll;\n\n\t}\n\n\treturn string.replace( pattern, replace );\n\n}\n\nfunction WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures ) {\n\n\tvar gl = renderer.context;\n\n\tvar defines = material.defines;\n\n\tvar vertexShader = shader.vertexShader;\n\tvar fragmentShader = shader.fragmentShader;\n\n\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t}\n\n\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\tcase CubeUVRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t\tcase EquirectangularReflectionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\n\t\t\t\tbreak;\n\n\t\t\tcase SphericalReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.envMap.mapping ) {\n\n\t\t\tcase CubeRefractionMapping:\n\t\t\tcase EquirectangularRefractionMapping:\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tswitch ( material.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\n\n\t// console.log( 'building new program ' );\n\n\t//\n\n\tvar customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions );\n\n\tvar customDefines = generateDefines( defines );\n\n\t//\n\n\tvar program = gl.createProgram();\n\n\tvar prefixVertex, prefixFragment;\n\n\tif ( material.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_COLOR',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_MORPHTARGETS',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\t'precision ' + parameters.precision + ' float;',\n\t\t\t'precision ' + parameters.precision + ' int;',\n\n\t\t\t'#define SHADER_NAME ' + shader.name,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\n\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\tparameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\n\t\t\t( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ?\n\t\t\t\tShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\n\t\t\tparameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\n\t\t\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\n\t\t\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\n\t\t\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\n\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = parseIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = parseIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) {\n\n\t\tvar isGLSL3ShaderMaterial = false;\n\n\t\tvar versionRegex = /^\\s*#version\\s+300\\s+es\\s*\\n/;\n\n\t\tif ( material.isShaderMaterial &&\n\t\t\tvertexShader.match( versionRegex ) !== null &&\n\t\t\tfragmentShader.match( versionRegex ) !== null ) {\n\n\t\t\tisGLSL3ShaderMaterial = true;\n\n\t\t\tvertexShader = vertexShader.replace( versionRegex, '' );\n\t\t\tfragmentShader = fragmentShader.replace( versionRegex, '' );\n\n\t\t}\n\n\t\t// GLSL 3.0 conversion\n\t\tprefixVertex = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#version 300 es\\n',\n\t\t\t'#define varying in',\n\t\t\tisGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;',\n\t\t\tisGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tvar vertexGlsl = prefixVertex + vertexShader;\n\tvar fragmentGlsl = prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tvar glVertexShader = WebGLShader( gl, 35633, vertexGlsl, renderer.debug.checkShaderErrors );\n\tvar glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl, renderer.debug.checkShaderErrors );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( material.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tvar programLog = gl.getProgramInfoLog( program ).trim();\n\t\tvar vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tvar runnable = true;\n\t\tvar haveDiagnostics = true;\n\n\t\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\n\t\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\t\t\t\tmaterial: material,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// clean up\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tvar cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program, textures );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tvar cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t// DEPRECATED\n\n\tObject.defineProperties( this, {\n\n\t\tuniforms: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\n\t\t\t\treturn this.getUniforms();\n\n\t\t\t}\n\t\t},\n\n\t\tattributes: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\n\t\t\t\treturn this.getAttributes();\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\n\t//\n\n\tthis.name = shader.name;\n\tthis.id = programIdCount ++;\n\tthis.code = code;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLPrograms( renderer, extensions, capabilities, textures ) {\n\n\tvar programs = [];\n\n\tvar shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'phong',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tvar parameterNames = [\n\t\t\"precision\", \"supportsVertexTextures\", \"map\", \"mapEncoding\", \"matcap\", \"matcapEncoding\", \"envMap\", \"envMapMode\", \"envMapEncoding\",\n\t\t\"lightMap\", \"aoMap\", \"emissiveMap\", \"emissiveMapEncoding\", \"bumpMap\", \"normalMap\", \"objectSpaceNormalMap\", \"displacementMap\", \"specularMap\",\n\t\t\"roughnessMap\", \"metalnessMap\", \"gradientMap\",\n\t\t\"alphaMap\", \"combine\", \"vertexColors\", \"vertexTangents\", \"fog\", \"useFog\", \"fogExp\",\n\t\t\"flatShading\", \"sizeAttenuation\", \"logarithmicDepthBuffer\", \"skinning\",\n\t\t\"maxBones\", \"useVertexTexture\", \"morphTargets\", \"morphNormals\",\n\t\t\"maxMorphTargets\", \"maxMorphNormals\", \"premultipliedAlpha\",\n\t\t\"numDirLights\", \"numPointLights\", \"numSpotLights\", \"numHemiLights\", \"numRectAreaLights\",\n\t\t\"shadowMapEnabled\", \"shadowMapType\", \"toneMapping\", 'physicallyCorrectLights',\n\t\t\"alphaTest\", \"doubleSided\", \"flipSided\", \"numClippingPlanes\", \"numClipIntersection\", \"depthPacking\", \"dithering\"\n\t];\n\n\n\tfunction allocateBones( object ) {\n\n\t\tvar skeleton = object.skeleton;\n\t\tvar bones = skeleton.bones;\n\n\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\treturn 1024;\n\n\t\t} else {\n\n\t\t\t// default for when object is not specified\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\n\t\t\t//\n\t\t\t// - leave some extra space for other uniforms\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\n\t\t\t// (up to 54 should be safe)\n\n\t\t\tvar nVertexUniforms = capabilities.maxVertexUniforms;\n\t\t\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\n\n\t\t\tvar maxBones = Math.min( nVertexMatrices, bones.length );\n\n\t\t\tif ( maxBones < bones.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\treturn maxBones;\n\n\t\t}\n\n\t}\n\n\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\n\n\t\tvar encoding;\n\n\t\tif ( ! map ) {\n\n\t\t\tencoding = LinearEncoding;\n\n\t\t} else if ( map.isTexture ) {\n\n\t\t\tencoding = map.encoding;\n\n\t\t} else if ( map.isWebGLRenderTarget ) {\n\n\t\t\tconsole.warn( \"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\tencoding = map.texture.encoding;\n\n\t\t}\n\n\t\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\n\t\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\n\n\t\t\tencoding = GammaEncoding;\n\n\t\t}\n\n\t\treturn encoding;\n\n\t}\n\n\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\n\n\t\tvar shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\n\t\tvar precision = capabilities.precision;\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar parameters = {\n\n\t\t\tshaderID: shaderID,\n\n\t\t\tprecision: precision,\n\t\t\tsupportsVertexTextures: capabilities.vertexTextures,\n\t\t\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\n\t\t\tmap: !! material.map,\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\n\t\t\tmatcap: !! material.matcap,\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ),\n\t\t\tenvMap: !! material.envMap,\n\t\t\tenvMapMode: material.envMap && material.envMap.mapping,\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\n\t\t\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\talphaMap: !! material.alphaMap,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\n\t\t\tvertexColors: material.vertexColors,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog,\n\t\t\tfogExp: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\n\n\t\t\tskinning: material.skinning && maxBones > 0,\n\t\t\tmaxBones: maxBones,\n\t\t\tuseVertexTexture: capabilities.floatVertexTextures,\n\n\t\t\tmorphTargets: material.morphTargets,\n\t\t\tmorphNormals: material.morphNormals,\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumClippingPlanes: nClipPlanes,\n\t\t\tnumClipIntersection: nClipIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: renderer.toneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\talphaTest: material.alphaTest,\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\n\n\t\t};\n\n\t\treturn parameters;\n\n\t};\n\n\tthis.getProgramCode = function ( material, parameters ) {\n\n\t\tvar array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( material.fragmentShader );\n\t\t\tarray.push( material.vertexShader );\n\n\t\t}\n\n\t\tif ( material.defines !== undefined ) {\n\n\t\t\tfor ( var name in material.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( material.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\n\n\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\n\n\t\t}\n\n\t\tarray.push( material.onBeforeCompile.toString() );\n\n\t\tarray.push( renderer.gammaOutput );\n\n\t\tarray.push( renderer.gammaFactor );\n\n\t\treturn array.join();\n\n\t};\n\n\tthis.acquireProgram = function ( material, shader, parameters, code ) {\n\n\t\tvar program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tvar programInfo = programs[ p ];\n\n\t\t\tif ( programInfo.code === code ) {\n\n\t\t\t\tprogram = programInfo;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities, textures );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t};\n\n\tthis.releaseProgram = function ( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tvar i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t};\n\n\t// Exposed for resource monitoring & error feedback via renderer.info:\n\tthis.programs = programs;\n\n}\n\n/**\n * @author fordacious / fordacious.github.io\n */\n\nfunction WebGLProperties() {\n\n\tvar properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tvar map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.program !== b.program ) {\n\n\t\treturn a.program.id - b.program.id;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tvar renderItems = [];\n\tvar renderItemsIndex = 0;\n\n\tvar opaque = [];\n\tvar transparent = [];\n\n\tvar defaultProgram = { id: - 1 };\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tprogram: material.program || defaultProgram,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.program = material.program || defaultProgram;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tvar renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\n\n\t}\n\n\tfunction sort() {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\n\n\t}\n\n\treturn {\n\t\topaque: opaque,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tvar lists = {};\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tdelete lists[ scene.id ];\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar cameras = lists[ scene.id ];\n\t\tvar list;\n\t\tif ( cameras === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists[ scene.id ] = {};\n\t\t\tlists[ scene.id ][ camera.id ] = list;\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tlist = cameras[ camera.id ];\n\t\t\tif ( list === undefined ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tcameras[ camera.id ] = list;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction UniformsCache() {\n\n\tvar lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\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 Vector3(),\n\t\t\t\t\t\tcolor: new 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 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 Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0,\n\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 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 Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0,\n\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 Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nvar count = 0;\n\nfunction WebGLLights() {\n\n\tvar cache = new UniformsCache();\n\n\tvar state = {\n\n\t\tid: count ++,\n\n\t\thash: {\n\t\t\tstateID: - 1,\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\t\t\tshadowsLength: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\tpoint: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( var i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tvar vector3 = new Vector3();\n\tvar matrix4 = new Matrix4();\n\tvar matrix42 = new Matrix4();\n\n\tfunction setup( lights, shadows, camera ) {\n\n\t\tvar r = 0, g = 0, b = 0;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tvar directionalLength = 0;\n\t\tvar pointLength = 0;\n\t\tvar spotLength = 0;\n\t\tvar rectAreaLength = 0;\n\t\tvar hemiLength = 0;\n\n\t\tvar viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\n\t\t\tvar color = light.color;\n\t\t\tvar intensity = light.intensity;\n\t\t\tvar distance = light.distance;\n\n\t\t\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( var j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\t// TODO (abelnation): RectAreaLight distance?\n\t\t\t\t// uniforms.distance = distance;\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tuniforms.shadow = light.castShadow;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tvar shadow = light.shadow;\n\n\t\t\t\t\tuniforms.shadowBias = shadow.bias;\n\t\t\t\t\tuniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tuniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tuniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tuniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t}\n\n\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tvar uniforms = cache.get( light );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\t\t\t\tuniforms.direction.normalize();\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tstate.directional.length = directionalLength;\n\t\tstate.spot.length = spotLength;\n\t\tstate.rectArea.length = rectAreaLength;\n\t\tstate.point.length = pointLength;\n\t\tstate.hemi.length = hemiLength;\n\n\t\tstate.hash.stateID = state.id;\n\t\tstate.hash.directionalLength = directionalLength;\n\t\tstate.hash.pointLength = pointLength;\n\t\tstate.hash.spotLength = spotLength;\n\t\tstate.hash.rectAreaLength = rectAreaLength;\n\t\tstate.hash.hemiLength = hemiLength;\n\t\tstate.hash.shadowsLength = shadows.length;\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tstate: state\n\t};\n\n}\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WebGLRenderState() {\n\n\tvar lights = new WebGLLights();\n\n\tvar lightsArray = [];\n\tvar shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( camera ) {\n\n\t\tlights.setup( lightsArray, shadowsArray, camera );\n\n\t}\n\n\tvar state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates() {\n\n\tvar renderStates = {};\n\n\tfunction onSceneDispose( event ) {\n\n\t\tvar scene = event.target;\n\n\t\tscene.removeEventListener( 'dispose', onSceneDispose );\n\n\t\tdelete renderStates[ scene.id ];\n\n\t}\n\n\tfunction get( scene, camera ) {\n\n\t\tvar renderState;\n\n\t\tif ( renderStates[ scene.id ] === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState();\n\t\t\trenderStates[ scene.id ] = {};\n\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\tscene.addEventListener( 'dispose', onSceneDispose );\n\n\t\t} else {\n\n\t\t\tif ( renderStates[ scene.id ][ camera.id ] === undefined ) {\n\n\t\t\t\trenderState = new WebGLRenderState();\n\t\t\t\trenderStates[ scene.id ][ camera.id ] = renderState;\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates[ scene.id ][ camera.id ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = {};\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author bhouston / https://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n * }\n */\n\nfunction MeshDepthMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDepthMaterial';\n\n\tthis.depthPacking = BasicDepthPacking;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\n\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\n\nMeshDepthMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.depthPacking = source.depthPacking;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n *\n * referencePosition: ,\n * nearDistance: ,\n * farDistance: ,\n *\n * skinning: ,\n * morphTargets: ,\n *\n * map: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: \n *\n * }\n */\n\nfunction MeshDistanceMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshDistanceMaterial';\n\n\tthis.referencePosition = new Vector3();\n\tthis.nearDistance = 1;\n\tthis.farDistance = 1000;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\n\tthis.map = null;\n\n\tthis.alphaMap = null;\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\n\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\n\nMeshDistanceMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.referencePosition.copy( source.referencePosition );\n\tthis.nearDistance = source.nearDistance;\n\tthis.farDistance = source.farDistance;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\n\tthis.map = source.map;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\n\n\tvar _frustum = new Frustum(),\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_shadowMapSize = new Vector2(),\n\t\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\n\n\t\t_lookTarget = new Vector3(),\n\t\t_lightPositionWorld = new Vector3(),\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\tvar shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tvar cubeDirections = [\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t];\n\n\tvar cubeUps = [\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t];\n\n\tvar cube2DViewPorts = [\n\t\tnew Vector4(), new Vector4(), new Vector4(),\n\t\tnew Vector4(), new Vector4(), new Vector4()\n\t];\n\n\t// init\n\n\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\n\n\t\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\n\t\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\n\n\t\tvar depthMaterial = new MeshDepthMaterial( {\n\n\t\t\tdepthPacking: RGBADepthPacking,\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_depthMaterials[ i ] = depthMaterial;\n\n\t\t//\n\n\t\tvar distanceMaterial = new MeshDistanceMaterial( {\n\n\t\t\tmorphTargets: useMorphing,\n\t\t\tskinning: useSkinning\n\n\t\t} );\n\n\t\t_distanceMaterials[ i ] = distanceMaterial;\n\n\t}\n\n\t//\n\n\tvar scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tvar currentRenderTarget = _renderer.getRenderTarget();\n\t\tvar activeCubeFace = _renderer.getActiveCubeFace();\n\t\tvar activeMipMapLevel = _renderer.getActiveMipMapLevel();\n\n\t\tvar _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tvar faceCount;\n\n\t\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tvar light = lights[ i ];\n\t\t\tvar shadow = light.shadow;\n\t\t\tvar isPointLight = light && light.isPointLight;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tvar shadowCamera = shadow.camera;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\t\t\t_shadowMapSize.min( _maxShadowMapSize );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tvar vpWidth = _shadowMapSize.x;\n\t\t\t\tvar vpHeight = _shadowMapSize.y;\n\n\t\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t\t// following orientation:\n\t\t\t\t//\n\t\t\t\t// xzXZ\n\t\t\t\t// y Y\n\t\t\t\t//\n\t\t\t\t// X - Positive x direction\n\t\t\t\t// x - Negative x direction\n\t\t\t\t// Y - Positive y direction\n\t\t\t\t// y - Negative y direction\n\t\t\t\t// Z - Positive z direction\n\t\t\t\t// z - Negative z direction\n\n\t\t\t\t// positive X\n\t\t\t\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative X\n\t\t\t\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Z\n\t\t\t\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// negative Z\n\t\t\t\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\n\t\t\t\t// positive Y\n\t\t\t\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\n\t\t\t\t// negative Y\n\t\t\t\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\n\n\t\t\t\t_shadowMapSize.x *= 4.0;\n\t\t\t\t_shadowMapSize.y *= 2.0;\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + \".shadowMap\";\n\n\t\t\t\tshadowCamera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\tif ( shadow.isSpotLightShadow ) {\n\n\t\t\t\tshadow.update( light );\n\n\t\t\t}\n\n\t\t\tvar shadowMap = shadow.map;\n\t\t\tvar shadowMatrix = shadow.matrix;\n\n\t\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t\tif ( isPointLight ) {\n\n\t\t\t\tfaceCount = 6;\n\n\t\t\t\t// for point lights we set the shadow matrix to be a translation-only matrix\n\t\t\t\t// equal to inverse of the light's position\n\n\t\t\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t\t} else {\n\n\t\t\t\tfaceCount = 1;\n\n\t\t\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t// compute shadow matrix\n\n\t\t\t\tshadowMatrix.set(\n\t\t\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t\t\t);\n\n\t\t\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\t\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadowMap );\n\t\t\t_renderer.clear();\n\n\t\t\t// render shadow map for each cube face (if omni-directional) or\n\t\t\t// run a single pass if not\n\n\t\t\tfor ( var face = 0; face < faceCount; face ++ ) {\n\n\t\t\t\tif ( isPointLight ) {\n\n\t\t\t\t\t_lookTarget.copy( shadowCamera.position );\n\t\t\t\t\t_lookTarget.add( cubeDirections[ face ] );\n\t\t\t\t\tshadowCamera.up.copy( cubeUps[ face ] );\n\t\t\t\t\tshadowCamera.lookAt( _lookTarget );\n\t\t\t\t\tshadowCamera.updateMatrixWorld();\n\n\t\t\t\t\tvar vpDimensions = cube2DViewPorts[ face ];\n\t\t\t\t\t_state.viewport( vpDimensions );\n\n\t\t\t\t}\n\n\t\t\t\t// update camera matrices and frustum\n\n\t\t\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\t\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t\t\t// set object matrices & frustum culling\n\n\t\t\t\trenderObject( scene, camera, shadowCamera, isPointLight );\n\n\t\t\t}\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipMapLevel );\n\n\t};\n\n\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\n\n\t\tvar geometry = object.geometry;\n\n\t\tvar result = null;\n\n\t\tvar materialVariants = _depthMaterials;\n\t\tvar customMaterial = object.customDepthMaterial;\n\n\t\tif ( isPointLight ) {\n\n\t\t\tmaterialVariants = _distanceMaterials;\n\t\t\tcustomMaterial = object.customDistanceMaterial;\n\n\t\t}\n\n\t\tif ( ! customMaterial ) {\n\n\t\t\tvar useMorphing = false;\n\n\t\t\tif ( material.morphTargets ) {\n\n\t\t\t\tif ( geometry && geometry.isBufferGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\n\n\t\t\t\t} else if ( geometry && geometry.isGeometry ) {\n\n\t\t\t\t\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isSkinnedMesh && material.skinning === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\n\n\t\t\t}\n\n\t\t\tvar useSkinning = object.isSkinnedMesh && material.skinning;\n\n\t\t\tvar variantIndex = 0;\n\n\t\t\tif ( useMorphing ) variantIndex |= _MorphingFlag;\n\t\t\tif ( useSkinning ) variantIndex |= _SkinningFlag;\n\n\t\t\tresult = materialVariants[ variantIndex ];\n\n\t\t} else {\n\n\t\t\tresult = customMaterial;\n\n\t\t}\n\n\t\tif ( _renderer.localClippingEnabled &&\n\t\t\t\tmaterial.clipShadows === true &&\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tvar keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tvar materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tvar cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tresult.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( isPointLight && result.isMeshDistanceMaterial ) {\n\n\t\t\tresult.referencePosition.copy( lightPositionWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tvar geometry = _objects.update( object );\n\t\t\t\tvar material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tvar group = groups[ k ];\n\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLState( gl, extensions, utils, capabilities ) {\n\n\tfunction ColorBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar color = new Vector4();\n\t\tvar currentColorMask = null;\n\t\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tvar locked = false;\n\n\t\tvar currentDepthMask = null;\n\t\tvar currentDepthFunc = null;\n\t\tvar currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\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\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef \t!== stencilRef \t||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail\t !== stencilFail \t||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tvar colorBuffer = new ColorBuffer();\n\tvar depthBuffer = new DepthBuffer();\n\tvar stencilBuffer = new StencilBuffer();\n\n\tvar maxVertexAttributes = gl.getParameter( 34921 );\n\tvar newAttributes = new Uint8Array( maxVertexAttributes );\n\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\n\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\n\n\tvar enabledCapabilities = {};\n\n\tvar compressedTextureFormats = null;\n\n\tvar currentProgram = null;\n\n\tvar currentBlendingEnabled = null;\n\tvar currentBlending = null;\n\tvar currentBlendEquation = null;\n\tvar currentBlendSrc = null;\n\tvar currentBlendDst = null;\n\tvar currentBlendEquationAlpha = null;\n\tvar currentBlendSrcAlpha = null;\n\tvar currentBlendDstAlpha = null;\n\tvar currentPremultipledAlpha = false;\n\n\tvar currentFlipSided = null;\n\tvar currentCullFace = null;\n\n\tvar currentLineWidth = null;\n\n\tvar currentPolygonOffsetFactor = null;\n\tvar currentPolygonOffsetUnits = null;\n\n\tvar maxTextures = gl.getParameter( 35661 );\n\n\tvar lineWidthAvailable = false;\n\tvar version = 0;\n\tvar glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL\\ ES\\ ([0-9])/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tvar currentTextureSlot = null;\n\tvar currentBoundTextures = {};\n\n\tvar currentScissor = new Vector4();\n\tvar currentViewport = new Vector4();\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tvar texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( var i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tvar emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction initAttributes() {\n\n\t\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tvar extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction getCompressedTextureFormats() {\n\n\t\tif ( compressedTextureFormats === null ) {\n\n\t\t\tcompressedTextureFormats = [];\n\n\t\t\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ||\n\t\t\t extensions.get( 'WEBGL_compressed_texture_astc' ) ) {\n\n\t\t\t\tvar formats = gl.getParameter( 34467 );\n\n\t\t\t\tfor ( var i = 0; i < formats.length; i ++ ) {\n\n\t\t\t\t\tcompressedTextureFormats.push( formats[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn compressedTextureFormats;\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( ! currentBlendingEnabled ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tvar flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] === 1 ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tenabledCapabilities = {};\n\n\t\tcompressedTextureFormats = null;\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlending = null;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tenableAttributeAndDivisor: enableAttributeAndDivisor,\n\t\tdisableUnusedAttributes: disableUnusedAttributes,\n\t\tenable: enable,\n\t\tdisable: disable,\n\t\tgetCompressedTextureFormats: getCompressedTextureFormats,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tvar _videoTextures = {};\n\tvar _canvas;\n\n\t//\n\n\tvar useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined';\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\tnew OffscreenCanvas( width, height ) :\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tvar scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tvar floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor;\n\n\t\t\t\tvar width = floor( scale * image.width );\n\t\t\t\tvar height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tvar canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tvar context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo( image ) {\n\n\t\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( capabilities.isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target, texture, width, height ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\n\n\t}\n\n\tfunction getInternalFormat( glFormat, glType ) {\n\n\t\tif ( ! capabilities.isWebGL2 ) return glFormat;\n\n\t\tvar internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 6407 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t} else if ( internalFormat === 34843 || internalFormat === 34837 ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tvar texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\tdelete _videoTextures[ texture.id ];\n\n\t\t}\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tvar renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\tif ( ! renderTarget ) return;\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget.texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tvar textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tvar textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tvar image = texture.image;\n\n\t\t\tif ( image === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tvar textureProperties = properties.get( texture );\n\n\t\tif ( texture.image.length === 6 ) {\n\n\t\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\t\tinitTexture( textureProperties, texture );\n\n\t\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\n\t\t\t\tvar isCompressed = ( texture && texture.isCompressedTexture );\n\t\t\t\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\t\tvar cubeImage = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tvar image = cubeImage[ 0 ],\n\t\t\t\t\tsupportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2,\n\t\t\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( ! isCompressed ) {\n\n\t\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\t\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tmipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\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}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\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\tif ( ! isCompressed ) {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\ttextureProperties.__version = texture.version;\n\n\t\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t\t} else {\n\n\t\t\t\tstate.activeTexture( 33984 + slot );\n\t\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction setTextureCubeDynamic( texture, slot ) {\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, properties.get( texture ).__webglTexture );\n\n\t}\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tvar extension;\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) );\n\t\t\t_gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\tif ( extension ) {\n\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\n\t\t\tif ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tvar textureType = 3553;\n\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\n\n\t\tinitTexture( textureProperties, texture );\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\n\t\tvar needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\n\t\tvar image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize );\n\n\t\tvar supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2,\n\t\t\tglFormat = utils.convert( texture.format ),\n\t\t\tglType = utils.convert( texture.type ),\n\t\t\tglInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\tvar mipmap, mipmaps = texture.mipmaps;\n\n\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t// populate depth texture with dummy data\n\n\t\t\tglInternalFormat = 6402;\n\n\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\tif ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\n\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t} else if ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2.0 requires signed internalformat for glTexImage2D\n\t\t\t\tglInternalFormat = 33189;\n\n\t\t\t}\n\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedShortType;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\tif ( texture.format === DepthStencilFormat ) {\n\n\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\n\n\t\t\t\t\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\n\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t} else if ( texture.isDataTexture2DArray ) {\n\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else if ( texture.isDataTexture3D ) {\n\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t} else {\n\n\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t// use manually created mipmaps if available\n\t\t\t// if there are no manual mipmaps\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tgenerateMipmap( 3553, texture, image.width, image.height );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\n\n\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tvar renderTargetProperties = properties.get( renderTarget );\n\t\tvar textureProperties = properties.get( renderTarget.texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\tinfo.memory.textures ++;\n\n\t\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\n\t\tvar isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultisample ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\tvar glFormat = utils.convert( renderTarget.texture.format );\n\t\t\t\t\tvar glType = utils.convert( renderTarget.texture.type );\n\t\t\t\t\tvar glInternalFormat = getInternalFormat( glFormat, glType );\n\t\t\t\t\tvar samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\n\n\t\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 34067, null );\n\n\t\t} else {\n\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( 3553, null );\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tvar texture = renderTarget.texture;\n\t\tvar supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2;\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\tvar target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553;\n\t\t\tvar webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\n\t\t\tstate.bindTexture( target, null );\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tvar renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tvar width = renderTarget.width;\n\t\t\t\tvar height = renderTarget.height;\n\t\t\t\tvar mask = 16384;\n\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\n\t\t\tMath.min( capabilities.maxSamples, renderTarget.samples ) : 0;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tvar id = texture.id;\n\t\tvar frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures[ id ] !== frame ) {\n\n\t\t\t_videoTextures[ id ] = frame;\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\t// backwards compatibility\n\n\tvar warnedTexture2D = false;\n\tvar warnedTextureCube = false;\n\n\tfunction safeSetTexture2D( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\n\n\t\t\tif ( warnedTexture2D === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTexture2D = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\tsetTexture2D( texture, slot );\n\n\t}\n\n\tfunction safeSetTextureCube( texture, slot ) {\n\n\t\tif ( texture && texture.isWebGLRenderTargetCube ) {\n\n\t\t\tif ( warnedTextureCube === false ) {\n\n\t\t\t\tconsole.warn( \"THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.\" );\n\t\t\t\twarnedTextureCube = true;\n\n\t\t\t}\n\n\t\t\ttexture = texture.texture;\n\n\t\t}\n\n\t\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\n\t\t// TODO: unify these code paths\n\t\tif ( ( texture && texture.isCubeTexture ) ||\n\t\t\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\n\n\t\t\t// CompressedTexture can have Array in image :/\n\n\t\t\t// this function alone should take care of cube textures\n\t\t\tsetTextureCube( texture, slot );\n\n\t\t} else {\n\n\t\t\t// assumed: texture property of THREE.WebGLRenderTargetCube\n\t\t\tsetTextureCubeDynamic( texture, slot );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\n\tthis.safeSetTexture2D = safeSetTexture2D;\n\tthis.safeSetTextureCube = safeSetTextureCube;\n\n}\n\n/**\n * @author thespite / http://www.twitter.com/thespite\n */\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tfunction convert( p ) {\n\n\t\tvar extension;\n\n\t\tif ( p === RepeatWrapping ) return 10497;\n\t\tif ( p === ClampToEdgeWrapping ) return 33071;\n\t\tif ( p === MirroredRepeatWrapping ) return 33648;\n\n\t\tif ( p === NearestFilter ) return 9728;\n\t\tif ( p === NearestMipMapNearestFilter ) return 9984;\n\t\tif ( p === NearestMipMapLinearFilter ) return 9986;\n\n\t\tif ( p === LinearFilter ) return 9729;\n\t\tif ( p === LinearMipMapNearestFilter ) return 9985;\n\t\tif ( p === LinearMipMapLinearFilter ) return 9987;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\t\tif ( p === UnsignedShort565Type ) return 33635;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBFormat ) return 6407;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === AddEquation ) return 32774;\n\t\tif ( p === SubtractEquation ) return 32778;\n\t\tif ( p === ReverseSubtractEquation ) return 32779;\n\n\t\tif ( p === ZeroFactor ) return 0;\n\t\tif ( p === OneFactor ) return 1;\n\t\tif ( p === SrcColorFactor ) return 768;\n\t\tif ( p === OneMinusSrcColorFactor ) return 769;\n\t\tif ( p === SrcAlphaFactor ) return 770;\n\t\tif ( p === OneMinusSrcAlphaFactor ) return 771;\n\t\tif ( p === DstAlphaFactor ) return 772;\n\t\tif ( p === OneMinusDstAlphaFactor ) return 773;\n\n\t\tif ( p === DstColorFactor ) return 774;\n\t\tif ( p === OneMinusDstColorFactor ) return 775;\n\t\tif ( p === SrcAlphaSaturateFactor ) return 776;\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t}\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn p;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === MinEquation || p === MaxEquation ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tif ( p === MinEquation ) return 32775;\n\t\t\t\tif ( p === MaxEquation ) return 32776;\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 === MinEquation ) return extension.MIN_EXT;\n\t\t\t\tif ( p === MaxEquation ) return extension.MAX_EXT;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Group() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Group';\n\n}\n\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Group,\n\n\tisGroup: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author mikael emtinger / http://gomo.se/\n * @author WestLangley / http://github.com/WestLangley\n*/\n\nfunction Camera() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Camera';\n\n\tthis.matrixWorldInverse = new Matrix4();\n\n\tthis.projectionMatrix = new Matrix4();\n\tthis.projectionMatrixInverse = new Matrix4();\n\n}\n\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Camera,\n\n\tisCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t},\n\n\tgetWorldDirection: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\tthis.updateMatrixWorld( true );\n\n\t\tvar e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author greggman / http://games.greggman.com/\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author tschw\n */\n\nfunction PerspectiveCamera( fov, aspect, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'PerspectiveCamera';\n\n\tthis.fov = fov !== undefined ? fov : 50;\n\tthis.zoom = 1;\n\n\tthis.near = near !== undefined ? near : 0.1;\n\tthis.far = far !== undefined ? far : 2000;\n\tthis.focus = 10;\n\n\tthis.aspect = aspect !== undefined ? aspect : 1;\n\tthis.view = null;\n\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\tthis.updateProjectionMatrix();\n\n}\n\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: PerspectiveCamera,\n\n\tisPerspectiveCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength: function ( focalLength ) {\n\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\n\t\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength: function () {\n\n\t\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t},\n\n\tgetEffectiveFOV: function () {\n\n\t\treturn _Math.RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t},\n\n\tgetFilmWidth: function () {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t},\n\n\tgetFilmHeight: function () {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t},\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * var w = 1920;\n\t * var h = 1080;\n\t * var fullWidth = w * 3;\n\t * var fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar near = this.near,\n\t\t\ttop = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\n\t\t\theight = 2 * top,\n\t\t\twidth = this.aspect * height,\n\t\t\tleft = - 0.5 * width,\n\t\t\tview = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tvar skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ArrayCamera( array ) {\n\n\tPerspectiveCamera.call( this );\n\n\tthis.cameras = array || [];\n\n}\n\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\n\n\tconstructor: ArrayCamera,\n\n\tisArrayCamera: true\n\n} );\n\n/**\n * @author jsantell / https://www.jsantell.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar cameraLPos = new Vector3();\nvar cameraRPos = new Vector3();\n\n/**\n * Assumes 2 cameras that are parallel and share an X-axis, and that\n * the cameras' projection and world matrices have already been set.\n * And that near and far planes are identical for both cameras.\n * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n */\nfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\tvar ipd = cameraLPos.distanceTo( cameraRPos );\n\n\tvar projL = cameraL.projectionMatrix.elements;\n\tvar projR = cameraR.projectionMatrix.elements;\n\n\t// VR systems will have identical far and near planes, and\n\t// most likely identical top and bottom frustum extents.\n\t// Use the left camera for these values.\n\tvar near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\tvar far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\tvar topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\tvar bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\tvar leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\tvar rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\tvar left = near * leftFov;\n\tvar right = near * rightFov;\n\n\t// Calculate the new camera's position offset from the\n\t// left camera. xOffset should be roughly half `ipd`.\n\tvar zOffset = ipd / ( - leftFov + rightFov );\n\tvar xOffset = zOffset * - leftFov;\n\n\t// TODO: Better way to apply this offset?\n\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\tcamera.translateX( xOffset );\n\tcamera.translateZ( zOffset );\n\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t// Find the union of the frustum values of the cameras and scale\n\t// the values so that the near plane's position does not change in world space,\n\t// although must now be relative to the new union camera.\n\tvar near2 = near + zOffset;\n\tvar far2 = far + zOffset;\n\tvar left2 = left - xOffset;\n\tvar right2 = right + ( ipd - xOffset );\n\tvar top2 = topFov * far / far2 * near2;\n\tvar bottom2 = bottomFov * far / far2 * near2;\n\n\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebVRManager( renderer ) {\n\n\tvar renderWidth, renderHeight;\n\tvar scope = this;\n\n\tvar device = null;\n\tvar frameData = null;\n\n\tvar poseTarget = null;\n\n\tvar controllers = [];\n\tvar standingMatrix = new Matrix4();\n\tvar standingMatrixInverse = new Matrix4();\n\n\tvar framebufferScaleFactor = 1.0;\n\n\tvar referenceSpaceType = 'local-floor';\n\n\tif ( typeof window !== 'undefined' && 'VRFrameData' in window ) {\n\n\t\tframeData = new window.VRFrameData();\n\t\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\n\n\t}\n\n\tvar matrixWorldInverse = new Matrix4();\n\tvar tempQuaternion = new Quaternion();\n\tvar tempPosition = new Vector3();\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.viewport = new Vector4();\n\tcameraL.layers.enable( 1 );\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.viewport = new Vector4();\n\tcameraR.layers.enable( 2 );\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tfunction isPresenting() {\n\n\t\treturn device !== null && device.isPresenting === true;\n\n\t}\n\n\tvar currentSize = new Vector2(), currentPixelRatio;\n\n\tfunction onVRDisplayPresentChange() {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar eyeParameters = device.getEyeParameters( 'left' );\n\t\t\trenderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor;\n\t\t\trenderHeight = eyeParameters.renderHeight * framebufferScaleFactor;\n\n\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\trenderer.getSize( currentSize );\n\n\t\t\trenderer.setDrawingBufferSize( renderWidth, renderHeight, 1 );\n\n\t\t\tcameraL.viewport.set( 0, 0, renderWidth / 2, renderHeight );\n\t\t\tcameraR.viewport.set( renderWidth / 2, 0, renderWidth / 2, renderHeight );\n\n\t\t\tanimation.start();\n\n\t\t} else {\n\n\t\t\tif ( scope.enabled ) {\n\n\t\t\t\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\n\n\t\t\t}\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t}\n\n\t//\n\n\tvar triggers = [];\n\n\tfunction findGamepad( id ) {\n\n\t\tvar gamepads = navigator.getGamepads && navigator.getGamepads();\n\n\t\tfor ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {\n\n\t\t\tvar gamepad = gamepads[ i ];\n\n\t\t\tif ( gamepad && ( gamepad.id === 'Daydream Controller' ||\n\t\t\t\tgamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||\n\t\t\t\tgamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||\n\t\t\t\tgamepad.id.startsWith( 'Spatial Controller' ) ) ) {\n\n\t\t\t\tif ( j === id ) return gamepad;\n\n\t\t\t\tj ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateControllers() {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar gamepad = findGamepad( i );\n\n\t\t\tif ( gamepad !== undefined && gamepad.pose !== undefined ) {\n\n\t\t\t\tif ( gamepad.pose === null ) return;\n\n\t\t\t\t// Pose\n\n\t\t\t\tvar pose = gamepad.pose;\n\n\t\t\t\tif ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );\n\n\t\t\t\tif ( pose.position !== null ) controller.position.fromArray( pose.position );\n\t\t\t\tif ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );\n\t\t\t\tcontroller.matrix.compose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrix.premultiply( standingMatrix );\n\t\t\t\tcontroller.matrix.decompose( controller.position, controller.quaternion, controller.scale );\n\t\t\t\tcontroller.matrixWorldNeedsUpdate = true;\n\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t// Trigger\n\n\t\t\t\tvar buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;\n\n\t\t\t\tif ( triggers[ i ] === undefined ) triggers[ i ] = false;\n\n\t\t\t\tif ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) {\n\n\t\t\t\t\ttriggers[ i ] = gamepad.buttons[ buttonId ].pressed;\n\n\t\t\t\t\tif ( triggers[ i ] === true ) {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectstart' } );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'selectend' } );\n\t\t\t\t\t\tcontroller.dispatchEvent( { type: 'select' } );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tcontroller.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateViewportFromBounds( viewport, bounds ) {\n\n\t\tif ( bounds !== null && bounds.length === 4 ) {\n\n\t\t\tviewport.set( bounds[ 0 ] * renderWidth, bounds[ 1 ] * renderHeight, bounds[ 2 ] * renderWidth, bounds[ 3 ] * renderHeight );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\treturn device;\n\n\t};\n\n\tthis.setDevice = function ( value ) {\n\n\t\tif ( value !== undefined ) device = value;\n\n\t\tanimation.setContext( value );\n\n\t};\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\tframebufferScaleFactor = value;\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.setPoseTarget = function ( object ) {\n\n\t\tif ( object !== undefined ) poseTarget = object;\n\n\t};\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tvar userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0;\n\n\t\tif ( isPresenting() === false ) {\n\n\t\t\tcamera.position.set( 0, userHeight, 0 );\n\t\t\tcamera.rotation.set( 0, 0, 0 );\n\n\t\t\treturn camera;\n\n\t\t}\n\n\t\tdevice.depthNear = camera.near;\n\t\tdevice.depthFar = camera.far;\n\n\t\tdevice.getFrameData( frameData );\n\n\t\t//\n\n\t\tif ( referenceSpaceType === 'local-floor' ) {\n\n\t\t\tvar stageParameters = device.stageParameters;\n\n\t\t\tif ( stageParameters ) {\n\n\t\t\t\tstandingMatrix.fromArray( stageParameters.sittingToStandingTransform );\n\n\t\t\t} else {\n\n\t\t\t\tstandingMatrix.makeTranslation( 0, userHeight, 0 );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar pose = frameData.pose;\n\t\tvar poseObject = poseTarget !== null ? poseTarget : camera;\n\n\t\t// We want to manipulate poseObject by its position and quaternion components since users may rely on them.\n\t\tposeObject.matrix.copy( standingMatrix );\n\t\tposeObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale );\n\n\t\tif ( pose.orientation !== null ) {\n\n\t\t\ttempQuaternion.fromArray( pose.orientation );\n\t\t\tposeObject.quaternion.multiply( tempQuaternion );\n\n\t\t}\n\n\t\tif ( pose.position !== null ) {\n\n\t\t\ttempQuaternion.setFromRotationMatrix( standingMatrix );\n\t\t\ttempPosition.fromArray( pose.position );\n\t\t\ttempPosition.applyQuaternion( tempQuaternion );\n\t\t\tposeObject.position.add( tempPosition );\n\n\t\t}\n\n\t\tposeObject.updateMatrixWorld();\n\n\t\t//\n\n\t\tcameraL.near = camera.near;\n\t\tcameraR.near = camera.near;\n\n\t\tcameraL.far = camera.far;\n\t\tcameraR.far = camera.far;\n\n\t\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\n\t\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\n\n\t\t// TODO (mrdoob) Double check this code\n\n\t\tstandingMatrixInverse.getInverse( standingMatrix );\n\n\t\tif ( referenceSpaceType === 'local-floor' ) {\n\n\t\t\tcameraL.matrixWorldInverse.multiply( standingMatrixInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( standingMatrixInverse );\n\n\t\t}\n\n\t\tvar parent = poseObject.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tmatrixWorldInverse.getInverse( parent.matrixWorld );\n\n\t\t\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\n\t\t\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\n\n\t\t}\n\n\t\t// envMap and Mirror needs camera.matrixWorld\n\n\t\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\n\t\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\n\n\t\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\n\t\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\n\n\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t//\n\n\t\tvar layers = device.getLayers();\n\n\t\tif ( layers.length ) {\n\n\t\t\tvar layer = layers[ 0 ];\n\n\t\t\tupdateViewportFromBounds( cameraL.viewport, layer.leftBounds );\n\t\t\tupdateViewportFromBounds( cameraR.viewport, layer.rightBounds );\n\n\t\t}\n\n\t\tupdateControllers();\n\n\t\treturn cameraVR;\n\n\t};\n\n\tthis.getStandingMatrix = function () {\n\n\t\treturn standingMatrix;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar animation = new WebGLAnimation();\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tanimation.setAnimationLoop( callback );\n\n\t\tif ( isPresenting() ) animation.start();\n\n\t};\n\n\tthis.submitFrame = function () {\n\n\t\tif ( isPresenting() ) device.submitFrame();\n\n\t};\n\n\tthis.dispose = function () {\n\n\t\tif ( typeof window !== 'undefined' ) {\n\n\t\t\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\n\n\t\t}\n\n\t};\n\n\t// DEPRECATED\n\n\tthis.setFrameOfReferenceType = function () {\n\n\t\tconsole.warn( 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.' );\n\n\t};\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction WebXRManager( renderer ) {\n\n\tvar gl = renderer.context;\n\n\tvar session = null;\n\n\tvar referenceSpace = null;\n\tvar referenceSpaceType = 'local-floor';\n\n\tvar pose = null;\n\n\tvar controllers = [];\n\tvar inputSources = [];\n\n\tfunction isPresenting() {\n\n\t\treturn session !== null && referenceSpace !== null;\n\n\t}\n\n\t//\n\n\tvar cameraL = new PerspectiveCamera();\n\tcameraL.layers.enable( 1 );\n\tcameraL.viewport = new Vector4();\n\n\tvar cameraR = new PerspectiveCamera();\n\tcameraR.layers.enable( 2 );\n\tcameraR.viewport = new Vector4();\n\n\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\n\tcameraVR.layers.enable( 1 );\n\tcameraVR.layers.enable( 2 );\n\n\t//\n\n\tthis.enabled = false;\n\n\tthis.getController = function ( id ) {\n\n\t\tvar controller = controllers[ id ];\n\n\t\tif ( controller === undefined ) {\n\n\t\t\tcontroller = new Group();\n\t\t\tcontroller.matrixAutoUpdate = false;\n\t\t\tcontroller.visible = false;\n\n\t\t\tcontrollers[ id ] = controller;\n\n\t\t}\n\n\t\treturn controller;\n\n\t};\n\n\t//\n\n\tfunction onSessionEvent( event ) {\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tif ( inputSources[ i ] === event.inputSource ) {\n\n\t\t\t\tcontrollers[ i ].dispatchEvent( { type: event.type } );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction onSessionEnd() {\n\n\t\trenderer.setFramebuffer( null );\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onRequestReferenceSpace( value ) {\n\n\t\treferenceSpace = value;\n\n\t\tanimation.setContext( session );\n\t\tanimation.start();\n\n\t}\n\n\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t};\n\n\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\treferenceSpaceType = value;\n\n\t};\n\n\tthis.getSession = function () {\n\n\t\treturn session;\n\n\t};\n\n\tthis.setSession = function ( value ) {\n\n\t\tsession = value;\n\n\t\tif ( session !== null ) {\n\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\n\t\t\tsession.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } );\n\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\n\n\t\t\t//\n\n\t\t\tinputSources = session.inputSources;\n\n\t\t\tsession.addEventListener( 'inputsourceschange', function () {\n\n\t\t\t\tinputSources = session.inputSources;\n\t\t\t\tconsole.log( inputSources );\n\n\t\t\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\tvar controller = controllers[ i ];\n\t\t\t\t\tcontroller.userData.inputSource = inputSources[ i ];\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t}\n\n\t};\n\n\tfunction updateCamera( camera, parent ) {\n\n\t\tif ( parent === null ) {\n\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t} else {\n\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t}\n\n\t\tcamera.matrixWorldInverse.getInverse( camera.matrixWorld );\n\n\t}\n\n\tthis.getCamera = function ( camera ) {\n\n\t\tif ( isPresenting() ) {\n\n\t\t\tvar parent = camera.parent;\n\t\t\tvar cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( var i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update camera and its children\n\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tvar children = camera.children;\n\n\t\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\treturn cameraVR;\n\n\t\t}\n\n\t\treturn camera;\n\n\t};\n\n\tthis.isPresenting = isPresenting;\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tpose = frame.getViewerPose( referenceSpace );\n\n\t\tif ( pose !== null ) {\n\n\t\t\tvar views = pose.views;\n\t\t\tvar baseLayer = session.renderState.baseLayer;\n\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\n\n\t\t\tfor ( var i = 0; i < views.length; i ++ ) {\n\n\t\t\t\tvar view = views[ i ];\n\t\t\t\tvar viewport = baseLayer.getViewport( view );\n\t\t\t\tvar viewMatrix = view.transform.inverse.matrix;\n\n\t\t\t\tvar camera = cameraVR.cameras[ i ];\n\t\t\t\tcamera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfor ( var i = 0; i < controllers.length; i ++ ) {\n\n\t\t\tvar controller = controllers[ i ];\n\n\t\t\tvar inputSource = inputSources[ i ];\n\n\t\t\tif ( inputSource ) {\n\n\t\t\t\tvar inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\tcontroller.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\tcontroller.matrix.decompose( controller.position, controller.rotation, controller.scale );\n\t\t\t\t\tcontroller.visible = true;\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tcontroller.visible = false;\n\n\t\t}\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\n\t};\n\n\tthis.dispose = function () {};\n\n\t// DEPRECATED\n\n\tthis.getStandingMatrix = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' );\n\t\treturn new Matrix4();\n\n\t};\n\n\tthis.getDevice = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' );\n\n\t};\n\n\tthis.setDevice = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' );\n\n\t};\n\n\tthis.setFrameOfReferenceType = function () {\n\n\t\tconsole.warn( 'THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.' );\n\n\t};\n\n\tthis.submitFrame = function () {};\n\n}\n\n/**\n * @author supereggbert / http://www.paulbrunt.co.uk/\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n * @author szimek / https://github.com/szimek/\n * @author tschw\n */\n\nfunction WebGLRenderer( parameters ) {\n\n\tconsole.log( 'THREE.WebGLRenderer', REVISION );\n\n\tparameters = parameters || {};\n\n\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\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tvar currentRenderList = null;\n\tvar currentRenderState = null;\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\tthis.context = null;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\n\tthis.gammaInput = false;\n\tthis.gammaOutput = false;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = LinearToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\tthis.toneMappingWhitePoint = 1.0;\n\n\t// morphs\n\n\tthis.maxMorphTargets = 8;\n\tthis.maxMorphNormals = 4;\n\n\t// internal properties\n\n\tvar _this = this,\n\n\t\t_isContextLost = false,\n\n\t\t// internal state cache\n\n\t\t_framebuffer = null,\n\n\t\t_currentActiveCubeFace = 0,\n\t\t_currentActiveMipmapLevel = 0,\n\t\t_currentRenderTarget = null,\n\t\t_currentFramebuffer = null,\n\t\t_currentMaterialId = - 1,\n\n\t\t// geometry and program caching\n\n\t\t_currentGeometryProgram = {\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false\n\t\t},\n\n\t\t_currentCamera = null,\n\t\t_currentArrayCamera = null,\n\n\t\t_currentViewport = new Vector4(),\n\t\t_currentScissor = new Vector4(),\n\t\t_currentScissorTest = null,\n\n\t\t//\n\n\t\t_width = _canvas.width,\n\t\t_height = _canvas.height,\n\n\t\t_pixelRatio = 1,\n\n\t\t_viewport = new Vector4( 0, 0, _width, _height ),\n\t\t_scissor = new Vector4( 0, 0, _width, _height ),\n\t\t_scissorTest = false,\n\n\t\t// frustum\n\n\t\t_frustum = new Frustum(),\n\n\t\t// clipping\n\n\t\t_clipping = new WebGLClipping(),\n\t\t_clippingEnabled = false,\n\t\t_localClippingEnabled = false,\n\n\t\t// camera matrices cache\n\n\t\t_projScreenMatrix = new Matrix4(),\n\n\t\t_vector3 = new Vector3();\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tvar _gl;\n\n\ttry {\n\n\t\tvar contextAttributes = {\n\t\t\talpha: _alpha,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat,\n\t\t\txrCompatible: true\n\t\t};\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tif ( _canvas.getContext( 'webgl' ) !== null ) {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t} else {\n\n\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tvar extensions, capabilities, state, info;\n\tvar properties, textures, attributes, geometries, objects;\n\tvar programCache, renderLists, renderStates;\n\n\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tvar utils;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\tif ( ! capabilities.isWebGL2 ) {\n\n\t\t\textensions.get( 'WEBGL_depth_texture' );\n\t\t\textensions.get( 'OES_texture_float' );\n\t\t\textensions.get( 'OES_texture_half_float' );\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\n\t\t\textensions.get( 'OES_standard_derivatives' );\n\t\t\textensions.get( 'OES_element_index_uint' );\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t}\n\n\t\textensions.get( 'OES_texture_float_linear' );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, utils, capabilities );\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t\tinfo = new WebGLInfo( _gl );\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tattributes = new WebGLAttributes( _gl );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info );\n\t\tobjects = new WebGLObjects( geometries, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\n\t\tprogramCache = new WebGLPrograms( _this, extensions, capabilities, textures );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates();\n\n\t\tbackground = new WebGLBackground( _this, state, objects, _premultipliedAlpha );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.context = _gl;\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// vr\n\n\tvar vr = ( typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ) ? new WebXRManager( _this ) : new WebVRManager( _this );\n\n\tthis.vr = vr;\n\n\t// shadow map\n\n\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\n\n\tthis.shadowMap = shadowMap;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tvar extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( vr.isPresenting() ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = width * _pixelRatio;\n\t\t_canvas.height = height * _pixelRatio;\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\n\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio );\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = width * pixelRatio;\n\t\t_canvas.height = height * pixelRatio;\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\n\n\t\t\ttarget = new Vector4();\n\n\t\t}\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function () {\n\n\t\treturn background.getClearColor();\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color, depth, stencil ) {\n\n\t\tvar bits = 0;\n\n\t\tif ( color === undefined || color ) bits |= 16384;\n\t\tif ( depth === undefined || depth ) bits |= 256;\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tobjects.dispose();\n\n\t\tvr.dispose();\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tinitGLContext();\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tvar material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReference( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReference( material ) {\n\n\t\tvar programInfo = properties.get( material ).program;\n\n\t\tmaterial.program = undefined;\n\n\t\tif ( programInfo !== undefined ) {\n\n\t\t\tprogramCache.releaseProgram( programInfo );\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tfunction renderObjectImmediate( object, program ) {\n\n\t\tobject.render( function ( object ) {\n\n\t\t\t_this.renderBufferImmediate( object, program );\n\n\t\t} );\n\n\t}\n\n\tthis.renderBufferImmediate = function ( object, program ) {\n\n\t\tstate.initAttributes();\n\n\t\tvar buffers = properties.get( object );\n\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( object.hasPositions ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.position );\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasNormals ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.normal );\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasUvs ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.uv );\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tif ( object.hasColors ) {\n\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\n\n\t\t\tstate.enableAttribute( programAttributes.color );\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t\t_gl.drawArrays( 4, 0, object.count );\n\n\t\tobject.count = 0;\n\n\t};\n\n\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\n\n\t\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\tvar program = setProgram( camera, fog, material, object );\n\n\t\tvar updateBuffers = false;\n\n\t\tif ( _currentGeometryProgram.geometry !== geometry.id ||\n\t\t\t_currentGeometryProgram.program !== program.id ||\n\t\t\t_currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) {\n\n\t\t\t_currentGeometryProgram.geometry = geometry.id;\n\t\t\t_currentGeometryProgram.program = program.id;\n\t\t\t_currentGeometryProgram.wireframe = material.wireframe === true;\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t\tupdateBuffers = true;\n\n\t\t}\n\n\t\t//\n\n\t\tvar index = geometry.index;\n\t\tvar position = geometry.attributes.position;\n\t\tvar rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tvar attribute;\n\t\tvar renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\tif ( updateBuffers ) {\n\n\t\t\tsetupVertexAttributes( material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\t_gl.bindBuffer( 34963, attribute.buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tvar dataCount = Infinity;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdataCount = index.count;\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\tdataCount = position.count;\n\n\t\t}\n\n\t\tvar rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tvar rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tvar drawStart = Math.max( rangeStart, groupStart );\n\t\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\tswitch ( object.drawMode ) {\n\n\t\t\t\t\tcase TrianglesDrawMode:\n\t\t\t\t\t\trenderer.setMode( 4 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleStripDrawMode:\n\t\t\t\t\t\trenderer.setMode( 5 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase TriangleFanDrawMode:\n\t\t\t\t\t\trenderer.setMode( 6 );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tvar lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry ) {\n\n\t\t\tif ( geometry.maxInstancedCount > 0 ) {\n\n\t\t\t\trenderer.renderInstances( geometry, drawStart, drawCount );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\tfunction setupVertexAttributes( material, program, geometry ) {\n\n\t\tif ( geometry && geometry.isInstancedBufferGeometry && ! capabilities.isWebGL2 ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.initAttributes();\n\n\t\tvar geometryAttributes = geometry.attributes;\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( var name in programAttributes ) {\n\n\t\t\tvar programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute >= 0 ) {\n\n\t\t\t\tvar geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tvar normalized = geometryAttribute.normalized;\n\t\t\t\t\tvar size = geometryAttribute.itemSize;\n\n\t\t\t\t\tvar attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tvar buffer = attribute.buffer;\n\t\t\t\t\tvar type = attribute.type;\n\t\t\t\t\tvar bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tvar data = geometryAttribute.data;\n\t\t\t\t\t\tvar stride = data.stride;\n\t\t\t\t\t\tvar offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\tif ( geometry.maxInstancedCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.enableAttribute( programAttribute );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.bindBuffer( 34962, buffer );\n\t\t\t\t\t\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tvar value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib2fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib3fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib4fv( programAttribute, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t_gl.vertexAttrib1fv( programAttribute, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.disableUnusedAttributes();\n\n\t}\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tif ( object.material ) {\n\n\t\t\t\tif ( Array.isArray( object.material ) ) {\n\n\t\t\t\t\tfor ( var i = 0; i < object.material.length; i ++ ) {\n\n\t\t\t\t\t\tinitMaterial( object.material[ i ], scene.fog, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tinitMaterial( object.material, scene.fog, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t};\n\n\t// Animation Loop\n\n\tvar onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( vr.isPresenting() ) return;\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tvar animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\tvr.setAnimationLoop( callback );\n\n\t\tanimation.start();\n\n\t};\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tvar renderTarget, forceClear;\n\n\t\tif ( arguments[ 2 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\n\t\t\trenderTarget = arguments[ 2 ];\n\n\t\t}\n\n\t\tif ( arguments[ 3 ] !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\n\t\t\tforceClear = arguments[ 3 ];\n\n\t\t}\n\n\t\tif ( ! ( camera && camera.isCamera ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost ) return;\n\n\t\t// reset caching for this frame\n\n\t\t_currentGeometryProgram.geometry = null;\n\t\t_currentGeometryProgram.program = null;\n\t\t_currentGeometryProgram.wireframe = false;\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tcamera = vr.getCamera( camera );\n\n\t\t}\n\n\t\t//\n\n\t\tcurrentRenderState = renderStates.get( scene, camera );\n\t\tcurrentRenderState.init();\n\n\t\tscene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, camera );\n\t\tcurrentRenderList.init();\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort();\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled ) _clipping.beginShadows();\n\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tcurrentRenderState.setupLights( camera );\n\n\t\tif ( _clippingEnabled ) _clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset ) this.info.reset();\n\n\t\tif ( renderTarget !== undefined ) {\n\n\t\t\tthis.setRenderTarget( renderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\n\n\t\t// render scene\n\n\t\tvar opaqueObjects = currentRenderList.opaque;\n\t\tvar transparentObjects = currentRenderList.transparent;\n\n\t\tif ( scene.overrideMaterial ) {\n\n\t\t\tvar overrideMaterial = scene.overrideMaterial;\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\n\n\t\t} else {\n\n\t\t\t// opaque pass (front-to-back order)\n\n\t\t\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\n\n\t\t\t// transparent pass (back-to-front order)\n\n\t\t\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tscene.onAfterRender( _this, scene, camera );\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t}\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t\tif ( vr.enabled ) {\n\n\t\t\tvr.submitFrame();\n\n\t\t}\n\n\t\t// _gl.finish();\n\n\t\tcurrentRenderList = null;\n\t\tcurrentRenderState = null;\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tvar visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isImmediateRenderObject ) {\n\n\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\tobject.skeleton.update();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tvar geometry = objects.update( object );\n\t\t\t\t\tvar material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tvar groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tvar group = groups[ i ];\n\t\t\t\t\t\t\tvar groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\n\n\t\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tvar renderItem = renderList[ i ];\n\n\t\t\tvar object = renderItem.object;\n\t\t\tvar geometry = renderItem.geometry;\n\t\t\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\n\t\t\tvar group = renderItem.group;\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\t_currentArrayCamera = camera;\n\n\t\t\t\tvar cameras = camera.cameras;\n\n\t\t\t\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar camera2 = cameras[ j ];\n\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\n\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\n\n\t\t\t\t\t\tcurrentRenderState.setupLights( camera2 );\n\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_currentArrayCamera = null;\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tif ( object.isImmediateRenderObject ) {\n\n\t\t\tstate.setMaterial( material );\n\n\t\t\tvar program = setProgram( camera, scene.fog, material, object );\n\n\t\t\t_currentGeometryProgram.geometry = null;\n\t\t\t_currentGeometryProgram.program = null;\n\t\t\t_currentGeometryProgram.wireframe = false;\n\n\t\t\trenderObjectImmediate( object, program );\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\t\tcurrentRenderState = renderStates.get( scene, _currentArrayCamera || camera );\n\n\t}\n\n\tfunction initMaterial( material, fog, object ) {\n\n\t\tvar materialProperties = properties.get( material );\n\n\t\tvar lights = currentRenderState.state.lights;\n\t\tvar shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tvar lightsHash = materialProperties.lightsHash;\n\t\tvar lightsStateHash = lights.state.hash;\n\n\t\tvar parameters = programCache.getParameters(\n\t\t\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\n\n\t\tvar code = programCache.getProgramCode( material, parameters );\n\n\t\tvar program = materialProperties.program;\n\t\tvar programChange = true;\n\n\t\tif ( program === undefined ) {\n\n\t\t\t// new material\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t} else if ( program.code !== code ) {\n\n\t\t\t// changed glsl or parameters\n\t\t\treleaseMaterialProgramReference( material );\n\n\t\t} else if ( lightsHash.stateID !== lightsStateHash.stateID ||\n\t\t\tlightsHash.directionalLength !== lightsStateHash.directionalLength ||\n\t\t\tlightsHash.pointLength !== lightsStateHash.pointLength ||\n\t\t\tlightsHash.spotLength !== lightsStateHash.spotLength ||\n\t\t\tlightsHash.rectAreaLength !== lightsStateHash.rectAreaLength ||\n\t\t\tlightsHash.hemiLength !== lightsStateHash.hemiLength ||\n\t\t\tlightsHash.shadowsLength !== lightsStateHash.shadowsLength ) {\n\n\t\t\tlightsHash.stateID = lightsStateHash.stateID;\n\t\t\tlightsHash.directionalLength = lightsStateHash.directionalLength;\n\t\t\tlightsHash.pointLength = lightsStateHash.pointLength;\n\t\t\tlightsHash.spotLength = lightsStateHash.spotLength;\n\t\t\tlightsHash.rectAreaLength = lightsStateHash.rectAreaLength;\n\t\t\tlightsHash.hemiLength = lightsStateHash.hemiLength;\n\t\t\tlightsHash.shadowsLength = lightsStateHash.shadowsLength;\n\n\t\t\tprogramChange = false;\n\n\t\t} else if ( parameters.shaderID !== undefined ) {\n\n\t\t\t// same glsl and uniform list\n\t\t\treturn;\n\n\t\t} else {\n\n\t\t\t// only rebuild uniform list\n\t\t\tprogramChange = false;\n\n\t\t}\n\n\t\tif ( programChange ) {\n\n\t\t\tif ( parameters.shaderID ) {\n\n\t\t\t\tvar shader = ShaderLib[ parameters.shaderID ];\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\t\tfragmentShader: shader.fragmentShader\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tmaterialProperties.shader = {\n\t\t\t\t\tname: material.type,\n\t\t\t\t\tuniforms: material.uniforms,\n\t\t\t\t\tvertexShader: material.vertexShader,\n\t\t\t\t\tfragmentShader: material.fragmentShader\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tmaterial.onBeforeCompile( materialProperties.shader, _this );\n\n\t\t\t// Computing code again as onBeforeCompile may have changed the shaders\n\t\t\tcode = programCache.getProgramCode( material, parameters );\n\n\t\t\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\n\n\t\t\tmaterialProperties.program = program;\n\t\t\tmaterial.program = program;\n\n\t\t}\n\n\t\tvar programAttributes = program.getAttributes();\n\n\t\tif ( material.morphTargets ) {\n\n\t\t\tmaterial.numSupportedMorphTargets = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphTargets ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.morphNormals ) {\n\n\t\t\tmaterial.numSupportedMorphNormals = 0;\n\n\t\t\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\n\n\t\t\t\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\n\n\t\t\t\t\tmaterial.numSupportedMorphNormals ++;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( ! material.isShaderMaterial &&\n\t\t\t! material.isRawShaderMaterial ||\n\t\t\tmaterial.clipping === true ) {\n\n\t\t\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\n\t\t\tmaterialProperties.numIntersection = _clipping.numIntersection;\n\t\t\tuniforms.clippingPlanes = _clipping.uniform;\n\n\t\t}\n\n\t\tmaterialProperties.fog = fog;\n\n\t\t// store the light setup it was created for\n\t\tif ( lightsHash === undefined ) {\n\n\t\t\tmaterialProperties.lightsHash = lightsHash = {};\n\n\t\t}\n\n\t\tlightsHash.stateID = lightsStateHash.stateID;\n\t\tlightsHash.directionalLength = lightsStateHash.directionalLength;\n\t\tlightsHash.pointLength = lightsStateHash.pointLength;\n\t\tlightsHash.spotLength = lightsStateHash.spotLength;\n\t\tlightsHash.rectAreaLength = lightsStateHash.rectAreaLength;\n\t\tlightsHash.hemiLength = lightsStateHash.hemiLength;\n\t\tlightsHash.shadowsLength = lightsStateHash.shadowsLength;\n\n\t\tif ( material.lights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tvar progUniforms = materialProperties.program.getUniforms(),\n\t\t\tuniformsList =\n\t\t\t\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t}\n\n\tfunction setProgram( camera, fog, material, object ) {\n\n\t\ttextures.resetTextureUnits();\n\n\t\tvar materialProperties = properties.get( material );\n\t\tvar lights = currentRenderState.state.lights;\n\n\t\tvar lightsHash = materialProperties.lightsHash;\n\t\tvar lightsStateHash = lights.state.hash;\n\n\t\tif ( _clippingEnabled ) {\n\n\t\t\tif ( _localClippingEnabled || camera !== _currentCamera ) {\n\n\t\t\t\tvar useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\t_clipping.setState(\n\t\t\t\t\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\n\t\t\t\t\tcamera, materialProperties, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate === false ) {\n\n\t\t\tif ( materialProperties.program === undefined ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.fog && materialProperties.fog !== fog ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID ||\n\t\t\t\tlightsHash.directionalLength !== lightsStateHash.directionalLength ||\n\t\t\t\tlightsHash.pointLength !== lightsStateHash.pointLength ||\n\t\t\t\tlightsHash.spotLength !== lightsStateHash.spotLength ||\n\t\t\t\tlightsHash.rectAreaLength !== lightsStateHash.rectAreaLength ||\n\t\t\t\tlightsHash.hemiLength !== lightsStateHash.hemiLength ||\n\t\t\t\tlightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\n\n\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.needsUpdate ) {\n\n\t\t\tinitMaterial( material, fog, object );\n\t\t\tmaterial.needsUpdate = false;\n\n\t\t}\n\n\t\tvar refreshProgram = false;\n\t\tvar refreshMaterial = false;\n\t\tvar refreshLights = false;\n\n\t\tvar program = materialProperties.program,\n\t\t\tp_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.shader.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tvar uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.skinning ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone texture must go before other textures\n\t\t// not sure why, but otherwise weird things happen\n\n\t\tif ( material.skinning ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tvar skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tvar bones = skeleton.bones;\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === undefined ) {\n\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\n\t\t\t\t\t\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\t\t\t\t\tsize = _Math.ceilPowerOfTwo( size );\n\t\t\t\t\t\tsize = Math.max( size, 4 );\n\n\t\t\t\t\t\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\n\n\t\t\t\t\t\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\t\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\n\n\t\t\tif ( material.lights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog ) {\n\n\t\t\t\trefreshUniformsFog( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsLambert( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshToonMaterial ) {\n\n\t\t\t\t\trefreshUniformsToon( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsPhong( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\t\trefreshUniformsPhysical( m_uniforms, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trefreshUniformsStandard( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\n\t\t\t\trefreshUniformsMatcap( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDepth( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsDistance( m_uniforms, material );\n\n\t\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\t\trefreshUniformsCommon( m_uniforms, material );\n\t\t\t\trefreshUniformsNormal( m_uniforms, material );\n\n\t\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\t\trefreshUniformsLine( m_uniforms, material );\n\n\t\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\t\trefreshUniformsDash( m_uniforms, material );\n\n\t\t\t\t}\n\n\t\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\t\trefreshUniformsPoints( m_uniforms, material );\n\n\t\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\t\trefreshUniformsSprites( m_uniforms, material );\n\n\t\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\t\tm_uniforms.color.value.copy( material.color );\n\t\t\t\tm_uniforms.opacity.value = material.opacity;\n\n\t\t\t}\n\n\t\t\t// RectAreaLight Texture\n\t\t\t// TODO (mrdoob): Find a nicer implementation\n\n\t\t\tif ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1;\n\t\t\tif ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2;\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\treturn program;\n\n\t}\n\n\t// Uniforms (refresh uniforms objects)\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\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.isCubeTexture ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t\tuniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. normal map\n\t\t// 4. bump map\n\t\t// 5. alpha map\n\t\t// 6. emissive map\n\n\t\tvar uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * _pixelRatio;\n\t\tuniforms.scale.value = _height * 0.5;\n\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\t\tuniforms.map.value = material.map;\n\n\t\tif ( material.map !== null ) {\n\n\t\t\tif ( material.map.matrixAutoUpdate === true ) {\n\n\t\t\t\tmaterial.map.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( material.map.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsFog( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLambert( uniforms, material ) {\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\trefreshUniformsPhong( uniforms, material );\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material ) {\n\n\t\trefreshUniformsStandard( uniforms, material );\n\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\n\n\t\tuniforms.clearCoat.value = material.clearCoat;\n\t\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDepth( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\tfunction refreshUniformsNormal( uniforms, material ) {\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\t//\n\tthis.setFramebuffer = function ( value ) {\n\n\t\tif ( _framebuffer !== value ) _gl.bindFramebuffer( 36160, value );\n\n\t\t_framebuffer = value;\n\n\t};\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipMapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipMapLevel ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipMapLevel;\n\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\n\n\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t}\n\n\t\tvar framebuffer = _framebuffer;\n\t\tvar isCube = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLRenderTargetCube ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace || 0 ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tif ( _currentFramebuffer !== framebuffer ) {\n\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\t\t\t_currentFramebuffer = framebuffer;\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tvar textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipMapLevel || 0 );\n\n\t\t}\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tvar restore = false;\n\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\n\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t\trestore = true;\n\n\t\t\t}\n\n\t\t\ttry {\n\n\t\t\t\tvar texture = renderTarget.texture;\n\t\t\t\tvar textureFormat = texture.format;\n\t\t\t\tvar textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\tif ( restore ) {\n\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level ) {\n\n\t\tvar width = texture.image.width;\n\t\tvar height = texture.image.height;\n\t\tvar glFormat = utils.convert( texture.format );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 );\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) {\n\n\t\tvar width = srcTexture.image.width;\n\t\tvar height = srcTexture.image.height;\n\t\tvar glFormat = utils.convert( dstTexture.format );\n\t\tvar glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\t_gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t}\n\n\t};\n\n\t/*\n\tif ( typeof __THREE_DEVTOOLS__ !== undefined ) {\n\t\t__THREE_DEVTOOLS__.dispatchEvent( { type: 'renderer', value: this } );\n\t}\n\t*/\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction FogExp2( color, density ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\tthis.density = ( density !== undefined ) ? density : 0.00025;\n\n}\n\nObject.assign( FogExp2.prototype, {\n\n\tisFogExp2: true,\n\n\tclone: function () {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Fog( color, near, far ) {\n\n\tthis.name = '';\n\n\tthis.color = new Color( color );\n\n\tthis.near = ( near !== undefined ) ? near : 1;\n\tthis.far = ( far !== undefined ) ? far : 1000;\n\n}\n\nObject.assign( Fog.prototype, {\n\n\tisFog: true,\n\n\tclone: function () {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t},\n\n\ttoJSON: function ( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Scene() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Scene';\n\n\tthis.background = null;\n\tthis.fog = null;\n\tthis.overrideMaterial = null;\n\n\tthis.autoUpdate = true; // checked by the renderer\n\n\t/*\n\tif ( typeof __THREE_DEVTOOLS__ !== undefined ) {\n\t\t__THREE_DEVTOOLS__.dispatchEvent( { type: 'scene', value: this } );\n\t}\n\t*/\n\n}\n\nScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Scene,\n\n\tisScene: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tObject3D.prototype.copy.call( this, source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.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\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t},\n\n\tdispose: function () {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBuffer( array, stride ) {\n\n\tthis.array = array;\n\tthis.stride = stride;\n\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\tthis.dynamic = false;\n\tthis.updateRange = { offset: 0, count: - 1 };\n\n\tthis.version = 0;\n\n}\n\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\n\n\tset: function ( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n} );\n\nObject.assign( InterleavedBuffer.prototype, {\n\n\tisInterleavedBuffer: true,\n\n\tonUploadCallback: function () {},\n\n\tsetArray: function ( array ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.count = array !== undefined ? array.length / this.stride : 0;\n\t\tthis.array = array;\n\n\t\treturn this;\n\n\t},\n\n\tsetDynamic: function ( value ) {\n\n\t\tthis.dynamic = value;\n\n\t\treturn this;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.dynamic = source.dynamic;\n\n\t\treturn this;\n\n\t},\n\n\tcopyAt: function ( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tset: function ( value, offset ) {\n\n\t\tif ( offset === undefined ) offset = 0;\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tonUpload: function ( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\n\n\tthis.data = interleavedBuffer;\n\tthis.itemSize = itemSize;\n\tthis.offset = offset;\n\n\tthis.normalized = normalized === true;\n\n}\n\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\n\n\tcount: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.count;\n\n\t\t}\n\n\t},\n\n\tarray: {\n\n\t\tget: function () {\n\n\t\t\treturn this.data.array;\n\n\t\t}\n\n\t}\n\n} );\n\nObject.assign( InterleavedBufferAttribute.prototype, {\n\n\tisInterleavedBufferAttribute: true,\n\n\tsetX: function ( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t},\n\n\tsetY: function ( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetZ: function ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetW: function ( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t},\n\n\tgetX: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t},\n\n\tgetY: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t},\n\n\tgetZ: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t},\n\n\tgetW: function ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t},\n\n\tsetXY: function ( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZ: function ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t},\n\n\tsetXYZW: function ( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * map: new THREE.Texture( ),\n * rotation: ,\n * sizeAttenuation: \n * }\n */\n\nfunction SpriteMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'SpriteMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\tthis.map = null;\n\n\tthis.rotation = 0;\n\n\tthis.sizeAttenuation = true;\n\n\tthis.lights = false;\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nSpriteMaterial.prototype = Object.create( Material.prototype );\nSpriteMaterial.prototype.constructor = SpriteMaterial;\nSpriteMaterial.prototype.isSpriteMaterial = true;\n\nSpriteMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.map = source.map;\n\n\tthis.rotation = source.rotation;\n\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\treturn this;\n\n};\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar geometry;\n\nfunction Sprite( material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Sprite';\n\n\tif ( geometry === undefined ) {\n\n\t\tgeometry = new BufferGeometry();\n\n\t\tvar float32Array = new Float32Array( [\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t] );\n\n\t\tvar interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\tgeometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\tgeometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\tgeometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t}\n\n\tthis.geometry = geometry;\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\tthis.center = new Vector2( 0.5, 0.5 );\n\n}\n\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Sprite,\n\n\tisSprite: true,\n\n\traycast: ( function () {\n\n\t\tvar intersectPoint = new Vector3();\n\t\tvar worldScale = new Vector3();\n\t\tvar mvPosition = new Vector3();\n\n\t\tvar alignedPosition = new Vector2();\n\t\tvar rotatedPosition = new Vector2();\n\t\tvar viewWorldMatrix = new Matrix4();\n\n\t\tvar vA = new Vector3();\n\t\tvar vB = new Vector3();\n\t\tvar vC = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t\t\t// compute position in camera space\n\t\t\talignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t\t\t// to check if rotation is not zero\n\t\t\tif ( sin !== undefined ) {\n\n\t\t\t\trotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y );\n\t\t\t\trotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y );\n\n\t\t\t} else {\n\n\t\t\t\trotatedPosition.copy( alignedPosition );\n\n\t\t\t}\n\n\n\t\t\tvertexPosition.copy( mvPosition );\n\t\t\tvertexPosition.x += rotatedPosition.x;\n\t\t\tvertexPosition.y += rotatedPosition.y;\n\n\t\t\t// transform to world space\n\t\t\tvertexPosition.applyMatrix4( viewWorldMatrix );\n\n\t\t}\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tworldScale.setFromMatrixScale( this.matrixWorld );\n\t\t\tviewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld );\n\t\t\tmvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\t\tvar rotation = this.material.rotation;\n\t\t\tvar sin, cos;\n\t\t\tif ( rotation !== 0 ) {\n\n\t\t\t\tcos = Math.cos( rotation );\n\t\t\t\tsin = Math.sin( rotation );\n\n\t\t\t}\n\n\t\t\tvar center = this.center;\n\n\t\t\ttransformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\ttransformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\n\t\t\tuvA.set( 0, 0 );\n\t\t\tuvB.set( 1, 0 );\n\t\t\tuvC.set( 1, 1 );\n\n\t\t\t// check first triangle\n\t\t\tvar intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint );\n\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\t// check second triangle\n\t\t\t\ttransformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos );\n\t\t\t\tuvB.set( 0, 1 );\n\n\t\t\t\tintersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint );\n\t\t\t\tif ( intersect === null ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\tintersects.push( {\n\n\t\t\t\tdistance: distance,\n\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\tuv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ),\n\t\t\t\tface: null,\n\t\t\t\tobject: this\n\n\t\t\t} );\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.material ).copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\treturn this;\n\n\t}\n\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LOD() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'LOD';\n\n\tObject.defineProperties( this, {\n\t\tlevels: {\n\t\t\tenumerable: true,\n\t\t\tvalue: []\n\t\t}\n\t} );\n\n}\n\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: LOD,\n\n\tisLOD: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source, false );\n\n\t\tvar levels = source.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\taddLevel: function ( object, distance ) {\n\n\t\tif ( distance === undefined ) distance = 0;\n\n\t\tdistance = Math.abs( distance );\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t},\n\n\tgetObjectForDistance: function ( distance ) {\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn levels[ i - 1 ].object;\n\n\t},\n\n\traycast: ( function () {\n\n\t\tvar matrixPosition = new Vector3();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t};\n\n\t}() ),\n\n\tupdate: function () {\n\n\t\tvar v1 = new Vector3();\n\t\tvar v2 = new Vector3();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar levels = this.levels;\n\n\t\t\tif ( levels.length > 1 ) {\n\n\t\t\t\tv1.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t\tv2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\t\tvar distance = v1.distanceTo( v2 );\n\n\t\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\t\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t\t} else {\n\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\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}(),\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.levels = [];\n\n\t\tvar levels = this.levels;\n\n\t\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tvar level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction SkinnedMesh( geometry, material ) {\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\n\n\t}\n\n\tMesh.call( this, geometry, material );\n\n\tthis.type = 'SkinnedMesh';\n\n\tthis.bindMode = 'attached';\n\tthis.bindMatrix = new Matrix4();\n\tthis.bindMatrixInverse = new Matrix4();\n\n}\n\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\n\n\tconstructor: SkinnedMesh,\n\n\tisSkinnedMesh: true,\n\n\tbind: function ( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.getInverse( bindMatrix );\n\n\t},\n\n\tpose: function () {\n\n\t\tthis.skeleton.pose();\n\n\t},\n\n\tnormalizeSkinWeights: function () {\n\n\t\tvar vector = new Vector4();\n\n\t\tvar skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( var i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.x = skinWeight.getX( i );\n\t\t\tvector.y = skinWeight.getY( i );\n\t\t\tvector.z = skinWeight.getZ( i );\n\t\t\tvector.w = skinWeight.getW( i );\n\n\t\t\tvar scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t},\n\n\tupdateMatrixWorld: function ( force ) {\n\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author michael guerrero / http://realitymeltdown.com\n * @author ikerr / http://verold.com\n */\n\nfunction Skeleton( bones, boneInverses ) {\n\n\t// copy the bone array\n\n\tbones = bones || [];\n\n\tthis.bones = bones.slice( 0 );\n\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\n\n\t// use the supplied bone inverses or calculate the inverses\n\n\tif ( boneInverses === undefined ) {\n\n\t\tthis.calculateInverses();\n\n\t} else {\n\n\t\tif ( this.bones.length === boneInverses.length ) {\n\n\t\t\tthis.boneInverses = boneInverses.slice( 0 );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\n\n\t\t\tthis.boneInverses = [];\n\n\t\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Skeleton.prototype, {\n\n\tcalculateInverses: function () {\n\n\t\tthis.boneInverses = [];\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.getInverse( this.bones[ i ].matrixWorld );\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t},\n\n\tpose: function () {\n\n\t\tvar bone, i, il;\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tbone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.getInverse( bone.parent.matrixWorld );\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\tupdate: ( function () {\n\n\t\tvar offsetMatrix = new Matrix4();\n\t\tvar identityMatrix = new Matrix4();\n\n\t\treturn function update() {\n\n\t\t\tvar bones = this.bones;\n\t\t\tvar boneInverses = this.boneInverses;\n\t\t\tvar boneMatrices = this.boneMatrices;\n\t\t\tvar boneTexture = this.boneTexture;\n\n\t\t\t// flatten bone matrices to array\n\n\t\t\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t\t// compute the offset between the current and the original transform\n\n\t\t\t\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\n\n\t\t\t\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t\toffsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t\t}\n\n\t\t\tif ( boneTexture !== undefined ) {\n\n\t\t\t\tboneTexture.needsUpdate = true;\n\n\t\t\t}\n\n\t\t};\n\n\t} )(),\n\n\tclone: function () {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t},\n\n\tgetBoneByName: function ( name ) {\n\n\t\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tvar bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n} );\n\n/**\n * @author mikael emtinger / http://gomo.se/\n * @author alteredq / http://alteredqualia.com/\n * @author ikerr / http://verold.com\n */\n\nfunction Bone() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Bone';\n\n}\n\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Bone,\n\n\tisBone: true\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n * linecap: \"round\",\n * linejoin: \"round\"\n * }\n */\n\nfunction LineBasicMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'LineBasicMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.linewidth = 1;\n\tthis.linecap = 'round';\n\tthis.linejoin = 'round';\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nLineBasicMaterial.prototype = Object.create( Material.prototype );\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\n\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\n\nLineBasicMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.linewidth = source.linewidth;\n\tthis.linecap = source.linecap;\n\tthis.linejoin = source.linejoin;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Line( geometry, material, mode ) {\n\n\tif ( mode === 1 ) {\n\n\t\tconsole.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' );\n\n\t}\n\n\tObject3D.call( this );\n\n\tthis.type = 'Line';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Line,\n\n\tisLine: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [ 0 ];\n\n\t\t\t\t\tfor ( var i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i ] += start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tlineDistances[ 0 ] = 0;\n\n\t\t\t\tfor ( var i = 1, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ 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}() ),\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar precision = raycaster.linePrecision;\n\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += precision;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localPrecisionSq = localPrecision * localPrecision;\n\n\t\t\tvar vStart = new Vector3();\n\t\t\tvar vEnd = new Vector3();\n\t\t\tvar interSegment = new Vector3();\n\t\t\tvar interRay = new Vector3();\n\t\t\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\t\t\t\t\t\tvar b = indices[ i + 1 ];\n\n\t\t\t\t\t\tvStart.fromArray( positions, a * 3 );\n\t\t\t\t\t\tvEnd.fromArray( positions, b * 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > localPrecisionSq ) 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} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\n\n\t\t\t\t\t\tvStart.fromArray( positions, 3 * i );\n\t\t\t\t\t\tvEnd.fromArray( positions, 3 * i + 3 );\n\n\t\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\t\t\tif ( distSq > localPrecisionSq ) 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} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar nbVertices = vertices.length;\n\n\t\t\t\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\n\n\t\t\t\t\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\n\n\t\t\t\t\tif ( distSq > localPrecisionSq ) continue;\n\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\t\tindex: i,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\t\tobject: this\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LineSegments( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineSegments';\n\n}\n\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineSegments,\n\n\tisLineSegments: true,\n\n\tcomputeLineDistances: ( function () {\n\n\t\tvar start = new Vector3();\n\t\tvar end = new Vector3();\n\n\t\treturn function computeLineDistances() {\n\n\t\t\tvar geometry = this.geometry;\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\t// we assume non-indexed geometry\n\n\t\t\t\tif ( geometry.index === null ) {\n\n\t\t\t\t\tvar positionAttribute = geometry.attributes.position;\n\t\t\t\t\tvar lineDistances = [];\n\n\t\t\t\t\tfor ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t\t\tstart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t\t\tend.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t\t\t}\n\n\t\t\t} else if ( geometry.isGeometry ) {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\t\t\t\tvar lineDistances = geometry.lineDistances;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i += 2 ) {\n\n\t\t\t\t\tstart.copy( vertices[ i ] );\n\t\t\t\t\tend.copy( vertices[ i + 1 ] );\n\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end );\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} );\n\n/**\n * @author mgreter / http://github.com/mgreter\n */\n\nfunction LineLoop( geometry, material ) {\n\n\tLine.call( this, geometry, material );\n\n\tthis.type = 'LineLoop';\n\n}\n\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\n\n\tconstructor: LineLoop,\n\n\tisLineLoop: true,\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n * map: new THREE.Texture( ),\n *\n * size: ,\n * sizeAttenuation: \n *\n * morphTargets: \n * }\n */\n\nfunction PointsMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'PointsMaterial';\n\n\tthis.color = new Color( 0xffffff );\n\n\tthis.map = null;\n\n\tthis.size = 1;\n\tthis.sizeAttenuation = true;\n\n\tthis.morphTargets = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nPointsMaterial.prototype = Object.create( Material.prototype );\nPointsMaterial.prototype.constructor = PointsMaterial;\n\nPointsMaterial.prototype.isPointsMaterial = true;\n\nPointsMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.size = source.size;\n\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\tthis.morphTargets = source.morphTargets;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Points( geometry, material ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Points';\n\n\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\n\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\n\n}\n\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Points,\n\n\tisPoints: true,\n\n\traycast: ( function () {\n\n\t\tvar inverseMatrix = new Matrix4();\n\t\tvar ray = new Ray();\n\t\tvar sphere = new Sphere();\n\n\t\treturn function raycast( raycaster, intersects ) {\n\n\t\t\tvar object = this;\n\t\t\tvar geometry = this.geometry;\n\t\t\tvar matrixWorld = this.matrixWorld;\n\t\t\tvar threshold = raycaster.params.Points.threshold;\n\n\t\t\t// Checking boundingSphere distance to ray\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\tsphere.copy( geometry.boundingSphere );\n\t\t\tsphere.applyMatrix4( matrixWorld );\n\t\t\tsphere.radius += threshold;\n\n\t\t\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\n\n\t\t\t//\n\n\t\t\tinverseMatrix.getInverse( matrixWorld );\n\t\t\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\n\n\t\t\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\t\tvar localThresholdSq = localThreshold * localThreshold;\n\t\t\tvar position = new Vector3();\n\t\t\tvar intersectPoint = new Vector3();\n\n\t\t\tfunction testPoint( point, index ) {\n\n\t\t\t\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\n\n\t\t\t\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\t\t\t\tray.closestPointToPoint( point, intersectPoint );\n\t\t\t\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\t\t\t\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\t\t\t\tintersects.push( {\n\n\t\t\t\t\t\tdistance: distance,\n\t\t\t\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\t\t\t\tpoint: intersectPoint.clone(),\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tface: null,\n\t\t\t\t\t\tobject: object\n\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( geometry.isBufferGeometry ) {\n\n\t\t\t\tvar index = geometry.index;\n\t\t\t\tvar attributes = geometry.attributes;\n\t\t\t\tvar positions = attributes.position.array;\n\n\t\t\t\tif ( index !== null ) {\n\n\t\t\t\t\tvar indices = index.array;\n\n\t\t\t\t\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar a = indices[ i ];\n\n\t\t\t\t\t\tposition.fromArray( positions, a * 3 );\n\n\t\t\t\t\t\ttestPoint( position, a );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\n\n\t\t\t\t\t\tposition.fromArray( positions, i * 3 );\n\n\t\t\t\t\t\ttestPoint( position, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tvar vertices = geometry.vertices;\n\n\t\t\t\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\n\n\t\t\t\t\ttestPoint( vertices[ i ], i );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t}() ),\n\n\tclone: function () {\n\n\t\treturn new this.constructor( this.geometry, this.material ).copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.format = format !== undefined ? format : RGBFormat;\n\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\tthis.generateMipmaps = false;\n\n}\n\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\n\n\tconstructor: VideoTexture,\n\n\tisVideoTexture: true,\n\n\tupdate: function () {\n\n\t\tvar video = this.image;\n\n\t\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\tthis.image = { width: width, height: height };\n\tthis.mipmaps = mipmaps;\n\n\t// no flipping for cube textures\n\t// (also flipping doesn't work for compressed textures )\n\n\tthis.flipY = false;\n\n\t// can't generate mipmaps for compressed textures\n\t// mips must be embedded in DDS files\n\n\tthis.generateMipmaps = false;\n\n}\n\nCompressedTexture.prototype = Object.create( Texture.prototype );\nCompressedTexture.prototype.constructor = CompressedTexture;\n\nCompressedTexture.prototype.isCompressedTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.needsUpdate = true;\n\n}\n\nCanvasTexture.prototype = Object.create( Texture.prototype );\nCanvasTexture.prototype.constructor = CanvasTexture;\nCanvasTexture.prototype.isCanvasTexture = true;\n\n/**\n * @author Matt DesLauriers / @mattdesl\n * @author atix / arthursilber.de\n */\n\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\tformat = format !== undefined ? format : DepthFormat;\n\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t}\n\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\tthis.image = { width: width, height: height };\n\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\tthis.flipY = false;\n\tthis.generateMipmaps\t= false;\n\n}\n\nDepthTexture.prototype = Object.create( Texture.prototype );\nDepthTexture.prototype.constructor = DepthTexture;\nDepthTexture.prototype.isDepthTexture = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction WireframeGeometry( geometry ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'WireframeGeometry';\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar i, j, l, o, ol;\n\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\tvar vertex;\n\n\t// different logic for Geometry and BufferGeometry\n\n\tif ( geometry && geometry.isGeometry ) {\n\n\t\t// create a data structure that contains all edges without duplicates\n\n\t\tvar faces = geometry.faces;\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices\n\n\t\tfor ( key in edges ) {\n\n\t\t\te = edges[ key ];\n\n\t\t\tvertex = geometry.vertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = geometry.vertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t} else if ( geometry && geometry.isBufferGeometry ) {\n\n\t\tvar position, indices, groups;\n\t\tvar group, start, count;\n\t\tvar index1, index2;\n\n\t\tvertex = new Vector3();\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\t// indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\t\t\tindices = geometry.index;\n\t\t\tgroups = geometry.groups;\n\n\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t}\n\n\t\t\t// create a data structure that contains all eges without duplicates\n\n\t\t\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\tgroup = groups[ o ];\n\n\t\t\t\tstart = group.start;\n\t\t\t\tcount = group.count;\n\n\t\t\t\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\n\n\t\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\tedge1 = indices.getX( i + j );\n\t\t\t\t\t\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\n\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\n\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\t\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// generate vertices\n\n\t\t\tfor ( key in edges ) {\n\n\t\t\t\te = edges[ key ];\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// non-indexed BufferGeometry\n\n\t\t\tposition = geometry.attributes.position;\n\n\t\t\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\tfor ( j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\tindex1 = 3 * i + j;\n\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\n\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\nWireframeGeometry.prototype.constructor = WireframeGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Parametric Surfaces Geometry\n * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\n */\n\n// ParametricGeometry\n\nfunction ParametricGeometry( func, slices, stacks ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ParametricGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\n\tthis.mergeVertices();\n\n}\n\nParametricGeometry.prototype = Object.create( Geometry.prototype );\nParametricGeometry.prototype.constructor = ParametricGeometry;\n\n// ParametricBufferGeometry\n\nfunction ParametricBufferGeometry( func, slices, stacks ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ParametricBufferGeometry';\n\n\tthis.parameters = {\n\t\tfunc: func,\n\t\tslices: slices,\n\t\tstacks: stacks\n\t};\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\tvar EPS = 0.00001;\n\n\tvar normal = new Vector3();\n\n\tvar p0 = new Vector3(), p1 = new Vector3();\n\tvar pu = new Vector3(), pv = new Vector3();\n\n\tvar i, j;\n\n\tif ( func.length < 3 ) {\n\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\n\n\t}\n\n\t// generate vertices, normals and uvs\n\n\tvar sliceCount = slices + 1;\n\n\tfor ( i = 0; i <= stacks; i ++ ) {\n\n\t\tvar v = i / stacks;\n\n\t\tfor ( j = 0; j <= slices; j ++ ) {\n\n\t\t\tvar u = j / slices;\n\n\t\t\t// vertex\n\n\t\t\tfunc( u, v, p0 );\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\n\n\t\t\t// normal\n\n\t\t\t// approximate tangent vectors via finite differences\n\n\t\t\tif ( u - EPS >= 0 ) {\n\n\t\t\t\tfunc( u - EPS, v, p1 );\n\t\t\t\tpu.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u + EPS, v, p1 );\n\t\t\t\tpu.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\tif ( v - EPS >= 0 ) {\n\n\t\t\t\tfunc( u, v - EPS, p1 );\n\t\t\t\tpv.subVectors( p0, p1 );\n\n\t\t\t} else {\n\n\t\t\t\tfunc( u, v + EPS, p1 );\n\t\t\t\tpv.subVectors( p1, p0 );\n\n\t\t\t}\n\n\t\t\t// cross product of tangent vectors returns surface normal\n\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u, v );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( i = 0; i < stacks; i ++ ) {\n\n\t\tfor ( j = 0; j < slices; j ++ ) {\n\n\t\t\tvar a = i * sliceCount + j;\n\t\t\tvar b = i * sliceCount + j + 1;\n\t\t\tvar c = ( i + 1 ) * sliceCount + j + 1;\n\t\t\tvar d = ( i + 1 ) * sliceCount + j;\n\n\t\t\t// faces one and two\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\n\n/**\n * @author clockworkgeek / https://github.com/clockworkgeek\n * @author timothypratley / https://github.com/timothypratley\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// PolyhedronGeometry\n\nfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'PolyhedronGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\nPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\n\n// PolyhedronBufferGeometry\n\nfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'PolyhedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tvertices: vertices,\n\t\tindices: indices,\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tradius = radius || 1;\n\tdetail = detail || 0;\n\n\t// default buffer data\n\n\tvar vertexBuffer = [];\n\tvar uvBuffer = [];\n\n\t// the subdivision creates the vertex buffer data\n\n\tsubdivide( detail );\n\n\t// all vertices should lie on a conceptual sphere with a given radius\n\n\tappplyRadius( radius );\n\n\t// finally, create the uv data\n\n\tgenerateUVs();\n\n\t// build non-indexed geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\tif ( detail === 0 ) {\n\n\t\tthis.computeVertexNormals(); // flat normals\n\n\t} else {\n\n\t\tthis.normalizeNormals(); // smooth normals\n\n\t}\n\n\t// helper functions\n\n\tfunction subdivide( detail ) {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\tfor ( var i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t// get the vertices of the face\n\n\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t// perform subdivision\n\n\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t}\n\n\t}\n\n\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\tvar cols = Math.pow( 2, detail );\n\n\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\tvar v = [];\n\n\t\tvar i, j;\n\n\t\t// construct all of the vertices for this subdivision\n\n\t\tfor ( i = 0; i <= cols; i ++ ) {\n\n\t\t\tv[ i ] = [];\n\n\t\t\tvar aj = a.clone().lerp( c, i / cols );\n\t\t\tvar bj = b.clone().lerp( c, i / cols );\n\n\t\t\tvar rows = cols - i;\n\n\t\t\tfor ( j = 0; j <= rows; j ++ ) {\n\n\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// construct all of the faces\n\n\t\tfor ( i = 0; i < cols; i ++ ) {\n\n\t\t\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\tvar k = Math.floor( j / 2 );\n\n\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction appplyRadius( radius ) {\n\n\t\tvar vertex = new Vector3();\n\n\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tvar vertex = new Vector3();\n\n\t\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\tvar v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t}\n\n\t\tcorrectUVs();\n\n\t\tcorrectSeam();\n\n\t}\n\n\tfunction correctSeam() {\n\n\t\t// handle case when face straddles the seam, see #3269\n\n\t\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t// uv data of a single face\n\n\t\t\tvar x0 = uvBuffer[ i + 0 ];\n\t\t\tvar x1 = uvBuffer[ i + 2 ];\n\t\t\tvar x2 = uvBuffer[ i + 4 ];\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\t// 0.9 is somewhat arbitrary\n\n\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction pushVertex( vertex ) {\n\n\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t}\n\n\tfunction getVertexByIndex( index, vertex ) {\n\n\t\tvar stride = index * 3;\n\n\t\tvertex.x = vertices[ stride + 0 ];\n\t\tvertex.y = vertices[ stride + 1 ];\n\t\tvertex.z = vertices[ stride + 2 ];\n\n\t}\n\n\tfunction correctUVs() {\n\n\t\tvar a = new Vector3();\n\t\tvar b = new Vector3();\n\t\tvar c = new Vector3();\n\n\t\tvar centroid = new Vector3();\n\n\t\tvar uvA = new Vector2();\n\t\tvar uvB = new Vector2();\n\t\tvar uvC = new Vector2();\n\n\t\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\tvar azi = azimuth( centroid );\n\n\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t}\n\n\t}\n\n\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t}\n\n\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t}\n\n\t}\n\n\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\tfunction azimuth( vector ) {\n\n\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t}\n\n\n\t// Angle above the XZ plane.\n\n\tfunction inclination( vector ) {\n\n\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t}\n\n}\n\nPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TetrahedronGeometry\n\nfunction TetrahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TetrahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\nTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\n\n// TetrahedronBufferGeometry\n\nfunction TetrahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t];\n\n\tvar indices = [\n\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'TetrahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// OctahedronGeometry\n\nfunction OctahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'OctahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nOctahedronGeometry.prototype = Object.create( Geometry.prototype );\nOctahedronGeometry.prototype.constructor = OctahedronGeometry;\n\n// OctahedronBufferGeometry\n\nfunction OctahedronBufferGeometry( radius, detail ) {\n\n\tvar vertices = [\n\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t];\n\n\tvar indices = [\n\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t1, 3, 4,\t1, 4, 2\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'OctahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\n\n/**\n * @author timothypratley / https://github.com/timothypratley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// IcosahedronGeometry\n\nfunction IcosahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'IcosahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\nIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\n\n// IcosahedronBufferGeometry\n\nfunction IcosahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\tvar vertices = [\n\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t 0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t t, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t];\n\n\tvar indices = [\n\t\t 0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t 1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t 3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t 4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'IcosahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\n\n/**\n * @author Abe Pazos / https://hamoid.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// DodecahedronGeometry\n\nfunction DodecahedronGeometry( radius, detail ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'DodecahedronGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\n\tthis.mergeVertices();\n\n}\n\nDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\nDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\n\n// DodecahedronBufferGeometry\n\nfunction DodecahedronBufferGeometry( radius, detail ) {\n\n\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\tvar r = 1 / t;\n\n\tvar vertices = [\n\n\t\t// (±1, ±1, ±1)\n\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t// (0, ±1/φ, ±φ)\n\t\t 0, - r, - t, 0, - r, t,\n\t\t 0, r, - t, 0, r, t,\n\n\t\t// (±1/φ, ±φ, 0)\n\t\t- r, - t, 0, - r, t, 0,\n\t\t r, - t, 0, r, t, 0,\n\n\t\t// (±φ, 0, ±1/φ)\n\t\t- t, 0, - r, t, 0, - r,\n\t\t- t, 0, r, t, 0, r\n\t];\n\n\tvar indices = [\n\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t];\n\n\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\n\n\tthis.type = 'DodecahedronBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tdetail: detail\n\t};\n\n}\n\nDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\nDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\n\n/**\n * @author oosmoxiecode / https://github.com/oosmoxiecode\n * @author WestLangley / https://github.com/WestLangley\n * @author zz85 / https://github.com/zz85\n * @author miningold / https://github.com/miningold\n * @author jonobr1 / https://github.com/jonobr1\n * @author Mugen87 / https://github.com/Mugen87\n *\n */\n\n// TubeGeometry\n\nfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TubeGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\n\n\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = bufferGeometry.tangents;\n\tthis.normals = bufferGeometry.normals;\n\tthis.binormals = bufferGeometry.binormals;\n\n\t// create geometry\n\n\tthis.fromBufferGeometry( bufferGeometry );\n\tthis.mergeVertices();\n\n}\n\nTubeGeometry.prototype = Object.create( Geometry.prototype );\nTubeGeometry.prototype.constructor = TubeGeometry;\n\n// TubeBufferGeometry\n\nfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TubeBufferGeometry';\n\n\tthis.parameters = {\n\t\tpath: path,\n\t\ttubularSegments: tubularSegments,\n\t\tradius: radius,\n\t\tradialSegments: radialSegments,\n\t\tclosed: closed\n\t};\n\n\ttubularSegments = tubularSegments || 64;\n\tradius = radius || 1;\n\tradialSegments = radialSegments || 8;\n\tclosed = closed || false;\n\n\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t// expose internals\n\n\tthis.tangents = frames.tangents;\n\tthis.normals = frames.normals;\n\tthis.binormals = frames.binormals;\n\n\t// helper variables\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\tvar uv = new Vector2();\n\tvar P = new Vector3();\n\n\tvar i, j;\n\n\t// buffer\n\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\tvar indices = [];\n\n\t// create buffer data\n\n\tgenerateBufferData();\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// functions\n\n\tfunction generateBufferData() {\n\n\t\tfor ( i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\tgenerateSegment( i );\n\n\t\t}\n\n\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t// at the regular position on the given path\n\t\t//\n\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t// uvs are generated in a separate function.\n\t\t// this makes it easy compute correct values for closed geometries\n\n\t\tgenerateUVs();\n\n\t\t// finally create faces\n\n\t\tgenerateIndices();\n\n\t}\n\n\tfunction generateSegment( i ) {\n\n\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t// retrieve corresponding normal and binormal\n\n\t\tvar N = frames.normals[ i ];\n\t\tvar B = frames.binormals[ i ];\n\n\t\t// generate normals and vertices for the current segment\n\n\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\tvar sin = Math.sin( v );\n\t\t\tvar cos = - Math.cos( v );\n\n\t\t\t// normal\n\n\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\tnormal.normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\tfunction generateIndices() {\n\n\t\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\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// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction generateUVs() {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\n\nTubeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tdata.path = this.parameters.path.toJSON();\n\n\treturn data;\n\n};\n\n/**\n * @author oosmoxiecode\n * @author Mugen87 / https://github.com/Mugen87\n *\n * based on http://www.blackpawn.com/texts/pqtorus/\n */\n\n// TorusKnotGeometry\n\nfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusKnotGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\n\n\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\n\tthis.mergeVertices();\n\n}\n\nTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\nTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\n\n// TorusKnotBufferGeometry\n\nfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusKnotBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\ttubularSegments: tubularSegments,\n\t\tradialSegments: radialSegments,\n\t\tp: p,\n\t\tq: q\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\ttubularSegments = Math.floor( tubularSegments ) || 64;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\tp = p || 2;\n\tq = q || 3;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, j;\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar P1 = new Vector3();\n\tvar P2 = new Vector3();\n\n\tvar B = new Vector3();\n\tvar T = new Vector3();\n\tvar N = new Vector3();\n\n\t// generate vertices, normals and uvs\n\n\tfor ( i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\n\n\t\tvar u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t// calculate orthonormal basis\n\n\t\tT.subVectors( P2, P1 );\n\t\tN.addVectors( P2, P1 );\n\t\tB.crossVectors( T, N );\n\t\tN.crossVectors( B, T );\n\n\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\tB.normalize();\n\t\tN.normalize();\n\n\t\tfor ( j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\t\t\tvar cx = - tube * Math.cos( v );\n\t\t\tvar cy = tube * Math.sin( v );\n\n\t\t\t// now calculate the final vertex position.\n\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\n\n\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= tubularSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\tvar c = ( radialSegments + 1 ) * j + i;\n\t\t\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// this function calculates the current position on the torus curve\n\n\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\tvar cu = Math.cos( u );\n\t\tvar su = Math.sin( u );\n\t\tvar quOverP = q / p * u;\n\t\tvar cs = Math.cos( quOverP );\n\n\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t}\n\n}\n\nTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\n\n/**\n * @author oosmoxiecode\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// TorusGeometry\n\nfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TorusGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\n\tthis.mergeVertices();\n\n}\n\nTorusGeometry.prototype = Object.create( Geometry.prototype );\nTorusGeometry.prototype.constructor = TorusGeometry;\n\n// TorusBufferGeometry\n\nfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'TorusBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\ttube: tube,\n\t\tradialSegments: radialSegments,\n\t\ttubularSegments: tubularSegments,\n\t\tarc: arc\n\t};\n\n\tradius = radius || 1;\n\ttube = tube || 0.4;\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\ttubularSegments = Math.floor( tubularSegments ) || 6;\n\tarc = arc || Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar center = new Vector3();\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\tvar u = i / tubularSegments * arc;\n\t\t\tvar v = j / radialSegments * Math.PI * 2;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( i / tubularSegments );\n\t\t\tuvs.push( j / radialSegments );\n\n\t\t}\n\n\t}\n\n\t// generate indices\n\n\tfor ( j = 1; j <= radialSegments; j ++ ) {\n\n\t\tfor ( i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t// indices\n\n\t\t\tvar a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\tvar d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n * Port from https://github.com/mapbox/earcut (v2.1.2)\n */\n\nvar Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim ) {\n\n\t\tdim = dim || 2;\n\n\t\tvar hasHoles = holeIndices && holeIndices.length,\n\t\t\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\n\t\t\touterNode = linkedList( data, 0, outerLen, dim, true ),\n\t\t\ttriangles = [];\n\n\t\tif ( ! outerNode ) return triangles;\n\n\t\tvar minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( var i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\n\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tvar i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\n\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tvar p = start, again;\n\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\n\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tvar stop = ear, prev, next;\n\n\t// iterate through ears, slicing them one by one\n\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertice leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( ear, triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\n\nfunction isEar( ear ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tvar p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tvar a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\n\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\n\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\t// first look for points inside the triangle in increasing z-order\n\n\tvar p = ear.nextZ;\n\n\twhile ( p && p.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.nextZ;\n\n\t}\n\n\t// then look for points in decreasing z-order\n\n\tp = ear.prevZ;\n\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\n\t\tp = p.prevZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\n\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tvar p = start;\n\n\tdo {\n\n\t\tvar a = p.prev, b = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn p;\n\n}\n\n// try splitting polygon into two and triangulate them independently\n\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\n\tvar a = start;\n\n\tdo {\n\n\t\tvar b = a.next.next;\n\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\n\t\t\t\tvar c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\n\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tvar queue = [], i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\n\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\n\tif ( outerNode ) {\n\n\t\tvar b = splitPolygon( outerNode, hole );\n\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\n\nfunction findHoleBridge( hole, outerNode ) {\n\n\tvar p = outerNode,\n\t\thx = hole.x,\n\t\thy = hole.y,\n\t\tqx = - Infinity,\n\t\tm;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tvar stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y,\n\t\ttanMin = Infinity,\n\t\ttan;\n\n\tp = m.next;\n\n\twhile ( p !== stop ) {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t}\n\n\treturn m;\n\n}\n\n// interlink polygon nodes in z-order\n\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tvar p = start;\n\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\n\nfunction sortLinked( list ) {\n\n\tvar i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\n\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\n\nfunction getLeftmost( start ) {\n\n\tvar p = start, leftmost = start;\n\n\tdo {\n\n\t\tif ( p.x < leftmost.x ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\n\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\n\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\n\t\tlocallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\n\n}\n\n// signed area of a triangle\n\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\n\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\n\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tif ( ( equals( p1, q1 ) && equals( p2, q2 ) ) ||\n\t\t\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\n\n\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\n\t\t\t\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\n\nfunction intersectsPolygon( a, b ) {\n\n\tvar p = a;\n\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\t\t\tintersects( p, p.next, a, b ) ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\n\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\n\nfunction middleInside( a, b ) {\n\n\tvar p = a,\n\t\tinside = false,\n\t\tpx = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) {\n\n\t\t\tinside = ! inside;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\n\nfunction splitPolygon( a, b ) {\n\n\tvar a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\n\nfunction insertNode( i, x, y, last ) {\n\n\tvar p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertice index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertice nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tvar sum = 0;\n\n\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n */\n\nvar ShapeUtils = {\n\n\t// calculate area of the contour polygon\n\n\tarea: function ( contour ) {\n\n\t\tvar n = contour.length;\n\t\tvar a = 0.0;\n\n\t\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t},\n\n\tisClockWise: function ( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t},\n\n\ttriangulateShape: function ( contour, holes ) {\n\n\t\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tvar holeIndices = []; // array of hole indices\n\t\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tvar holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( var i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tvar triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( var i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n};\n\nfunction removeDupEndPts( points ) {\n\n\tvar l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( var i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n// ExtrudeGeometry\n\nfunction ExtrudeGeometry( shapes, options ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ExtrudeGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\n\tthis.mergeVertices();\n\n}\n\nExtrudeGeometry.prototype = Object.create( Geometry.prototype );\nExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\n\nExtrudeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n// ExtrudeBufferGeometry\n\nfunction ExtrudeBufferGeometry( shapes, options ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ExtrudeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\toptions: options\n\t};\n\n\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\tvar scope = this;\n\n\tvar verticesArray = [];\n\tvar uvArray = [];\n\n\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\tvar shape = shapes[ i ];\n\t\taddShape( shape );\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\tthis.computeVertexNormals();\n\n\t// functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar placeholder = [];\n\n\t\t// options\n\n\t\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\tvar steps = options.steps !== undefined ? options.steps : 1;\n\t\tvar depth = options.depth !== undefined ? options.depth : 100;\n\n\t\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\n\t\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\n\t\tvar bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\tvar extrudePath = options.extrudePath;\n\n\t\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t// deprecated options\n\n\t\tif ( options.amount !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\n\t\t\tdepth = options.amount;\n\n\t\t}\n\n\t\t//\n\n\t\tvar extrudePts, extrudeByPath = false;\n\t\tvar splineTube, binormal, normal, position2;\n\n\t\tif ( extrudePath ) {\n\n\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\textrudeByPath = true;\n\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t// SETUP TNB variables\n\n\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\tbinormal = new Vector3();\n\t\t\tnormal = new Vector3();\n\t\t\tposition2 = new Vector3();\n\n\t\t}\n\n\t\t// Safeguards if bevels are not enabled\n\n\t\tif ( ! bevelEnabled ) {\n\n\t\t\tbevelSegments = 0;\n\t\t\tbevelThickness = 0;\n\t\t\tbevelSize = 0;\n\t\t\tbevelOffset = 0;\n\n\t\t}\n\n\t\t// Variables initialization\n\n\t\tvar ahole, h, hl; // looping of holes\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 = ! 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 ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tvar faces = 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; // 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,\n\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\tvar v_next_x = inNext.x - inPt.x,\n\t\t\t\tv_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( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t// but prevent crazy spikes\n\t\t\t\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 new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\tvar direction_eq = false; // 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 new 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 = [],\n\t\t\toneHoleMovements, 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 * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\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 + bevelOffset;\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, depth / steps * s );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\n\t\t// Add bevel segments planes\n\n\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\tt = b / bevelSegments;\n\t\t\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\tbs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\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, depth + 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, depth + z );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/* Faces */\n\n\t\t// Top and bottom faces\n\n\t\tbuildLidFaces();\n\n\t\t// Sides faces\n\n\t\tbuildSideFaces();\n\n\n\t\t///// Internal functions\n\n\t\tfunction buildLidFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\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\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t}\n\n\t\t// Create faces for the z-sides of the shape\n\n\t\tfunction buildSideFaces() {\n\n\t\t\tvar start = verticesArray.length / 3;\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\n\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t}\n\n\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\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,\n\t\t\t\t\tsl = 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 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction v( x, y, z ) {\n\n\t\t\tplaceholder.push( x );\n\t\t\tplaceholder.push( y );\n\t\t\tplaceholder.push( z );\n\n\t\t}\n\n\n\t\tfunction f3( a, b, c ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\n\t\t}\n\n\t\tfunction f4( a, b, c, d ) {\n\n\t\t\taddVertex( a );\n\t\t\taddVertex( b );\n\t\t\taddVertex( d );\n\n\t\t\taddVertex( b );\n\t\t\taddVertex( c );\n\t\t\taddVertex( d );\n\n\n\t\t\tvar nextIndex = verticesArray.length / 3;\n\t\t\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\taddUV( uvs[ 0 ] );\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\taddUV( uvs[ 1 ] );\n\t\t\taddUV( uvs[ 2 ] );\n\t\t\taddUV( uvs[ 3 ] );\n\n\t\t}\n\n\t\tfunction addVertex( index ) {\n\n\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t}\n\n\n\t\tfunction addUV( vector2 ) {\n\n\t\t\tuvArray.push( vector2.x );\n\t\t\tuvArray.push( vector2.y );\n\n\t\t}\n\n\t}\n\n}\n\nExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\n\nExtrudeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\tvar options = this.parameters.options;\n\n\treturn toJSON( shapes, options, data );\n\n};\n\n//\n\nvar WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tvar a_x = vertices[ indexA * 3 ];\n\t\tvar a_y = vertices[ indexA * 3 + 1 ];\n\t\tvar a_z = vertices[ indexA * 3 + 2 ];\n\t\tvar b_x = vertices[ indexB * 3 ];\n\t\tvar b_y = vertices[ indexB * 3 + 1 ];\n\t\tvar b_z = vertices[ indexB * 3 + 2 ];\n\t\tvar c_x = vertices[ indexC * 3 ];\n\t\tvar c_y = vertices[ indexC * 3 + 1 ];\n\t\tvar c_z = vertices[ indexC * 3 + 2 ];\n\t\tvar d_x = vertices[ indexD * 3 ];\n\t\tvar d_y = vertices[ indexD * 3 + 1 ];\n\t\tvar d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n};\n\nfunction toJSON( shapes, options, data ) {\n\n\t//\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\t//\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author alteredq / http://alteredqualia.com/\n *\n * Text = 3D Text\n *\n * parameters = {\n * font: , // font\n *\n * size: , // size of the text\n * height: , // thickness to extrude text\n * curveSegments: , // number of points on the curves\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into text bevel goes\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\n * bevelOffset: // how far from text outline does bevel start\n * }\n */\n\n// TextGeometry\n\nfunction TextGeometry( text, parameters ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'TextGeometry';\n\n\tthis.parameters = {\n\t\ttext: text,\n\t\tparameters: parameters\n\t};\n\n\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\n\tthis.mergeVertices();\n\n}\n\nTextGeometry.prototype = Object.create( Geometry.prototype );\nTextGeometry.prototype.constructor = TextGeometry;\n\n// TextBufferGeometry\n\nfunction TextBufferGeometry( text, parameters ) {\n\n\tparameters = parameters || {};\n\n\tvar font = parameters.font;\n\n\tif ( ! ( font && font.isFont ) ) {\n\n\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\n\t\treturn new Geometry();\n\n\t}\n\n\tvar shapes = font.generateShapes( text, parameters.size );\n\n\t// translate parameters to ExtrudeGeometry API\n\n\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\n\n\t// defaults\n\n\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\n\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\n\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\n\n\tExtrudeBufferGeometry.call( this, shapes, parameters );\n\n\tthis.type = 'TextBufferGeometry';\n\n}\n\nTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\nTextBufferGeometry.prototype.constructor = TextBufferGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// SphereGeometry\n\nfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'SphereGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nSphereGeometry.prototype = Object.create( Geometry.prototype );\nSphereGeometry.prototype.constructor = SphereGeometry;\n\n// SphereBufferGeometry\n\nfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'SphereBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\twidthSegments: widthSegments,\n\t\theightSegments: heightSegments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\n\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\n\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\n\n\tphiStart = phiStart !== undefined ? phiStart : 0;\n\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\n\n\tvar thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\tvar ix, iy;\n\n\tvar index = 0;\n\tvar grid = [];\n\n\tvar vertex = new Vector3();\n\tvar normal = new Vector3();\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// generate vertices, normals and uvs\n\n\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\tvar verticesRow = [];\n\n\t\tvar v = iy / heightSegments;\n\n\t\t// special case for the poles\n\n\t\tvar uOffset = 0;\n\n\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t}\n\n\t\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\tvar u = ix / widthSegments;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormal.copy( vertex ).normalize();\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\tverticesRow.push( index ++ );\n\n\t\t}\n\n\t\tgrid.push( verticesRow );\n\n\t}\n\n\t// indices\n\n\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\tvar a = grid[ iy ][ ix + 1 ];\n\t\t\tvar b = grid[ iy ][ ix ];\n\t\t\tvar c = grid[ iy + 1 ][ ix ];\n\t\t\tvar d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\n\n/**\n * @author Kaleb Murphy\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// RingGeometry\n\nfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'RingGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nRingGeometry.prototype = Object.create( Geometry.prototype );\nRingGeometry.prototype.constructor = RingGeometry;\n\n// RingBufferGeometry\n\nfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'RingBufferGeometry';\n\n\tthis.parameters = {\n\t\tinnerRadius: innerRadius,\n\t\touterRadius: outerRadius,\n\t\tthetaSegments: thetaSegments,\n\t\tphiSegments: phiSegments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tinnerRadius = innerRadius || 0.5;\n\touterRadius = outerRadius || 1;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\n\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// some helper variables\n\n\tvar segment;\n\tvar radius = innerRadius;\n\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar j, i;\n\n\t// generate vertices, normals and uvs\n\n\tfor ( j = 0; j <= phiSegments; j ++ ) {\n\n\t\tfor ( i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\tsegment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// increase the radius for next row of vertices\n\n\t\tradius += radiusStep;\n\n\t}\n\n\t// indices\n\n\tfor ( j = 0; j < phiSegments; j ++ ) {\n\n\t\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\tfor ( i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\tsegment = i + thetaSegmentLevel;\n\n\t\t\tvar a = segment;\n\t\t\tvar b = segment + thetaSegments + 1;\n\t\t\tvar c = segment + thetaSegments + 2;\n\t\t\tvar d = segment + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nRingBufferGeometry.prototype.constructor = RingBufferGeometry;\n\n/**\n * @author zz85 / https://github.com/zz85\n * @author bhouston / http://clara.io\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// LatheGeometry\n\nfunction LatheGeometry( points, segments, phiStart, phiLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'LatheGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\n\tthis.mergeVertices();\n\n}\n\nLatheGeometry.prototype = Object.create( Geometry.prototype );\nLatheGeometry.prototype.constructor = LatheGeometry;\n\n// LatheBufferGeometry\n\nfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'LatheBufferGeometry';\n\n\tthis.parameters = {\n\t\tpoints: points,\n\t\tsegments: segments,\n\t\tphiStart: phiStart,\n\t\tphiLength: phiLength\n\t};\n\n\tsegments = Math.floor( segments ) || 12;\n\tphiStart = phiStart || 0;\n\tphiLength = phiLength || Math.PI * 2;\n\n\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\n\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar base;\n\tvar inverseSegments = 1.0 / segments;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\tvar i, j;\n\n\t// generate vertices and uvs\n\n\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\tvar phi = phiStart + i * inverseSegments * phiLength;\n\n\t\tvar sin = Math.sin( phi );\n\t\tvar cos = Math.cos( phi );\n\n\t\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\tvertex.y = points[ j ].y;\n\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// uv\n\n\t\t\tuv.x = i / segments;\n\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\n\t\t}\n\n\t}\n\n\t// indices\n\n\tfor ( i = 0; i < segments; i ++ ) {\n\n\t\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\tbase = j + i * points.length;\n\n\t\t\tvar a = base;\n\t\t\tvar b = base + points.length;\n\t\t\tvar c = base + points.length + 1;\n\t\t\tvar d = base + 1;\n\n\t\t\t// faces\n\n\t\t\tindices.push( a, b, d );\n\t\t\tindices.push( b, c, d );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t// generate normals\n\n\tthis.computeVertexNormals();\n\n\t// if the geometry is closed, we need to average the normals along the seam.\n\t// because the corresponding vertices are identical (but still have different UVs).\n\n\tif ( phiLength === Math.PI * 2 ) {\n\n\t\tvar normals = this.attributes.normal.array;\n\t\tvar n1 = new Vector3();\n\t\tvar n2 = new Vector3();\n\t\tvar n = new Vector3();\n\n\t\t// this is the buffer offset for the last line of vertices\n\n\t\tbase = segments * points.length * 3;\n\n\t\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\n\n\t\t\t// select the normal of the vertex in the first line\n\n\t\t\tn1.x = normals[ j + 0 ];\n\t\t\tn1.y = normals[ j + 1 ];\n\t\t\tn1.z = normals[ j + 2 ];\n\n\t\t\t// select the normal of the vertex in the last line\n\n\t\t\tn2.x = normals[ base + j + 0 ];\n\t\t\tn2.y = normals[ base + j + 1 ];\n\t\t\tn2.z = normals[ base + j + 2 ];\n\n\t\t\t// average normals\n\n\t\t\tn.addVectors( n1, n2 ).normalize();\n\n\t\t\t// assign the new values to both normals\n\n\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\n\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\n\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\n\n\t\t}\n\n\t}\n\n}\n\nLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\n\n/**\n * @author jonobr1 / http://jonobr1.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// ShapeGeometry\n\nfunction ShapeGeometry( shapes, curveSegments ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'ShapeGeometry';\n\n\tif ( typeof curveSegments === 'object' ) {\n\n\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\n\n\t\tcurveSegments = curveSegments.curveSegments;\n\n\t}\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\n\tthis.mergeVertices();\n\n}\n\nShapeGeometry.prototype = Object.create( Geometry.prototype );\nShapeGeometry.prototype.constructor = ShapeGeometry;\n\nShapeGeometry.prototype.toJSON = function () {\n\n\tvar data = Geometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n// ShapeBufferGeometry\n\nfunction ShapeBufferGeometry( shapes, curveSegments ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'ShapeBufferGeometry';\n\n\tthis.parameters = {\n\t\tshapes: shapes,\n\t\tcurveSegments: curveSegments\n\t};\n\n\tcurveSegments = curveSegments || 12;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar groupStart = 0;\n\tvar groupCount = 0;\n\n\t// allow single and array values for \"shapes\" parameter\n\n\tif ( Array.isArray( shapes ) === false ) {\n\n\t\taddShape( shapes );\n\n\t} else {\n\n\t\tfor ( var i = 0; i < shapes.length; i ++ ) {\n\n\t\t\taddShape( shapes[ i ] );\n\n\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\tgroupStart += groupCount;\n\t\t\tgroupCount = 0;\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t// helper functions\n\n\tfunction addShape( shape ) {\n\n\t\tvar i, l, shapeHole;\n\n\t\tvar indexOffset = vertices.length / 3;\n\t\tvar points = shape.extractPoints( curveSegments );\n\n\t\tvar shapeVertices = points.shape;\n\t\tvar shapeHoles = points.holes;\n\n\t\t// check direction of vertices\n\n\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t}\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t// join vertices of inner and outer paths to a single array\n\n\t\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\tshapeHole = shapeHoles[ i ];\n\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t}\n\n\t\t// vertices, normals, uvs\n\n\t\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\tvar vertex = shapeVertices[ i ];\n\n\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\tnormals.push( 0, 0, 1 );\n\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t}\n\n\t\t// incides\n\n\t\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\tvar face = faces[ i ];\n\n\t\t\tvar a = face[ 0 ] + indexOffset;\n\t\t\tvar b = face[ 1 ] + indexOffset;\n\t\t\tvar c = face[ 2 ] + indexOffset;\n\n\t\t\tindices.push( a, b, c );\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t}\n\n}\n\nShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\n\nShapeBufferGeometry.prototype.toJSON = function () {\n\n\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\tvar shapes = this.parameters.shapes;\n\n\treturn toJSON$1( shapes, data );\n\n};\n\n//\n\nfunction toJSON$1( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tvar shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction EdgesGeometry( geometry, thresholdAngle ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'EdgesGeometry';\n\n\tthis.parameters = {\n\t\tthresholdAngle: thresholdAngle\n\t};\n\n\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\n\n\t// buffer\n\n\tvar vertices = [];\n\n\t// helper variables\n\n\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\n\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\n\tvar key, keys = [ 'a', 'b', 'c' ];\n\n\t// prepare source geometry\n\n\tvar geometry2;\n\n\tif ( geometry.isBufferGeometry ) {\n\n\t\tgeometry2 = new Geometry();\n\t\tgeometry2.fromBufferGeometry( geometry );\n\n\t} else {\n\n\t\tgeometry2 = geometry.clone();\n\n\t}\n\n\tgeometry2.mergeVertices();\n\tgeometry2.computeFaceNormals();\n\n\tvar sourceVertices = geometry2.vertices;\n\tvar faces = geometry2.faces;\n\n\t// now create a data structure where each entry represents an edge with its adjoining faces\n\n\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\tvar face = faces[ i ];\n\n\t\tfor ( var j = 0; j < 3; j ++ ) {\n\n\t\t\tedge1 = face[ keys[ j ] ];\n\t\t\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\n\t\t\tedge[ 0 ] = Math.min( edge1, edge2 );\n\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\n\n\t\t\tkey = edge[ 0 ] + ',' + edge[ 1 ];\n\n\t\t\tif ( edges[ key ] === undefined ) {\n\n\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\n\n\t\t\t} else {\n\n\t\t\t\tedges[ key ].face2 = i;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// generate vertices\n\n\tfor ( key in edges ) {\n\n\t\tvar e = edges[ key ];\n\n\t\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n\n\t\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\n\n\t\t\tvar vertex = sourceVertices[ e.index1 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\tvertex = sourceVertices[ e.index2 ];\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t}\n\n\t// build geometry\n\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n}\n\nEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\nEdgesGeometry.prototype.constructor = EdgesGeometry;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\n// CylinderGeometry\n\nfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CylinderGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCylinderGeometry.prototype = Object.create( Geometry.prototype );\nCylinderGeometry.prototype.constructor = CylinderGeometry;\n\n// CylinderBufferGeometry\n\nfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CylinderBufferGeometry';\n\n\tthis.parameters = {\n\t\tradiusTop: radiusTop,\n\t\tradiusBottom: radiusBottom,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tvar scope = this;\n\n\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\n\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\n\theight = height || 1;\n\n\tradialSegments = Math.floor( radialSegments ) || 8;\n\theightSegments = Math.floor( heightSegments ) || 1;\n\n\topenEnded = openEnded !== undefined ? openEnded : false;\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar index = 0;\n\tvar indexArray = [];\n\tvar halfHeight = height / 2;\n\tvar groupStart = 0;\n\n\t// generate geometry\n\n\tgenerateTorso();\n\n\tif ( openEnded === false ) {\n\n\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\tfunction generateTorso() {\n\n\t\tvar x, y;\n\t\tvar normal = new Vector3();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\t// this will be used to calculate the normal\n\t\tvar slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\tvar indexRow = [];\n\n\t\t\tvar v = y / heightSegments;\n\n\t\t\t// calculate the radius of the current row\n\n\t\t\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tvar u = x / radialSegments;\n\n\t\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\t\tvar sinTheta = Math.sin( theta );\n\t\t\t\tvar cosTheta = Math.cos( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\t// now save vertices of the row in our index array\n\n\t\t\tindexArray.push( indexRow );\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tfor ( y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\tvar a = indexArray[ y ][ x ];\n\t\t\t\tvar b = indexArray[ y + 1 ][ x ];\n\t\t\t\tvar c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\tvar d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t// update group counter\n\n\t\t\t\tgroupCount += 6;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n\tfunction generateCap( top ) {\n\n\t\tvar x, centerIndexStart, centerIndexEnd;\n\n\t\tvar uv = new Vector2();\n\t\tvar vertex = new Vector3();\n\n\t\tvar groupCount = 0;\n\n\t\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\tvar sign = ( top === true ) ? 1 : - 1;\n\n\t\t// save the index of the first center vertex\n\t\tcenterIndexStart = index;\n\n\t\t// first we generate the center vertex data of the cap.\n\t\t// because the geometry needs one set of uvs per face,\n\t\t// we must generate a center vertex per face/segment\n\n\t\tfor ( x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t// vertex\n\n\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// save the index of the last center vertex\n\n\t\tcenterIndexEnd = index;\n\n\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\tfor ( x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\tvar u = x / radialSegments;\n\t\t\tvar theta = u * thetaLength + thetaStart;\n\n\t\t\tvar cosTheta = Math.cos( theta );\n\t\t\tvar sinTheta = Math.sin( theta );\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * sinTheta;\n\t\t\tvertex.y = halfHeight * sign;\n\t\t\tvertex.z = radius * cosTheta;\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t// uv\n\n\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t// increase index\n\n\t\t\tindex ++;\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( x = 0; x < radialSegments; x ++ ) {\n\n\t\t\tvar c = centerIndexStart + x;\n\t\t\tvar i = centerIndexEnd + x;\n\n\t\t\tif ( top === true ) {\n\n\t\t\t\t// face top\n\n\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t} else {\n\n\t\t\t\t// face bottom\n\n\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t}\n\n\t\t\tgroupCount += 3;\n\n\t\t}\n\n\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t// calculate new start value for groups\n\n\t\tgroupStart += groupCount;\n\n\t}\n\n}\n\nCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\n// ConeGeometry\n\nfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\nConeGeometry.prototype.constructor = ConeGeometry;\n\n// ConeBufferGeometry\n\nfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\n\n\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\tthis.type = 'ConeBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\theight: height,\n\t\tradialSegments: radialSegments,\n\t\theightSegments: heightSegments,\n\t\topenEnded: openEnded,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n}\n\nConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\nConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n * @author Mugen87 / https://github.com/Mugen87\n * @author hughes\n */\n\n// CircleGeometry\n\nfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tGeometry.call( this );\n\n\tthis.type = 'CircleGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\n\tthis.mergeVertices();\n\n}\n\nCircleGeometry.prototype = Object.create( Geometry.prototype );\nCircleGeometry.prototype.constructor = CircleGeometry;\n\n// CircleBufferGeometry\n\nfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'CircleBufferGeometry';\n\n\tthis.parameters = {\n\t\tradius: radius,\n\t\tsegments: segments,\n\t\tthetaStart: thetaStart,\n\t\tthetaLength: thetaLength\n\t};\n\n\tradius = radius || 1;\n\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\n\n\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\n\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\n\n\t// buffers\n\n\tvar indices = [];\n\tvar vertices = [];\n\tvar normals = [];\n\tvar uvs = [];\n\n\t// helper variables\n\n\tvar i, s;\n\tvar vertex = new Vector3();\n\tvar uv = new Vector2();\n\n\t// center point\n\n\tvertices.push( 0, 0, 0 );\n\tnormals.push( 0, 0, 1 );\n\tuvs.push( 0.5, 0.5 );\n\n\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\tvar segment = thetaStart + s / segments * thetaLength;\n\n\t\t// vertex\n\n\t\tvertex.x = radius * Math.cos( segment );\n\t\tvertex.y = radius * Math.sin( segment );\n\n\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t// normal\n\n\t\tnormals.push( 0, 0, 1 );\n\n\t\t// uvs\n\n\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\tuvs.push( uv.x, uv.y );\n\n\t}\n\n\t// indices\n\n\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\tindices.push( i, i + 1, 0 );\n\n\t}\n\n\t// build geometry\n\n\tthis.setIndex( indices );\n\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n}\n\nCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\nCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\n\n\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\tWireframeGeometry: WireframeGeometry,\n\tParametricGeometry: ParametricGeometry,\n\tParametricBufferGeometry: ParametricBufferGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeBufferGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusBufferGeometry,\n\tTextGeometry: TextGeometry,\n\tTextBufferGeometry: TextBufferGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereBufferGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingBufferGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneBufferGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheBufferGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeBufferGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeBufferGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderBufferGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleBufferGeometry,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxBufferGeometry\n});\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * parameters = {\n * color: \n * }\n */\n\nfunction ShadowMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'ShadowMaterial';\n\n\tthis.color = new Color( 0x000000 );\n\tthis.transparent = true;\n\n\tthis.setValues( parameters );\n\n}\n\nShadowMaterial.prototype = Object.create( Material.prototype );\nShadowMaterial.prototype.constructor = ShadowMaterial;\n\nShadowMaterial.prototype.isShadowMaterial = true;\n\nShadowMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction RawShaderMaterial( parameters ) {\n\n\tShaderMaterial.call( this, parameters );\n\n\tthis.type = 'RawShaderMaterial';\n\n}\n\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\n\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * roughness: ,\n * metalness: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * roughnessMap: new THREE.Texture( ),\n *\n * metalnessMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * envMapIntensity: \n *\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshStandardMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.type = 'MeshStandardMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.roughness = 0.5;\n\tthis.metalness = 0.5;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.roughnessMap = null;\n\n\tthis.metalnessMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.envMapIntensity = 1.0;\n\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\n\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\n\nMeshStandardMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'STANDARD': '' };\n\n\tthis.color.copy( source.color );\n\tthis.roughness = source.roughness;\n\tthis.metalness = source.metalness;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.roughnessMap = source.roughnessMap;\n\n\tthis.metalnessMap = source.metalnessMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.envMapIntensity = source.envMapIntensity;\n\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * reflectivity: \n * clearCoat: \n * clearCoatRoughness: \n * }\n */\n\nfunction MeshPhysicalMaterial( parameters ) {\n\n\tMeshStandardMaterial.call( this );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.type = 'MeshPhysicalMaterial';\n\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\n\n\tthis.clearCoat = 0.0;\n\tthis.clearCoatRoughness = 0.0;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\n\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\n\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\n\n\tMeshStandardMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'PHYSICAL': '' };\n\n\tthis.reflectivity = source.reflectivity;\n\n\tthis.clearCoat = source.clearCoat;\n\tthis.clearCoatRoughness = source.clearCoatRoughness;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * specular: ,\n * shininess: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshPhongMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshPhongMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\tthis.specular = new Color( 0x111111 );\n\tthis.shininess = 30;\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\n\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\n\nMeshPhongMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\tthis.specular.copy( source.specular );\n\tthis.shininess = source.shininess;\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author takahirox / http://github.com/takahirox\n *\n * parameters = {\n * gradientMap: new THREE.Texture( )\n * }\n */\n\nfunction MeshToonMaterial( parameters ) {\n\n\tMeshPhongMaterial.call( this );\n\n\tthis.defines = { 'TOON': '' };\n\n\tthis.type = 'MeshToonMaterial';\n\n\tthis.gradientMap = null;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\n\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\n\nMeshToonMaterial.prototype.copy = function ( source ) {\n\n\tMeshPhongMaterial.prototype.copy.call( this, source );\n\n\tthis.gradientMap = source.gradientMap;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * opacity: ,\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * wireframe: ,\n * wireframeLinewidth: \n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshNormalMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshNormalMaterial';\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\n\tthis.fog = false;\n\tthis.lights = false;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\n\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\n\nMeshNormalMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * map: new THREE.Texture( ),\n *\n * lightMap: new THREE.Texture( ),\n * lightMapIntensity: \n *\n * aoMap: new THREE.Texture( ),\n * aoMapIntensity: \n *\n * emissive: ,\n * emissiveIntensity: \n * emissiveMap: new THREE.Texture( ),\n *\n * specularMap: new THREE.Texture( ),\n *\n * alphaMap: new THREE.Texture( ),\n *\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\n * combine: THREE.Multiply,\n * reflectivity: ,\n * refractionRatio: ,\n *\n * wireframe: ,\n * wireframeLinewidth: ,\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshLambertMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.type = 'MeshLambertMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.map = null;\n\n\tthis.lightMap = null;\n\tthis.lightMapIntensity = 1.0;\n\n\tthis.aoMap = null;\n\tthis.aoMapIntensity = 1.0;\n\n\tthis.emissive = new Color( 0x000000 );\n\tthis.emissiveIntensity = 1.0;\n\tthis.emissiveMap = null;\n\n\tthis.specularMap = null;\n\n\tthis.alphaMap = null;\n\n\tthis.envMap = null;\n\tthis.combine = MultiplyOperation;\n\tthis.reflectivity = 1;\n\tthis.refractionRatio = 0.98;\n\n\tthis.wireframe = false;\n\tthis.wireframeLinewidth = 1;\n\tthis.wireframeLinecap = 'round';\n\tthis.wireframeLinejoin = 'round';\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\n\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\n\nMeshLambertMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.color.copy( source.color );\n\n\tthis.map = source.map;\n\n\tthis.lightMap = source.lightMap;\n\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\tthis.aoMap = source.aoMap;\n\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\tthis.emissive.copy( source.emissive );\n\tthis.emissiveMap = source.emissiveMap;\n\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\tthis.specularMap = source.specularMap;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.envMap = source.envMap;\n\tthis.combine = source.combine;\n\tthis.reflectivity = source.reflectivity;\n\tthis.refractionRatio = source.refractionRatio;\n\n\tthis.wireframe = source.wireframe;\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\tthis.wireframeLinecap = source.wireframeLinecap;\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * matcap: new THREE.Texture( ),\n *\n * map: new THREE.Texture( ),\n *\n * bumpMap: new THREE.Texture( ),\n * bumpScale: ,\n *\n * normalMap: new THREE.Texture( ),\n * normalMapType: THREE.TangentSpaceNormalMap,\n * normalScale: ,\n *\n * displacementMap: new THREE.Texture( ),\n * displacementScale: ,\n * displacementBias: ,\n *\n * alphaMap: new THREE.Texture( ),\n *\n * skinning: ,\n * morphTargets: ,\n * morphNormals: \n * }\n */\n\nfunction MeshMatcapMaterial( parameters ) {\n\n\tMaterial.call( this );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.type = 'MeshMatcapMaterial';\n\n\tthis.color = new Color( 0xffffff ); // diffuse\n\n\tthis.matcap = null;\n\n\tthis.map = null;\n\n\tthis.bumpMap = null;\n\tthis.bumpScale = 1;\n\n\tthis.normalMap = null;\n\tthis.normalMapType = TangentSpaceNormalMap;\n\tthis.normalScale = new Vector2( 1, 1 );\n\n\tthis.displacementMap = null;\n\tthis.displacementScale = 1;\n\tthis.displacementBias = 0;\n\n\tthis.alphaMap = null;\n\n\tthis.skinning = false;\n\tthis.morphTargets = false;\n\tthis.morphNormals = false;\n\n\tthis.lights = false;\n\n\tthis.setValues( parameters );\n\n}\n\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\n\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\n\nMeshMatcapMaterial.prototype.copy = function ( source ) {\n\n\tMaterial.prototype.copy.call( this, source );\n\n\tthis.defines = { 'MATCAP': '' };\n\n\tthis.color.copy( source.color );\n\n\tthis.matcap = source.matcap;\n\n\tthis.map = source.map;\n\n\tthis.bumpMap = source.bumpMap;\n\tthis.bumpScale = source.bumpScale;\n\n\tthis.normalMap = source.normalMap;\n\tthis.normalMapType = source.normalMapType;\n\tthis.normalScale.copy( source.normalScale );\n\n\tthis.displacementMap = source.displacementMap;\n\tthis.displacementScale = source.displacementScale;\n\tthis.displacementBias = source.displacementBias;\n\n\tthis.alphaMap = source.alphaMap;\n\n\tthis.skinning = source.skinning;\n\tthis.morphTargets = source.morphTargets;\n\tthis.morphNormals = source.morphNormals;\n\n\treturn this;\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n *\n * parameters = {\n * color: ,\n * opacity: ,\n *\n * linewidth: ,\n *\n * scale: ,\n * dashSize: ,\n * gapSize: \n * }\n */\n\nfunction LineDashedMaterial( parameters ) {\n\n\tLineBasicMaterial.call( this );\n\n\tthis.type = 'LineDashedMaterial';\n\n\tthis.scale = 1;\n\tthis.dashSize = 3;\n\tthis.gapSize = 1;\n\n\tthis.setValues( parameters );\n\n}\n\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\n\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\n\nLineDashedMaterial.prototype.copy = function ( source ) {\n\n\tLineBasicMaterial.prototype.copy.call( this, source );\n\n\tthis.scale = source.scale;\n\tthis.dashSize = source.dashSize;\n\tthis.gapSize = source.gapSize;\n\n\treturn this;\n\n};\n\n\n\nvar Materials = /*#__PURE__*/Object.freeze({\n\tShadowMaterial: ShadowMaterial,\n\tSpriteMaterial: SpriteMaterial,\n\tRawShaderMaterial: RawShaderMaterial,\n\tShaderMaterial: ShaderMaterial,\n\tPointsMaterial: PointsMaterial,\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\n\tMeshStandardMaterial: MeshStandardMaterial,\n\tMeshPhongMaterial: MeshPhongMaterial,\n\tMeshToonMaterial: MeshToonMaterial,\n\tMeshNormalMaterial: MeshNormalMaterial,\n\tMeshLambertMaterial: MeshLambertMaterial,\n\tMeshDepthMaterial: MeshDepthMaterial,\n\tMeshDistanceMaterial: MeshDistanceMaterial,\n\tMeshBasicMaterial: MeshBasicMaterial,\n\tMeshMatcapMaterial: MeshMatcapMaterial,\n\tLineDashedMaterial: LineDashedMaterial,\n\tLineBasicMaterial: LineBasicMaterial,\n\tMaterial: Material\n});\n\n/**\n * @author tschw\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nvar AnimationUtils = {\n\n\t// same as Array.prototype.slice, but also works on typed arrays\n\tarraySlice: function ( array, from, to ) {\n\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\n\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t\t}\n\n\t\treturn array.slice( from, to );\n\n\t},\n\n\t// converts an array to a specific type\n\tconvertArray: function ( array, type, forceClone ) {\n\n\t\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t\t! forceClone && array.constructor === type ) return array;\n\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\t\treturn new type( array ); // create typed array\n\n\t\t}\n\n\t\treturn Array.prototype.slice.call( array ); // create Array\n\n\t},\n\n\tisTypedArray: function ( object ) {\n\n\t\treturn ArrayBuffer.isView( object ) &&\n\t\t\t! ( object instanceof DataView );\n\n\t},\n\n\t// returns an array by which times and values can be sorted\n\tgetKeyframeOrder: function ( times ) {\n\n\t\tfunction compareTime( i, j ) {\n\n\t\t\treturn times[ i ] - times[ j ];\n\n\t\t}\n\n\t\tvar n = times.length;\n\t\tvar result = new Array( n );\n\t\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\t\tresult.sort( compareTime );\n\n\t\treturn result;\n\n\t},\n\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\n\tsortedArray: function ( values, stride, order ) {\n\n\t\tvar nValues = values.length;\n\t\tvar result = new values.constructor( nValues );\n\n\t\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\t\tvar srcOffset = order[ i ] * stride;\n\n\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// function for parsing AOS keyframe formats\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\n\n\t\tvar i = 1, key = jsonKeys[ 0 ];\n\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t}\n\n\t\tif ( key === undefined ) return; // no data\n\n\t\tvar value = key[ valuePropertyName ];\n\t\tif ( value === undefined ) return; // no data\n\n\t\tif ( Array.isArray( value ) ) {\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else if ( value.toArray !== undefined ) {\n\n\t\t\t// ...assume THREE.Math-ish\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t} else {\n\n\t\t\t// otherwise push as-is\n\n\t\t\tdo {\n\n\t\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\ttimes.push( key.time );\n\t\t\t\t\tvalues.push( value );\n\n\t\t\t\t}\n\n\t\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t\t} while ( key !== undefined );\n\n\t\t}\n\n\t}\n\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n * @author tschw\n */\n\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tthis.parameterPositions = parameterPositions;\n\tthis._cachedIndex = 0;\n\n\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\tthis.sampleValues = sampleValues;\n\tthis.valueSize = sampleSize;\n\n}\n\nObject.assign( Interpolant.prototype, {\n\n\tevaluate: function ( t ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\ti1 = this._cachedIndex,\n\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tvar right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tvar t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( var giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tvar mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t},\n\n\tsettings: null, // optional, subclass-specific settings structure\n\t// Note: The indirection allows central control of many interpolants.\n\n\t// --- Protected interface\n\n\tDefaultSettings_: {},\n\n\tgetSettings_: function () {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t},\n\n\tcopySampleValue_: function ( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t},\n\n\t// Template methods for derived classes:\n\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t},\n\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( Interpolant.prototype, {\n\n\t//( 0, t, t0 ), returns this.resultBuffer\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\n\n\t//( N-1, tN-1, t ), returns this.resultBuffer\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\n\n} );\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @author tschw\n */\n\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\tthis._weightPrev = - 0;\n\tthis._offsetPrev = - 0;\n\tthis._weightNext = - 0;\n\tthis._offsetNext = - 0;\n\n}\n\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: CubicInterpolant,\n\n\tDefaultSettings_: {\n\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\n\t},\n\n\tintervalChanged_: function ( i1, t0, t1 ) {\n\n\t\tvar pp = this.parameterPositions,\n\t\t\tiPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t},\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tvar sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n * @author tschw\n */\n\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: LinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceeding\n * the parameter.\n *\n * @author tschw\n */\n\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: DiscreteInterpolant,\n\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n} );\n\n/**\n *\n * A timed sequence of keyframes for a specific property.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction KeyframeTrack( name, times, values, interpolation ) {\n\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\tthis.name = name;\n\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\n\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n}\n\n// Static methods\n\nObject.assign( KeyframeTrack, {\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\ttoJSON: function ( track ) {\n\n\t\tvar trackType = track.constructor;\n\n\t\tvar json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== undefined ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tvar interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n} );\n\nObject.assign( KeyframeTrack.prototype, {\n\n\tconstructor: KeyframeTrack,\n\n\tTimeBufferType: Float32Array,\n\n\tValueBufferType: Float32Array,\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: function ( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tsetInterpolation: function ( interpolation ) {\n\n\t\tvar factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tvar message = \"unsupported interpolation for \" +\n\t\t\t\tthis.ValueTypeName + \" keyframe track named \" + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t},\n\n\tgetInterpolation: function () {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t},\n\n\tgetValueSize: function () {\n\n\t\treturn this.values.length / this.times.length;\n\n\t},\n\n\t// move all keyframes either forwards or backwards in time\n\tshift: function ( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale: function ( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tvar times = this.times;\n\n\t\t\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim: function ( startTime, endTime ) {\n\n\t\tvar times = this.times,\n\t\t\tnKeys = times.length,\n\t\t\tfrom = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\n\n\t\t\tvar stride = this.getValueSize();\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tvar valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tvar prevTime = null;\n\n\t\tfor ( var i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tvar currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\n\n\t\t\t\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tvar value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize: function () {\n\n\t\tvar times = this.times,\n\t\t\tvalues = this.values,\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\twriteIndex = 1,\n\t\t\tlastIndex = times.length - 1;\n\n\t\tfor ( var i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tvar keep = false;\n\n\t\t\tvar time = times[ i ];\n\t\t\tvar timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\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\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tvar readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( var j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\tvar times = AnimationUtils.arraySlice( this.times, 0 );\n\t\tvar values = AnimationUtils.arraySlice( this.values, 0 );\n\n\t\tvar TypedKeyframeTrack = this.constructor;\n\t\tvar track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of Boolean keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction BooleanKeyframeTrack( name, times, values ) {\n\n\tKeyframeTrack.call( this, name, times, values );\n\n}\n\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: BooleanKeyframeTrack,\n\n\tValueTypeName: 'bool',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\tInterpolantFactoryMethodSmooth: undefined\n\n\t// Note: Actually this track could have a optimized / compressed\n\t// representation of a single value and a custom interpolant that\n\t// computes \"firstValue ^ isOdd( index )\".\n\n} );\n\n/**\n *\n * A Track of keyframe values that represent color.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: ColorKeyframeTrack,\n\n\tValueTypeName: 'color'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n\t// Note: Very basic implementation and nothing special yet.\n\t// However, this is the place for color space parameterization.\n\n} );\n\n/**\n *\n * A Track of numeric keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: NumberKeyframeTrack,\n\n\tValueTypeName: 'number'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @author tschw\n */\n\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n}\n\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\n\n\tconstructor: QuaternionLinearInterpolant,\n\n\tinterpolate_: function ( i1, t0, t, t1 ) {\n\n\t\tvar result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset = i1 * stride,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n} );\n\n/**\n *\n * A Track of quaternion keyframe values.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: QuaternionKeyframeTrack,\n\n\tValueTypeName: 'quaternion',\n\n\t// ValueBufferType is inherited\n\n\tDefaultInterpolation: InterpolateLinear,\n\n\tInterpolantFactoryMethodLinear: function ( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t},\n\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\n\n} );\n\n/**\n *\n * A Track that interpolates Strings\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: StringKeyframeTrack,\n\n\tValueTypeName: 'string',\n\tValueBufferType: Array,\n\n\tDefaultInterpolation: InterpolateDiscrete,\n\n\tInterpolantFactoryMethodLinear: undefined,\n\n\tInterpolantFactoryMethodSmooth: undefined\n\n} );\n\n/**\n *\n * A Track of vectored keyframe values.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\n\n\tKeyframeTrack.call( this, name, times, values, interpolation );\n\n}\n\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\n\n\tconstructor: VectorKeyframeTrack,\n\n\tValueTypeName: 'vector'\n\n\t// ValueBufferType is inherited\n\n\t// DefaultInterpolation is inherited\n\n} );\n\n/**\n *\n * Reusable set of Tracks that represent an animation.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n */\n\nfunction AnimationClip( name, duration, tracks ) {\n\n\tthis.name = name;\n\tthis.tracks = tracks;\n\tthis.duration = ( duration !== undefined ) ? duration : - 1;\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// this means it should figure out its duration by scanning the tracks\n\tif ( this.duration < 0 ) {\n\n\t\tthis.resetDuration();\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tvar trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tvar times = [], values = [];\n\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nObject.assign( AnimationClip, {\n\n\tparse: function ( json ) {\n\n\t\tvar tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( json.name, json.duration, tracks );\n\n\t},\n\n\ttoJSON: function ( clip ) {\n\n\t\tvar tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tvar json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid\n\n\t\t};\n\n\t\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t},\n\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tvar numMorphTargets = morphTargetSequence.length;\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tvar times = [];\n\t\t\tvar values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tvar order = AnimationUtils.getKeyframeOrder( times );\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new AnimationClip( name, - 1, tracks );\n\n\t},\n\n\tfindByName: function ( objectOrClipArray, name ) {\n\n\t\tvar clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tvar o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( var i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\n\n\t\tvar animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tvar pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tvar morphTarget = morphTargets[ i ];\n\t\t\tvar parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tvar name = parts[ 1 ];\n\n\t\t\t\tvar animationMorphTargets = animationToMorphTargets[ name ];\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar clips = [];\n\n\t\tfor ( var name in animationToMorphTargets ) {\n\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t},\n\n\t// parse the animation.hierarchy format\n\tparseAnimation: function ( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tvar times = [];\n\t\t\t\tvar values = [];\n\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tvar tracks = [];\n\n\t\tvar clipName = animation.name || 'default';\n\t\t// automatic length determination in AnimationClip.\n\t\tvar duration = animation.length || - 1;\n\t\tvar fps = animation.fps || 30;\n\n\t\tvar hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tvar animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tvar morphTargetNames = {};\n\n\t\t\t\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( var morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tvar times = [];\n\t\t\t\t\tvar values = [];\n\n\t\t\t\t\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tvar animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tvar boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tvar clip = new AnimationClip( clipName, duration, tracks );\n\n\t\treturn clip;\n\n\t}\n\n} );\n\nObject.assign( AnimationClip.prototype, {\n\n\tresetDuration: function () {\n\n\t\tvar tracks = this.tracks, duration = 0;\n\n\t\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tvar track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t},\n\n\ttrim: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tvalidate: function () {\n\n\t\tvar valid = true;\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t},\n\n\toptimize: function () {\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tclone: function () {\n\n\t\tvar tracks = [];\n\n\t\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new AnimationClip( this.name, this.duration, tracks );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LoadingManager( onLoad, onProgress, onError ) {\n\n\tvar scope = this;\n\n\tvar isLoading = false;\n\tvar itemsLoaded = 0;\n\tvar itemsTotal = 0;\n\tvar urlModifier = undefined;\n\n\t// Refer to #5689 for the reason why we don't set .onStart\n\t// in the constructor\n\n\tthis.onStart = undefined;\n\tthis.onLoad = onLoad;\n\tthis.onProgress = onProgress;\n\tthis.onError = onError;\n\n\tthis.itemStart = function ( url ) {\n\n\t\titemsTotal ++;\n\n\t\tif ( isLoading === false ) {\n\n\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t}\n\n\t\tisLoading = true;\n\n\t};\n\n\tthis.itemEnd = function ( url ) {\n\n\t\titemsLoaded ++;\n\n\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t}\n\n\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\tisLoading = false;\n\n\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\tscope.onLoad();\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.itemError = function ( url ) {\n\n\t\tif ( scope.onError !== undefined ) {\n\n\t\t\tscope.onError( url );\n\n\t\t}\n\n\t};\n\n\tthis.resolveURL = function ( url ) {\n\n\t\tif ( urlModifier ) {\n\n\t\t\treturn urlModifier( url );\n\n\t\t}\n\n\t\treturn url;\n\n\t};\n\n\tthis.setURLModifier = function ( transform ) {\n\n\t\turlModifier = transform;\n\t\treturn this;\n\n\t};\n\n}\n\nvar DefaultLoadingManager = new LoadingManager();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar loading = {};\n\nfunction FileLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FileLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Check for data: URI\n\t\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n\t\tvar dataUriRegexResult = url.match( dataUriRegex );\n\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\n\t\tif ( dataUriRegexResult ) {\n\n\t\t\tvar mimeType = dataUriRegexResult[ 1 ];\n\t\t\tvar isBase64 = !! dataUriRegexResult[ 2 ];\n\t\t\tvar data = dataUriRegexResult[ 3 ];\n\n\t\t\tdata = decodeURIComponent( data );\n\n\t\t\tif ( isBase64 ) data = atob( data );\n\n\t\t\ttry {\n\n\t\t\t\tvar response;\n\t\t\t\tvar responseType = ( this.responseType || '' ).toLowerCase();\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\tvar view = new Uint8Array( data.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\n\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tresponse = view.buffer;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\tvar parser = new DOMParser();\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\tresponse = JSON.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault: // 'text' or other\n\n\t\t\t\t\t\tresponse = data;\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onLoad ) onLoad( response );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\n\t\t\t\tsetTimeout( function () {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Initialise array for duplicate requests\n\n\t\t\tloading[ url ] = [];\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\trequest.open( 'GET', url, true );\n\n\t\t\trequest.addEventListener( 'load', function ( event ) {\n\n\t\t\t\tvar response = this.response;\n\n\t\t\t\tCache.add( url, response );\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tscope.manager.itemError( url );\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t}\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'error', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\n\n\t\t\t\tvar callbacks = loading[ url ];\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, false );\n\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\n\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\n\n\t\t\tfor ( var header in this.requestHeader ) {\n\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\n\n\t\t\t}\n\n\t\t\trequest.send( null );\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\treturn request;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResponseType: function ( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t},\n\n\tsetWithCredentials: function ( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t},\n\n\tsetMimeType: function ( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t},\n\n\tsetRequestHeader: function ( value ) {\n\n\t\tthis.requestHeader = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io/\n */\n\nfunction AnimationLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AnimationLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n *\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n */\n\nfunction CompressedTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( CompressedTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar images = [];\n\n\t\tvar texture = new CompressedTexture();\n\t\ttexture.image = images;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 )\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tvar loaded = 0;\n\n\t\t\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tvar texDatas = scope._parser( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( var f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Nikos M. / https://github.com/foo123/\n *\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n */\n\nfunction DataTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t// override in sub classes\n\tthis._parser = null;\n\n}\n\nObject.assign( DataTextureLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar texture = new DataTexture();\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tvar texData = scope._parser( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction ImageLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( ImageLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction CubeTextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( CubeTextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( urls, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new CubeTexture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tvar loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( var i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction TextureLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( TextureLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar texture = new Texture();\n\n\t\tvar loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\n\t\t\tvar isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\n\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Extensible curve object\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\n/**************************************************************\n *\tAbstract Curve base class\n **************************************************************/\n\nfunction Curve() {\n\n\tthis.type = 'Curve';\n\n\tthis.arcLengthDivisions = 200;\n\n}\n\nObject.assign( Curve.prototype, {\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint: function ( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t},\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt: function ( u, optionalTarget ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t},\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = 5;\n\n\t\tvar points = [];\n\n\t\tfor ( var d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\t// Get total curve arc length\n\n\tgetLength: function () {\n\n\t\tvar lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t},\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths: function ( divisions ) {\n\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tvar cache = [];\n\t\tvar current, last = this.getPoint( 0 );\n\t\tvar p, sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t},\n\n\tupdateArcLengths: function () {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t},\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping: function ( u, distance ) {\n\n\t\tvar arcLengths = this.getLengths();\n\n\t\tvar i = 0, il = arcLengths.length;\n\n\t\tvar targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tvar low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tvar lengthBefore = arcLengths[ i ];\n\t\tvar lengthAfter = arcLengths[ i + 1 ];\n\n\t\tvar segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tvar t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t},\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent: function ( t ) {\n\n\t\tvar delta = 0.0001;\n\t\tvar t1 = t - delta;\n\t\tvar t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tvar pt1 = this.getPoint( t1 );\n\t\tvar pt2 = this.getPoint( t2 );\n\n\t\tvar vec = pt2.clone().sub( pt1 );\n\t\treturn vec.normalize();\n\n\t},\n\n\tgetTangentAt: function ( u ) {\n\n\t\tvar t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t );\n\n\t},\n\n\tcomputeFrenetFrames: function ( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tvar normal = new Vector3();\n\n\t\tvar tangents = [];\n\t\tvar normals = [];\n\t\tvar binormals = [];\n\n\t\tvar vec = new Vector3();\n\t\tvar mat = new Matrix4();\n\n\t\tvar i, u, theta;\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( i = 0; i <= segments; i ++ ) {\n\n\t\t\tu = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u );\n\t\t\ttangents[ i ].normalize();\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tvar min = Number.MAX_VALUE;\n\t\tvar tx = Math.abs( tangents[ 0 ].x );\n\t\tvar ty = Math.abs( tangents[ 0 ].y );\n\t\tvar tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\ttheta = Math.acos( _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\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n} );\n\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'EllipseCurve';\n\n\tthis.aX = aX || 0;\n\tthis.aY = aY || 0;\n\n\tthis.xRadius = xRadius || 1;\n\tthis.yRadius = yRadius || 1;\n\n\tthis.aStartAngle = aStartAngle || 0;\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\n\n\tthis.aClockwise = aClockwise || false;\n\n\tthis.aRotation = aRotation || 0;\n\n}\n\nEllipseCurve.prototype = Object.create( Curve.prototype );\nEllipseCurve.prototype.constructor = EllipseCurve;\n\nEllipseCurve.prototype.isEllipseCurve = true;\n\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar twoPi = Math.PI * 2;\n\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\n\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t// ensures that deltaAngle is 0 .. 2 PI\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\tif ( samePoints ) {\n\n\t\t\tdeltaAngle = 0;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = twoPi;\n\n\t\t}\n\n\t}\n\n\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\tdeltaAngle = - twoPi;\n\n\t\t} else {\n\n\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t}\n\n\t}\n\n\tvar angle = this.aStartAngle + t * deltaAngle;\n\tvar x = this.aX + this.xRadius * Math.cos( angle );\n\tvar y = this.aY + this.yRadius * Math.sin( angle );\n\n\tif ( this.aRotation !== 0 ) {\n\n\t\tvar cos = Math.cos( this.aRotation );\n\t\tvar sin = Math.sin( this.aRotation );\n\n\t\tvar tx = x - this.aX;\n\t\tvar ty = y - this.aY;\n\n\t\t// Rotate the point about the center of the ellipse.\n\t\tx = tx * cos - ty * sin + this.aX;\n\t\ty = tx * sin + ty * cos + this.aY;\n\n\t}\n\n\treturn point.set( x, y );\n\n};\n\nEllipseCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.aX = source.aX;\n\tthis.aY = source.aY;\n\n\tthis.xRadius = source.xRadius;\n\tthis.yRadius = source.yRadius;\n\n\tthis.aStartAngle = source.aStartAngle;\n\tthis.aEndAngle = source.aEndAngle;\n\n\tthis.aClockwise = source.aClockwise;\n\n\tthis.aRotation = source.aRotation;\n\n\treturn this;\n\n};\n\n\nEllipseCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.aX = this.aX;\n\tdata.aY = this.aY;\n\n\tdata.xRadius = this.xRadius;\n\tdata.yRadius = this.yRadius;\n\n\tdata.aStartAngle = this.aStartAngle;\n\tdata.aEndAngle = this.aEndAngle;\n\n\tdata.aClockwise = this.aClockwise;\n\n\tdata.aRotation = this.aRotation;\n\n\treturn data;\n\n};\n\nEllipseCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.aX = json.aX;\n\tthis.aY = json.aY;\n\n\tthis.xRadius = json.xRadius;\n\tthis.yRadius = json.yRadius;\n\n\tthis.aStartAngle = json.aStartAngle;\n\tthis.aEndAngle = json.aEndAngle;\n\n\tthis.aClockwise = json.aClockwise;\n\n\tthis.aRotation = json.aRotation;\n\n\treturn this;\n\n};\n\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\tthis.type = 'ArcCurve';\n\n}\n\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\nArcCurve.prototype.constructor = ArcCurve;\n\nArcCurve.prototype.isArcCurve = true;\n\n/**\n * @author zz85 https://github.com/zz85\n *\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\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\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tvar t2 = t * t;\n\t\t\tvar t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nvar tmp = new Vector3();\nvar px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\n\nfunction CatmullRomCurve3( points, closed, curveType, tension ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CatmullRomCurve3';\n\n\tthis.points = points || [];\n\tthis.closed = closed || false;\n\tthis.curveType = curveType || 'centripetal';\n\tthis.tension = tension || 0.5;\n\n}\n\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\n\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\n\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar points = this.points;\n\tvar l = points.length;\n\n\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tif ( this.closed ) {\n\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\tintPoint = l - 2;\n\t\tweight = 1;\n\n\t}\n\n\tvar p0, p1, p2, p3; // 4 points\n\n\tif ( this.closed || intPoint > 0 ) {\n\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate first point\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\tp0 = tmp;\n\n\t}\n\n\tp1 = points[ intPoint % l ];\n\tp2 = points[ ( intPoint + 1 ) % l ];\n\n\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t} else {\n\n\t\t// extrapolate last point\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\tp3 = tmp;\n\n\t}\n\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t// init Centripetal / Chordal Catmull-Rom\n\t\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t// safety check for repeated points\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t}\n\n\tpoint.set(\n\t\tpx.calc( weight ),\n\t\tpy.calc( weight ),\n\t\tpz.calc( weight )\n\t);\n\n\treturn point;\n\n};\n\nCatmullRomCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\tthis.closed = source.closed;\n\tthis.curveType = source.curveType;\n\tthis.tension = source.tension;\n\n\treturn this;\n\n};\n\nCatmullRomCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\tdata.closed = this.closed;\n\tdata.curveType = this.curveType;\n\tdata.tension = this.tension;\n\n\treturn data;\n\n};\n\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t}\n\n\tthis.closed = json.closed;\n\tthis.curveType = json.curveType;\n\tthis.tension = json.tension;\n\n\treturn this;\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n * Bezier Curves formulas obtained from\n * http://en.wikipedia.org/wiki/Bézier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tvar v0 = ( p2 - p0 ) * 0.5;\n\tvar v1 = ( p3 - p1 ) * 0.5;\n\tvar t2 = t * t;\n\tvar t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tvar k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tvar k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nfunction CubicBezierCurve( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\tthis.v3 = v3 || new Vector2();\n\n}\n\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\n\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\n\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'CubicBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\tthis.v3 = v3 || new Vector3();\n\n}\n\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\n\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\n\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\tpoint.set(\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t);\n\n\treturn point;\n\n};\n\nCubicBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\tthis.v3.copy( source.v3 );\n\n\treturn this;\n\n};\n\nCubicBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\tdata.v3 = this.v3.toArray();\n\n\treturn data;\n\n};\n\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\tthis.v3.fromArray( json.v3 );\n\n\treturn this;\n\n};\n\nfunction LineCurve( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve';\n\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nLineCurve.prototype = Object.create( Curve.prototype );\nLineCurve.prototype.constructor = LineCurve;\n\nLineCurve.prototype.isLineCurve = true;\n\nLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve.prototype.getTangent = function ( /* t */ ) {\n\n\tvar tangent = this.v2.clone().sub( this.v1 );\n\n\treturn tangent.normalize();\n\n};\n\nLineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction LineCurve3( v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'LineCurve3';\n\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nLineCurve3.prototype = Object.create( Curve.prototype );\nLineCurve3.prototype.constructor = LineCurve3;\n\nLineCurve3.prototype.isLineCurve3 = true;\n\nLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tif ( t === 1 ) {\n\n\t\tpoint.copy( this.v2 );\n\n\t} else {\n\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t}\n\n\treturn point;\n\n};\n\n// Line curve is linear, so we can overwrite default getPointAt\n\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\n\n\treturn this.getPoint( u, optionalTarget );\n\n};\n\nLineCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nLineCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nLineCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve';\n\n\tthis.v0 = v0 || new Vector2();\n\tthis.v1 = v1 || new Vector2();\n\tthis.v2 = v2 || new Vector2();\n\n}\n\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\n\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\n\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction QuadraticBezierCurve3( v0, v1, v2 ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'QuadraticBezierCurve3';\n\n\tthis.v0 = v0 || new Vector3();\n\tthis.v1 = v1 || new Vector3();\n\tthis.v2 = v2 || new Vector3();\n\n}\n\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\n\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\n\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector3();\n\n\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\tpoint.set(\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t);\n\n\treturn point;\n\n};\n\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.v0.copy( source.v0 );\n\tthis.v1.copy( source.v1 );\n\tthis.v2.copy( source.v2 );\n\n\treturn this;\n\n};\n\nQuadraticBezierCurve3.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.v0 = this.v0.toArray();\n\tdata.v1 = this.v1.toArray();\n\tdata.v2 = this.v2.toArray();\n\n\treturn data;\n\n};\n\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.v0.fromArray( json.v0 );\n\tthis.v1.fromArray( json.v1 );\n\tthis.v2.fromArray( json.v2 );\n\n\treturn this;\n\n};\n\nfunction SplineCurve( points /* array of Vector2 */ ) {\n\n\tCurve.call( this );\n\n\tthis.type = 'SplineCurve';\n\n\tthis.points = points || [];\n\n}\n\nSplineCurve.prototype = Object.create( Curve.prototype );\nSplineCurve.prototype.constructor = SplineCurve;\n\nSplineCurve.prototype.isSplineCurve = true;\n\nSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\n\n\tvar point = optionalTarget || new Vector2();\n\n\tvar points = this.points;\n\tvar p = ( points.length - 1 ) * t;\n\n\tvar intPoint = Math.floor( p );\n\tvar weight = p - intPoint;\n\n\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\tvar p1 = points[ intPoint ];\n\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\tpoint.set(\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t);\n\n\treturn point;\n\n};\n\nSplineCurve.prototype.copy = function ( source ) {\n\n\tCurve.prototype.copy.call( this, source );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\tvar point = source.points[ i ];\n\n\t\tthis.points.push( point.clone() );\n\n\t}\n\n\treturn this;\n\n};\n\nSplineCurve.prototype.toJSON = function () {\n\n\tvar data = Curve.prototype.toJSON.call( this );\n\n\tdata.points = [];\n\n\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\tvar point = this.points[ i ];\n\t\tdata.points.push( point.toArray() );\n\n\t}\n\n\treturn data;\n\n};\n\nSplineCurve.prototype.fromJSON = function ( json ) {\n\n\tCurve.prototype.fromJSON.call( this, json );\n\n\tthis.points = [];\n\n\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\tvar point = json.points[ i ];\n\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t}\n\n\treturn this;\n\n};\n\n\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n *\n **/\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nfunction CurvePath() {\n\n\tCurve.call( this );\n\n\tthis.type = 'CurvePath';\n\n\tthis.curves = [];\n\tthis.autoClose = false; // Automatically closes the path\n\n}\n\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\n\n\tconstructor: CurvePath,\n\n\tadd: function ( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t},\n\n\tclosePath: function () {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t},\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint: function ( t ) {\n\n\t\tvar d = t * this.getLength();\n\t\tvar curveLengths = this.getCurveLengths();\n\t\tvar i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tvar diff = curveLengths[ i ] - d;\n\t\t\t\tvar curve = this.curves[ i ];\n\n\t\t\t\tvar segmentLength = curve.getLength();\n\t\t\t\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurve.prototype.copy.call( this, source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Curve.prototype.toJSON.call( this );\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurve.prototype.fromJSON.call( this, json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tvar curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Creates free form 2d path using series of points, lines or curves.\n **/\n\nfunction Path( points ) {\n\n\tCurvePath.call( this );\n\n\tthis.type = 'Path';\n\n\tthis.currentPoint = new Vector2();\n\n\tif ( points ) {\n\n\t\tthis.setFromPoints( points );\n\n\t}\n\n}\n\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\n\n\tconstructor: Path,\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t},\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tvar curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tvar curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\n\n\t\tvar npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tvar curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t},\n\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t},\n\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar x0 = this.currentPoint.x;\n\t\tvar y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t},\n\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tvar firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tvar lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tCurvePath.prototype.copy.call( this, source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = CurvePath.prototype.toJSON.call( this );\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tCurvePath.prototype.fromJSON.call( this, json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * Defines a 2d shape plane using paths.\n **/\n\n// STEP 1 Create a path.\n// STEP 2 Turn path into shape.\n// STEP 3 ExtrudeGeometry takes in Shape/Shapes\n// STEP 3a - Extract points from each shape, turn to vertices\n// STEP 3b - Triangulate each shape, add faces.\n\nfunction Shape( points ) {\n\n\tPath.call( this, points );\n\n\tthis.uuid = _Math.generateUUID();\n\n\tthis.type = 'Shape';\n\n\tthis.holes = [];\n\n}\n\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\n\n\tconstructor: Shape,\n\n\tgetPointsHoles: function ( divisions ) {\n\n\t\tvar holesPts = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t},\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints: function ( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t},\n\n\tcopy: function ( source ) {\n\n\t\tPath.prototype.copy.call( this, source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = Path.prototype.toJSON.call( this );\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t},\n\n\tfromJSON: function ( json ) {\n\n\t\tPath.prototype.fromJSON.call( this, json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tvar hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Light( color, intensity ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Light';\n\n\tthis.color = new Color( color );\n\tthis.intensity = intensity !== undefined ? intensity : 1;\n\n\tthis.receiveShadow = undefined;\n\n}\n\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Light,\n\n\tisLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tObject3D.prototype.copy.call( this, source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\n\n\tLight.call( this, skyColor, intensity );\n\n\tthis.type = 'HemisphereLight';\n\n\tthis.castShadow = undefined;\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.groundColor = new Color( groundColor );\n\n}\n\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: HemisphereLight,\n\n\tisHemisphereLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction LightShadow( camera ) {\n\n\tthis.camera = camera;\n\n\tthis.bias = 0;\n\tthis.radius = 1;\n\n\tthis.mapSize = new Vector2( 512, 512 );\n\n\tthis.map = null;\n\tthis.matrix = new Matrix4();\n\n}\n\nObject.assign( LightShadow.prototype, {\n\n\tcopy: function ( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction SpotLightShadow() {\n\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n}\n\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: SpotLightShadow,\n\n\tisSpotLightShadow: true,\n\n\tupdate: function ( light ) {\n\n\t\tvar camera = this.camera;\n\n\t\tvar fov = _Math.RAD2DEG * 2 * light.angle;\n\t\tvar aspect = this.mapSize.width / this.mapSize.height;\n\t\tvar far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'SpotLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / Math.PI;\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new SpotLightShadow();\n\n}\n\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: SpotLight,\n\n\tisSpotLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction PointLight( color, intensity, distance, decay ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'PointLight';\n\n\tObject.defineProperty( this, 'power', {\n\t\tget: function () {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\treturn this.intensity * 4 * Math.PI;\n\n\t\t},\n\t\tset: function ( power ) {\n\n\t\t\t// intensity = power per solid angle.\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t\t}\n\t} );\n\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\n\n\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n}\n\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: PointLight,\n\n\tisPointLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author arose / http://github.com/arose\n */\n\nfunction OrthographicCamera( left, right, top, bottom, near, far ) {\n\n\tCamera.call( this );\n\n\tthis.type = 'OrthographicCamera';\n\n\tthis.zoom = 1;\n\tthis.view = null;\n\n\tthis.left = ( left !== undefined ) ? left : - 1;\n\tthis.right = ( right !== undefined ) ? right : 1;\n\tthis.top = ( top !== undefined ) ? top : 1;\n\tthis.bottom = ( bottom !== undefined ) ? bottom : - 1;\n\n\tthis.near = ( near !== undefined ) ? near : 0.1;\n\tthis.far = ( far !== undefined ) ? far : 2000;\n\n\tthis.updateProjectionMatrix();\n\n}\n\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\n\n\tconstructor: OrthographicCamera,\n\n\tisOrthographicCamera: true,\n\n\tcopy: function ( source, recursive ) {\n\n\t\tCamera.prototype.copy.call( this, source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t},\n\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tclearViewOffset: function () {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t},\n\n\tupdateProjectionMatrix: function () {\n\n\t\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tvar cx = ( this.right + this.left ) / 2;\n\t\tvar cy = ( this.top + this.bottom ) / 2;\n\n\t\tvar left = cx - dx;\n\t\tvar right = cx + dx;\n\t\tvar top = cy + dy;\n\t\tvar bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\n\t\t\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\n\t\t\tvar scaleW = ( this.right - this.left ) / this.view.width;\n\t\t\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\n\n\t\t\tleft += scaleW * ( this.view.offsetX / zoomW );\n\t\t\tright = left + scaleW * ( this.view.width / zoomW );\n\t\t\ttop -= scaleH * ( this.view.offsetY / zoomH );\n\t\t\tbottom = top - scaleH * ( this.view.height / zoomH );\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.getInverse( this.projectionMatrix );\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Object3D.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction DirectionalLightShadow( ) {\n\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n}\n\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\n\n\tconstructor: DirectionalLightShadow\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction DirectionalLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'DirectionalLight';\n\n\tthis.position.copy( Object3D.DefaultUp );\n\tthis.updateMatrix();\n\n\tthis.target = new Object3D();\n\n\tthis.shadow = new DirectionalLightShadow();\n\n}\n\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: DirectionalLight,\n\n\tisDirectionalLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AmbientLight( color, intensity ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'AmbientLight';\n\n\tthis.castShadow = undefined;\n\n}\n\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: AmbientLight,\n\n\tisAmbientLight: true\n\n} );\n\n/**\n * @author abelnation / http://github.com/abelnation\n */\n\nfunction RectAreaLight( color, intensity, width, height ) {\n\n\tLight.call( this, color, intensity );\n\n\tthis.type = 'RectAreaLight';\n\n\tthis.width = ( width !== undefined ) ? width : 10;\n\tthis.height = ( height !== undefined ) ? height : 10;\n\n}\n\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: RectAreaLight,\n\n\tisRectAreaLight: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction MaterialLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.textures = {};\n\n}\n\nObject.assign( MaterialLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tvar material = new Materials[ json.type ]();\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\n\t\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\n\t\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( var name in json.uniforms ) {\n\n\t\t\t\tvar uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( var key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) {\n\n\t\t\tmaterial.alphaMap = getTexture( json.alphaMap );\n\t\t\tmaterial.transparent = true;\n\n\t\t}\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tvar normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\treturn material;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetTextures: function ( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Don McCurdy / https://www.donmccurdy.com\n */\n\nvar LoaderUtils = {\n\n\tdecodeText: function ( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tvar s = '';\n\n\t\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t},\n\n\textractUrlBase: function ( url ) {\n\n\t\tvar index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.substr( 0, index + 1 );\n\n\t}\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferGeometry() {\n\n\tBufferGeometry.call( this );\n\n\tthis.type = 'InstancedBufferGeometry';\n\tthis.maxInstancedCount = undefined;\n\n}\n\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\n\n\tconstructor: InstancedBufferGeometry,\n\n\tisInstancedBufferGeometry: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferGeometry.prototype.copy.call( this, source );\n\n\t\tthis.maxInstancedCount = source.maxInstancedCount;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\ttoJSON: function () {\n\n\t\tvar data = BufferGeometry.prototype.toJSON.call( this );\n\n\t\tdata.maxInstancedCount = this.maxInstancedCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\n\n\tif ( typeof ( normalized ) === 'number' ) {\n\n\t\tmeshPerAttribute = normalized;\n\n\t\tnormalized = false;\n\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t}\n\n\tBufferAttribute.call( this, array, itemSize, normalized );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\n\n\tconstructor: InstancedBufferAttribute,\n\n\tisInstancedBufferAttribute: true,\n\n\tcopy: function ( source ) {\n\n\t\tBufferAttribute.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ()\t{\n\n\t\tvar data = BufferAttribute.prototype.toJSON.call( this );\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction BufferGeometryLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( BufferGeometryLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\tvar geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tvar index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tvar attributes = json.data.attributes;\n\n\t\tfor ( var key in attributes ) {\n\n\t\t\tvar attribute = attributes[ key ];\n\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\t\t\tvar bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\tvar bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tgeometry.addAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tvar morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( var key in morphAttributes ) {\n\n\t\t\t\tvar attributeArray = morphAttributes[ key ];\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tvar attribute = attributeArray[ i ];\n\t\t\t\t\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\n\n\t\t\t\t\tvar bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tvar group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tvar center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\nvar TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\t// Workaround for IE11 pre KB2929437. See #11440\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction ObjectLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\tthis.resourcePath = '';\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tvar loader = new FileLoader( scope.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tvar metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t},\n\n\tsetResourcePath: function ( value ) {\n\n\t\tthis.resourcePath = value;\n\t\treturn this;\n\n\t},\n\n\tsetCrossOrigin: function ( value ) {\n\n\t\tthis.crossOrigin = value;\n\t\treturn this;\n\n\t},\n\n\tparse: function ( json, onLoad ) {\n\n\t\tvar shapes = this.parseShape( json.shapes );\n\t\tvar geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tvar images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tvar textures = this.parseTextures( json.textures, images );\n\t\tvar materials = this.parseMaterials( json.materials, textures );\n\n\t\tvar object = this.parseObject( json.object, geometries, materials );\n\n\t\tif ( json.animations ) {\n\n\t\t\tobject.animations = this.parseAnimations( json.animations );\n\n\t\t}\n\n\t\tif ( json.images === undefined || json.images.length === 0 ) {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t},\n\n\tparseShape: function ( json ) {\n\n\t\tvar shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t},\n\n\tparseGeometries: function ( json, shapes ) {\n\n\t\tvar geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar geometry;\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'PlaneGeometry':\n\t\t\t\t\tcase 'PlaneBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BoxGeometry':\n\t\t\t\t\tcase 'BoxBufferGeometry':\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.width,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.depth,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.depthSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CircleGeometry':\n\t\t\t\t\tcase 'CircleBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CylinderGeometry':\n\t\t\t\t\tcase 'CylinderBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radiusTop,\n\t\t\t\t\t\t\tdata.radiusBottom,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ConeGeometry':\n\t\t\t\t\tcase 'ConeBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.height,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.openEnded,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'SphereGeometry':\n\t\t\t\t\tcase 'SphereBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.widthSegments,\n\t\t\t\t\t\t\tdata.heightSegments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'DodecahedronGeometry':\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\n\t\t\t\t\tcase 'IcosahedronGeometry':\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\n\t\t\t\t\tcase 'OctahedronGeometry':\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\n\t\t\t\t\tcase 'TetrahedronGeometry':\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.detail\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'RingGeometry':\n\t\t\t\t\tcase 'RingBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.innerRadius,\n\t\t\t\t\t\t\tdata.outerRadius,\n\t\t\t\t\t\t\tdata.thetaSegments,\n\t\t\t\t\t\t\tdata.phiSegments,\n\t\t\t\t\t\t\tdata.thetaStart,\n\t\t\t\t\t\t\tdata.thetaLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusGeometry':\n\t\t\t\t\tcase 'TorusBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.arc\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TorusKnotGeometry':\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.tube,\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.p,\n\t\t\t\t\t\t\tdata.q\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'TubeGeometry':\n\t\t\t\t\tcase 'TubeBufferGeometry':\n\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\t\t\t\t\tdata.tubularSegments,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.radialSegments,\n\t\t\t\t\t\t\tdata.closed\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'LatheGeometry':\n\t\t\t\t\tcase 'LatheBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.points,\n\t\t\t\t\t\t\tdata.segments,\n\t\t\t\t\t\t\tdata.phiStart,\n\t\t\t\t\t\t\tdata.phiLength\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'PolyhedronGeometry':\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tdata.vertices,\n\t\t\t\t\t\t\tdata.indices,\n\t\t\t\t\t\t\tdata.radius,\n\t\t\t\t\t\t\tdata.details\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ShapeGeometry':\n\t\t\t\t\tcase 'ShapeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.curveSegments\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\n\t\t\t\t\tcase 'ExtrudeGeometry':\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\n\n\t\t\t\t\t\tvar geometryShapes = [];\n\n\t\t\t\t\t\tfor ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\t\tvar shape = shapes[ data.shapes[ j ] ];\n\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar extrudePath = data.options.extrudePath;\n\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\n\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\n\t\t\t\t\t\t\tgeometryShapes,\n\t\t\t\t\t\t\tdata.options\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tif ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) {\n\n\t\t\t\t\t\t\tvar geometryLoader = new THREE.LegacyJSONLoader();\n\t\t\t\t\t\t\tgeometry = geometryLoader.parse( data, this.resourcePath ).geometry;\n\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type \"Geometry\".' );\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\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\n\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t},\n\n\tparseMaterials: function ( json, textures ) {\n\n\t\tvar cache = {}; // MultiMaterial\n\t\tvar materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tvar loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tvar array = [];\n\n\t\t\t\t\tfor ( var j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tvar material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t},\n\n\tparseAnimations: function ( json ) {\n\n\t\tvar animations = [];\n\n\t\tfor ( var i = 0; i < json.length; i ++ ) {\n\n\t\t\tvar data = json[ i ];\n\n\t\t\tvar clip = AnimationClip.parse( data );\n\n\t\t\tif ( data.uuid !== undefined ) clip.uuid = data.uuid;\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t},\n\n\tparseImages: function ( json, onLoad ) {\n\n\t\tvar scope = this;\n\t\tvar images = {};\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tvar manager = new LoadingManager( onLoad );\n\n\t\t\tvar loader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( var i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tvar image = json[ i ];\n\t\t\t\tvar url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\timages[ image.uuid ] = [];\n\n\t\t\t\t\tfor ( var j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tvar currentUrl = url[ j ];\n\n\t\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl;\n\n\t\t\t\t\t\timages[ image.uuid ].push( loadImage( path ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tvar path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url;\n\n\t\t\t\t\timages[ image.uuid ] = loadImage( path );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t},\n\n\tparseTextures: function ( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tvar textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tvar data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( Array.isArray( images[ data.image ] ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture( images[ data.image ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture = new Texture( images[ data.image ] );\n\n\t\t\t\t}\n\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t},\n\n\tparseObject: function ( data, geometries, materials ) {\n\n\t\tvar object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tvar array = [];\n\n\t\t\t\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tvar uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tvar geometry = getGeometry( data.geometry );\n\t\t\t\tvar material = getMaterial( data.material );\n\n\t\t\t\tif ( geometry.bones && geometry.bones.length > 0 ) {\n\n\t\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tvar children = data.children;\n\n\t\t\tfor ( var i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tvar levels = data.levels;\n\n\t\t\tfor ( var l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tvar level = levels[ l ];\n\t\t\t\tvar child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n} );\n\nvar TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tSphericalReflectionMapping: SphericalReflectionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\n};\n\nvar TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nvar TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\n\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\n\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\n};\n\n/**\n * @author thespite / http://clicktorelease.com/\n */\n\n\nfunction ImageBitmapLoader( manager ) {\n\n\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t}\n\n\tif ( typeof fetch === 'undefined' ) {\n\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t}\n\n\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\n\tthis.options = undefined;\n\n}\n\nImageBitmapLoader.prototype = {\n\n\tconstructor: ImageBitmapLoader,\n\n\tsetOptions: function setOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t},\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tvar scope = this;\n\n\t\tvar cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tfetch( url ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\tif ( scope.options === undefined ) {\n\n\t\t\t\t// Workaround for FireFox. It causes an error if you pass options.\n\t\t\t\treturn createImageBitmap( blob );\n\n\t\t\t} else {\n\n\t\t\t\treturn createImageBitmap( blob, scope.options );\n\n\t\t\t}\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t},\n\n\tsetCrossOrigin: function ( /* value */ ) {\n\n\t\treturn this;\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n};\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * minimal class for proxing functions to Path. Replaces old \"extractSubpaths()\"\n **/\n\nfunction ShapePath() {\n\n\tthis.type = 'ShapePath';\n\n\tthis.color = new Color();\n\n\tthis.subPaths = [];\n\tthis.currentPath = null;\n\n}\n\nObject.assign( ShapePath.prototype, {\n\n\tmoveTo: function ( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t},\n\n\tlineTo: function ( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t},\n\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t},\n\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t},\n\n\tsplineThru: function ( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t},\n\n\ttoShapes: function ( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tvar shapes = [];\n\n\t\t\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tvar tmpPath = inSubpaths[ i ];\n\n\t\t\t\tvar tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tvar polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tvar inside = false;\n\t\t\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tvar edgeLowPt = inPolygon[ p ];\n\t\t\t\tvar edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tvar isClockWise = ShapeUtils.isClockWise;\n\n\t\tvar subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tvar solid, tmpPath, tmpShape, shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tvar betterShapeHoles = [];\n\t\tvar newShapes = [];\n\t\tvar newShapeHoles = [];\n\t\tvar mainIdx = 0;\n\t\tvar tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tvar ambiguous = false;\n\t\t\tvar toChange = [];\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tvar sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tvar ho = sho[ hIdx ];\n\t\t\t\t\tvar hole_unassigned = true;\n\n\t\t\t\t\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\n\t\t\tif ( toChange.length > 0 ) {\n\n\t\t\t\t// console.log(\"to change: \", toChange);\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar tmpHoles;\n\n\t\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\n/**\n * @author zz85 / http://www.lab4games.net/zz85/blog\n * @author mrdoob / http://mrdoob.com/\n */\n\n\nfunction Font( data ) {\n\n\tthis.type = 'Font';\n\n\tthis.data = data;\n\n}\n\nObject.assign( Font.prototype, {\n\n\tisFont: true,\n\n\tgenerateShapes: function ( text, size ) {\n\n\t\tif ( size === undefined ) size = 100;\n\n\t\tvar shapes = [];\n\t\tvar paths = createPaths( text, size, this.data );\n\n\t\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\n\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n} );\n\nfunction createPaths( text, size, data ) {\n\n\tvar chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988\n\tvar scale = size / data.resolution;\n\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\n\n\tvar paths = [];\n\n\tvar offsetX = 0, offsetY = 0;\n\n\tfor ( var i = 0; i < chars.length; i ++ ) {\n\n\t\tvar char = chars[ i ];\n\n\t\tif ( char === '\\n' ) {\n\n\t\t\toffsetX = 0;\n\t\t\toffsetY -= line_height;\n\n\t\t} else {\n\n\t\t\tvar ret = createPath( char, scale, offsetX, offsetY, data );\n\t\t\toffsetX += ret.offsetX;\n\t\t\tpaths.push( ret.path );\n\n\t\t}\n\n\t}\n\n\treturn paths;\n\n}\n\nfunction createPath( char, scale, offsetX, offsetY, data ) {\n\n\tvar glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\n\n\tif ( ! glyph ) return;\n\n\tvar path = new ShapePath();\n\n\tvar x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\n\n\tif ( glyph.o ) {\n\n\t\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\n\n\t\tfor ( var i = 0, l = outline.length; i < l; ) {\n\n\t\t\tvar action = outline[ i ++ ];\n\n\t\t\tswitch ( action ) {\n\n\t\t\t\tcase 'm': // moveTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.moveTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'l': // lineTo\n\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.lineTo( x, y );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'q': // quadraticCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'b': // bezierCurveTo\n\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\n\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn { offsetX: glyph.ha * scale, path: path };\n\n}\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction FontLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( FontLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tvar json;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\n\n\t\t\t}\n\n\t\t\tvar font = scope.parse( json );\n\n\t\t\tif ( onLoad ) onLoad( font );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tparse: function ( json ) {\n\n\t\treturn new Font( json );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Loader() {}\n\nLoader.Handlers = {\n\n\thandlers: [],\n\n\tadd: function ( regex, loader ) {\n\n\t\tthis.handlers.push( regex, loader );\n\n\t},\n\n\tget: function ( file ) {\n\n\t\tvar handlers = this.handlers;\n\n\t\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\tvar regex = handlers[ i ];\n\t\t\tvar loader = handlers[ i + 1 ];\n\n\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\treturn loader;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n};\n\nObject.assign( Loader.prototype, {\n\n\tcrossOrigin: 'anonymous',\n\n\tonLoadStart: function () {},\n\n\tonLoadProgress: function () {},\n\n\tonLoadComplete: function () {},\n\n\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\n\n\t\tvar array = [];\n\n\t\tfor ( var i = 0; i < materials.length; ++ i ) {\n\n\t\t\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\n\n\t\t}\n\n\t\treturn array;\n\n\t},\n\n\tcreateMaterial: ( function () {\n\n\t\tvar BlendingMode = {\n\t\t\tNoBlending: NoBlending,\n\t\t\tNormalBlending: NormalBlending,\n\t\t\tAdditiveBlending: AdditiveBlending,\n\t\t\tSubtractiveBlending: SubtractiveBlending,\n\t\t\tMultiplyBlending: MultiplyBlending,\n\t\t\tCustomBlending: CustomBlending\n\t\t};\n\n\t\tvar color = new Color();\n\t\tvar textureLoader = new TextureLoader();\n\t\tvar materialLoader = new MaterialLoader();\n\n\t\treturn function createMaterial( m, texturePath, crossOrigin ) {\n\n\t\t\t// convert from old material format\n\n\t\t\tvar textures = {};\n\n\t\t\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\n\n\t\t\t\tvar fullPath = texturePath + path;\n\t\t\t\tvar loader = Loader.Handlers.get( fullPath );\n\n\t\t\t\tvar texture;\n\n\t\t\t\tif ( loader !== null ) {\n\n\t\t\t\t\ttexture = loader.load( fullPath );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttextureLoader.setCrossOrigin( crossOrigin );\n\t\t\t\t\ttexture = textureLoader.load( fullPath );\n\n\t\t\t\t}\n\n\t\t\t\tif ( repeat !== undefined ) {\n\n\t\t\t\t\ttexture.repeat.fromArray( repeat );\n\n\t\t\t\t\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( offset !== undefined ) {\n\n\t\t\t\t\ttexture.offset.fromArray( offset );\n\n\t\t\t\t}\n\n\t\t\t\tif ( wrap !== undefined ) {\n\n\t\t\t\t\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\n\n\t\t\t\t\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\n\t\t\t\t\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\n\n\t\t\t\t}\n\n\t\t\t\tif ( anisotropy !== undefined ) {\n\n\t\t\t\t\ttexture.anisotropy = anisotropy;\n\n\t\t\t\t}\n\n\t\t\t\tvar uuid = _Math.generateUUID();\n\n\t\t\t\ttextures[ uuid ] = texture;\n\n\t\t\t\treturn uuid;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tvar json = {\n\t\t\t\tuuid: _Math.generateUUID(),\n\t\t\t\ttype: 'MeshLambertMaterial'\n\t\t\t};\n\n\t\t\tfor ( var name in m ) {\n\n\t\t\t\tvar value = m[ name ];\n\n\t\t\t\tswitch ( name ) {\n\n\t\t\t\t\tcase 'DbgColor':\n\t\t\t\t\tcase 'DbgIndex':\n\t\t\t\t\tcase 'opticalDensity':\n\t\t\t\t\tcase 'illumination':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DbgName':\n\t\t\t\t\t\tjson.name = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blending':\n\t\t\t\t\t\tjson.blending = BlendingMode[ value ];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorAmbient':\n\t\t\t\t\tcase 'mapAmbient':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorDiffuse':\n\t\t\t\t\t\tjson.color = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorSpecular':\n\t\t\t\t\t\tjson.specular = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'colorEmissive':\n\t\t\t\t\t\tjson.emissive = color.fromArray( value ).getHex();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'specularCoef':\n\t\t\t\t\t\tjson.shininess = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'shading':\n\t\t\t\t\t\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\n\t\t\t\t\t\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuse':\n\t\t\t\t\t\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapDiffuseRepeat':\n\t\t\t\t\tcase 'mapDiffuseOffset':\n\t\t\t\t\tcase 'mapDiffuseWrap':\n\t\t\t\t\tcase 'mapDiffuseAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissive':\n\t\t\t\t\t\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapEmissiveRepeat':\n\t\t\t\t\tcase 'mapEmissiveOffset':\n\t\t\t\t\tcase 'mapEmissiveWrap':\n\t\t\t\t\tcase 'mapEmissiveAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLight':\n\t\t\t\t\t\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapLightRepeat':\n\t\t\t\t\tcase 'mapLightOffset':\n\t\t\t\t\tcase 'mapLightWrap':\n\t\t\t\t\tcase 'mapLightAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAO':\n\t\t\t\t\t\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAORepeat':\n\t\t\t\t\tcase 'mapAOOffset':\n\t\t\t\t\tcase 'mapAOWrap':\n\t\t\t\t\tcase 'mapAOAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBump':\n\t\t\t\t\t\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpScale':\n\t\t\t\t\t\tjson.bumpScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapBumpRepeat':\n\t\t\t\t\tcase 'mapBumpOffset':\n\t\t\t\t\tcase 'mapBumpWrap':\n\t\t\t\t\tcase 'mapBumpAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormal':\n\t\t\t\t\t\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalFactor':\n\t\t\t\t\t\tjson.normalScale = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapNormalRepeat':\n\t\t\t\t\tcase 'mapNormalOffset':\n\t\t\t\t\tcase 'mapNormalWrap':\n\t\t\t\t\tcase 'mapNormalAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecular':\n\t\t\t\t\t\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapSpecularRepeat':\n\t\t\t\t\tcase 'mapSpecularOffset':\n\t\t\t\t\tcase 'mapSpecularWrap':\n\t\t\t\t\tcase 'mapSpecularAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalness':\n\t\t\t\t\t\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapMetalnessRepeat':\n\t\t\t\t\tcase 'mapMetalnessOffset':\n\t\t\t\t\tcase 'mapMetalnessWrap':\n\t\t\t\t\tcase 'mapMetalnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughness':\n\t\t\t\t\t\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapRoughnessRepeat':\n\t\t\t\t\tcase 'mapRoughnessOffset':\n\t\t\t\t\tcase 'mapRoughnessWrap':\n\t\t\t\t\tcase 'mapRoughnessAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlpha':\n\t\t\t\t\t\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'mapAlphaRepeat':\n\t\t\t\t\tcase 'mapAlphaOffset':\n\t\t\t\t\tcase 'mapAlphaWrap':\n\t\t\t\t\tcase 'mapAlphaAnisotropy':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'flipSided':\n\t\t\t\t\t\tjson.side = BackSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'doubleSided':\n\t\t\t\t\t\tjson.side = DoubleSide;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'transparency':\n\t\t\t\t\t\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\n\t\t\t\t\t\tjson.opacity = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'depthTest':\n\t\t\t\t\tcase 'depthWrite':\n\t\t\t\t\tcase 'colorWrite':\n\t\t\t\t\tcase 'opacity':\n\t\t\t\t\tcase 'reflectivity':\n\t\t\t\t\tcase 'transparent':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\tcase 'wireframe':\n\t\t\t\t\t\tjson[ name ] = value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vertexColors':\n\t\t\t\t\t\tif ( value === true ) json.vertexColors = VertexColors;\n\t\t\t\t\t\tif ( value === 'face' ) json.vertexColors = FaceColors;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\n\t\t\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\n\n\t\t\tif ( json.opacity < 1 ) json.transparent = true;\n\n\t\t\tmaterialLoader.setTextures( textures );\n\n\t\t\treturn materialLoader.parse( json );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nvar context;\n\nvar AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( context === undefined ) {\n\n\t\t\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\tcontext = value;\n\n\t}\n\n};\n\n/**\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction AudioLoader( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n}\n\nObject.assign( AudioLoader.prototype, {\n\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\tvar bufferCopy = buffer.slice( 0 );\n\n\t\t\tvar context = AudioContext.getContext();\n\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t} );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\tsetPath: function ( value ) {\n\n\t\tthis.path = value;\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nfunction SphericalHarmonics3() {\n\n\tthis.coefficients = [];\n\n\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\tthis.coefficients.push( new Vector3() );\n\n\t}\n\n}\n\nObject.assign( SphericalHarmonics3.prototype, {\n\n\tisSphericalHarmonics3: true,\n\n\tset: function ( coefficients ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tzero: function () {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget = coeff[ 0 ] * 0.282095;\n\n\t\t// band 1\n\t\ttarget += coeff[ 1 ] * 0.488603 * y;\n\t\ttarget += coeff[ 2 ] * 0.488603 * z;\n\t\ttarget += coeff[ 3 ] * 0.488603 * x;\n\n\t\t// band 2\n\t\ttarget += coeff[ 4 ] * 1.092548 * ( x * y );\n\t\ttarget += coeff[ 5 ] * 1.092548 * ( y * z );\n\t\ttarget += coeff[ 6 ] * 0.315392 * ( 3.0 * z * z - 1.0 );\n\t\ttarget += coeff[ 7 ] * 1.092548 * ( x * z );\n\t\ttarget += coeff[ 8 ] * 0.546274 * ( x * x - y * y );\n\n\t\treturn target;\n\n\t},\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt: function ( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\tvar coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget = coeff[ 0 ] * 0.886227; // π * 0.282095\n\n\t\t// band 1\n\t\ttarget += coeff[ 1 ] * 2.0 * 0.511664 * y; // ( 2 * π / 3 ) * 0.488603\n\t\ttarget += coeff[ 2 ] * 2.0 * 0.511664 * z;\n\t\ttarget += coeff[ 3 ] * 2.0 * 0.511664 * x;\n\n\t\t// band 2\n\t\ttarget += coeff[ 4 ] * 2.0 * 0.429043 * x * y; // ( π / 4 ) * 1.092548\n\t\ttarget += coeff[ 5 ] * 2.0 * 0.429043 * y * z;\n\t\ttarget += coeff[ 6 ] * ( 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget += coeff[ 7 ] * 2.0 * 0.429043 * x * z;\n\t\ttarget += coeff[ 8 ] * 0.429043 * ( x * x - y * y ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t},\n\n\tadd: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\n\tscale: function ( s ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tlerp: function ( sh, alpha ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( sh ) {\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t},\n\n\tcopy: function ( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tfromArray: function ( array ) {\n\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, i * 3 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\ttoArray: function () {\n\n\t\tvar array = [];\n\t\tvar coefficients = this.coefficients;\n\n\t\tfor ( var i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, i * 3 );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n} );\n\nObject.assign( SphericalHarmonics3, {\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tgetBasisAt: function ( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tvar x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n *\n * A LightProbe is a source of indirect-diffuse light\n */\n\nfunction LightProbe( sh, intensity ) {\n\n\tLight.call( this, undefined, intensity );\n\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\n\n}\n\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\n\n\tconstructor: LightProbe,\n\n\tisLightProbe: true,\n\n\tcopy: function ( source ) {\n\n\t\tLight.prototype.copy.call( this, source );\n\n\t\tthis.sh.copy( source.sh );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = Light.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( skyColor );\n\tvar color2 = new Color().set( groundColor );\n\n\tvar sky = new Vector3( color1.r, color1.g, color1.b );\n\tvar ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\tvar c0 = Math.sqrt( Math.PI );\n\tvar c1 = c0 * Math.sqrt( 0.75 );\n\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n}\n\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: HemisphereLightProbe,\n\n\tisHemisphereLightProbe: true,\n\n\tcopy: function ( source ) { // modifying colors not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction AmbientLightProbe( color, intensity ) {\n\n\tLightProbe.call( this, undefined, intensity );\n\n\tvar color1 = new Color().set( color );\n\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n}\n\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\n\n\tconstructor: AmbientLightProbe,\n\n\tisAmbientLightProbe: true,\n\n\tcopy: function ( source ) { // modifying color not currently supported\n\n\t\tLightProbe.prototype.copy.call( this, source );\n\n\t\treturn this;\n\n\t},\n\n\ttoJSON: function ( meta ) {\n\n\t\tvar data = LightProbe.prototype.toJSON.call( this, meta );\n\n\t\t// data.sh = this.sh.toArray(); // todo\n\n\t\treturn data;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction StereoCamera() {\n\n\tthis.type = 'StereoCamera';\n\n\tthis.aspect = 1;\n\n\tthis.eyeSep = 0.064;\n\n\tthis.cameraL = new PerspectiveCamera();\n\tthis.cameraL.layers.enable( 1 );\n\tthis.cameraL.matrixAutoUpdate = false;\n\n\tthis.cameraR = new PerspectiveCamera();\n\tthis.cameraR.layers.enable( 2 );\n\tthis.cameraR.matrixAutoUpdate = false;\n\n}\n\nObject.assign( StereoCamera.prototype, {\n\n\tupdate: ( function () {\n\n\t\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\n\n\t\tvar eyeRight = new Matrix4();\n\t\tvar eyeLeft = new Matrix4();\n\n\t\treturn function update( camera ) {\n\n\t\t\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\n\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\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\tinstance = this;\n\t\t\t\tfocus = camera.focus;\n\t\t\t\tfov = camera.fov;\n\t\t\t\taspect = camera.aspect * this.aspect;\n\t\t\t\tnear = camera.near;\n\t\t\t\tfar = camera.far;\n\t\t\t\tzoom = camera.zoom;\n\n\t\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t\tvar projectionMatrix = camera.projectionMatrix.clone();\n\t\t\t\teyeSep = this.eyeSep / 2;\n\t\t\t\tvar eyeSepOnProjection = eyeSep * near / focus;\n\t\t\t\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\n\t\t\t\tvar xmin, xmax;\n\n\t\t\t\t// translate xOffset\n\n\t\t\t\teyeLeft.elements[ 12 ] = - eyeSep;\n\t\t\t\teyeRight.elements[ 12 ] = eyeSep;\n\n\t\t\t\t// for left eye\n\n\t\t\t\txmin = - ymax * aspect + eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect + eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t\t// for right eye\n\n\t\t\t\txmin = - ymax * aspect - eyeSepOnProjection;\n\t\t\t\txmax = ymax * aspect - eyeSepOnProjection;\n\n\t\t\t\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\n\t\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\n\n\t\t\t}\n\n\t\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\n\t\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\n\n\t\t};\n\n\t} )()\n\n} );\n\n/**\n * Camera for rendering cube maps\n *\t- renders scene into axis-aligned cube\n *\n * @author alteredq / http://alteredqualia.com/\n */\n\nvar fov = 90, aspect = 1;\n\nfunction CubeCamera( near, far, cubeResolution, options ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'CubeCamera';\n\n\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPX.up.set( 0, - 1, 0 );\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\tthis.add( cameraPX );\n\n\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNX.up.set( 0, - 1, 0 );\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\tthis.add( cameraNX );\n\n\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPY.up.set( 0, 0, 1 );\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\tthis.add( cameraPY );\n\n\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNY.up.set( 0, 0, - 1 );\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\tthis.add( cameraNY );\n\n\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraPZ.up.set( 0, - 1, 0 );\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\tthis.add( cameraPZ );\n\n\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\tcameraNZ.up.set( 0, - 1, 0 );\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\tthis.add( cameraNZ );\n\n\toptions = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\n\n\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\n\tthis.renderTarget.texture.name = \"CubeCamera\";\n\n\tthis.update = function ( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\t\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n\tthis.clear = function ( renderer, color, depth, stencil ) {\n\n\t\tvar currentRenderTarget = renderer.getRenderTarget();\n\n\t\tvar renderTarget = this.renderTarget;\n\n\t\tfor ( var i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( renderTarget, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t};\n\n}\n\nCubeCamera.prototype = Object.create( Object3D.prototype );\nCubeCamera.prototype.constructor = CubeCamera;\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction Clock( autoStart ) {\n\n\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\n\n\tthis.startTime = 0;\n\tthis.oldTime = 0;\n\tthis.elapsedTime = 0;\n\n\tthis.running = false;\n\n}\n\nObject.assign( Clock.prototype, {\n\n\tstart: function () {\n\n\t\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t},\n\n\tgetElapsedTime: function () {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t},\n\n\tgetDelta: function () {\n\n\t\tvar diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioListener() {\n\n\tObject3D.call( this );\n\n\tthis.type = 'AudioListener';\n\n\tthis.context = AudioContext.getContext();\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( this.context.destination );\n\n\tthis.filter = null;\n\n\tthis.timeDelta = 0;\n\n}\n\nAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: AudioListener,\n\n\tgetInput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tremoveFilter: function ( ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.filter;\n\n\t},\n\n\tsetFilter: function ( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t},\n\n\tgetMasterVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetMasterVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\t\tvar clock = new Clock();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tvar listener = this.context.listener;\n\t\t\tvar up = this.up;\n\n\t\t\tthis.timeDelta = clock.getDelta();\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\n\n\t\t\tif ( listener.positionX ) {\n\n\t\t\t\t// code path for Chrome (see #14393)\n\n\t\t\t\tvar endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\t\tlistener.positionX.linearRampToValueAtTime( position.x, endTime );\n\t\t\t\tlistener.positionY.linearRampToValueAtTime( position.y, endTime );\n\t\t\t\tlistener.positionZ.linearRampToValueAtTime( position.z, endTime );\n\t\t\t\tlistener.forwardX.linearRampToValueAtTime( orientation.x, endTime );\n\t\t\t\tlistener.forwardY.linearRampToValueAtTime( orientation.y, endTime );\n\t\t\t\tlistener.forwardZ.linearRampToValueAtTime( orientation.z, endTime );\n\t\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t\t} else {\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} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Reece Aaron Lecrivain / http://reecenotes.com/\n */\n\nfunction Audio( listener ) {\n\n\tObject3D.call( this );\n\n\tthis.type = 'Audio';\n\n\tthis.listener = listener;\n\tthis.context = listener.context;\n\n\tthis.gain = this.context.createGain();\n\tthis.gain.connect( listener.getInput() );\n\n\tthis.autoplay = false;\n\n\tthis.buffer = null;\n\tthis.detune = 0;\n\tthis.loop = false;\n\tthis.startTime = 0;\n\tthis.offset = 0;\n\tthis.playbackRate = 1;\n\tthis.isPlaying = false;\n\tthis.hasPlaybackControl = true;\n\tthis.sourceType = 'empty';\n\n\tthis.filters = [];\n\n}\n\nAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\n\n\tconstructor: Audio,\n\n\tgetOutput: function () {\n\n\t\treturn this.gain;\n\n\t},\n\n\tsetNodeSource: function ( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetMediaElementSource: function ( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t},\n\n\tsetBuffer: function ( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t},\n\n\tplay: function () {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar source = this.context.createBufferSource();\n\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tthis.startTime = this.context.currentTime;\n\t\tsource.start( this.startTime, this.offset );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t},\n\n\tpause: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\t\t\tthis.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate;\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.offset = 0;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t},\n\n\tconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tdisconnect: function () {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetFilters: function () {\n\n\t\treturn this.filters;\n\n\t},\n\n\tsetFilters: function ( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value;\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetDetune: function ( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetDetune: function () {\n\n\t\treturn this.detune;\n\n\t},\n\n\tgetFilter: function () {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t},\n\n\tsetFilter: function ( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t},\n\n\tsetPlaybackRate: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetPlaybackRate: function () {\n\n\t\treturn this.playbackRate;\n\n\t},\n\n\tonEnded: function () {\n\n\t\tthis.isPlaying = false;\n\n\t},\n\n\tgetLoop: function () {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t},\n\n\tsetLoop: function ( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tgetVolume: function () {\n\n\t\treturn this.gain.gain.value;\n\n\t},\n\n\tsetVolume: function ( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PositionalAudio( listener ) {\n\n\tAudio.call( this, listener );\n\n\tthis.panner = this.context.createPanner();\n\tthis.panner.panningModel = 'HRTF';\n\tthis.panner.connect( this.gain );\n\n}\n\nPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\n\n\tconstructor: PositionalAudio,\n\n\tgetOutput: function () {\n\n\t\treturn this.panner;\n\n\t},\n\n\tgetRefDistance: function () {\n\n\t\treturn this.panner.refDistance;\n\n\t},\n\n\tsetRefDistance: function ( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetRolloffFactor: function () {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t},\n\n\tsetRolloffFactor: function ( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetDistanceModel: function () {\n\n\t\treturn this.panner.distanceModel;\n\n\t},\n\n\tsetDistanceModel: function ( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t},\n\n\tgetMaxDistance: function () {\n\n\t\treturn this.panner.maxDistance;\n\n\t},\n\n\tsetMaxDistance: function ( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t},\n\n\tsetDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t},\n\n\tupdateMatrixWorld: ( function () {\n\n\t\tvar position = new Vector3();\n\t\tvar quaternion = new Quaternion();\n\t\tvar scale = new Vector3();\n\n\t\tvar orientation = new Vector3();\n\n\t\treturn function updateMatrixWorld( force ) {\n\n\t\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\t\tthis.matrixWorld.decompose( position, quaternion, scale );\n\n\t\t\torientation.set( 0, 0, 1 ).applyQuaternion( quaternion );\n\n\t\t\tvar panner = this.panner;\n\n\t\t\tif ( panner.positionX ) {\n\n\t\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\t\tvar endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\t\tpanner.positionX.linearRampToValueAtTime( position.x, endTime );\n\t\t\t\tpanner.positionY.linearRampToValueAtTime( position.y, endTime );\n\t\t\t\tpanner.positionZ.linearRampToValueAtTime( position.z, endTime );\n\t\t\t\tpanner.orientationX.linearRampToValueAtTime( orientation.x, endTime );\n\t\t\t\tpanner.orientationY.linearRampToValueAtTime( orientation.y, endTime );\n\t\t\t\tpanner.orientationZ.linearRampToValueAtTime( orientation.z, endTime );\n\n\t\t\t} else {\n\n\t\t\t\tpanner.setPosition( position.x, position.y, position.z );\n\t\t\t\tpanner.setOrientation( orientation.x, orientation.y, orientation.z );\n\n\t\t\t}\n\n\t\t};\n\n\t} )()\n\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AudioAnalyser( audio, fftSize ) {\n\n\tthis.analyser = audio.context.createAnalyser();\n\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\n\n\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\taudio.getOutput().connect( this.analyser );\n\n}\n\nObject.assign( AudioAnalyser.prototype, {\n\n\tgetFrequencyData: function () {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t},\n\n\tgetAverageFrequency: function () {\n\n\t\tvar value = 0, data = this.getFrequencyData();\n\n\t\tfor ( var i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n} );\n\n/**\n *\n * Buffered scene graph property that allows weighted accumulation.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction PropertyMixer( binding, typeName, valueSize ) {\n\n\tthis.binding = binding;\n\tthis.valueSize = valueSize;\n\n\tvar bufferType = Float64Array,\n\t\tmixFunction;\n\n\tswitch ( typeName ) {\n\n\t\tcase 'quaternion':\n\t\t\tmixFunction = this._slerp;\n\t\t\tbreak;\n\n\t\tcase 'string':\n\t\tcase 'bool':\n\t\t\tbufferType = Array;\n\t\t\tmixFunction = this._select;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tmixFunction = this._lerp;\n\n\t}\n\n\tthis.buffer = new bufferType( valueSize * 4 );\n\t// layout: [ incoming | accu0 | accu1 | orig ]\n\t//\n\t// interpolators can use .buffer as their .result\n\t// the data then goes to 'incoming'\n\t//\n\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t// the cumulative result and are compared to detect\n\t// changes\n\t//\n\t// 'orig' stores the original state of the property\n\n\tthis._mixBufferRegion = mixFunction;\n\n\tthis.cumulativeWeight = 0;\n\n\tthis.useCount = 0;\n\tthis.referenceCount = 0;\n\n}\n\nObject.assign( PropertyMixer.prototype, {\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate: function ( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tcurrentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tvar mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t},\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply: function ( accuIndex ) {\n\n\t\tvar stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tvar originalValueOffset = stride * 3;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState: function () {\n\n\t\tvar binding = this.binding;\n\n\t\tvar buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * 3;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\tthis.cumulativeWeight = 0;\n\n\t},\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState: function () {\n\n\t\tvar originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t},\n\n\n\t// mix functions\n\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t},\n\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tvar s = 1 - t;\n\n\t\tfor ( var i = 0; i !== stride; ++ i ) {\n\n\t\t\tvar j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * A reference to a real property in the scene graph.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\n// Characters [].:/ are reserved for track binding syntax.\nvar RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\n\nfunction Composite( targetGroup, path, optionalParsedPath ) {\n\n\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis._targetGroup = targetGroup;\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n}\n\nObject.assign( Composite.prototype, {\n\n\tgetValue: function ( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t},\n\n\tsetValue: function ( array, offset ) {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t},\n\n\tbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t},\n\n\tunbind: function () {\n\n\t\tvar bindings = this._bindings;\n\n\t\tfor ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n} );\n\n\nfunction PropertyBinding( rootNode, path, parsedPath ) {\n\n\tthis.path = path;\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\tthis.rootNode = rootNode;\n\n}\n\nObject.assign( PropertyBinding, {\n\n\tComposite: Composite,\n\n\tcreate: function ( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tsanitizeNodeName: ( function () {\n\n\t\tvar reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' );\n\n\t\treturn function sanitizeNodeName( name ) {\n\n\t\t\treturn name.replace( /\\s/g, '_' ).replace( reservedRe, '' );\n\n\t\t};\n\n\t}() ),\n\n\tparseTrackName: function () {\n\n\t\t// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n\t\t// only latin characters, and the unicode \\p{L} is not yet supported. So\n\t\t// instead, we exclude reserved characters and match everything else.\n\t\tvar wordChar = '[^' + RESERVED_CHARS_RE + ']';\n\t\tvar wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n\t\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\n\t\t// be matched to parse the rest of the track name.\n\t\tvar directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', wordChar );\n\n\t\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\n\t\tvar nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot );\n\n\t\t// Object on target node, and accessor. May not contain reserved\n\t\t// characters. Accessor may contain any character except closing bracket.\n\t\tvar objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', wordChar );\n\n\t\t// Property and accessor. May not contain reserved characters. Accessor may\n\t\t// contain any non-bracket characters.\n\t\tvar propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', wordChar );\n\n\t\tvar trackRe = new RegExp( ''\n\t\t\t+ '^'\n\t\t\t+ directoryRe\n\t\t\t+ nodeRe\n\t\t\t+ objectRe\n\t\t\t+ propertyRe\n\t\t\t+ '$'\n\t\t);\n\n\t\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\n\t\treturn function parseTrackName( trackName ) {\n\n\t\t\tvar matches = trackRe.exec( trackName );\n\n\t\t\tif ( ! matches ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\tvar results = {\n\t\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\t\tnodeName: matches[ 2 ],\n\t\t\t\tobjectName: matches[ 3 ],\n\t\t\t\tobjectIndex: matches[ 4 ],\n\t\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\t\tpropertyIndex: matches[ 6 ]\n\t\t\t};\n\n\t\t\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\t\tvar objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t\t// Object names must be checked against a whitelist. Otherwise, there\n\t\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t\t// include '.' characters).\n\t\t\t\tif ( supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\t\tresults.objectName = objectName;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t\t}\n\n\t\t\treturn results;\n\n\t\t};\n\n\t}(),\n\n\tfindNode: 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 bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\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} );\n\nObject.assign( PropertyBinding.prototype, { // prototype, continued\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable: function () {},\n\t_setValue_unavailable: function () {},\n\n\tBindingType: {\n\t\tDirect: 0,\n\t\tEntireArray: 1,\n\t\tArrayElement: 2,\n\t\tHasFromToArray: 3\n\t},\n\n\tVersioning: {\n\t\tNone: 0,\n\t\tNeedsUpdate: 1,\n\t\tMatrixWorldNeedsUpdate: 2\n\t},\n\n\tGetterByBindingType: [\n\n\t\tfunction getValue_direct( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\n\n\t\t},\n\n\t\tfunction getValue_array( buffer, offset ) {\n\n\t\t\tvar source = this.resolvedProperty;\n\n\t\t\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t\t}\n\n\t\t},\n\n\t\tfunction getValue_arrayElement( buffer, offset ) {\n\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t\t},\n\n\t\tfunction getValue_toArray( buffer, offset ) {\n\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t\t}\n\n\t],\n\n\tSetterByBindingTypeAndVersioning: [\n\n\t\t[\n\t\t\t// Direct\n\n\t\t\tfunction setValue_direct( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// EntireArray\n\n\t\t\tfunction setValue_array( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tvar dest = this.resolvedProperty;\n\n\t\t\t\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t\t\t}\n\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// ArrayElement\n\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t], [\n\n\t\t\t// HasToFromArray\n\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.needsUpdate = true;\n\n\t\t\t},\n\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t\t\t}\n\n\t\t]\n\n\t],\n\n\tgetValue: function getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t\t// Note: This class uses a State pattern on a per-method basis:\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n\t\t// prototype version of these methods with one that represents\n\t\t// the bound state. When the property is not found, the methods\n\t\t// become no-ops.\n\n\t},\n\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t},\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind: function () {\n\n\t\tvar targetObject = this.node,\n\t\t\tparsedPath = this.parsedPath,\n\n\t\t\tobjectName = parsedPath.objectName,\n\t\t\tpropertyName = parsedPath.propertyName,\n\t\t\tpropertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tvar objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( var i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tvar nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tvar nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tvar versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tvar bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === \"morphTargetInfluences\" ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject.geometry.morphAttributes.position[ 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\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! targetObject.geometry.morphTargets ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because 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}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t},\n\n\tunbind: function () {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n} );\n\n//!\\ DECLARE ALIAS AFTER assign prototype !\nObject.assign( PropertyBinding.prototype, {\n\n\t// initial state of these methods that calls 'bind'\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\n\n} );\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n *\n * @author tschw\n */\n\nfunction AnimationObjectGroup() {\n\n\tthis.uuid = _Math.generateUUID();\n\n\t// cached objects followed by the active ones\n\tthis._objects = Array.prototype.slice.call( arguments );\n\n\tthis.nCachedObjects_ = 0; // threshold\n\t// note: read by PropertyBinding.Composite\n\n\tvar indices = {};\n\tthis._indicesByUUID = indices; // for bookkeeping\n\n\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t}\n\n\tthis._paths = []; // inside: string\n\tthis._parsedPaths = []; // inside: { we don't care, here }\n\tthis._bindings = []; // inside: Array< PropertyBinding >\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\tvar scope = this;\n\n\tthis.stats = {\n\n\t\tobjects: {\n\t\t\tget total() {\n\n\t\t\t\treturn scope._objects.length;\n\n\t\t\t},\n\t\t\tget inUse() {\n\n\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t}\n\t\t},\n\t\tget bindingsPerObject() {\n\n\t\t\treturn scope._bindings.length;\n\n\t\t}\n\n\t};\n\n}\n\nObject.assign( AnimationObjectGroup.prototype, {\n\n\tisAnimationObjectGroup: true,\n\n\tadd: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length,\n\t\t\tknownObject = undefined;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\tremove: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tvar lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tvar bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// remove & forget\n\tuncache: function () {\n\n\t\tvar objects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tvar object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tvar firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( 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\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tvar lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tvar bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t},\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_: function ( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ],\n\t\t\tbindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tvar paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tvar object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t},\n\n\tunsubscribe_: function ( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tvar indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tvar paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n *\n * Action provided by AnimationMixer for scheduling clip playback on specific\n * objects.\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n *\n */\n\nfunction AnimationAction( mixer, clip, localRoot ) {\n\n\tthis._mixer = mixer;\n\tthis._clip = clip;\n\tthis._localRoot = localRoot || null;\n\n\tvar tracks = clip.tracks,\n\t\tnTracks = tracks.length,\n\t\tinterpolants = new Array( nTracks );\n\n\tvar interpolantSettings = {\n\t\tendingStart: ZeroCurvatureEnding,\n\t\tendingEnd: ZeroCurvatureEnding\n\t};\n\n\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\tvar interpolant = tracks[ i ].createInterpolant( null );\n\t\tinterpolants[ i ] = interpolant;\n\t\tinterpolant.settings = interpolantSettings;\n\n\t}\n\n\tthis._interpolantSettings = interpolantSettings;\n\n\tthis._interpolants = interpolants; // bound by the mixer\n\n\t// inside: PropertyMixer (managed by the mixer)\n\tthis._propertyBindings = new Array( nTracks );\n\n\tthis._cacheIndex = null; // for the memory manager\n\tthis._byClipCacheIndex = null; // for the memory manager\n\n\tthis._timeScaleInterpolant = null;\n\tthis._weightInterpolant = null;\n\n\tthis.loop = LoopRepeat;\n\tthis._loopCount = - 1;\n\n\t// global mixer time when the action is to be started\n\t// it's set back to 'null' upon start of the action\n\tthis._startTime = null;\n\n\t// scaled local time of the action\n\t// gets clamped or wrapped to 0..clip.duration according to loop\n\tthis.time = 0;\n\n\tthis.timeScale = 1;\n\tthis._effectiveTimeScale = 1;\n\n\tthis.weight = 1;\n\tthis._effectiveWeight = 1;\n\n\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\tthis.paused = false; // true -> zero effective time scale\n\tthis.enabled = true; // false -> zero effective weight\n\n\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n}\n\nObject.assign( AnimationAction.prototype, {\n\n\t// State & Scheduling\n\n\tplay: function () {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t},\n\n\treset: function () {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t},\n\n\tisRunning: function () {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t},\n\n\t// return true when play has been called\n\tisScheduled: function () {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t},\n\n\tstartAt: function ( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t},\n\n\tsetLoop: function ( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t},\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight: function ( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t},\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight: function () {\n\n\t\treturn this._effectiveWeight;\n\n\t},\n\n\tfadeIn: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t},\n\n\tfadeOut: function ( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t},\n\n\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tvar fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t},\n\n\tstopFading: function () {\n\n\t\tvar weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale: function ( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale: function () {\n\n\t\treturn this._effectiveTimeScale;\n\n\t},\n\n\tsetDuration: function ( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\tsyncWith: function ( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t},\n\n\thalt: function ( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t},\n\n\twarp: function ( startTimeScale, endTimeScale, duration ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._timeScaleInterpolant,\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t},\n\n\tstopWarping: function () {\n\n\t\tvar timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// Object Accessors\n\n\tgetMixer: function () {\n\n\t\treturn this._mixer;\n\n\t},\n\n\tgetClip: function () {\n\n\t\treturn this._clip;\n\n\t},\n\n\tgetRoot: function () {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t},\n\n\t// Interna\n\n\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tvar startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tvar timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tvar clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tvar weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tvar interpolants = this._interpolants;\n\t\t\tvar propertyMixers = this._propertyBindings;\n\n\t\t\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_updateWeight: function ( time ) {\n\n\t\tvar weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tvar interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t},\n\n\t_updateTimeScale: function ( time ) {\n\n\t\tvar timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tvar interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t},\n\n\t_updateTime: function ( deltaTime ) {\n\n\t\tvar time = this.time + deltaTime;\n\t\tvar duration = this._clip.duration;\n\t\tvar loop = this.loop;\n\t\tvar loopCount = this._loopCount;\n\n\t\tvar pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tvar loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tvar pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tvar atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t},\n\n\t_setEndings: function ( atStart, atEnd, pingPong ) {\n\n\t\tvar settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_scheduleFading: function ( duration, weightNow, weightThen ) {\n\n\t\tvar mixer = this._mixer, now = mixer.time,\n\t\t\tinterpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tvar times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n *\n * Player for AnimationClips.\n *\n *\n * @author Ben Houston / http://clara.io/\n * @author David Sarno / http://lighthaus.us/\n * @author tschw\n */\n\nfunction AnimationMixer( root ) {\n\n\tthis._root = root;\n\tthis._initMemoryManager();\n\tthis._accuIndex = 0;\n\n\tthis.time = 0;\n\n\tthis.timeScale = 1.0;\n\n}\n\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\n\n\tconstructor: AnimationMixer,\n\n\t_bindAction: function ( action, prototypeAction ) {\n\n\t\tvar root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tvar track = tracks[ i ],\n\t\t\t\ttrackName = track.name,\n\t\t\t\tbinding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tvar path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t},\n\n\t_activateAction: function ( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tvar rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\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.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t},\n\n\t_deactivateAction: function ( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tvar bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\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.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t},\n\n\t// Memory manager\n\n\t_initMemoryManager: function () {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tvar scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t},\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction: function ( action ) {\n\n\t\tvar index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t},\n\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\n\n\t\tvar actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tvar knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t},\n\n\t_removeInactiveAction: function ( action ) {\n\n\t\tvar actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tvar clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tvar actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t},\n\n\t_removeInactiveBindingsForAction: function ( action ) {\n\n\t\tvar bindings = action._propertyBindings;\n\t\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tvar binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t_lendAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t},\n\n\t_takeBackAction: function ( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tvar actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t},\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tbindings = this._bindings;\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t},\n\n\t_removeInactiveBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tremove_empty_map: {\n\n\t\t\tfor ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t},\n\n\t_lendBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t},\n\n\t_takeBackBinding: function ( binding ) {\n\n\t\tvar bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t},\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant: function () {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++,\n\t\t\tinterpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t},\n\n\t_takeBackControlInterpolant: function ( interpolant ) {\n\n\t\tvar interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t},\n\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ],\n\t\t\tprototypeAction = null;\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tvar existingAction =\n\t\t\t\t\tactionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t},\n\n\t// get an existing action\n\texistingAction: function ( clip, optionalRoot ) {\n\n\t\tvar root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t},\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction: function () {\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tthis._nActiveActions = 0;\n\t\tthis._nActiveBindings = 0;\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tactions[ i ].reset();\n\n\t\t}\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].useCount = 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// advance the time and update apply the animation\n\tupdate: function ( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tvar actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( var i = 0; i !== nActions; ++ i ) {\n\n\t\t\tvar action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tvar bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( var i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t// return this mixer's root target object\n\tgetRoot: function () {\n\n\t\treturn this._root;\n\n\t},\n\n\t// free all resources specific to a particular clip\n\tuncacheClip: function ( clip ) {\n\n\t\tvar actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tvar actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tvar action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tvar cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t},\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot: function ( root ) {\n\n\t\tvar rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( var clipUuid in actionsByClip ) {\n\n\t\t\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvar bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( var trackName in bindingByName ) {\n\n\t\t\t\tvar binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t},\n\n\t// remove a targeted clip from the cache\n\tuncacheAction: function ( clip, optionalRoot ) {\n\n\t\tvar action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Uniform( value ) {\n\n\tif ( typeof value === 'string' ) {\n\n\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\tvalue = arguments[ 1 ];\n\n\t}\n\n\tthis.value = value;\n\n}\n\nUniform.prototype.clone = function () {\n\n\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n};\n\n/**\n * @author benaadams / https://twitter.com/ben_a_adams\n */\n\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\n\n\tInterleavedBuffer.call( this, array, stride );\n\n\tthis.meshPerAttribute = meshPerAttribute || 1;\n\n}\n\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\n\n\tconstructor: InstancedInterleavedBuffer,\n\n\tisInstancedInterleavedBuffer: true,\n\n\tcopy: function ( source ) {\n\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author bhouston / http://clara.io/\n * @author stephomi / http://stephaneginier.com/\n */\n\nfunction Raycaster( origin, direction, near, far ) {\n\n\tthis.ray = new Ray( origin, direction );\n\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\tthis.near = near || 0;\n\tthis.far = far || Infinity;\n\n\tthis.params = {\n\t\tMesh: {},\n\t\tLine: {},\n\t\tLOD: {},\n\t\tPoints: { threshold: 1 },\n\t\tSprite: {}\n\t};\n\n\tObject.defineProperties( this.params, {\n\t\tPointCloud: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\n\t\t\t\treturn this.Points;\n\n\t\t\t}\n\t\t}\n\t} );\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.visible === false ) return;\n\n\tobject.raycast( raycaster, intersects );\n\n\tif ( recursive === true ) {\n\n\t\tvar children = object.children;\n\n\t\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\nObject.assign( Raycaster.prototype, {\n\n\tlinePrecision: 1,\n\n\tset: function ( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t},\n\n\tsetFromCamera: function ( coords, camera ) {\n\n\t\tif ( ( camera && camera.isPerspectiveCamera ) ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\n\t\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\n\n\t\t}\n\n\t},\n\n\tintersectObject: function ( object, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t},\n\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\n\n\t\tvar intersects = optionalTarget || [];\n\n\t\tif ( Array.isArray( objects ) === false ) {\n\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\n\t\t\treturn intersects;\n\n\t\t}\n\n\t\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n * @author WestLangley / http://github.com/WestLangley\n *\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axiz.\n */\n\nfunction Spherical( radius, phi, theta ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\n\tthis.phi = ( phi !== undefined ) ? phi : 0; // polar angle\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle\n\n\treturn this;\n\n}\n\nObject.assign( Spherical.prototype, {\n\n\tset: function ( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t},\n\n\t// restrict phi to be betwee EPS and PI-EPS\n\tmakeSafe: function () {\n\n\t\tvar EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author Mugen87 / https://github.com/Mugen87\n *\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n *\n */\n\nfunction Cylindrical( radius, theta, y ) {\n\n\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\n\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\n\n\treturn this;\n\n}\n\nObject.assign( Cylindrical.prototype, {\n\n\tset: function ( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t},\n\n\tsetFromVector3: function ( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t},\n\n\tsetFromCartesianCoords: function ( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Box2( min, max ) {\n\n\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\n\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\n\n}\n\nObject.assign( Box2.prototype, {\n\n\tset: function ( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t},\n\n\tsetFromPoints: function ( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tsetFromCenterAndSize: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function setFromCenterAndSize( center, size ) {\n\n\t\t\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\n\t\t\tthis.min.copy( center ).sub( halfSize );\n\t\t\tthis.max.copy( center ).add( halfSize );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t}(),\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tmakeEmpty: function () {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t},\n\n\tisEmpty: function () {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t},\n\n\tgetSize: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t},\n\n\texpandByPoint: function ( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t},\n\n\texpandByVector: function ( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t},\n\n\texpandByScalar: function ( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t},\n\n\tcontainsPoint: function ( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t},\n\n\tcontainsBox: function ( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t},\n\n\tgetParameter: function ( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t},\n\n\tintersectsBox: function ( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t},\n\n\tclampPoint: function ( point, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\n\t\t\ttarget = new Vector2();\n\n\t\t}\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t},\n\n\tdistanceToPoint: function () {\n\n\t\tvar v1 = new Vector2();\n\n\t\treturn function distanceToPoint( point ) {\n\n\t\t\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\n\t\t\treturn clampedPoint.sub( point ).length();\n\n\t\t};\n\n\t}(),\n\n\tintersect: function ( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t},\n\n\tunion: function ( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t},\n\n\ttranslate: function ( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n} );\n\n/**\n * @author bhouston / http://clara.io\n */\n\nfunction Line3( start, end ) {\n\n\tthis.start = ( start !== undefined ) ? start : new Vector3();\n\tthis.end = ( end !== undefined ) ? end : new Vector3();\n\n}\n\nObject.assign( Line3.prototype, {\n\n\tset: function ( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t},\n\n\tcopy: function ( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t},\n\n\tgetCenter: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t},\n\n\tdelta: function ( target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t},\n\n\tdistanceSq: function () {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t},\n\n\tdistance: function () {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t},\n\n\tat: function ( t, target ) {\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tclosestPointToPointParameter: function () {\n\n\t\tvar startP = new Vector3();\n\t\tvar startEnd = new Vector3();\n\n\t\treturn function closestPointToPointParameter( point, clampToLine ) {\n\n\t\t\tstartP.subVectors( point, this.start );\n\t\t\tstartEnd.subVectors( this.end, this.start );\n\n\t\t\tvar startEnd2 = startEnd.dot( startEnd );\n\t\t\tvar startEnd_startP = startEnd.dot( startP );\n\n\t\t\tvar t = startEnd_startP / startEnd2;\n\n\t\t\tif ( clampToLine ) {\n\n\t\t\t\tt = _Math.clamp( t, 0, 1 );\n\n\t\t\t}\n\n\t\t\treturn t;\n\n\t\t};\n\n\t}(),\n\n\tclosestPointToPoint: function ( point, clampToLine, target ) {\n\n\t\tvar t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\tif ( target === undefined ) {\n\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\n\t\t\ttarget = new Vector3();\n\n\t\t}\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t},\n\n\tapplyMatrix4: function ( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t},\n\n\tequals: function ( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n} );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n */\n\nfunction ImmediateRenderObject( material ) {\n\n\tObject3D.call( this );\n\n\tthis.material = material;\n\tthis.render = function ( /* renderCallback */ ) {};\n\n}\n\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\n\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction VertexNormalsHelper( object, size, hex, linewidth ) {\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length * 3;\n\n\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\tnNormals = objGeometry.attributes.normal.count;\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\nVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\n\nVertexNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tvar keys = [ 'a', 'b', 'c' ];\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tif ( objGeometry && objGeometry.isGeometry ) {\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\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\n\n\t\t\t\t\tvar vertex = vertices[ face[ keys[ j ] ] ];\n\n\t\t\t\t\tvar normal = face.vertexNormals[ j ];\n\n\t\t\t\t\tv1.copy( vertex ).applyMatrix4( matrixWorld );\n\n\t\t\t\t\tv2.copy( normal ).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} else if ( objGeometry && objGeometry.isBufferGeometry ) {\n\n\t\t\tvar objPos = objGeometry.attributes.position;\n\n\t\t\tvar objNorm = objGeometry.attributes.normal;\n\n\t\t\tvar idx = 0;\n\n\t\t\t// for simplicity, ignore index and drawcalls, and render every normal\n\n\t\t\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\n\n\t\t\t\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\n\n\t\t\t\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\n\n\t\t\t\tv2.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}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction SpotLightHelper( light, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = [\n\t\t0, 0, 0, \t0, 0, 1,\n\t\t0, 0, 0, \t1, 0, 1,\n\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t0, 0, 0, \t0, 1, 1,\n\t\t0, 0, 0, \t0, - 1, 1\n\t];\n\n\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\tvar p1 = ( i / l ) * Math.PI * 2;\n\t\tvar p2 = ( j / l ) * Math.PI * 2;\n\n\t\tpositions.push(\n\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t);\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.cone = new LineSegments( geometry, material );\n\tthis.add( this.cone );\n\n\tthis.update();\n\n}\n\nSpotLightHelper.prototype = Object.create( Object3D.prototype );\nSpotLightHelper.prototype.constructor = SpotLightHelper;\n\nSpotLightHelper.prototype.dispose = function () {\n\n\tthis.cone.geometry.dispose();\n\tthis.cone.material.dispose();\n\n};\n\nSpotLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\treturn function update() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tvar coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tvar coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\tvector.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( vector );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t};\n\n}();\n\n/**\n * @author Sean Griffin / http://twitter.com/sgrif\n * @author Michael Guerrero / http://realitymeltdown.com\n * @author mrdoob / http://mrdoob.com/\n * @author ikerr / http://verold.com\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction getBoneList( object ) {\n\n\tvar boneList = [];\n\n\tif ( object && object.isBone ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( var i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nfunction SkeletonHelper( object ) {\n\n\tvar bones = getBoneList( object );\n\n\tvar geometry = new BufferGeometry();\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar color1 = new Color( 0, 0, 1 );\n\tvar color2 = new Color( 0, 1, 0 );\n\n\tfor ( var i = 0; i < bones.length; i ++ ) {\n\n\t\tvar bone = bones[ i ];\n\n\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t}\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.root = object;\n\tthis.bones = bones;\n\n\tthis.matrix = object.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n}\n\nSkeletonHelper.prototype = Object.create( LineSegments.prototype );\nSkeletonHelper.prototype.constructor = SkeletonHelper;\n\nSkeletonHelper.prototype.updateMatrixWorld = function () {\n\n\tvar vector = new Vector3();\n\n\tvar boneMatrix = new Matrix4();\n\tvar matrixWorldInv = new Matrix4();\n\n\treturn function updateMatrixWorld( force ) {\n\n\t\tvar bones = this.bones;\n\n\t\tvar geometry = this.geometry;\n\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\tmatrixWorldInv.getInverse( this.root.matrixWorld );\n\n\t\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tvar bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j, vector.x, vector.y, vector.z );\n\n\t\t\t\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\tvector.setFromMatrixPosition( boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction PointLightHelper( light, sphereSize, color ) {\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.color = color;\n\n\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\n\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.matrix = this.light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n\n\t/*\n\tvar distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\n\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tvar d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n}\n\nPointLightHelper.prototype = Object.create( Mesh.prototype );\nPointLightHelper.prototype.constructor = PointLightHelper;\n\nPointLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nPointLightHelper.prototype.update = function () {\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color );\n\n\t}\n\n\t/*\n\tvar d = this.light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.visible = true;\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\t*/\n\n};\n\n/**\n * @author abelnation / http://github.com/abelnation\n * @author Mugen87 / http://github.com/Mugen87\n * @author WestLangley / http://github.com/WestLangley\n *\n * This helper must be added as a child of the light\n */\n\nfunction RectAreaLightHelper( light, color ) {\n\n\tthis.type = 'RectAreaLightHelper';\n\n\tthis.light = light;\n\n\tthis.color = color; // optional hardwired color for the helper\n\n\tvar positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tLine.call( this, geometry, material );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) );\n\n\tthis.update();\n\n}\n\nRectAreaLightHelper.prototype = Object.create( Line.prototype );\nRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\n\nRectAreaLightHelper.prototype.update = function () {\n\n\tthis.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 );\n\n\tif ( this.color !== undefined ) {\n\n\t\tthis.material.color.set( this.color );\n\t\tthis.children[ 0 ].material.color.set( this.color );\n\n\t} else {\n\n\t\tthis.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity );\n\n\t\t// prevent hue shift\n\t\tvar c = this.material.color;\n\t\tvar max = Math.max( c.r, c.g, c.b );\n\t\tif ( max > 1 ) c.multiplyScalar( 1 / max );\n\n\t\tthis.children[ 0 ].material.color.copy( this.material.color );\n\n\t}\n\n};\n\nRectAreaLightHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / https://github.com/Mugen87\n */\n\nfunction HemisphereLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tvar geometry = new OctahedronBufferGeometry( size );\n\tgeometry.rotateY( Math.PI * 0.5 );\n\n\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\n\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\n\n\tvar position = geometry.getAttribute( 'position' );\n\tvar colors = new Float32Array( position.count * 3 );\n\n\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\tthis.add( new Mesh( geometry, this.material ) );\n\n\tthis.update();\n\n}\n\nHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\nHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\n\nHemisphereLightHelper.prototype.dispose = function () {\n\n\tthis.children[ 0 ].geometry.dispose();\n\tthis.children[ 0 ].material.dispose();\n\n};\n\nHemisphereLightHelper.prototype.update = function () {\n\n\tvar vector = new Vector3();\n\n\tvar color1 = new Color();\n\tvar color2 = new Color();\n\n\treturn function update() {\n\n\t\tvar mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tvar colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\tcolor1.copy( this.light.color );\n\t\t\tcolor2.copy( this.light.groundColor );\n\n\t\t\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t};\n\n}();\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction LightProbeHelper( lightProbe, size ) {\n\n\tthis.lightProbe = lightProbe;\n\n\tthis.size = size;\n\n\tvar defines = {};\n\tdefines[ 'GAMMA_OUTPUT' ] = \"\";\n\n\t// material\n\tvar material = new ShaderMaterial( {\n\n\t\tdefines: defines,\n\n\t\tuniforms: {\n\n\t\t\tsh: { value: this.lightProbe.sh.coefficients }, // by reference\n\n\t\t\tintensity: { value: this.lightProbe.intensity }\n\n\t\t},\n\n\t\tvertexShader: [\n\n\t\t\t'varying vec3 vNormal;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvNormal = normalize( normalMatrix * normal );',\n\n\t\t\t'\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n\t\t\t'}',\n\n\t\t].join( '\\n' ),\n\n\t\tfragmentShader: [\n\n\t\t\t'#define RECIPROCAL_PI 0.318309886',\n\n\t\t\t'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {',\n\n\t\t\t'\t// matrix is assumed to be orthogonal',\n\n\t\t\t'\treturn normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );',\n\n\t\t\t'}',\n\n\t\t\t'vec3 linearToOutput( in vec3 a ) {',\n\n\t\t\t'\t#ifdef GAMMA_OUTPUT',\n\n\t\t\t'\t\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\treturn a;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'}',\n\n\t\t\t'// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf',\n\t\t\t'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {',\n\n\t\t\t'\t// normal is assumed to have unit length',\n\n\t\t\t'\tfloat x = normal.x, y = normal.y, z = normal.z;',\n\n\t\t\t'\t// band 0',\n\t\t\t'\tvec3 result = shCoefficients[ 0 ] * 0.886227;',\n\n\t\t\t'\t// band 1',\n\t\t\t'\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;',\n\t\t\t'\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;',\n\t\t\t'\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;',\n\n\t\t\t'\t// band 2',\n\t\t\t'\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;',\n\t\t\t'\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;',\n\t\t\t'\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );',\n\t\t\t'\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;',\n\t\t\t'\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );',\n\n\t\t\t'\treturn result;',\n\n\t\t\t'}',\n\n\t\t\t'uniform vec3 sh[ 9 ]; // sh coefficients',\n\n\t\t\t'uniform float intensity; // light probe intensity',\n\n\t\t\t'varying vec3 vNormal;',\n\n\t\t\t'void main() {',\n\n\t\t\t'\tvec3 normal = normalize( vNormal );',\n\n\t\t\t'\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );',\n\n\t\t\t'\tvec3 irradiance = shGetIrradianceAt( worldNormal, sh );',\n\n\t\t\t'\tvec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;',\n\n\t\t\t'\toutgoingLight = linearToOutput( outgoingLight );',\n\n\t\t\t'\tgl_FragColor = vec4( outgoingLight, 1.0 );',\n\n\t\t\t'}'\n\n\t\t].join( '\\n' )\n\n\t} );\n\n\tvar geometry = new SphereBufferGeometry( 1, 32, 16 );\n\n\tMesh.call( this, geometry, material );\n\n\tthis.onBeforeRender();\n\n}\n\nLightProbeHelper.prototype = Object.create( Mesh.prototype );\nLightProbeHelper.prototype.constructor = LightProbeHelper;\n\nLightProbeHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material.dispose();\n\n};\n\nLightProbeHelper.prototype.onBeforeRender = function () {\n\n\treturn function update() {\n\n\t\tthis.position.copy( this.lightProbe.position );\n\n\t\tthis.scale.set( 1, 1, 1 ).multiplyScalar( this.size );\n\n\t\tthis.material.uniforms.intensity.value = this.lightProbe.intensity;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction GridHelper( size, divisions, color1, color2 ) {\n\n\tsize = size || 10;\n\tdivisions = divisions || 10;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar center = divisions / 2;\n\tvar step = size / divisions;\n\tvar halfSize = size / 2;\n\n\tvar vertices = [], colors = [];\n\n\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\tvar color = i === center ? color1 : color2;\n\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\t\tcolor.toArray( colors, j ); j += 3;\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nGridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), {\n\n\tconstructor: GridHelper,\n\n\tcopy: function ( source ) {\n\n\t\tLineSegments.prototype.copy.call( this, source );\n\n\t\tthis.geometry.copy( source.geometry );\n\t\tthis.material.copy( source.material );\n\n\t\treturn this;\n\n\t},\n\n\tclone: function () {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n} );\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n * @author Hectate / http://www.github.com/Hectate\n */\n\nfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\n\n\tradius = radius || 10;\n\tradials = radials || 16;\n\tcircles = circles || 8;\n\tdivisions = divisions || 64;\n\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\n\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar x, z;\n\tvar v, i, j, r, color;\n\n\t// create the radials\n\n\tfor ( i = 0; i <= radials; i ++ ) {\n\n\t\tv = ( i / radials ) * ( Math.PI * 2 );\n\n\t\tx = Math.sin( v ) * radius;\n\t\tz = Math.cos( v ) * radius;\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tvertices.push( x, 0, z );\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tcolors.push( color.r, color.g, color.b );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t}\n\n\t// create the circles\n\n\tfor ( i = 0; i <= circles; i ++ ) {\n\n\t\tcolor = ( i & 1 ) ? color1 : color2;\n\n\t\tr = radius - ( radius / circles * i );\n\n\t\tfor ( j = 0; j < divisions; j ++ ) {\n\n\t\t\t// first vertex\n\n\t\t\tv = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t// second vertex\n\n\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\tx = Math.sin( v ) * r;\n\t\t\tz = Math.cos( v ) * r;\n\n\t\t\tvertices.push( x, 0, z );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t}\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nPolarGridHelper.prototype = Object.create( LineSegments.prototype );\nPolarGridHelper.prototype.constructor = PolarGridHelper;\n\n/**\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) {\n\n\tthis.audio = audio;\n\tthis.range = range || 1;\n\tthis.divisionsInnerAngle = divisionsInnerAngle || 16;\n\tthis.divisionsOuterAngle = divisionsOuterAngle || 2;\n\n\tvar geometry = new BufferGeometry();\n\tvar divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2;\n\tvar positions = new Float32Array( ( divisions * 3 + 3 ) * 3 );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tvar materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } );\n\tvar materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } );\n\n\tLine.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] );\n\n\tthis.update();\n\n}\n\nPositionalAudioHelper.prototype = Object.create( Line.prototype );\nPositionalAudioHelper.prototype.constructor = PositionalAudioHelper;\n\nPositionalAudioHelper.prototype.update = function () {\n\n\tvar audio = this.audio;\n\tvar range = this.range;\n\tvar divisionsInnerAngle = this.divisionsInnerAngle;\n\tvar divisionsOuterAngle = this.divisionsOuterAngle;\n\n\tvar coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle );\n\tvar coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle );\n\n\tvar halfConeInnerAngle = coneInnerAngle / 2;\n\tvar halfConeOuterAngle = coneOuterAngle / 2;\n\n\tvar start = 0;\n\tvar count = 0;\n\tvar i, stride;\n\n\tvar geometry = this.geometry;\n\tvar positionAttribute = geometry.attributes.position;\n\n\tgeometry.clearGroups();\n\n\t//\n\n\tfunction generateSegment( from, to, divisions, materialIndex ) {\n\n\t\tvar step = ( to - from ) / divisions;\n\n\t\tpositionAttribute.setXYZ( start, 0, 0, 0 );\n\t\tcount ++;\n\n\t\tfor ( i = from; i < to; i += step ) {\n\n\t\t\tstride = start + count;\n\n\t\t\tpositionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range );\n\t\t\tpositionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range );\n\t\t\tpositionAttribute.setXYZ( stride + 2, 0, 0, 0 );\n\n\t\t\tcount += 3;\n\n\t\t}\n\n\t\tgeometry.addGroup( start, count, materialIndex );\n\n\t\tstart += count;\n\t\tcount = 0;\n\n\t}\n\n\t//\n\n\tgenerateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 );\n\tgenerateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 );\n\tgenerateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 );\n\n\t//\n\n\tpositionAttribute.needsUpdate = true;\n\n\tif ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false;\n\n};\n\nPositionalAudioHelper.prototype.dispose = function () {\n\n\tthis.geometry.dispose();\n\tthis.material[ 0 ].dispose();\n\tthis.material[ 1 ].dispose();\n\n};\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction FaceNormalsHelper( object, size, hex, linewidth ) {\n\n\t// FaceNormalsHelper only supports THREE.Geometry\n\n\tthis.object = object;\n\n\tthis.size = ( size !== undefined ) ? size : 1;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\n\n\t//\n\n\tvar nNormals = 0;\n\n\tvar objGeometry = this.object.geometry;\n\n\tif ( objGeometry && objGeometry.isGeometry ) {\n\n\t\tnNormals = objGeometry.faces.length;\n\n\t} else {\n\n\t\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\n\n\t}\n\n\t//\n\n\tvar geometry = new BufferGeometry();\n\n\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\n\n\tgeometry.addAttribute( 'position', positions );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\n\n\t//\n\n\tthis.matrixAutoUpdate = false;\n\tthis.update();\n\n}\n\nFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\nFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\n\nFaceNormalsHelper.prototype.update = ( function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar normalMatrix = new Matrix3();\n\n\treturn function update() {\n\n\t\tthis.object.updateMatrixWorld( true );\n\n\t\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\n\n\t\tvar matrixWorld = this.object.matrixWorld;\n\n\t\tvar position = this.geometry.attributes.position;\n\n\t\t//\n\n\t\tvar objGeometry = this.object.geometry;\n\n\t\tvar vertices = objGeometry.vertices;\n\n\t\tvar faces = objGeometry.faces;\n\n\t\tvar idx = 0;\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\tvar normal = face.normal;\n\n\t\t\tv1.copy( vertices[ face.a ] )\n\t\t\t\t.add( vertices[ face.b ] )\n\t\t\t\t.add( vertices[ face.c ] )\n\t\t\t\t.divideScalar( 3 )\n\t\t\t\t.applyMatrix4( matrixWorld );\n\n\t\t\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\n\n\t\t\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\n\n\t\t\tidx = idx + 1;\n\n\t\t}\n\n\t\tposition.needsUpdate = true;\n\n\t};\n\n}() );\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction DirectionalLightHelper( light, size, color ) {\n\n\tObject3D.call( this );\n\n\tthis.light = light;\n\tthis.light.updateMatrixWorld();\n\n\tthis.matrix = light.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.color = color;\n\n\tif ( size === undefined ) size = 1;\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\n\t\t- size, size, 0,\n\t\tsize, size, 0,\n\t\tsize, - size, 0,\n\t\t- size, - size, 0,\n\t\t- size, size, 0\n\t], 3 ) );\n\n\tvar material = new LineBasicMaterial( { fog: false } );\n\n\tthis.lightPlane = new Line( geometry, material );\n\tthis.add( this.lightPlane );\n\n\tgeometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\tthis.targetLine = new Line( geometry, material );\n\tthis.add( this.targetLine );\n\n\tthis.update();\n\n}\n\nDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\nDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\n\nDirectionalLightHelper.prototype.dispose = function () {\n\n\tthis.lightPlane.geometry.dispose();\n\tthis.lightPlane.material.dispose();\n\tthis.targetLine.geometry.dispose();\n\tthis.targetLine.material.dispose();\n\n};\n\nDirectionalLightHelper.prototype.update = function () {\n\n\tvar v1 = new Vector3();\n\tvar v2 = new Vector3();\n\tvar v3 = new Vector3();\n\n\treturn function update() {\n\n\t\tv1.setFromMatrixPosition( this.light.matrixWorld );\n\t\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\tv3.subVectors( v2, v1 );\n\n\t\tthis.lightPlane.lookAt( v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( v2 );\n\t\tthis.targetLine.scale.z = v3.length();\n\n\t};\n\n}();\n\n/**\n * @author alteredq / http://alteredqualia.com/\n * @author Mugen87 / https://github.com/Mugen87\n *\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\n */\n\nfunction CameraHelper( camera ) {\n\n\tvar geometry = new BufferGeometry();\n\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\n\n\tvar vertices = [];\n\tvar colors = [];\n\n\tvar pointMap = {};\n\n\t// colors\n\n\tvar colorFrustum = new Color( 0xffaa00 );\n\tvar colorCone = new Color( 0xff0000 );\n\tvar colorUp = new Color( 0x00aaff );\n\tvar colorTarget = new Color( 0xffffff );\n\tvar colorCross = new Color( 0x333333 );\n\n\t// near\n\n\taddLine( 'n1', 'n2', colorFrustum );\n\taddLine( 'n2', 'n4', colorFrustum );\n\taddLine( 'n4', 'n3', colorFrustum );\n\taddLine( 'n3', 'n1', colorFrustum );\n\n\t// far\n\n\taddLine( 'f1', 'f2', colorFrustum );\n\taddLine( 'f2', 'f4', colorFrustum );\n\taddLine( 'f4', 'f3', colorFrustum );\n\taddLine( 'f3', 'f1', colorFrustum );\n\n\t// sides\n\n\taddLine( 'n1', 'f1', colorFrustum );\n\taddLine( 'n2', 'f2', colorFrustum );\n\taddLine( 'n3', 'f3', colorFrustum );\n\taddLine( 'n4', 'f4', colorFrustum );\n\n\t// cone\n\n\taddLine( 'p', 'n1', colorCone );\n\taddLine( 'p', 'n2', colorCone );\n\taddLine( 'p', 'n3', colorCone );\n\taddLine( 'p', 'n4', colorCone );\n\n\t// up\n\n\taddLine( 'u1', 'u2', colorUp );\n\taddLine( 'u2', 'u3', colorUp );\n\taddLine( 'u3', 'u1', colorUp );\n\n\t// target\n\n\taddLine( 'c', 't', colorTarget );\n\taddLine( 'p', 'c', colorCross );\n\n\t// cross\n\n\taddLine( 'cn1', 'cn2', colorCross );\n\taddLine( 'cn3', 'cn4', colorCross );\n\n\taddLine( 'cf1', 'cf2', colorCross );\n\taddLine( 'cf3', 'cf4', colorCross );\n\n\tfunction addLine( a, b, color ) {\n\n\t\taddPoint( a, color );\n\t\taddPoint( b, color );\n\n\t}\n\n\tfunction addPoint( id, color ) {\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tcolors.push( color.r, color.g, color.b );\n\n\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\tpointMap[ id ] = [];\n\n\t\t}\n\n\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t}\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tLineSegments.call( this, geometry, material );\n\n\tthis.camera = camera;\n\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\tthis.matrix = camera.matrixWorld;\n\tthis.matrixAutoUpdate = false;\n\n\tthis.pointMap = pointMap;\n\n\tthis.update();\n\n}\n\nCameraHelper.prototype = Object.create( LineSegments.prototype );\nCameraHelper.prototype.constructor = CameraHelper;\n\nCameraHelper.prototype.update = function () {\n\n\tvar geometry, pointMap;\n\n\tvar vector = new Vector3();\n\tvar camera = new Camera();\n\n\tfunction setPoint( point, x, y, z ) {\n\n\t\tvector.set( x, y, z ).unproject( camera );\n\n\t\tvar points = pointMap[ point ];\n\n\t\tif ( points !== undefined ) {\n\n\t\t\tvar position = geometry.getAttribute( 'position' );\n\n\t\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn function update() {\n\n\t\tgeometry = this.geometry;\n\t\tpointMap = this.pointMap;\n\n\t\tvar w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\tcamera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', 0, 0, - 1 );\n\t\tsetPoint( 't', 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', - w, - h, - 1 );\n\t\tsetPoint( 'n2', w, - h, - 1 );\n\t\tsetPoint( 'n3', - w, h, - 1 );\n\t\tsetPoint( 'n4', w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', - w, - h, 1 );\n\t\tsetPoint( 'f2', w, - h, 1 );\n\t\tsetPoint( 'f3', - w, h, 1 );\n\t\tsetPoint( 'f4', w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', - w, 0, 1 );\n\t\tsetPoint( 'cf2', w, 0, 1 );\n\t\tsetPoint( 'cf3', 0, - h, 1 );\n\t\tsetPoint( 'cf4', 0, h, 1 );\n\n\t\tsetPoint( 'cn1', - w, 0, - 1 );\n\t\tsetPoint( 'cn2', w, 0, - 1 );\n\t\tsetPoint( 'cn3', 0, - h, - 1 );\n\t\tsetPoint( 'cn4', 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t};\n\n}();\n\n/**\n * @author mrdoob / http://mrdoob.com/\n * @author Mugen87 / http://github.com/Mugen87\n */\n\nfunction BoxHelper( object, color ) {\n\n\tthis.object = object;\n\n\tif ( color === undefined ) color = 0xffff00;\n\n\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\tvar positions = new Float32Array( 8 * 3 );\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.matrixAutoUpdate = false;\n\n\tthis.update();\n\n}\n\nBoxHelper.prototype = Object.create( LineSegments.prototype );\nBoxHelper.prototype.constructor = BoxHelper;\n\nBoxHelper.prototype.update = ( function () {\n\n\tvar box = new Box3();\n\n\treturn function update( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\tbox.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tvar min = box.min;\n\t\tvar max = box.max;\n\n\t\t/*\n\t\t 5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tvar position = this.geometry.attributes.position;\n\t\tvar array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t};\n\n} )();\n\nBoxHelper.prototype.setFromObject = function ( object ) {\n\n\tthis.object = object;\n\tthis.update();\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.copy = function ( source ) {\n\n\tLineSegments.prototype.copy.call( this, source );\n\n\tthis.object = source.object;\n\n\treturn this;\n\n};\n\nBoxHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction Box3Helper( box, hex ) {\n\n\tthis.type = 'Box3Helper';\n\n\tthis.box = box;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\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\n\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\tvar geometry = new BufferGeometry();\n\n\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\tthis.geometry.computeBoundingSphere();\n\n}\n\nBox3Helper.prototype = Object.create( LineSegments.prototype );\nBox3Helper.prototype.constructor = Box3Helper;\n\nBox3Helper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar box = this.box;\n\n\tif ( box.isEmpty() ) return;\n\n\tbox.getCenter( this.position );\n\n\tbox.getSize( this.scale );\n\n\tthis.scale.multiplyScalar( 0.5 );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n */\n\nfunction PlaneHelper( plane, size, hex ) {\n\n\tthis.type = 'PlaneHelper';\n\n\tthis.plane = plane;\n\n\tthis.size = ( size === undefined ) ? 1 : size;\n\n\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\n\n\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\tgeometry.computeBoundingSphere();\n\n\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\n\n\t//\n\n\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\n\n\tvar geometry2 = new BufferGeometry();\n\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\tgeometry2.computeBoundingSphere();\n\n\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\n\n}\n\nPlaneHelper.prototype = Object.create( Line.prototype );\nPlaneHelper.prototype.constructor = PlaneHelper;\n\nPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\n\n\tvar scale = - this.plane.constant;\n\n\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\n\n\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\n\n\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\n\n\tthis.lookAt( this.plane.normal );\n\n\tObject3D.prototype.updateMatrixWorld.call( this, force );\n\n};\n\n/**\n * @author WestLangley / http://github.com/WestLangley\n * @author zz85 / http://github.com/zz85\n * @author bhouston / http://clara.io\n *\n * Creates an arrow for visualizing directions\n *\n * Parameters:\n * dir - Vector3\n * origin - Vector3\n * length - Number\n * color - color in hex value\n * headLength - Number\n * headWidth - Number\n */\n\nvar lineGeometry, coneGeometry;\n\nfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\n\n\t// dir is assumed to be normalized\n\n\tObject3D.call( this );\n\n\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\n\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\n\tif ( length === undefined ) length = 1;\n\tif ( color === undefined ) color = 0xffff00;\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tif ( lineGeometry === undefined ) {\n\n\t\tlineGeometry = new BufferGeometry();\n\t\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\n\t\tconeGeometry.translate( 0, - 0.5, 0 );\n\n\t}\n\n\tthis.position.copy( origin );\n\n\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\n\tthis.line.matrixAutoUpdate = false;\n\tthis.add( this.line );\n\n\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\n\tthis.cone.matrixAutoUpdate = false;\n\tthis.add( this.cone );\n\n\tthis.setDirection( dir );\n\tthis.setLength( length, headLength, headWidth );\n\n}\n\nArrowHelper.prototype = Object.create( Object3D.prototype );\nArrowHelper.prototype.constructor = ArrowHelper;\n\nArrowHelper.prototype.setDirection = ( function () {\n\n\tvar axis = new Vector3();\n\tvar radians;\n\n\treturn function setDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tradians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( axis, radians );\n\n\t\t}\n\n\t};\n\n}() );\n\nArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\n\n\tif ( headLength === undefined ) headLength = 0.2 * length;\n\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\n\n\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\n\tthis.line.updateMatrix();\n\n\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\tthis.cone.position.y = length;\n\tthis.cone.updateMatrix();\n\n};\n\nArrowHelper.prototype.setColor = function ( color ) {\n\n\tthis.line.material.color.copy( color );\n\tthis.cone.material.color.copy( color );\n\n};\n\nArrowHelper.prototype.copy = function ( source ) {\n\n\tObject3D.prototype.copy.call( this, source, false );\n\n\tthis.line.copy( source.line );\n\tthis.cone.copy( source.cone );\n\n\treturn this;\n\n};\n\nArrowHelper.prototype.clone = function () {\n\n\treturn new this.constructor().copy( this );\n\n};\n\n/**\n * @author sroucheray / http://sroucheray.org/\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction AxesHelper( size ) {\n\n\tsize = size || 1;\n\n\tvar vertices = [\n\t\t0, 0, 0,\tsize, 0, 0,\n\t\t0, 0, 0,\t0, size, 0,\n\t\t0, 0, 0,\t0, 0, size\n\t];\n\n\tvar colors = [\n\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t0, 0, 1,\t0, 0.6, 1\n\t];\n\n\tvar geometry = new BufferGeometry();\n\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\n\n\tLineSegments.call( this, geometry, material );\n\n}\n\nAxesHelper.prototype = Object.create( LineSegments.prototype );\nAxesHelper.prototype.constructor = AxesHelper;\n\n/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\n\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\n\treturn new Face3( a, b, c, normal, color, materialIndex );\n\n}\n\nvar LineStrip = 0;\n\nvar LinePieces = 1;\n\nfunction MeshFaceMaterial( materials ) {\n\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\n\treturn materials;\n\n}\n\nfunction MultiMaterial( materials ) {\n\n\tif ( materials === undefined ) materials = [];\n\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\n\tmaterials.isMultiMaterial = true;\n\tmaterials.materials = materials;\n\tmaterials.clone = function () {\n\n\t\treturn materials.slice();\n\n\t};\n\treturn materials;\n\n}\n\nfunction PointCloud( geometry, material ) {\n\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction Particle( material ) {\n\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\n\treturn new Sprite( material );\n\n}\n\nfunction ParticleSystem( geometry, material ) {\n\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\n\treturn new Points( geometry, material );\n\n}\n\nfunction PointCloudMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleBasicMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction ParticleSystemMaterial( parameters ) {\n\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\n\treturn new PointsMaterial( parameters );\n\n}\n\nfunction Vertex( x, y, z ) {\n\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\n\treturn new Vector3( x, y, z );\n\n}\n\n//\n\nfunction DynamicBufferAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\n\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\n\n}\n\nfunction Int8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\n\treturn new Int8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\n\treturn new Uint8BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint8ClampedAttribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\n\n}\n\nfunction Int16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\n\treturn new Int16BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint16Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\n\treturn new Uint16BufferAttribute( array, itemSize );\n\n}\n\nfunction Int32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\n\treturn new Int32BufferAttribute( array, itemSize );\n\n}\n\nfunction Uint32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\n\treturn new Uint32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float32Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\n\treturn new Float32BufferAttribute( array, itemSize );\n\n}\n\nfunction Float64Attribute( array, itemSize ) {\n\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\n\treturn new Float64BufferAttribute( array, itemSize );\n\n}\n\n//\n\nCurve.create = function ( construct, getPoint ) {\n\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\n\n\tconstruct.prototype = Object.create( Curve.prototype );\n\tconstruct.prototype.constructor = construct;\n\tconstruct.prototype.getPoint = getPoint;\n\n\treturn construct;\n\n};\n\n//\n\nObject.assign( CurvePath.prototype, {\n\n\tcreatePointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from path points (for Line or Points objects)\n\n\t\tvar pts = this.getPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateSpacedPointsGeometry: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\t// generate geometry from equidistant sampling along the path\n\n\t\tvar pts = this.getSpacedPoints( divisions );\n\t\treturn this.createGeometry( pts );\n\n\t},\n\n\tcreateGeometry: function ( points ) {\n\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\n\n\t\tvar geometry = new Geometry();\n\n\t\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tvar point = points[ i ];\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n} );\n\n//\n\nObject.assign( Path.prototype, {\n\n\tfromPoints: function ( points ) {\n\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\n\t\tthis.setFromPoints( points );\n\n\t}\n\n} );\n\n//\n\nfunction ClosedSplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\tthis.closed = true;\n\n}\n\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction SplineCurve3( points ) {\n\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\n\n//\n\nfunction Spline( points ) {\n\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\n\n\tCatmullRomCurve3.call( this, points );\n\tthis.type = 'catmullrom';\n\n}\n\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\n\nObject.assign( Spline.prototype, {\n\n\tinitFromArray: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\n\n\t},\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\n\n\t},\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\n\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nfunction AxisHelper( size ) {\n\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\n\treturn new AxesHelper( size );\n\n}\n\nfunction BoundingBoxHelper( object, color ) {\n\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\n\treturn new BoxHelper( object, color );\n\n}\n\nfunction EdgesHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\nGridHelper.prototype.setColors = function () {\n\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\n\n};\n\nSkeletonHelper.prototype.update = function () {\n\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\n\n};\n\nfunction WireframeHelper( object, hex ) {\n\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\n\n}\n\n//\n\nObject.assign( Loader.prototype, {\n\n\textractUrlBase: function ( url ) {\n\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\n\t\treturn LoaderUtils.extractUrlBase( url );\n\n\t}\n\n} );\n\nfunction XHRLoader( manager ) {\n\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\n\treturn new FileLoader( manager );\n\n}\n\nfunction BinaryTextureLoader( manager ) {\n\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\n\treturn new DataTextureLoader( manager );\n\n}\n\nObject.assign( ObjectLoader.prototype, {\n\n\tsetTexturePath: function ( value ) {\n\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\n\t\treturn this.setResourcePath( value );\n\n\t}\n\n} );\n\n//\n\nObject.assign( Box2.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nObject.assign( Box3.prototype, {\n\n\tcenter: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\n\t\treturn this.getCenter( optionalTarget );\n\n\t},\n\tempty: function () {\n\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\n\t\treturn this.isEmpty();\n\n\t},\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t},\n\tsize: function ( optionalTarget ) {\n\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\n\t\treturn this.getSize( optionalTarget );\n\n\t}\n} );\n\nLine3.prototype.center = function ( optionalTarget ) {\n\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\n\treturn this.getCenter( optionalTarget );\n\n};\n\nObject.assign( _Math, {\n\n\trandom16: function () {\n\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\n\t\treturn Math.random();\n\n\t},\n\n\tnearestPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\n\t\treturn _Math.floorPowerOfTwo( value );\n\n\t},\n\n\tnextPowerOfTwo: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\n\t\treturn _Math.ceilPowerOfTwo( value );\n\n\t}\n\n} );\n\nObject.assign( Matrix3.prototype, {\n\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\n\t\treturn vector.applyMatrix3( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( Matrix4.prototype, {\n\n\textractPosition: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\n\t\treturn this.copyPosition( m );\n\n\t},\n\tflattenToArrayOffset: function ( array, offset ) {\n\n\t\tconsole.warn( \"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\" );\n\t\treturn this.toArray( array, offset );\n\n\t},\n\tgetPosition: function () {\n\n\t\tvar v1;\n\n\t\treturn function getPosition() {\n\n\t\t\tif ( v1 === undefined ) v1 = new Vector3();\n\t\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\n\t\t\treturn v1.setFromMatrixColumn( this, 3 );\n\n\t\t};\n\n\t}(),\n\tsetRotationFromQuaternion: function ( q ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\n\t\treturn this.makeRotationFromQuaternion( q );\n\n\t},\n\tmultiplyToArray: function () {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\n\n\t},\n\tmultiplyVector3: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector4: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\tmultiplyVector3Array: function ( /* a */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\n\n\t},\n\trotateAxis: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\n\t\tv.transformDirection( this );\n\n\t},\n\tcrossVector: function ( vector ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\n\t\treturn vector.applyMatrix4( this );\n\n\t},\n\ttranslate: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\n\n\t},\n\trotateX: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\n\n\t},\n\trotateY: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\n\n\t},\n\trotateZ: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\n\n\t},\n\trotateByAxis: function () {\n\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\n\n\t},\n\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\n\t\treturn this.applyToBufferAttribute( buffer );\n\n\t},\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\n\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\n\n\t},\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\n\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\n\n\t}\n\n} );\n\nPlane.prototype.isIntersectionLine = function ( line ) {\n\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\n\treturn this.intersectsLine( line );\n\n};\n\nQuaternion.prototype.multiplyVector3 = function ( vector ) {\n\n\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\n\treturn vector.applyQuaternion( this );\n\n};\n\nObject.assign( Ray.prototype, {\n\n\tisIntersectionBox: function ( box ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\n\t\treturn this.intersectsBox( box );\n\n\t},\n\tisIntersectionPlane: function ( plane ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\n\t\treturn this.intersectsPlane( plane );\n\n\t},\n\tisIntersectionSphere: function ( sphere ) {\n\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\n\t\treturn this.intersectsSphere( sphere );\n\n\t}\n\n} );\n\nObject.assign( Triangle.prototype, {\n\n\tarea: function () {\n\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\n\t\treturn this.getArea();\n\n\t},\n\tbarycoordFromPoint: function ( point, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn this.getBarycoord( point, target );\n\n\t},\n\tmidpoint: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\n\t\treturn this.getMidpoint( target );\n\n\t},\n\tnormal: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn this.getNormal( target );\n\n\t},\n\tplane: function ( target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\n\t\treturn this.getPlane( target );\n\n\t}\n\n} );\n\nObject.assign( Triangle, {\n\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\n\n\t},\n\tnormal: function ( a, b, c, target ) {\n\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\n\t\treturn Triangle.getNormal( a, b, c, target );\n\n\t}\n\n} );\n\nObject.assign( Shape.prototype, {\n\n\textractAllPoints: function ( divisions ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\n\t\treturn this.extractPoints( divisions );\n\n\t},\n\textrude: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\n\t\treturn new ExtrudeGeometry( this, options );\n\n\t},\n\tmakeGeometry: function ( options ) {\n\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\n\t\treturn new ShapeGeometry( this, options );\n\n\t}\n\n} );\n\nObject.assign( Vector2.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector3.prototype, {\n\n\tsetEulerFromRotationMatrix: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\n\n\t},\n\tsetEulerFromQuaternion: function () {\n\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\n\n\t},\n\tgetPositionFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\n\t\treturn this.setFromMatrixPosition( m );\n\n\t},\n\tgetScaleFromMatrix: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\n\t\treturn this.setFromMatrixScale( m );\n\n\t},\n\tgetColumnFromMatrix: function ( index, matrix ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\n\t\treturn this.setFromMatrixColumn( matrix, index );\n\n\t},\n\tapplyProjection: function ( m ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\n\t\treturn this.applyMatrix4( m );\n\n\t},\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tdistanceToManhattan: function ( v ) {\n\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\n\t\treturn this.manhattanDistanceTo( v );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\nObject.assign( Vector4.prototype, {\n\n\tfromAttribute: function ( attribute, index, offset ) {\n\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\n\n\t},\n\tlengthManhattan: function () {\n\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\n\t\treturn this.manhattanLength();\n\n\t}\n\n} );\n\n//\n\nObject.assign( Geometry.prototype, {\n\n\tcomputeTangents: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeLineDistances: function () {\n\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\n\n\t}\n\n} );\n\nObject.assign( Object3D.prototype, {\n\n\tgetChildByName: function ( name ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\n\t\treturn this.getObjectByName( name );\n\n\t},\n\trenderDepth: function () {\n\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\n\n\t},\n\ttranslate: function ( distance, axis ) {\n\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\n\t\treturn this.translateOnAxis( axis, distance );\n\n\t},\n\tgetWorldRotation: function () {\n\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\n\n\t}\n\n} );\n\nObject.defineProperties( Object3D.prototype, {\n\n\teulerOrder: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\treturn this.rotation.order;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\n\t\t\tthis.rotation.order = value;\n\n\t\t}\n\t},\n\tuseQuaternion: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( LOD.prototype, {\n\n\tobjects: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\n\t\t\treturn this.levels;\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t},\n\tset: function () {\n\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\n\n\t}\n\n} );\n\nSkinnedMesh.prototype.initBones = function () {\n\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\n\n};\n\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\n\n\tget: function () {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\treturn this.arcLengthDivisions;\n\n\t},\n\tset: function ( value ) {\n\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\n\t\tthis.arcLengthDivisions = value;\n\n\t}\n\n} );\n\n//\n\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\n\n\tconsole.warn( \"THREE.PerspectiveCamera.setLens is deprecated. \" +\n\t\t\t\"Use .setFocalLength and .filmGauge for a photographic setup.\" );\n\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\n\tthis.setFocalLength( focalLength );\n\n};\n\n//\n\nObject.defineProperties( Light.prototype, {\n\tonlyShadow: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\n\n\t\t}\n\t},\n\tshadowCameraFov: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\n\t\t\tthis.shadow.camera.fov = value;\n\n\t\t}\n\t},\n\tshadowCameraLeft: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\n\t\t\tthis.shadow.camera.left = value;\n\n\t\t}\n\t},\n\tshadowCameraRight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\n\t\t\tthis.shadow.camera.right = value;\n\n\t\t}\n\t},\n\tshadowCameraTop: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\n\t\t\tthis.shadow.camera.top = value;\n\n\t\t}\n\t},\n\tshadowCameraBottom: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\n\t\t\tthis.shadow.camera.bottom = value;\n\n\t\t}\n\t},\n\tshadowCameraNear: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\n\t\t\tthis.shadow.camera.near = value;\n\n\t\t}\n\t},\n\tshadowCameraFar: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\n\t\t\tthis.shadow.camera.far = value;\n\n\t\t}\n\t},\n\tshadowCameraVisible: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\n\n\t\t}\n\t},\n\tshadowBias: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\n\t\t\tthis.shadow.bias = value;\n\n\t\t}\n\t},\n\tshadowDarkness: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\n\n\t\t}\n\t},\n\tshadowMapWidth: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\n\t\t\tthis.shadow.mapSize.width = value;\n\n\t\t}\n\t},\n\tshadowMapHeight: {\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\n\t\t\tthis.shadow.mapSize.height = value;\n\n\t\t}\n\t}\n} );\n\n//\n\nObject.defineProperties( BufferAttribute.prototype, {\n\n\tlength: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\n\t\t\treturn this.array.length;\n\n\t\t}\n\t},\n\tcopyIndicesArray: function ( /* indices */ ) {\n\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\n\n\t}\n\n} );\n\nObject.assign( BufferGeometry.prototype, {\n\n\taddIndex: function ( index ) {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\n\t\tthis.setIndex( index );\n\n\t},\n\taddDrawCall: function ( start, count, indexOffset ) {\n\n\t\tif ( indexOffset !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\n\n\t\t}\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\n\t\tthis.addGroup( start, count );\n\n\t},\n\tclearDrawCalls: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\n\t\tthis.clearGroups();\n\n\t},\n\tcomputeTangents: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\n\n\t},\n\tcomputeOffsets: function () {\n\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( BufferGeometry.prototype, {\n\n\tdrawcalls: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t},\n\toffsets: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\n\t\t\treturn this.groups;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( ExtrudeBufferGeometry.prototype, {\n\n\tgetArrays: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\n\n\t},\n\n\taddShapeList: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\n\n\t},\n\n\taddShape: function () {\n\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\n\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Uniform.prototype, {\n\n\tdynamic: {\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\n\n\t\t}\n\t},\n\tonUpdate: {\n\t\tvalue: function () {\n\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\n\t\t\treturn this;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( Material.prototype, {\n\n\twrapAround: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\n\n\t\t}\n\t},\n\n\toverdraw: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\n\n\t\t}\n\t},\n\n\twrapRGB: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\n\t\t\treturn new Color();\n\n\t\t}\n\t},\n\n\tshading: {\n\t\tget: function () {\n\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\tthis.flatShading = ( value === FlatShading );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( MeshPhongMaterial.prototype, {\n\n\tmetal: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\n\t\t\treturn false;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\n\n\t\t}\n\t}\n\n} );\n\nObject.defineProperties( ShaderMaterial.prototype, {\n\n\tderivatives: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\treturn this.extensions.derivatives;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\n\t\t\tthis.extensions.derivatives = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.assign( WebGLRenderer.prototype, {\n\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\n\t\tthis.setRenderTarget( renderTarget );\n\t\tthis.clear( color, depth, stencil );\n\n\t},\n\tanimate: function ( callback ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\n\t\tthis.setAnimationLoop( callback );\n\n\t},\n\tgetCurrentRenderTarget: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\n\t\treturn this.getRenderTarget();\n\n\t},\n\tgetMaxAnisotropy: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\n\t\treturn this.capabilities.getMaxAnisotropy();\n\n\t},\n\tgetPrecision: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\n\t\treturn this.capabilities.precision;\n\n\t},\n\tresetGLState: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\n\t\treturn this.state.reset();\n\n\t},\n\tsupportsFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_float' );\n\n\t},\n\tsupportsHalfFloatTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\n\n\t},\n\tsupportsStandardDerivatives: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\n\n\t},\n\tsupportsCompressedTextureS3TC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t},\n\tsupportsCompressedTexturePVRTC: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t},\n\tsupportsBlendMinMax: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\n\n\t},\n\tsupportsVertexTextures: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\n\t\treturn this.capabilities.vertexTextures;\n\n\t},\n\tsupportsInstancedArrays: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\n\n\t},\n\tenableScissorTest: function ( boolean ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\n\t\tthis.setScissorTest( boolean );\n\n\t},\n\tinitMaterial: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\n\n\t},\n\taddPrePlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\n\n\t},\n\taddPostPlugin: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\n\n\t},\n\tupdateShadowMap: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\n\n\t},\n\tsetFaceCulling: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\n\n\t},\n\tallocTextureUnit: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\n\n\t},\n\tsetTexture: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\n\n\t},\n\tsetTexture2D: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\n\n\t},\n\tsetTextureCube: function () {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\n\n\t}\n\n} );\n\nObject.defineProperties( WebGLRenderer.prototype, {\n\n\tshadowMapEnabled: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.enabled;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\n\t\t\tthis.shadowMap.enabled = value;\n\n\t\t}\n\t},\n\tshadowMapType: {\n\t\tget: function () {\n\n\t\t\treturn this.shadowMap.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\n\t\t\tthis.shadowMap.type = value;\n\n\t\t}\n\t},\n\tshadowMapCullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n} );\n\nObject.defineProperties( WebGLShadowMap.prototype, {\n\n\tcullFace: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function ( /* cullFace */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderReverseSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t},\n\trenderSingleSided: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\t\t\treturn undefined;\n\n\t\t},\n\t\tset: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTargetCube.prototype, {\n\n\tactiveCubeFace: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' );\n\n\t\t}\n\t},\n\tactiveMipMapLevel: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebGLRenderTarget.prototype, {\n\n\twrapS: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\treturn this.texture.wrapS;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\n\t\t\tthis.texture.wrapS = value;\n\n\t\t}\n\t},\n\twrapT: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\treturn this.texture.wrapT;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\n\t\t\tthis.texture.wrapT = value;\n\n\t\t}\n\t},\n\tmagFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\treturn this.texture.magFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\n\t\t\tthis.texture.magFilter = value;\n\n\t\t}\n\t},\n\tminFilter: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\treturn this.texture.minFilter;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\n\t\t\tthis.texture.minFilter = value;\n\n\t\t}\n\t},\n\tanisotropy: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\treturn this.texture.anisotropy;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\n\t\t\tthis.texture.anisotropy = value;\n\n\t\t}\n\t},\n\toffset: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\treturn this.texture.offset;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\n\t\t\tthis.texture.offset = value;\n\n\t\t}\n\t},\n\trepeat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\treturn this.texture.repeat;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\n\t\t\tthis.texture.repeat = value;\n\n\t\t}\n\t},\n\tformat: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\treturn this.texture.format;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\n\t\t\tthis.texture.format = value;\n\n\t\t}\n\t},\n\ttype: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\treturn this.texture.type;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\n\t\t\tthis.texture.type = value;\n\n\t\t}\n\t},\n\tgenerateMipmaps: {\n\t\tget: function () {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\treturn this.texture.generateMipmaps;\n\n\t\t},\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\n\t\t\tthis.texture.generateMipmaps = value;\n\n\t\t}\n\t}\n\n} );\n\n//\n\nObject.defineProperties( WebVRManager.prototype, {\n\n\tstanding: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .standing has been removed.' );\n\n\t\t}\n\t},\n\tuserHeight: {\n\t\tset: function ( /* value */ ) {\n\n\t\t\tconsole.warn( 'THREE.WebVRManager: .userHeight has been removed.' );\n\n\t\t}\n\t}\n\n} );\n\n//\n\nAudio.prototype.load = function ( file ) {\n\n\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\n\tvar scope = this;\n\tvar audioLoader = new AudioLoader();\n\taudioLoader.load( file, function ( buffer ) {\n\n\t\tscope.setBuffer( buffer );\n\n\t} );\n\treturn this;\n\n};\n\nAudioAnalyser.prototype.getData = function () {\n\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\n\treturn this.getFrequencyData();\n\n};\n\n//\n\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\n\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\n\treturn this.update( renderer, scene );\n\n};\n\n//\n\nvar GeometryUtils = {\n\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\n\t\tvar matrix;\n\n\t\tif ( geometry2.isMesh ) {\n\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\n\n\t\t\tmatrix = geometry2.matrix;\n\t\t\tgeometry2 = geometry2.geometry;\n\n\t\t}\n\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\n\n\t},\n\n\tcenter: function ( geometry ) {\n\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\n\t\treturn geometry.center();\n\n\t}\n\n};\n\nImageUtils.crossOrigin = undefined;\n\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\n\n\tvar loader = new TextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( url, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\n\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\n\n\tvar loader = new CubeTextureLoader();\n\tloader.setCrossOrigin( this.crossOrigin );\n\n\tvar texture = loader.load( urls, onLoad, undefined, onError );\n\n\tif ( mapping ) texture.mapping = mapping;\n\n\treturn texture;\n\n};\n\nImageUtils.loadCompressedTexture = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\nImageUtils.loadCompressedTextureCube = function () {\n\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\n\n};\n\n//\n\nfunction CanvasRenderer() {\n\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\n\n}\n\n//\n\nfunction JSONLoader() {\n\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\n\n}\n\n//\n\nvar SceneUtils = {\n\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tdetach: function ( /* child, parent, scene */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t},\n\n\tattach: function ( /* child, scene, parent */ ) {\n\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' );\n\n\t}\n\n};\n\n//\n\nfunction LensFlare() {\n\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' );\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AlphaFormat, AlwaysDepth, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DirectionalLightShadow, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FaceNormalsHelper, FileLoader, FlatShading, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontFaceDirectionCCW, FrontFaceDirectionCW, FrontSide, Frustum, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, JSONLoader, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, Light, LightProbe, LightProbeHelper, LightShadow, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, _Math as Math, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverDepth, NoBlending, NoColors, NoToneMapping, NormalBlending, NotEqualDepth, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PositionalAudioHelper, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RectAreaLightHelper, RedFormat, ReinhardToneMapping, RepeatWrapping, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SphericalReflectionMapping, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, SpotLightShadow, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StereoCamera, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uncharted2ToneMapping, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VertexNormalsHelper, VideoTexture, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, sRGBEncoding };\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport proj4 from 'proj4';\nimport CRS from \"./Crs\";\nimport Ellipsoid from \"../Math/Ellipsoid\";\nproj4.defs('EPSG:4978', '+proj=geocent +datum=WGS84 +units=m +no_defs');\nvar ellipsoid = new Ellipsoid();\nvar vectorPivot = new THREE.Vector3();\nvar coordPivot;\nvar projectionCache = {};\n\nfunction proj4cache(crsIn, crsOut) {\n if (!projectionCache[crsIn]) {\n projectionCache[crsIn] = {};\n }\n\n if (!projectionCache[crsIn][crsOut]) {\n projectionCache[crsIn][crsOut] = proj4(crsIn, crsOut);\n }\n\n return projectionCache[crsIn][crsOut];\n} // Internal method, takes a coord and put some proj4 values in it\n\n\nfunction setFromProj4(coord, proj4value, z) {\n return coord.setFromValues(proj4value[0], proj4value[1], z);\n}\n/**\n * A Coordinates object, defined by a [crs]{@link http://inspire.ec.europa.eu/theme/rs}\n * and three values. These values are accessible through `x`, `y` and `z`,\n * although it can also be accessible through `latitude`, `longitude` and\n * `altitude`. To change a value, prefer the `set()` method below.\n *\n * @property {boolean} isCoordinates - Used to checkout whether this coordinates\n * is a Coordinates. Default is true. You should not change this, as it is used\n * internally for optimisation.\n * @property {string} crs - A supported crs by default in\n * [`proj4js`](https://github.com/proj4js/proj4js#named-projections), or an\n * added crs to `proj4js` (using `proj4.defs`). Note that `EPSG:4978` is also\n * supported by default in itowns.\n * @property {number} x - The first value of the coordinate.\n * @property {number} y - The second value of the coordinate.\n * @property {number} z - The third value of the coordinate.\n * @property {number} latitude - The first value of the coordinate.\n * @property {number} longitude - The second value of the coordinate.\n * @property {number} altitude - The third value of the coordinate.\n * @property {THREE.Vector3} geodesicNormal - The geodesic normal of the\n * coordinate.\n *\n * @example\n * new Coordinates('EPSG:4978', 20885167, 849862, 23385912); //Geocentric coordinates\n *\n * @example\n * new Coordinates('EPSG:4326', 2.33, 48.24, 24999549); //Geographic coordinates\n */\n\n\nvar Coordinates =\n/*#__PURE__*/\nfunction () {\n /**\n * @constructor\n *\n * @param {string} crs - A supported crs (see the `crs` property below).\n * @param {number|Array|Coordinates|THREE.Vector3} [v0=0] -\n * x or longitude value, or a more complex one: it can be an array of three\n * numbers, being x/lon, x/lat, z/alt, or it can be `THREE.Vector3`. It can\n * also simply be a Coordinates.\n * @param {number} [v1=0] - y or latitude value.\n * @param {number} [v2=0] - z or altitude value.\n */\n function Coordinates(crs) {\n var v0 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var v1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var v2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n _classCallCheck(this, Coordinates);\n\n this.isCoordinates = true;\n CRS.isValid(crs);\n this.crs = crs; // Storing the coordinates as is, not in arrays, as it is\n // slower (see https://jsbench.me/40jumfag6g/1)\n\n this.x = 0;\n this.y = 0;\n this.z = 0; // Normal\n\n this._normal = new THREE.Vector3();\n\n if (v0.length > 0) {\n this.setFromArray(v0);\n } else if (v0.isVector3 || v0.isCoordinates) {\n this.setFromVector3(v0);\n } else {\n this.setFromValues(v0, v1, v2);\n }\n\n this._normalNeedsUpdate = true;\n }\n /**\n * Set the values of this Coordinates.\n *\n * @param {number} [v0=0] - x or longitude value.\n * @param {number} [v1=0] - y or latitude value.\n * @param {number} [v2=0] - z or altitude value.\n *\n * @return {Coordinates} This Coordinates.\n */\n\n\n _createClass(Coordinates, [{\n key: \"setFromValues\",\n value: function setFromValues() {\n var v0 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var v1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var v2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n this.x = v0 == undefined ? 0 : v0;\n this.y = v1 == undefined ? 0 : v1;\n this.z = v2 == undefined ? 0 : v2;\n this._normalNeedsUpdate = true;\n return this;\n }\n /**\n * Set the values of this Coordinates from an array.\n *\n * @param {Array} array - An array of number to assign to the\n * Coordinates.\n * @param {number} [offset] - Optional offset into the array.\n *\n * @return {Coordinates} This Coordinates.\n */\n\n }, {\n key: \"setFromArray\",\n value: function setFromArray(array) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this.setFromValues(array[offset], array[offset + 1], array[offset + 2]);\n }\n /**\n * Set the values of this Coordinates from a `THREE.Vector3` or an `Object`\n * having `x/y/z` properties, like a `Coordinates`.\n *\n * @param {THREE.Vector3|Coordinates} v0 - The object to read the values\n * from.\n *\n * @return {Coordinates} This Coordinates.\n */\n\n }, {\n key: \"setFromVector3\",\n value: function setFromVector3(v0) {\n return this.setFromValues(v0.x, v0.y, v0.z);\n }\n /**\n * Returns a new Coordinates with the same values as this one. It will\n * instantiate a new Coordinates with the same CRS as this one.\n *\n * @return {Coordinates} The target with its new coordinates.\n */\n\n }, {\n key: \"clone\",\n value: function clone() {\n return new Coordinates(this.crs, this);\n }\n /**\n * Copies the values of the passed Coordinates to this one. The CRS is\n * however not copied.\n *\n * @param {Coordinates} src - The source to copy from.\n *\n * @return {Coordinates} This Coordinates.\n */\n\n }, {\n key: \"copy\",\n value: function copy(src) {\n return this.setFromVector3(src);\n }\n }, {\n key: \"toVector3\",\n\n /**\n * Return this Coordinates values into a `THREE.Vector3`.\n *\n * @param {THREE.Vector3} [target] - The target to put the values in. If not\n * specified, a new vector will be created.\n *\n * @return {THREE.Vector3}\n */\n value: function toVector3() {\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new THREE.Vector3();\n return target.copy(this);\n }\n /**\n * Returns coordinates in the wanted [CRS]{@link http://inspire.ec.europa.eu/theme/rs}.\n *\n * @param {string} crs - The CRS to convert the Coordinates into.\n * @param {Coordinates} [target] - The target to put the converted\n * Coordinates into. If not specified a new one will be created.\n *\n * @return {Coordinates} - The resulting Coordinates after the conversion.\n *\n * @example\n * const position = { longitude: 2.33, latitude: 48.24, altitude: 24999549 };\n * const coords = new Coordinates('EPSG:4326', position.longitude, position.latitude, position.altitude); // Geographic system\n * const coordinates = coords.as('EPSG:4978'); // Geocentric system\n *\n * @example\n * const position = { x: 20885167, y: 849862, z: 23385912 };\n * const coords = new Coordinates('EPSG:4978', position.x, position.y, position.z); // Geocentric system\n * const coordinates = coords.as('EPSG:4326'); // Geographic system\n *\n * @example\n * new Coordinates('EPSG:4326', longitude: 2.33, latitude: 48.24, altitude: 24999549).as('EPSG:4978'); // Geocentric system\n *\n * @example\n * new Coordinates('EPSG:4978', x: 20885167, y: 849862, z: 23385912).as('EPSG:4326'); // Geographic system\n */\n\n }, {\n key: \"as\",\n value: function as(crs) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Coordinates(crs);\n\n if (this.crs == crs) {\n target.copy(this); // there is a bug for converting anything from and to 4978 with proj4\n // https://github.com/proj4js/proj4js/issues/195\n // the workaround is to use an intermediate projection, like EPSG:4326\n } else if (crs == 'EPSG:4978') {\n if (CRS.is4326(this.crs)) {\n ellipsoid.cartographicToCartesian(this, vectorPivot);\n target.setFromVector3(vectorPivot);\n } else {\n setFromProj4(coordPivot, proj4cache(this.crs, 'EPSG:4326').forward([this.x, this.y]), this.z);\n coordPivot.as('EPSG:4978', target);\n }\n } else if (this.crs == 'EPSG:4978') {\n if (CRS.is4326(crs)) {\n ellipsoid.cartesianToCartographic(this, target);\n } else {\n this.as('EPSG:4326', coordPivot);\n setFromProj4(target, proj4cache('EPSG:4326', crs).forward([coordPivot.x, coordPivot.y]), coordPivot.z);\n }\n } else if (CRS.is4326(this.crs) && crs == 'EPSG:3857') {\n this.y = THREE.Math.clamp(this.y, -89.999999, 89.999999);\n setFromProj4(target, proj4cache(this.crs, crs).forward([this.x, this.y]), this.z);\n } else {\n setFromProj4(target, proj4cache(this.crs, crs).forward([this.x, this.y]), this.z);\n }\n\n target.crs = crs;\n return target;\n }\n }, {\n key: \"longitude\",\n get: function get() {\n return this.x;\n }\n }, {\n key: \"latitude\",\n get: function get() {\n return this.y;\n }\n }, {\n key: \"altitude\",\n get: function get() {\n return this.z;\n },\n set: function set(value) {\n this.z = value;\n }\n }, {\n key: \"geodesicNormal\",\n get: function get() {\n if (this._normalNeedsUpdate) {\n this._normalNeedsUpdate = false;\n\n if (CRS.is4326(this.crs)) {\n ellipsoid.geodeticSurfaceNormalCartographic(this, this._normal);\n } else if (this.crs == 'EPSG:4978') {\n ellipsoid.geodeticSurfaceNormal(this, this._normal);\n } else {\n this._normal.set(0, 0, 1);\n }\n }\n\n return this._normal;\n }\n }]);\n\n return Coordinates;\n}();\n\ncoordPivot = new Coordinates('EPSG:4326');\nexport default Coordinates;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport Coordinates from \"./Coordinates\";\nimport CRS from \"./Crs\";\nimport Projection from \"./Projection\";\n/**\n * Extent is a SIG-area (so 2D)\n * It can use explicit coordinates (e.g: lon/lat) or implicit (WMTS coordinates)\n */\n\nvar _dim = new THREE.Vector2();\n\nvar _dim2 = new THREE.Vector2();\n\nvar r = {\n row: 0,\n col: 0,\n invDiff: 0\n};\n\nfunction _rowColfromParent(extent, zoom) {\n var diffLevel = extent.zoom - zoom;\n var diff = Math.pow(2, diffLevel);\n r.invDiff = 1 / diff;\n r.row = (extent.row - extent.row % diff) * r.invDiff;\n r.col = (extent.col - extent.col % diff) * r.invDiff;\n return r;\n}\n\nvar _extent;\n\nvar cardinals = [];\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\ncardinals.push(new Coordinates('EPSG:4326', 0, 0, 0, 0));\n\nvar _c = new Coordinates('EPSG:4326', 0, 0); // EPSG:3857\n// WGS84 bounds [-20026376.39 -20048966.10 20026376.39 20048966.10] (https://epsg.io/3857)\n// Warning, some tiled source don't exactly match the same bound\n// It should be taken into account\n\n\nexport var worldDimension3857 = {\n x: 20026376.39 * 2,\n y: 20048966.10 * 2\n};\n\nvar Extent =\n/*#__PURE__*/\nfunction () {\n /**\n * Extent is geographical bounding rectangle defined by 4 limits: west, east, south and north.\n * If crs is tiled projection (WMTS or TMS), the extent is defined by zoom, row and column.\n *\n * @param {String} crs projection of limit values.\n * @param {number|Array.|Coordinates|Object} v0 west value, zoom\n * value, Array of values [west, east, south and north], Coordinates of\n * west-south corner or object {west, east, south and north}\n * @param {number|Coordinates} [v1] east value, row value or Coordinates of\n * east-north corner\n * @param {number} [v2] south value or column value\n * @param {number} [v3] north value\n */\n function Extent(crs, v0, v1, v2, v3) {\n _classCallCheck(this, Extent);\n\n this.crs = crs;\n\n if (this.isTiledCrs()) {\n this.zoom = 0;\n this.row = 0;\n this.col = 0;\n } else {\n this.west = 0;\n this.east = 0;\n this.south = 0;\n this.north = 0;\n }\n\n this.set(v0, v1, v2, v3);\n }\n /**\n * Clone this extent\n * @return {Extent} cloned extent\n */\n\n\n _createClass(Extent, [{\n key: \"clone\",\n value: function clone() {\n if (this.isTiledCrs()) {\n return new Extent(this.crs, this.zoom, this.row, this.col);\n } else {\n return new Extent(this.crs, this.west, this.east, this.south, this.north);\n }\n }\n /**\n * Return true is tiled Extent (WGS84, PM)\n * @return {boolean}\n */\n\n }, {\n key: \"isTiledCrs\",\n value: function isTiledCrs() {\n return this.crs.indexOf('WMTS:') == 0 || this.crs == 'TMS';\n }\n /**\n * Convert Extent to the specified projection.\n * @param {string} crs the projection of destination.\n * @param {Extent} target copy the destination to target.\n * @return {Extent}\n */\n\n }, {\n key: \"as\",\n value: function as(crs, target) {\n CRS.isValid(crs);\n\n if (this.isTiledCrs()) {\n if (this.crs == 'WMTS:PM' || this.crs == 'TMS') {\n if (!target) {\n target = new Extent('EPSG:4326', [0, 0, 0, 0]);\n } // Convert this to the requested crs by using 4326 as an intermediate state.\n\n\n var nbCol = Math.pow(2, this.zoom);\n var nbRow = nbCol;\n var sizeRow = 1.0 / nbRow; // convert row PM to Y PM\n\n var Yn = 1 - sizeRow * (nbRow - this.row);\n var Ys = Yn + sizeRow; // convert to EPSG:3857\n\n if (crs == 'EPSG:3857') {\n var west = (0.5 - sizeRow * (nbCol - this.col)) * worldDimension3857.x;\n var east = west + sizeRow * worldDimension3857.x;\n var south = (0.5 - Ys) * worldDimension3857.y;\n var north = (0.5 - Yn) * worldDimension3857.y;\n target.set(west, east, south, north);\n target.crs = 'EPSG:3857';\n return target.as(crs, target);\n } else {\n var size = 360 / nbCol; // convert Y PM to latitude EPSG:4326 degree\n\n var _north = Projection.YToWGS84(Yn);\n\n var _south = Projection.YToWGS84(Ys); // convert column PM to longitude EPSG:4326 degree\n\n\n var _west = 180 - size * (nbCol - this.col);\n\n target.set(_west, _west + size, _south, _north);\n target.crs = 'EPSG:4326';\n\n if (crs == 'EPSG:4326') {\n return target;\n } else {\n // convert in new crs\n return target.as(crs, target);\n }\n }\n } else if (this.crs == 'WMTS:WGS84G' && crs == 'EPSG:4326') {\n if (!target) {\n target = new Extent('EPSG:4326', [0, 0, 0, 0]);\n }\n\n var _nbRow = Math.pow(2, this.zoom);\n\n var _size = 180 / _nbRow;\n\n var _north2 = _size * (_nbRow - this.row) - 90;\n\n var _south2 = _size * (_nbRow - (this.row + 1)) - 90;\n\n var _west2 = 180 - _size * (2 * _nbRow - this.col);\n\n var _east2 = 180 - _size * (2 * _nbRow - (this.col + 1));\n\n target.set(_west2, _east2, _south2, _north2);\n target.crs = crs;\n return target;\n } else {\n throw new Error('Unsupported yet');\n }\n }\n\n if (!target) {\n target = new Extent('EPSG:4326', [0, 0, 0, 0]);\n }\n\n if (this.crs != crs && !(CRS.is4326(this.crs) && CRS.is4326(crs))) {\n // Compute min/max in x/y by projecting 8 cardinal points,\n // and then taking the min/max of each coordinates.\n var center = this.center(_c);\n cardinals[0].crs = this.crs;\n cardinals[0].setFromValues(this.west, this.north);\n cardinals[1].crs = this.crs;\n cardinals[1].setFromValues(center.x, this.north);\n cardinals[2].crs = this.crs;\n cardinals[2].setFromValues(this.east, this.north);\n cardinals[3].crs = this.crs;\n cardinals[3].setFromValues(this.east, center.y);\n cardinals[4].crs = this.crs;\n cardinals[4].setFromValues(this.east, this.south);\n cardinals[5].crs = this.crs;\n cardinals[5].setFromValues(center.x, this.south);\n cardinals[6].crs = this.crs;\n cardinals[6].setFromValues(this.west, this.south);\n cardinals[7].crs = this.crs;\n cardinals[7].setFromValues(this.west, center.y);\n\n var _north3 = -Infinity;\n\n var _south3 = Infinity;\n\n var _east3 = -Infinity;\n\n var _west3 = Infinity; // loop over the coordinates\n\n for (var i = 0; i < cardinals.length; i++) {\n // convert the coordinate.\n cardinals[i].as(crs, _c);\n _north3 = Math.max(_north3, _c.y);\n _south3 = Math.min(_south3, _c.y);\n _east3 = Math.max(_east3, _c.x);\n _west3 = Math.min(_west3, _c.x);\n }\n\n target.crs = crs;\n target.set(_west3, _east3, _south3, _north3);\n return target;\n }\n\n target.crs = crs;\n target.set(this.west, this.east, this.south, this.north);\n return target;\n }\n /**\n * Return the center of Extent\n * @param {Coordinates} target copy the center to the target.\n * @return {Coordinates}\n */\n\n }, {\n key: \"center\",\n value: function center() {\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Coordinates(this.crs);\n\n if (this.isTiledCrs()) {\n throw new Error('Invalid operation for WMTS bbox');\n }\n\n this.dimensions(_dim);\n target.crs = this.crs;\n target.setFromValues(this.west + _dim.x * 0.5, this.south + _dim.y * 0.5);\n return target;\n }\n /**\n * Returns the dimension of the extent, in a `THREE.Vector2`.\n *\n * @param {THREE.Vector2} [target] - The target to assign the result in.\n *\n * @return {THREE.Vector2}\n */\n\n }, {\n key: \"dimensions\",\n value: function dimensions() {\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new THREE.Vector2();\n target.x = Math.abs(this.east - this.west);\n target.y = Math.abs(this.north - this.south);\n return target;\n }\n /**\n * Return true if `coord` is inside the bounding box.\n *\n * @param {Coordinates} coord\n * @param {number} [epsilon=0] - to take into account when comparing to the\n * point.\n *\n * @return {boolean}\n */\n\n }, {\n key: \"isPointInside\",\n value: function isPointInside(coord) {\n var epsilon = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var c = this.crs == coord.crs ? coord : coord.as(this.crs, _c); // TODO this ignores altitude\n\n return c.x <= this.east + epsilon && c.x >= this.west - epsilon && c.y <= this.north + epsilon && c.y >= this.south - epsilon;\n }\n /**\n * Return true if `extent` is inside this extent.\n *\n * @param {Extent} extent the extent to check\n * @param {number} epsilon to take into account when comparing to the\n * point.\n *\n * @return {boolean}\n */\n\n }, {\n key: \"isInside\",\n value: function isInside(extent, epsilon) {\n if (this.isTiledCrs()) {\n if (this.zoom == extent.zoom) {\n return this.row == extent.row && this.col == extent.col;\n } else if (this.zoom < extent.zoom) {\n return false;\n } else {\n _rowColfromParent(this, extent.zoom);\n\n return r.row == extent.row && r.col == extent.col;\n }\n } else {\n extent.as(this.crs, _extent);\n epsilon = epsilon == undefined ? CRS.reasonnableEpsilon(this.crs) : epsilon;\n return this.east - _extent.east <= epsilon && _extent.west - this.west <= epsilon && this.north - _extent.north <= epsilon && _extent.south - this.south <= epsilon;\n }\n }\n /**\n * Return the translation and scale to transform this extent to input extent.\n *\n * @param {Extent} extent input extent\n * @param {THREE.Vector4} target copy the result to target.\n * @return {THREE.Vector4} {x: translation on west-east, y: translation on south-north, z: scale on west-east, w: scale on south-north}\n */\n\n }, {\n key: \"offsetToParent\",\n value: function offsetToParent(extent) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE.Vector4();\n\n if (this.crs != extent.crs) {\n throw new Error('unsupported mix');\n }\n\n if (this.isTiledCrs()) {\n _rowColfromParent(this, extent.zoom);\n\n return target.set(this.col * r.invDiff - r.col, this.row * r.invDiff - r.row, r.invDiff, r.invDiff);\n }\n\n extent.dimensions(_dim);\n this.dimensions(_dim2);\n var originX = (this.west - extent.west) / _dim.x;\n var originY = (extent.north - this.north) / _dim.y;\n var scaleX = _dim2.x / _dim.x;\n var scaleY = _dim2.y / _dim.y;\n return target.set(originX, originY, scaleX, scaleY);\n }\n /**\n * Return parent tiled extent with input level\n *\n * @param {number} levelParent level of parent.\n * @return {Extent}\n */\n\n }, {\n key: \"tiledExtentParent\",\n value: function tiledExtentParent(levelParent) {\n if (levelParent && levelParent < this.zoom) {\n _rowColfromParent(this, levelParent);\n\n return new Extent(this.crs, levelParent, r.row, r.col);\n } else {\n return this;\n }\n }\n /**\n * Return true if this bounding box intersect with the bouding box parameter\n * @param {Extent} extent\n * @returns {Boolean}\n */\n\n }, {\n key: \"intersectsExtent\",\n value: function intersectsExtent(extent) {\n var other = extent.crs == this.crs ? extent : extent.as(this.crs, _extent);\n return !(this.west >= other.east || this.east <= other.west || this.south >= other.north || this.north <= other.south);\n }\n /**\n * Return the intersection of this extent with another one\n * @param {Extent} extent\n * @returns {Boolean}\n */\n\n }, {\n key: \"intersect\",\n value: function intersect(extent) {\n if (!this.intersectsExtent(extent)) {\n return new Extent(this.crs, 0, 0, 0, 0);\n }\n\n if (extent.crs != this.crs) {\n extent = extent.as(this.crs, _extent);\n }\n\n return new Extent(this.crs, Math.max(this.west, extent.west), Math.min(this.east, extent.east), Math.max(this.south, extent.south), Math.min(this.north, extent.north));\n }\n /**\n * Set west, east, south and north values.\n * Or if tiled extent, set zoom, row and column values\n *\n * @param {number|Array.|Coordinates|Object} v0 west value, zoom\n * value, Array of values [west, east, south and north], Coordinates of\n * west-south corner or object {west, east, south and north}\n * @param {number|Coordinates} [v1] east value, row value or Coordinates of\n * east-north corner\n * @param {number} [v2] south value or column value\n * @param {number} [v3] north value\n *\n * @return {Extent}\n */\n\n }, {\n key: \"set\",\n value: function set(v0, v1, v2, v3) {\n if (this.isTiledCrs()) {\n if (v0 !== undefined) {\n if (this.zoom < 0) {\n throw new Error('Invalid zoom value for tiled extent');\n }\n\n this.zoom = v0;\n this.row = v1;\n this.col = v2;\n } else {\n throw new Error('Invalid values to set');\n }\n } else if (v0.isCoordinates) {\n // seem never used\n this.west = v0.x;\n this.east = v1.x;\n this.south = v0.y;\n this.north = v1.y;\n } else if (v0 && v0.west !== undefined) {\n this.west = v0.west;\n this.east = v0.east;\n this.south = v0.south;\n this.north = v0.north;\n } else if (v0 && v0.length == 4) {\n this.west = v0[0];\n this.east = v0[1];\n this.south = v0[2];\n this.north = v0[3];\n } else if (v0 !== undefined) {\n this.west = v0;\n this.east = v1;\n this.south = v2;\n this.north = v3;\n } else {\n throw new Error('No values to set in the extent');\n }\n\n return this;\n }\n /**\n * Copy to this extent to input extent.\n * @param {Extent} extent\n * @return {Extent} copied extent\n */\n\n }, {\n key: \"copy\",\n value: function copy(extent) {\n this.crs = extent.crs;\n return this.set(extent);\n }\n /**\n * Union this extent with the input extent.\n * @param {Extent} extent the extent to union.\n */\n\n }, {\n key: \"union\",\n value: function union(extent) {\n if (extent.crs != this.crs) {\n throw new Error('unsupported union between 2 diff crs');\n }\n\n if (this.west === Infinity) {\n this.copy(extent);\n } else {\n var west = extent.west;\n\n if (west < this.west) {\n this.west = west;\n }\n\n var east = extent.east;\n\n if (east > this.east) {\n this.east = east;\n }\n\n var south = extent.south;\n\n if (south < this.south) {\n this.south = south;\n }\n\n var north = extent.north;\n\n if (north > this.north) {\n this.north = north;\n }\n }\n }\n /**\n * expandByCoordinates perfoms the minimal extension\n * for the coordinates to belong to this Extent object\n * @param {Coordinates} coordinates The coordinates to belong\n */\n\n }, {\n key: \"expandByCoordinates\",\n value: function expandByCoordinates(coordinates) {\n var coords = coordinates.crs == this.crs ? coordinates : coordinates.as(this.crs, _c);\n this.expandByValuesCoordinates(coords.x, coords.y);\n }\n /**\n * expandByValuesCoordinates perfoms the minimal extension\n * for the coordinates values to belong to this Extent object\n * @param {number} we The coordinate on west-east\n * @param {number} sn The coordinate on south-north\n *\n */\n\n }, {\n key: \"expandByValuesCoordinates\",\n value: function expandByValuesCoordinates(we, sn) {\n if (we < this.west) {\n this.west = we;\n }\n\n if (we > this.east) {\n this.east = we;\n }\n\n if (sn < this.south) {\n this.south = sn;\n }\n\n if (sn > this.north) {\n this.north = sn;\n }\n }\n /**\n * Instance Extent with THREE.Box2\n * @param {string} crs Projection of extent to instancied.\n * @param {THREE.Box2} box\n * @return {Extent}\n */\n\n }, {\n key: \"toString\",\n\n /**\n * Return values of extent in string, separated by the separator input.\n * @param {string} separator\n * @return {string}\n */\n value: function toString() {\n var separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (this.isTiledCrs()) {\n return \"\".concat(this.zoom).concat(separator).concat(this.row).concat(separator).concat(this.col);\n } else {\n return \"\".concat(this.east).concat(separator).concat(this.north).concat(separator).concat(this.west).concat(separator).concat(this.south);\n }\n }\n /**\n * Subdivide equally an extent from its center to return four extents:\n * north-west, north-east, south-west and south-east.\n *\n * @returns {Extent[]} An array containing the four sections of the extent. The\n * order of the sections is [NW, NE, SW, SE].\n */\n\n }, {\n key: \"subdivision\",\n value: function subdivision() {\n this.center(_c);\n var northWest = new Extent(this.crs, this.west, _c.x, _c.y, this.north);\n var northEast = new Extent(this.crs, _c.x, this.east, _c.y, this.north);\n var southWest = new Extent(this.crs, this.west, _c.x, this.south, _c.y);\n var southEast = new Extent(this.crs, _c.x, this.east, this.south, _c.y);\n return [northWest, northEast, southWest, southEast];\n }\n /**\n * Apply transform and copy this extent to input. The `transformedCopy`\n * doesn't handle the issue of overflow of geographic limits.\n * @param {THREE.Vector2} t translation transform\n * @param {THREE.Vector2} s scale transform\n * @param {Extent} extent Extent to copy after transformation.\n */\n\n }, {\n key: \"transformedCopy\",\n value: function transformedCopy(t, s, extent) {\n if (!extent.isTiledCrs()) {\n this.crs = extent.crs;\n this.west = (extent.west + t.x) * s.x;\n this.east = (extent.east + t.x) * s.x;\n\n if (this.west > this.east) {\n var temp = this.west;\n this.west = this.east;\n this.east = temp;\n }\n\n this.south = (extent.south + t.y) * s.y;\n this.north = (extent.north + t.y) * s.y;\n\n if (this.south > this.north) {\n var _temp = this.south;\n this.south = this.north;\n this.north = _temp;\n }\n }\n }\n }], [{\n key: \"fromBox3\",\n value: function fromBox3(crs, box) {\n return new Extent(crs, {\n west: box.min.x,\n east: box.max.x,\n south: box.min.y,\n north: box.max.y\n });\n }\n }]);\n\n return Extent;\n}();\n\n_extent = new Extent('EPSG:4326', [0, 0, 0, 0]);\nexport default Extent;","import { EventDispatcher } from 'three';\nimport Cache from \"./Scheduler/Cache\";\nexport var RENDERING_PAUSED = 0;\nexport var RENDERING_SCHEDULED = 1;\n/**\n * MainLoop's update events list that are fired using\n * {@link View#execFrameRequesters}.\n *\n * @property UPDATE_START {string} fired at the start of the update\n * @property BEFORE_CAMERA_UPDATE {string} fired before the camera update\n * @property AFTER_CAMERA_UPDATE {string} fired after the camera update\n * @property BEFORE_LAYER_UPDATE {string} fired before the layer update\n * @property AFTER_LAYER_UPDATE {string} fired after the layer update\n * @property BEFORE_RENDER {string} fired before the render\n * @property AFTER_RENDER {string} fired after the render\n * @property UPDATE_END {string} fired at the end of the update\n */\n\nexport var MAIN_LOOP_EVENTS = {\n UPDATE_START: 'update_start',\n BEFORE_CAMERA_UPDATE: 'before_camera_update',\n AFTER_CAMERA_UPDATE: 'after_camera_update',\n BEFORE_LAYER_UPDATE: 'before_layer_update',\n AFTER_LAYER_UPDATE: 'after_layer_update',\n BEFORE_RENDER: 'before_render',\n AFTER_RENDER: 'after_render',\n UPDATE_END: 'update_end'\n};\n\nfunction MainLoop(scheduler, engine) {\n this.renderingState = RENDERING_PAUSED;\n this.needsRedraw = false;\n this.scheduler = scheduler;\n this.gfxEngine = engine; // TODO: remove me\n\n this._updateLoopRestarted = true;\n}\n\nMainLoop.prototype = Object.create(EventDispatcher.prototype);\nMainLoop.prototype.constructor = MainLoop;\n\nMainLoop.prototype.scheduleViewUpdate = function (view, forceRedraw) {\n var _this = this;\n\n this.needsRedraw |= forceRedraw;\n\n if (this.renderingState !== RENDERING_SCHEDULED) {\n this.renderingState = RENDERING_SCHEDULED;\n requestAnimationFrame(function (timestamp) {\n _this._step(view, timestamp);\n });\n }\n};\n\nfunction updateElements(context, geometryLayer, elements) {\n if (!elements) {\n return;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = elements[Symbol.iterator](), _step2; !(_iteratorNormalCompletion = (_step2 = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var element = _step2.value;\n // update element\n // TODO find a way to notify attachedLayers when geometryLayer deletes some elements\n // and then update Debug.js:addGeometryLayerDebugFeatures\n var newElementsToUpdate = geometryLayer.update(context, geometryLayer, element);\n var sub = geometryLayer.getObjectToUpdateForAttachedLayers(element);\n\n if (sub) {\n if (sub.element) {\n // update attached layers\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = geometryLayer.attachedLayers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion2 = (_step3 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var attachedLayer = _step3.value;\n\n if (attachedLayer.ready) {\n attachedLayer.update(context, attachedLayer, sub.element, sub.parent);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n } else if (sub.elements) {\n for (var i = 0; i < sub.elements.length; i++) {\n if (!sub.elements[i].isObject3D) {\n throw new Error(\"\\n Invalid object for attached layer to update.\\n Must be a THREE.Object and have a THREE.Material\");\n } // update attached layers\n\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = geometryLayer.attachedLayers[Symbol.iterator](), _step4; !(_iteratorNormalCompletion3 = (_step4 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _attachedLayer = _step4.value;\n\n if (_attachedLayer.ready) {\n _attachedLayer.update(context, _attachedLayer, sub.elements[i], sub.parent);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n }\n }\n\n updateElements(context, geometryLayer, newElementsToUpdate);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction filterChangeSources(updateSources, geometryLayer) {\n var fullUpdate = false;\n var filtered = new Set();\n updateSources.forEach(function (src) {\n if (src === geometryLayer || src.isCamera) {\n geometryLayer.info.clear();\n fullUpdate = true;\n } else if (src.layer === geometryLayer) {\n filtered.add(src);\n }\n });\n return fullUpdate ? new Set([geometryLayer]) : filtered;\n}\n\nMainLoop.prototype._update = function (view, updateSources, dt) {\n var context = {\n camera: view.camera,\n engine: this.gfxEngine,\n scheduler: this.scheduler,\n view: view\n }; // replace layer with their parent where needed\n\n updateSources.forEach(function (src) {\n var layer = src.layer || src;\n\n if (layer.isLayer) {\n var parentLayer = view.getParentLayer(layer);\n\n if (parentLayer) {\n // add the parent layer to update sources\n updateSources.add(parentLayer);\n }\n }\n });\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = view.getLayers(function (x, y) {\n return !y;\n })[Symbol.iterator](), _step5; !(_iteratorNormalCompletion4 = (_step5 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var geometryLayer = _step5.value;\n context.geometryLayer = geometryLayer;\n\n if (geometryLayer.ready && geometryLayer.visible && !geometryLayer.frozen) {\n view.execFrameRequesters(MAIN_LOOP_EVENTS.BEFORE_LAYER_UPDATE, dt, this._updateLoopRestarted, geometryLayer); // Filter updateSources that are relevant for the geometryLayer\n\n var srcs = filterChangeSources(updateSources, geometryLayer);\n\n if (srcs.size > 0) {\n // pre update attached layer\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = geometryLayer.attachedLayers[Symbol.iterator](), _step6; !(_iteratorNormalCompletion5 = (_step6 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var attachedLayer = _step6.value;\n\n if (attachedLayer.ready && attachedLayer.preUpdate) {\n attachedLayer.preUpdate(context, srcs);\n }\n } // `preUpdate` returns an array of elements to update\n\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5[\"return\"] != null) {\n _iterator5[\"return\"]();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n var elementsToUpdate = geometryLayer.preUpdate(context, srcs); // `update` is called in `updateElements`.\n\n updateElements(context, geometryLayer, elementsToUpdate); // `postUpdate` is called when this geom layer update process is finished\n\n geometryLayer.postUpdate(context, geometryLayer, updateSources);\n }\n\n view.execFrameRequesters(MAIN_LOOP_EVENTS.AFTER_LAYER_UPDATE, dt, this._updateLoopRestarted, geometryLayer);\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4[\"return\"] != null) {\n _iterator4[\"return\"]();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n};\n\nMainLoop.prototype._step = function (view, timestamp) {\n var dt = timestamp - this._lastTimestamp;\n\n view._executeFrameRequestersRemovals();\n\n view.execFrameRequesters(MAIN_LOOP_EVENTS.UPDATE_START, dt, this._updateLoopRestarted);\n var willRedraw = this.needsRedraw;\n this._lastTimestamp = timestamp; // Reset internal state before calling _update (so future calls to View.notifyChange()\n // can properly change it)\n\n this.needsRedraw = false;\n this.renderingState = RENDERING_PAUSED;\n var updateSources = new Set(view._changeSources);\n\n view._changeSources.clear(); // update camera\n\n\n var dim = this.gfxEngine.getWindowSize();\n view.execFrameRequesters(MAIN_LOOP_EVENTS.BEFORE_CAMERA_UPDATE, dt, this._updateLoopRestarted);\n view.camera.update(dim.x, dim.y);\n view.execFrameRequesters(MAIN_LOOP_EVENTS.AFTER_CAMERA_UPDATE, dt, this._updateLoopRestarted); // Disable camera's matrix auto update to make sure the camera's\n // world matrix is never updated mid-update.\n // Otherwise inconsistencies can appear because object visibility\n // testing and object drawing could be performed using different\n // camera matrixWorld.\n // Note: this is required at least because WEBGLRenderer calls\n // camera.updateMatrixWorld()\n\n var oldAutoUpdate = view.camera.camera3D.matrixAutoUpdate;\n view.camera.camera3D.matrixAutoUpdate = false; // update data-structure\n\n this._update(view, updateSources, dt);\n\n if (this.scheduler.commandsWaitingExecutionCount() == 0) {\n this.dispatchEvent({\n type: 'command-queue-empty'\n });\n } // Redraw *only* if needed.\n // (redraws only happen when this.needsRedraw is true, which in turn only happens when\n // view.notifyChange() is called with redraw=true)\n // As such there's no continuous update-loop, instead we use a ad-hoc update/render\n // mechanism.\n\n\n if (willRedraw) {\n this._renderView(view, dt);\n } // next time, we'll consider that we've just started the loop if we are still PAUSED now\n\n\n this._updateLoopRestarted = this.renderingState === RENDERING_PAUSED;\n view.camera.camera3D.matrixAutoUpdate = oldAutoUpdate; // Clear the cache of expired resources\n\n Cache.flush();\n view.execFrameRequesters(MAIN_LOOP_EVENTS.UPDATE_END, dt, this._updateLoopRestarted);\n};\n\nMainLoop.prototype._renderView = function (view, dt) {\n view.execFrameRequesters(MAIN_LOOP_EVENTS.BEFORE_RENDER, dt, this._updateLoopRestarted);\n\n if (view.render) {\n view.render();\n } else {\n // use default rendering method\n this.gfxEngine.renderView(view);\n }\n\n view.execFrameRequesters(MAIN_LOOP_EVENTS.AFTER_RENDER, dt, this._updateLoopRestarted);\n};\n\nexport default MainLoop;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport Extent from \"./Geographic/Extent\";\n\nfunction defaultExtent(crs) {\n return new Extent(crs, Infinity, -Infinity, Infinity, -Infinity);\n}\n\nfunction _extendBuffer(feature, size) {\n feature.vertices.length += size * feature.size;\n\n if (feature.normals) {\n feature.normals.length = feature.vertices.length;\n }\n}\n\nvar defaultNormal = new THREE.Vector3(0, 0, 1);\n/**\n * @property {Extent} extent - The 2D extent containing all the points\n * composing the geometry.\n * @property {Object[]} indices - Contains the indices that define the geometry.\n * Objects stored in this array have two properties, an `offset` and a `count`.\n * The offset is related to the overall number of vertices in the Feature.\n *\n * @property {Object} properties - Properties of the geometry. It can be\n * anything specified in the GeoJSON under the `properties` property.\n */\n\nexport var FeatureGeometry =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {Feature} feature geometry\n */\n function FeatureGeometry(feature) {\n _classCallCheck(this, FeatureGeometry);\n\n this.extent = feature.extent ? defaultExtent(feature.crs) : undefined;\n this.indices = [];\n this._feature = feature;\n this.properties = {};\n this._currentExtent = feature.extent ? defaultExtent(feature.crs) : undefined;\n }\n /**\n * Add a new marker to indicate the starting of sub geometry and extends the vertices buffer.\n * Then you have to push new the coordinates of sub geometry.\n * The sub geometry stored in indices, see constructor for more information.\n * @param {number} count count of vertices\n */\n\n\n _createClass(FeatureGeometry, [{\n key: \"startSubGeometry\",\n value: function startSubGeometry(count) {\n var last = this.indices.length - 1;\n var extent = this.extent ? defaultExtent(this._feature.crs) : undefined;\n var offset = last > -1 ? this.indices[last].offset + this.indices[last].count : this._feature.vertices.length / this.size;\n this.indices.push({\n offset: offset,\n count: count,\n extent: extent\n });\n this._currentExtent = extent;\n\n _extendBuffer(this._feature, count);\n }\n /**\n * After you have pushed new the coordinates of sub geometry without\n * `startSubGeometry`, this function close sub geometry. The sub geometry\n * stored in indices, see constructor for more information.\n * @param {number} count count of vertices\n */\n\n }, {\n key: \"closeSubGeometry\",\n value: function closeSubGeometry(count) {\n var last = this.indices.length - 1;\n var offset = last > -1 ? this.indices[last].offset + this.indices[last].count : this._feature.vertices.length / this.size - count;\n this.indices.push({\n offset: offset,\n count: count,\n extent: this._currentExtent\n });\n\n if (this.extent) {\n this.extent.union(this._currentExtent);\n this._currentExtent = defaultExtent(this._feature.crs);\n }\n }\n }, {\n key: \"getLastSubGeometry\",\n value: function getLastSubGeometry() {\n var last = this.indices.length - 1;\n return this.indices[last];\n }\n /**\n * Push new coordinates in vertices buffer.\n * @param {Coordinates} coord The coordinates to push.\n */\n\n }, {\n key: \"pushCoordinates\",\n value: function pushCoordinates(coord) {\n if (coord.crs !== this._feature.crs) {\n coord.as(this._feature.crs, coord);\n }\n\n if (this._feature.normals) {\n coord.geodesicNormal.toArray(this._feature.normals, this._feature._pos);\n }\n\n this._feature._pushValues(this._feature, coord.x, coord.y, coord.z); // expand extent if present\n\n\n if (this._currentExtent) {\n this._currentExtent.expandByCoordinates(coord);\n }\n }\n /**\n * Push new values coordinates in vertices buffer.\n * No geographical conversion is made or the normal doesn't stored.\n *\n * @param {number} long The longitude coordinate.\n * @param {number} lat The latitude coordinate.\n * @param {number} [alt=0] The altitude coordinate.\n * @param {THREE.Vector3} [normal=THREE.Vector3(0,0,1)] the normal on coordinates.\n */\n\n }, {\n key: \"pushCoordinatesValues\",\n value: function pushCoordinatesValues(_long, lat) {\n var alt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var normal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : defaultNormal;\n\n if (this._feature.normals) {\n normal.toArray(this._feature.normals, this._feature._pos);\n }\n\n this._feature._pushValues(this._feature, _long, lat, alt); // expand extent if present\n\n\n if (this._currentExtent) {\n this._currentExtent.expandByValuesCoordinates(_long, lat, alt);\n }\n }\n /**\n * @returns {number} the number of values of the array that should be associated with a coordinates.\n * The size is 3 with altitude and 2 without altitude.\n */\n\n }, {\n key: \"updateExtent\",\n\n /**\n * update geometry extent with the last sub geometry extent.\n */\n value: function updateExtent() {\n if (this.extent) {\n var last = this.indices[this.indices.length - 1];\n\n if (last) {\n this.extent.union(last.extent);\n }\n }\n }\n }, {\n key: \"size\",\n get: function get() {\n return this._feature.size;\n }\n }]);\n\n return FeatureGeometry;\n}();\n\nfunction push2DValues(feature, value0, value1) {\n feature.vertices[feature._pos++] = value0;\n feature.vertices[feature._pos++] = value1;\n}\n\nfunction push3DValues(feature, value0, value1) {\n var value2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n feature.vertices[feature._pos++] = value0;\n feature.vertices[feature._pos++] = value1;\n feature.vertices[feature._pos++] = value2;\n}\n\nexport var FEATURE_TYPES = {\n POINT: 0,\n LINE: 1,\n POLYGON: 2\n};\n/**\n *\n * This class improves and simplifies the construction and conversion of geographic data structures.\n * It's an intermediary structure between geomatic formats and THREE objects.\n *\n * @property {string} type - Geometry type, can be `point`, `line`, or\n * `polygon`.\n * @property {number[]} vertices - All the vertices of the Feature.\n * @property {number[]} normals - All the normals of the Feature.\n * @property {number} size - the number of values of the array that should be associated with a coordinates.\n * The size is 3 with altitude and 2 without altitude.\n * @property {string} crs - Geographic or Geocentric coordinates system.\n * @property {Array.} geometry - The feature's geometry.\n * @property {Extent?} extent - The extent containing all the geometries\n * composing the feature.\n */\n\nvar Feature =\n/*#__PURE__*/\nfunction () {\n /**\n *\n * @param {string} type type of Feature. It can be 'point', 'line' or 'polygon'.\n * @param {string} crs Geographic or Geocentric coordinates system.\n * @param {Object} [options={}] options to build feature.\n * @param {boolean} [options.buildExtent] Build extent and update when adding new vertice.\n * @param {boolean} [options.withAltitude] Set vertice altitude when adding new vertice.\n * @param {boolean} [options.withNormal] Set vertice normal when adding new vertice.\n */\n function Feature(type, crs) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, Feature);\n\n if (Object.keys(FEATURE_TYPES).find(function (t) {\n return FEATURE_TYPES[t] === type;\n })) {\n this.type = type;\n } else {\n throw new Error(\"Unsupported Feature type: \".concat(type));\n }\n\n this.geometry = [];\n /**\n * @property {number[]} vertices the vertices\n */\n\n this.vertices = [];\n this.normals = options.withNormal ? [] : undefined;\n this.crs = crs;\n this.size = options.withAltitude ? 3 : 2;\n this.extent = options.buildExtent ? defaultExtent(crs) : undefined;\n this._pos = 0;\n this._pushValues = this.size === 3 ? push3DValues : push2DValues;\n }\n /**\n * Instance a new {@link FeatureGeometry} and push in {@link Feature}.\n * @returns {FeatureGeometry} the instancied geometry.\n */\n\n\n _createClass(Feature, [{\n key: \"bindNewGeometry\",\n value: function bindNewGeometry() {\n var geometry = new FeatureGeometry(this);\n this.geometry.push(geometry);\n return geometry;\n }\n /**\n * Update {@link Extent} feature with {@link Extent} geometry\n * @param {FeatureGeometry} geometry used to update Feature {@link Extent}\n */\n\n }, {\n key: \"updateExtent\",\n value: function updateExtent(geometry) {\n if (this.extent) {\n this.extent.union(geometry.extent);\n }\n }\n /**\n * @returns {number} the count of geometry.\n */\n\n }, {\n key: \"geometryCount\",\n get: function get() {\n return this.geometry.length;\n }\n }]);\n\n return Feature;\n}();\n\nexport default Feature;\n/**\n * @property {Feature[]} features - The array of features composing the\n * collection.\n * @property {Extent?} extent - The 2D extent containing all the features\n * composing the collection.\n * @property {string} crs - Geographic or Geocentric coordinates system.\n * @property {boolean} isFeatureCollection - Used to check whether this is FeatureCollection.\n * @property {THREE.Vector3} translation - Apply translation on vertices and extent to transform on coordinates system.\n * @property {THREE.Vector3} scale - Apply scale on vertices and extent to transform on coordinates system.\n *\n * An object regrouping a list of [features]{@link Feature} and the extent of this collection.\n */\n\nexport var FeatureCollection =\n/*#__PURE__*/\nfunction () {\n function FeatureCollection(crs, options) {\n _classCallCheck(this, FeatureCollection);\n\n this.isFeatureCollection = true;\n this.crs = crs;\n this.features = [];\n this.optionsFeature = options || {};\n this.extent = this.optionsFeature.buildExtent ? defaultExtent(crs) : undefined;\n this.translation = new THREE.Vector3();\n this.scale = new THREE.Vector3(1, 1, 1);\n }\n /**\n * Update FeatureCollection extent with `extent` or all features extent if\n * `extent` is `undefined`.\n * @param {Extent} extent\n */\n\n\n _createClass(FeatureCollection, [{\n key: \"updateExtent\",\n value: function updateExtent(extent) {\n if (this.extent) {\n var extents = extent ? [extent] : this.features.map(function (feature) {\n return feature.extent;\n });\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = extents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var ext = _step.value;\n this.extent.union(ext);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n /**\n * Remove features that don't have [FeatureGeometry]{@link FeatureGeometry}.\n */\n\n }, {\n key: \"removeEmptyFeature\",\n value: function removeEmptyFeature() {\n this.features = this.features.filter(function (feature) {\n return feature.geometry.length;\n });\n }\n /**\n * Push the `feature` in FeatureCollection.\n * @param {Feature} feature\n */\n\n }, {\n key: \"pushFeature\",\n value: function pushFeature(feature) {\n this.features.push(feature);\n this.updateExtent(feature.extent);\n }\n /**\n * Returns the Feature by type if `mergeFeatures` is `true` or returns the\n * new instance of typed Feature.\n *\n * @param {string} type the type requested\n * @returns {Feature}\n */\n\n }, {\n key: \"getFeatureByType\",\n value: function getFeatureByType(type) {\n var feature = this.features.find(function (feature) {\n return feature.type === type;\n });\n\n if (feature && this.optionsFeature.mergeFeatures) {\n return feature;\n } else {\n var newFeature = new Feature(type, this.crs, this.optionsFeature);\n this.features.push(newFeature);\n return newFeature;\n }\n }\n }]);\n\n return FeatureCollection;\n}();","import proj4 from 'proj4';\nproj4.defs('EPSG:4978', '+proj=geocent +datum=WGS84 +units=m +no_defs');\nvar UNIT = {\n DEGREE: 1,\n METER: 2\n};\n\nfunction is4326(crs) {\n return crs.indexOf('EPSG:4326') == 0;\n}\n\nfunction _unitFromProj4Unit(projunit) {\n if (projunit === 'degrees') {\n return UNIT.DEGREE;\n } else if (projunit === 'm') {\n return UNIT.METER;\n } else {\n return undefined;\n }\n}\n\nfunction toUnit(crs) {\n switch (crs) {\n case 'EPSG:4326':\n return UNIT.DEGREE;\n\n case 'EPSG:4978':\n return UNIT.METER;\n\n default:\n {\n var p = proj4.defs(crs);\n\n if (!p) {\n return undefined;\n }\n\n return _unitFromProj4Unit(p.units);\n }\n }\n}\n\nfunction toUnitWithError(crs) {\n var u = toUnit(crs);\n\n if (crs === undefined || u === undefined) {\n throw new Error(\"Invalid crs parameter value '\".concat(crs, \"'\"));\n }\n\n return u;\n}\n/**\n * This module provides basic methods to manipulate a CRS (as a string).\n *\n * @module CRS\n */\n\n\nexport default {\n /**\n * Units that can be used for a CRS.\n *\n * @enum {number}\n */\n UNIT: UNIT,\n\n /**\n * Assert that the CRS is valid one.\n *\n * @param {string} crs - The CRS to validate.\n *\n * @throws {Error} if the CRS is not valid.\n */\n isValid: function isValid(crs) {\n toUnitWithError(crs);\n },\n\n /**\n * Assert that the CRS is geographic.\n *\n * @param {string} crs - The CRS to validate.\n * @return {boolean}\n * @throws {Error} if the CRS is not valid.\n */\n isGeographic: function isGeographic(crs) {\n return toUnitWithError(crs) == UNIT.DEGREE;\n },\n\n /**\n * Assert that the CRS is using metric units.\n *\n * @param {string} crs - The CRS to validate.\n * @return {boolean}\n * @throws {Error} if the CRS is not valid.\n */\n isMetricUnit: function isMetricUnit(crs) {\n return toUnit(crs) == UNIT.METER;\n },\n\n /**\n * Get the unit to use with the CRS.\n *\n * @param {string} crs - The CRS to get the unit from.\n * @return {number} Either `UNIT.METER`, `UNIT.DEGREE` or `undefined`.\n */\n toUnit: toUnit,\n\n /**\n * Is the CRS EPSG:4326 ?\n *\n * @param {string} crs - The CRS to test.\n * @return {boolean}\n */\n is4326: is4326,\n\n /**\n * Give a reasonnable epsilon to use with this CRS.\n *\n * @param {string} crs - The CRS to use.\n * @return {number} 0.01 if the CRS is EPSG:4326, 0.001 otherwise.\n */\n reasonnableEpsilon: function reasonnableEpsilon(crs) {\n if (is4326(crs)) {\n return 0.01;\n } else {\n return 0.001;\n }\n }\n};","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport * as THREE from 'three';\n\n/* babel-plugin-inline-import './Shader/TileVS.glsl' */\nvar TileVS = \"#include \\n#include \\n#include \\n#include \\nattribute float uv_pm;\\nattribute vec2 uv_wgs84;\\nattribute vec3 normal;\\n\\nuniform mat4 modelMatrix;\\nuniform bool lightingEnabled;\\n\\n#if MODE == MODE_FINAL\\n#include \\nvarying vec3 vUv;\\nvarying vec3 vNormal;\\n#endif\\nvoid main() {\\n vec2 uv = vec2(uv_wgs84.x, 1.0 - uv_wgs84.y);\\n\\n #include \\n #include \\n #include \\n #include \\n#if MODE == MODE_FINAL\\n #include \\n vUv = vec3(uv_wgs84, (uv_pm > 0.) ? uv_pm : uv_wgs84.y); // set pm=wgs84 if pm=0 (not computed)\\n vNormal = normalize ( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * normal );\\n#endif\\n}\\n\";\n\n/* babel-plugin-inline-import './Shader/TileFS.glsl' */\nvar TileFS = \"#include \\n#include \\n#include \\n#include \\n#if MODE == MODE_FINAL\\n#include \\n#include \\n#include \\n#endif\\n#include \\n\\nuniform vec3 diffuse;\\nuniform float opacity;\\nvarying vec3 vUv; // WGS84.x/PM.x, WGS84.y, PM.y\\n\\nvoid main() {\\n #include \\n\\n#if MODE == MODE_ID\\n\\n #include \\n\\n#elif MODE == MODE_DEPTH\\n\\n #include \\n\\n#else\\n\\n gl_FragColor = vec4(diffuse, opacity);\\n\\n uvs[CRS_WGS84] = vec3(vUv.xy, 0.);\\n uvs[CRS_PM] = vec3(vUv.x, fract(vUv.z), floor(vUv.z));\\n\\n vec4 color;\\n #pragma unroll_loop\\n for ( int i = 0; i < NUM_FS_TEXTURES; i ++ ) {\\n color = getLayerColor( i , colorTextures[ i ], colorOffsetScales[ i ], colorLayers[ i ]);\\n gl_FragColor.rgb = mix(gl_FragColor.rgb, color.rgb, color.a);\\n }\\n\\n #if defined(DEBUG)\\n if (showOutline) {\\n #pragma unroll_loop\\n for ( int i = 0; i < NUM_CRS; i ++) {\\n color = getOutlineColor( outlineColors[ i ], uvs[ i ].xy);\\n gl_FragColor.rgb = mix(gl_FragColor.rgb, color.rgb, color.a);\\n }\\n }\\n #endif\\n\\n #include \\n #include \\n #include \\n\\n#endif\\n}\\n\";\nimport ShaderUtils from \"./Shader/ShaderUtils\";\nimport Capabilities from \"../Core/System/Capabilities\";\nimport RenderMode from \"./RenderMode\";\nimport MaterialLayer from \"./MaterialLayer\";\nvar identityOffsetScale = new THREE.Vector4(0.0, 0.0, 1.0, 1.0); // from three.js packDepthToRGBA\n\nvar UnpackDownscale = 255 / 256; // 0..1 -> fraction (excluding 1)\n\nvar bitSh = new THREE.Vector4(UnpackDownscale / (256.0 * 256.0 * 256.0), UnpackDownscale / (256.0 * 256.0), UnpackDownscale / 256.0, UnpackDownscale);\nexport function unpack1K(color, factor) {\n return factor ? bitSh.dot(color) * factor : bitSh.dot(color);\n}\nexport var CRS_DEFINES = [['WGS84', 'WGS84G', 'TMS', 'EPSG:3946', 'EPSG:4326', 'WMTS:WGS84G'], ['PM', 'WMTS:PM', 'EPSG:3857']]; // Max sampler color count to LayeredMaterial\n// Because there's a statement limitation to unroll, in getColorAtIdUv method\n\nvar maxSamplersColorCount = 15;\nvar samplersElevationCount = 1;\nexport function getMaxColorSamplerUnitsCount() {\n var maxSamplerUnitsCount = Capabilities.getMaxTextureUnitsCount();\n return Math.min(maxSamplerUnitsCount - samplersElevationCount, maxSamplersColorCount);\n}\n\nfunction _updateLayersUniforms(uniforms, olayers, max) {\n // prepare convenient access to elevation or color uniforms\n var layers = uniforms.layers.value;\n var textures = uniforms.textures.value;\n var offsetScales = uniforms.offsetScales.value;\n var textureCount = uniforms.textureCount; // flatten the 2d array [i,j] -> layers[_layerIds[i]].textures[j]\n\n var count = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = olayers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var layer = _step.value;\n layer.textureOffset = count;\n\n for (var i = 0, il = layer.textures.length; i < il; ++i, ++count) {\n if (count < max) {\n offsetScales[count] = layer.offsetScales[i];\n textures[count] = layer.textures[i];\n layers[count] = layer;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (count > max) {\n console.warn(\"LayeredMaterial: Not enough texture units (\".concat(max, \" < \").concat(count, \"), excess textures have been discarded.\"));\n }\n\n textureCount.value = count;\n}\n\nfunction setDefineMapping(object, PROPERTY, mapping) {\n Object.keys(mapping).forEach(function (key) {\n object.defines[\"\".concat(PROPERTY, \"_\").concat(key)] = mapping[key];\n });\n}\n\nfunction setDefineProperty(object, property, PROPERTY, initValue) {\n object.defines[PROPERTY] = initValue;\n Object.defineProperty(object, property, {\n get: function get() {\n return object.defines[PROPERTY];\n },\n set: function set(value) {\n if (object.defines[PROPERTY] != value) {\n object.defines[PROPERTY] = value;\n object.needsUpdate = true;\n }\n }\n });\n}\n\nfunction setUniformProperty(object, property, initValue) {\n object.uniforms[property] = new THREE.Uniform(initValue);\n Object.defineProperty(object, property, {\n get: function get() {\n return object.uniforms[property].value;\n },\n set: function set(value) {\n if (object.uniforms[property].value != value) {\n object.uniforms[property].value = value;\n }\n }\n });\n}\n\nexport var ELEVATION_MODES = {\n RGBA: 0,\n COLOR: 1,\n DATA: 2\n};\nvar nbSamplers;\nvar fragmentShader;\n\nvar LayeredMaterial =\n/*#__PURE__*/\nfunction (_THREE$RawShaderMater) {\n _inherits(LayeredMaterial, _THREE$RawShaderMater);\n\n function LayeredMaterial() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, LayeredMaterial);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(LayeredMaterial).call(this, options));\n nbSamplers = nbSamplers || [samplersElevationCount, getMaxColorSamplerUnitsCount()];\n _this.defines.NUM_VS_TEXTURES = nbSamplers[0];\n _this.defines.NUM_FS_TEXTURES = nbSamplers[1];\n _this.defines.USE_FOG = 1;\n _this.defines.EPSILON = 1e-6;\n\n for (var i = 0, il = CRS_DEFINES.length; i < il; ++i) {\n _this.defines[\"CRS_\".concat(CRS_DEFINES[i][0])] = i;\n }\n\n _this.defines.NUM_CRS = CRS_DEFINES.length;\n setDefineMapping(_assertThisInitialized(_this), 'ELEVATION', ELEVATION_MODES);\n setDefineMapping(_assertThisInitialized(_this), 'MODE', RenderMode.MODES);\n setDefineProperty(_assertThisInitialized(_this), 'mode', 'MODE', RenderMode.MODES.FINAL);\n\n if (Capabilities.isLogDepthBufferSupported()) {\n _this.defines.USE_LOGDEPTHBUF = 1;\n _this.defines.USE_LOGDEPTHBUF_EXT = 1;\n }\n\n _this.vertexShader = TileVS;\n fragmentShader = fragmentShader || ShaderUtils.unrollLoops(TileFS, _this.defines);\n _this.fragmentShader = fragmentShader; // Color uniforms\n\n setUniformProperty(_assertThisInitialized(_this), 'diffuse', new THREE.Color(0.04, 0.23, 0.35));\n setUniformProperty(_assertThisInitialized(_this), 'opacity', _this.opacity); // Lighting uniforms\n\n setUniformProperty(_assertThisInitialized(_this), 'lightingEnabled', false);\n setUniformProperty(_assertThisInitialized(_this), 'lightPosition', new THREE.Vector3(-0.5, 0.0, 1.0)); // Misc properties\n\n setUniformProperty(_assertThisInitialized(_this), 'fogDistance', 1000000000.0);\n setUniformProperty(_assertThisInitialized(_this), 'fogColor', new THREE.Color(0.76, 0.85, 1.0));\n setUniformProperty(_assertThisInitialized(_this), 'overlayAlpha', 0);\n setUniformProperty(_assertThisInitialized(_this), 'overlayColor', new THREE.Color(1.0, 0.3, 0.0));\n setUniformProperty(_assertThisInitialized(_this), 'objectId', 0); // > 0 produces gaps,\n // < 0 causes oversampling of textures\n // = 0 causes sampling artefacts due to bad estimation of texture-uv gradients\n // best is a small negative number\n\n setUniformProperty(_assertThisInitialized(_this), 'minBorderDistance', -0.01); // LayeredMaterialLayers\n\n _this.layers = [];\n _this.elevationLayerIds = [];\n _this.colorLayerIds = []; // elevation layer uniforms, to be updated using updateUniforms()\n\n _this.uniforms.elevationLayers = new THREE.Uniform(new Array(nbSamplers[0]).fill({}));\n _this.uniforms.elevationTextures = new THREE.Uniform(new Array(nbSamplers[0]).fill(null));\n _this.uniforms.elevationOffsetScales = new THREE.Uniform(new Array(nbSamplers[0]).fill(identityOffsetScale));\n _this.uniforms.elevationTextureCount = new THREE.Uniform(0); // color layer uniforms, to be updated using updateUniforms()\n\n _this.uniforms.colorLayers = new THREE.Uniform(new Array(nbSamplers[1]).fill({}));\n _this.uniforms.colorTextures = new THREE.Uniform(new Array(nbSamplers[1]).fill(null));\n _this.uniforms.colorOffsetScales = new THREE.Uniform(new Array(nbSamplers[1]).fill(identityOffsetScale));\n _this.uniforms.colorTextureCount = new THREE.Uniform(0);\n return _this;\n }\n\n _createClass(LayeredMaterial, [{\n key: \"getUniformByType\",\n value: function getUniformByType(type) {\n return {\n layers: this.uniforms[\"\".concat(type, \"Layers\")],\n textures: this.uniforms[\"\".concat(type, \"Textures\")],\n offsetScales: this.uniforms[\"\".concat(type, \"OffsetScales\")],\n textureCount: this.uniforms[\"\".concat(type, \"TextureCount\")]\n };\n }\n }, {\n key: \"updateLayersUniforms\",\n value: function updateLayersUniforms() {\n var _this2 = this;\n\n var colorlayers = this.layers.filter(function (l) {\n return _this2.colorLayerIds.includes(l.id) && l.visible && l.opacity > 0;\n });\n colorlayers.sort(function (a, b) {\n return _this2.colorLayerIds.indexOf(a.id) - _this2.colorLayerIds.indexOf(b.id);\n });\n\n _updateLayersUniforms(this.getUniformByType('color'), colorlayers, this.defines.NUM_FS_TEXTURES);\n\n if (this.elevationLayerIds.some(function (id) {\n return _this2.getLayer(id);\n }) || this.uniforms.elevationTextureCount.value && !this.elevationLayerIds.length) {\n var elevationLayer = this.getElevationLayer() ? [this.getElevationLayer()] : [];\n\n _updateLayersUniforms(this.getUniformByType('elevation'), elevationLayer, this.defines.NUM_VS_TEXTURES);\n }\n\n this.layersNeedUpdate = false;\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.dispatchEvent({\n type: 'dispose'\n });\n this.layers.forEach(function (l) {\n return l.dispose(false);\n });\n this.layers.length = 0;\n this.layersNeedUpdate = true;\n } // TODO: rename to setColorLayerIds and add setElevationLayerIds ?\n\n }, {\n key: \"setSequence\",\n value: function setSequence(sequenceLayer) {\n this.colorLayerIds = sequenceLayer;\n this.layersNeedUpdate = true;\n }\n }, {\n key: \"setSequenceElevation\",\n value: function setSequenceElevation(layerId) {\n this.elevationLayerIds[0] = layerId;\n this.layersNeedUpdate = true;\n }\n }, {\n key: \"removeLayer\",\n value: function removeLayer(layerId) {\n var index = this.layers.findIndex(function (l) {\n return l.id === layerId;\n });\n\n if (index > -1) {\n this.layers[index].dispose();\n this.layers.splice(index, 1);\n var idSeq = this.colorLayerIds.indexOf(layerId);\n\n if (idSeq > -1) {\n this.colorLayerIds.splice(idSeq, 1);\n } else {\n this.elevationLayerIds = [];\n }\n }\n }\n }, {\n key: \"addLayer\",\n value: function addLayer(layer) {\n if (layer.id in this.layers) {\n console.warn('The \"{layer.id}\" layer was already present in the material, overwritting.');\n }\n\n var lml = new MaterialLayer(this, layer);\n this.layers.push(lml);\n\n if (layer.isColorLayer) {\n this.setSequence(layer.parent.colorLayersOrder);\n } else {\n this.setSequenceElevation(layer.id);\n }\n\n return lml;\n }\n }, {\n key: \"getLayer\",\n value: function getLayer(id) {\n return this.layers.find(function (l) {\n return l.id === id;\n });\n }\n }, {\n key: \"getElevationLayer\",\n value: function getElevationLayer() {\n var _this3 = this;\n\n return this.layers.find(function (l) {\n return l.id === _this3.elevationLayerIds[0];\n });\n }\n }]);\n\n return LayeredMaterial;\n}(THREE.RawShaderMaterial);\n\nexport default LayeredMaterial;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport proj4 from 'proj4';\nimport Coordinates from \"../Geographic/Coordinates\";\nexport var ellipsoidSizes = new THREE.Vector3(proj4.WGS84.a, proj4.WGS84.a, proj4.WGS84.b);\nvar normal = new THREE.Vector3();\n\nvar Ellipsoid =\n/*#__PURE__*/\nfunction () {\n function Ellipsoid() {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ellipsoidSizes;\n\n _classCallCheck(this, Ellipsoid);\n\n this.size = new THREE.Vector3();\n this._radiiSquared = new THREE.Vector3();\n this._invRadiiSquared = new THREE.Vector3();\n this.setSize(size);\n }\n\n _createClass(Ellipsoid, [{\n key: \"geodeticSurfaceNormal\",\n value: function geodeticSurfaceNormal(cartesian) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE.Vector3();\n return cartesian.toVector3(target).multiply(this._invRadiiSquared).normalize();\n }\n }, {\n key: \"geodeticSurfaceNormalCartographic\",\n value: function geodeticSurfaceNormalCartographic(coordCarto) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE.Vector3();\n var longitude = THREE.Math.degToRad(coordCarto.longitude);\n var latitude = THREE.Math.degToRad(coordCarto.latitude);\n var cosLatitude = Math.cos(latitude);\n return target.set(cosLatitude * Math.cos(longitude), cosLatitude * Math.sin(longitude), Math.sin(latitude));\n }\n }, {\n key: \"setSize\",\n value: function setSize(size) {\n this.size.set(size.x, size.y, size.z);\n\n this._radiiSquared.multiplyVectors(size, size);\n\n this._invRadiiSquared.x = size.x == 0 ? 0 : 1 / this._radiiSquared.x;\n this._invRadiiSquared.y = size.y == 0 ? 0 : 1 / this._radiiSquared.y;\n this._invRadiiSquared.z = size.z == 0 ? 0 : 1 / this._radiiSquared.z;\n }\n }, {\n key: \"cartographicToCartesian\",\n value: function cartographicToCartesian(coordCarto) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE.Vector3();\n normal.copy(coordCarto.geodesicNormal);\n target.multiplyVectors(this._radiiSquared, normal);\n var gamma = Math.sqrt(normal.dot(target));\n target.divideScalar(gamma);\n normal.multiplyScalar(coordCarto.altitude);\n return target.add(normal);\n }\n /**\n * Convert cartesian coordinates to geographic according to the current ellipsoid of revolution.\n * @param {Object} position - The coordinate to convert\n * @param {number} position.x\n * @param {number} position.y\n * @param {number} position.z\n * @param {Coordinate} [target] coordinate to copy result\n * @returns {Coordinate} an object describing the coordinates on the reference ellipsoid, angles are in degree\n */\n\n }, {\n key: \"cartesianToCartographic\",\n value: function cartesianToCartographic(position) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Coordinates('EPSG:4326', 0, 0, 0);\n // for details, see for example http://www.linz.govt.nz/data/geodetic-system/coordinate-conversion/geodetic-datum-conversions/equations-used-datum\n // TODO the following is only valable for oblate ellipsoid of revolution. do we want to support triaxial ellipsoid?\n var R = Math.sqrt(position.x * position.x + position.y * position.y + position.z * position.z);\n var a = this.size.x; // x\n\n var b = this.size.z; // z\n\n var e = Math.abs((a * a - b * b) / (a * a));\n var f = 1 - Math.sqrt(1 - e);\n var rsqXY = Math.sqrt(position.x * position.x + position.y * position.y);\n var theta = Math.atan2(position.y, position.x);\n var nu = Math.atan(position.z / rsqXY * (1 - f + e * a / R));\n var sinu = Math.sin(nu);\n var cosu = Math.cos(nu);\n var phi = Math.atan((position.z * (1 - f) + e * a * sinu * sinu * sinu) / ((1 - f) * (rsqXY - e * a * cosu * cosu * cosu)));\n var h = rsqXY * Math.cos(phi) + position.z * Math.sin(phi) - a * Math.sqrt(1 - e * Math.sin(phi) * Math.sin(phi));\n return target.setFromValues(THREE.Math.radToDeg(theta), THREE.Math.radToDeg(phi), h);\n }\n }, {\n key: \"cartographicToCartesianArray\",\n value: function cartographicToCartesianArray(coordCartoArray) {\n var cartesianArray = [];\n\n for (var i = 0; i < coordCartoArray.length; i++) {\n cartesianArray.push(this.cartographicToCartesian(coordCartoArray[i]));\n }\n\n return cartesianArray;\n }\n }, {\n key: \"intersection\",\n value: function intersection(ray) {\n var EPSILON = 0.0001;\n var O_C = ray.origin;\n var dir = ray.direction; // normalizeVector( dir );\n\n var a = dir.x * dir.x * this._invRadiiSquared.x + dir.y * dir.y * this._invRadiiSquared.y + dir.z * dir.z * this._invRadiiSquared.z;\n var b = 2 * O_C.x * dir.x * this._invRadiiSquared.x + 2 * O_C.y * dir.y * this._invRadiiSquared.y + 2 * O_C.z * dir.z * this._invRadiiSquared.z;\n var c = O_C.x * O_C.x * this._invRadiiSquared.x + O_C.y * O_C.y * this._invRadiiSquared.y + O_C.z * O_C.z * this._invRadiiSquared.z - 1;\n var d = b * b - 4 * a * c;\n\n if (d < 0 || a === 0 || b === 0 || c === 0) {\n return false;\n }\n\n d = Math.sqrt(d);\n var t1 = (-b + d) / (2 * a);\n var t2 = (-b - d) / (2 * a);\n\n if (t1 <= EPSILON && t2 <= EPSILON) {\n return false;\n } // both intersections are behind the ray origin\n // var back = (t1 <= EPSILON || t2 <= EPSILON); // If only one intersection (t>0) then we are inside the ellipsoid and the intersection is at the back of the ellipsoid\n\n\n var t = 0;\n\n if (t1 <= EPSILON) {\n t = t2;\n } else if (t2 <= EPSILON) {\n t = t1;\n } else {\n t = t1 < t2 ? t1 : t2;\n }\n\n if (t < EPSILON) {\n return false;\n } // Too close to intersection\n\n\n var inter = new THREE.Vector3();\n inter.addVectors(ray.origin, dir.clone().setLength(t));\n return inter;\n }\n }, {\n key: \"computeDistance\",\n value: function computeDistance(coordCarto1, coordCarto2) {\n var longitude1 = THREE.Math.degToRad(coordCarto1.longitude);\n var latitude1 = THREE.Math.degToRad(coordCarto1.latitude);\n var longitude2 = THREE.Math.degToRad(coordCarto2.longitude);\n var latitude2 = THREE.Math.degToRad(coordCarto2.latitude);\n var distRad = Math.acos(Math.sin(latitude1) * Math.sin(latitude2) + Math.cos(latitude1) * Math.cos(latitude2) * Math.cos(longitude2 - longitude1));\n var a = this.size.x;\n var b = this.size.z;\n var e = Math.sqrt((a * a - b * b) / (a * a));\n var latMoy = (latitude1 + latitude2) / 2;\n var rho = a * (1 - e * e) / Math.sqrt(1 - e * e * Math.sin(latMoy) * Math.sin(latMoy));\n var N = a / Math.sqrt(1 - e * e * Math.sin(latMoy) * Math.sin(latMoy));\n var distMeter = distRad * Math.sqrt(rho * N);\n return distMeter;\n }\n }]);\n\n return Ellipsoid;\n}();\n\nexport default Ellipsoid;","import { TextureLoader, DataTexture, AlphaFormat, FloatType } from 'three';\nvar textureLoader = new TextureLoader();\nvar SIZE_TEXTURE_TILE = 256;\n\nfunction checkResponse(response) {\n if (!response.ok) {\n var error = new Error(\"Error loading \".concat(response.url, \": status \").concat(response.status));\n error.response = response;\n throw error;\n }\n}\n\nvar arrayBuffer = function (url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return fetch(url, options).then(function (response) {\n checkResponse(response);\n return response.arrayBuffer();\n });\n};\n\nvar getTextureFloat = function (buffer) {\n var texture = new DataTexture(buffer, SIZE_TEXTURE_TILE, SIZE_TEXTURE_TILE, AlphaFormat, FloatType);\n texture.needsUpdate = true;\n return texture;\n};\n/**\n * Utilitary to fetch resources from a server using the [fetch API]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch}.\n *\n * @module Fetcher\n */\n\n\nexport default {\n /**\n * Wrapper over fetch to get some text.\n *\n * @param {string} url - The URL of the resources to fetch.\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n *\n * @return {Promise} Promise containing the text.\n */\n text: function text(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return fetch(url, options).then(function (response) {\n checkResponse(response);\n return response.text();\n });\n },\n\n /**\n * Little wrapper over fetch to get some JSON.\n *\n * @param {string} url - The URL of the resources to fetch.\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n *\n * @return {Promise} Promise containing the JSON object.\n */\n json: function json(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return fetch(url, options).then(function (response) {\n checkResponse(response);\n return response.json();\n });\n },\n\n /**\n * Wrapper over fetch to get some XML.\n *\n * @param {string} url - The URL of the resources to fetch.\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n *\n * @return {Promise} Promise containing the XML Document.\n */\n xml: function xml(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return fetch(url, options).then(function (response) {\n checkResponse(response);\n return response.text();\n }).then(function (text) {\n return new window.DOMParser().parseFromString(text, 'text/xml');\n });\n },\n\n /**\n * Wrapper around {@link THREE.TextureLoader}.\n *\n * @param {string} url - The URL of the resources to fetch.\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n * Note that THREE.js docs mentions `withCredentials`, but it is not\n * actually used in {@link THREE.TextureLoader}.\n *\n * @return {Promise} Promise containing the {@link\n * THREE.Texture}.\n */\n texture: function texture(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var res;\n var rej;\n textureLoader.crossOrigin = options.crossOrigin;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n textureLoader.load(url, res, function () {}, rej);\n return promise;\n },\n\n /**\n * Wrapper over fetch to get some ArrayBuffer.\n *\n * @param {string} url - The URL of the resources to fetch.\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n *\n * @return {Promise} Promise containing the ArrayBuffer.\n */\n arrayBuffer: arrayBuffer,\n\n /**\n * Wrapper over fetch to get some {@link THREE.DataTexture}.\n *\n * @param {string} url - The URL of the resources to fetch.\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n *\n * @return {Promise} Promise containing the DataTexture.\n */\n textureFloat: function textureFloat(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return arrayBuffer(url, options).then(function (buffer) {\n var floatArray = new Float32Array(buffer);\n var texture = getTextureFloat(floatArray);\n return texture;\n });\n },\n\n /**\n * Wrapper over fetch to get a bunch of files sharing the same name, but\n * different extensions.\n *\n * @param {string} baseUrl - The shared URL of the resources to fetch.\n * @param {Object} extensions - An object containing arrays. The keys of\n * each of this array are available fetch type, such as `text`, `json` or\n * even `arrayBuffer`. The arrays contains the extensions to append after\n * the `baseUrl` (see example below).\n * @param {Object} options - Fetch options (passed directly to `fetch()`),\n * see [the syntax for more information]{@link\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Syntax}.\n *\n * @return {Promise[]} An array of promises, containing all the files,\n * organized by their extensions (see the example below).\n *\n * @example\n * itowns.Fetcher.multiple('http://geo.server/shapefile', {\n * // will fetch:\n * // - http://geo.server/shapefile.shp\n * // - http://geo.server/shapefile.dbf\n * // - http://geo.server/shapefile.shx\n * // - http://geo.server/shapefile.prj\n * arrayBuffer: ['shp', 'dbf', 'shx'],\n * text: ['prj'],\n * }).then(function _(result) {\n * // result looks like:\n * result = {\n * shp: ArrayBuffer\n * dbf: ArrayBuffer\n * shx: ArrayBuffer\n * prj: string\n * };\n * });\n */\n multiple: function multiple(baseUrl, extensions) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var promises = [];\n var url;\n\n for (var fetchType in extensions) {\n if (!this[fetchType]) {\n throw new Error(\"\".concat(fetchType, \" is not a valid Fetcher method.\"));\n } else {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function () {\n var extension = _step.value;\n url = \"\".concat(baseUrl, \".\").concat(extension);\n promises.push(_this[fetchType](url, options).then(function (result) {\n return {\n type: extension,\n result: result\n };\n }));\n };\n\n for (var _iterator = extensions[fetchType][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n\n return Promise.all(promises).then(function (result) {\n var all = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = result[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var res = _step2.value;\n all[res.type] = res.result;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return Promise.resolve(all);\n });\n }\n};","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['false_easting', 'False_Easting'],\n ['false_northing', 'False_Northing'],\n ['central_meridian', 'Central_Meridian'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\n var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"606.0,23.0,413.0\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"653.0,-212.0,449.0\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import {PJD_3PARAM, PJD_7PARAM, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calulated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_NODATUM} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n\n // Do we need to go through geocentric coordinates?\n if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source.es, source.a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n return geocentricToGeodetic(point, dest.es, dest.a, dest.b);\n\n}\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n t = 'x';\n }\n else if (i === 1) {\n v = yin;\n t = 'y';\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n out[t] = v;\n break;\n case 'w':\n out[t] = -v;\n break;\n case 'n':\n out[t] = v;\n break;\n case 's':\n out[t] = -v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R\n };\n }\n else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter\n };\n }\n }\n\n // DGR, 2010/11/12\n if (dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords);\n if (coords.length === 3) {\n return [transformedArray.x, transformedArray.y, transformedArray.z];\n }\n else {\n return [transformedArray.x, transformedArray.y];\n }\n }\n else {\n out = transform(from, to, coords);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if (key === 'x' || key === 'y') {\n return;\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n }\n else {\n obj = {\n forward: function(coords) {\n return transformer(fromProj, toProj, coords);\n },\n inverse: function(coords) {\n return transformer(toProj, fromProj, coords);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;\n","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (this.es === undefined || this.es <= 0) {\n throw new Error('incorrect elliptical usage');\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {EPSLN, HALF_PI, FORTPI} from '../constants/values';\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() {\n this.no_off = this.no_off || false;\n this.no_rot = this.no_rot || false;\n\n if (isNaN(this.k0)) {\n this.k0 = 1;\n }\n var sinlat = Math.sin(this.lat0);\n var coslat = Math.cos(this.lat0);\n var con = this.e * sinlat;\n\n this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));\n this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);\n var t0 = tsfnz(this.e, this.lat0, sinlat);\n var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));\n if (dl * dl < 1) {\n dl = 1;\n }\n var fl;\n var gl;\n if (!isNaN(this.longc)) {\n //Central point and azimuth method\n\n if (this.lat0 >= 0) {\n fl = dl + Math.sqrt(dl * dl - 1);\n }\n else {\n fl = dl - Math.sqrt(dl * dl - 1);\n }\n this.el = fl * Math.pow(t0, this.bl);\n gl = 0.5 * (fl - 1 / fl);\n this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);\n this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;\n\n }\n else {\n //2 points method\n var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));\n var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));\n if (this.lat0 >= 0) {\n this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n else {\n this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n var hl = Math.pow(t1, this.bl);\n var ll = Math.pow(t2, this.bl);\n fl = this.el / hl;\n gl = 0.5 * (fl - 1 / fl);\n var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);\n var pl = (ll - hl) / (ll + hl);\n var dlon12 = adjust_lon(this.long1 - this.long2);\n this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;\n this.long0 = adjust_lon(this.long0);\n var dlon10 = adjust_lon(this.long1 - this.long0);\n this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);\n this.alpha = Math.asin(dl * Math.sin(this.gamma0));\n }\n\n if (this.no_off) {\n this.uc = 0;\n }\n else {\n if (this.lat0 >= 0) {\n this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n else {\n this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n }\n\n}\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var dlon = adjust_lon(lon - this.long0);\n var us, vs;\n var con;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n if (lat > 0) {\n con = -1;\n }\n else {\n con = 1;\n }\n vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));\n us = -1 * con * HALF_PI * this.al / this.bl;\n }\n else {\n var t = tsfnz(this.e, lat, Math.sin(lat));\n var ql = this.el / Math.pow(t, this.bl);\n var sl = 0.5 * (ql - 1 / ql);\n var tl = 0.5 * (ql + 1 / ql);\n var vl = Math.sin(this.bl * (dlon));\n var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;\n if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {\n vs = Number.POSITIVE_INFINITY;\n }\n else {\n vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;\n }\n if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {\n us = this.al * this.bl * (dlon);\n }\n else {\n us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;\n }\n }\n\n if (this.no_rot) {\n p.x = this.x0 + us;\n p.y = this.y0 + vs;\n }\n else {\n\n us -= this.uc;\n p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);\n p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);\n }\n return p;\n}\n\nexport function inverse(p) {\n var us, vs;\n if (this.no_rot) {\n vs = p.y - this.y0;\n us = p.x - this.x0;\n }\n else {\n vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);\n us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);\n us += this.uc;\n }\n var qp = Math.exp(-1 * this.bl * vs / this.al);\n var sp = 0.5 * (qp - 1 / qp);\n var tp = 0.5 * (qp + 1 / qp);\n var vp = Math.sin(this.bl * us / this.al);\n var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;\n var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);\n if (Math.abs(up - 1) < EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n }\n else if (Math.abs(up + 1) < EPSLN) {\n p.x = this.long0;\n p.y = -1 * HALF_PI;\n }\n else {\n p.y = phi2z(this.e, ts);\n p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);\n }\n return p;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n\n // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north\n //double c_lat; /* center latitude */\n //double c_lon; /* center longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Lambert Tangential Conformal Conic Projection\", \"Lambert_Conformal_Conic\", \"Lambert_Conformal_Conic_2SP\", \"lcc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.phi0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.phi0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = 0;\n p.y = this.phi0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = 0;\n p.y = this.phi0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c / Math.sin(c);\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n lat = Math.atan((1 - this.es * F * this.sin_p12 / Math.sin(psi)) * Math.tan(psi) / (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport version from \"./version\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = version;\nincludedProjections(proj4);\nexport default proj4;\n","/* babel-plugin-inline-import '../../Renderer/Shader/SampleTestFS.glsl' */\nvar SampleTestFS = \"uniform sampler2D uni[SAMPLE];\\nvoid main() {\\n gl_FragColor += texture2D(uni[SAMPLE-1], vec2(0));\\n}\";\n\n/* babel-plugin-inline-import '../../Renderer/Shader/SampleTestVS.glsl' */\nvar SampleTestVS = \"void main() {\\n gl_Position = vec4( 0.0, 0.0, 0.0, 1.0 );\\n}\"; // default values\n\nvar logDepthBufferSupported = false;\nvar maxTexturesUnits = 8;\n\nfunction _WebGLShader(renderer, type, string) {\n var gl = renderer.context;\n var shader = gl.createShader(type);\n gl.shaderSource(shader, string);\n gl.compileShader(shader);\n return shader;\n}\n\nfunction isFirefox() {\n return navigator && navigator.userAgent && navigator.userAgent.toLowerCase().includes('firefox');\n}\n\nexport default {\n isLogDepthBufferSupported: function isLogDepthBufferSupported() {\n return logDepthBufferSupported;\n },\n isFirefox: isFirefox,\n isInternetExplorer: function isInternetExplorer() {\n var internetExplorer = false || !!document.documentMode;\n return internetExplorer;\n },\n getMaxTextureUnitsCount: function getMaxTextureUnitsCount() {\n return maxTexturesUnits;\n },\n updateCapabilities: function updateCapabilities(renderer) {\n var gl = renderer.context;\n maxTexturesUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n var program = gl.createProgram();\n\n var glVertexShader = _WebGLShader(renderer, gl.VERTEX_SHADER, SampleTestVS);\n\n var fragmentShader = \"#define SAMPLE \".concat(maxTexturesUnits, \"\\n\");\n fragmentShader += SampleTestFS;\n\n var glFragmentShader = _WebGLShader(renderer, gl.FRAGMENT_SHADER, fragmentShader);\n\n gl.attachShader(program, glVertexShader);\n gl.attachShader(program, glFragmentShader);\n gl.linkProgram(program);\n\n if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) {\n if (maxTexturesUnits > 16) {\n var info = gl.getProgramInfoLog(program); // eslint-disable-next-line no-console\n\n console.warn(\"\".concat(info, \": using a maximum of 16 texture units instead of the reported value (\").concat(maxTexturesUnits, \")\"));\n\n if (isFirefox()) {\n // eslint-disable-next-line no-console\n console.warn(\"It can come from a Mesa/Firefox bug;\\n the shader compiles to an error when using more than 16 sampler uniforms,\\n see https://bugzilla.mozilla.org/show_bug.cgi?id=777028\");\n }\n\n maxTexturesUnits = 16;\n } else {\n throw new Error(\"The GPU capabilities could not be determined accurately.\\n Impossible to link a shader with the Maximum texture units \".concat(maxTexturesUnits));\n }\n }\n\n gl.deleteProgram(program);\n gl.deleteShader(glVertexShader);\n gl.deleteShader(glFragmentShader);\n logDepthBufferSupported = renderer.capabilities.logarithmicDepthBuffer;\n }\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport * as THREE from 'three';\nimport { STRATEGY_MIN_NETWORK_TRAFFIC } from \"./LayerUpdateStrategy\";\nimport InfoLayer from \"./InfoLayer\";\n/**\n * @property {boolean} isLayer - Used to checkout whether this layer is a Layer.\n * Default is true. You should not change this, as it is used internally for\n * optimisation.\n */\n\nvar Layer =\n/*#__PURE__*/\nfunction (_THREE$EventDispatche) {\n _inherits(Layer, _THREE$EventDispatche);\n\n /**\n * Don't use directly constructor to instance a new Layer. Instead, use\n * another available type of Layer, implement a new one inheriting from this\n * one or use {@link View#addLayer}.\n *\n * @constructor\n * @protected\n *\n * @param {string} id - The id of the layer, that should be unique. It is\n * not mandatory, but an error will be emitted if this layer is added a\n * {@link View} that already has a layer going by that id.\n * @param {Object} [config] - Optional configuration, all elements in it\n * will be merged as is in the layer. For example, if the configuration\n * contains three elements `name, protocol, extent`, these elements will be\n * available using `layer.name` or something else depending on the property\n * name.\n *\n * @example\n * // Add and create a new Layer\n * const newLayer = new Layer('id', options);\n * view.addLayer(newLayer);\n *\n * // Change layer's visibility\n * const layerToChange = view.getLayerById('idLayerToChange');\n * layerToChange.visible = false;\n * view.notifyChange(); // update viewer\n *\n * // Change layer's opacity\n * const layerToChange = view.getLayerById('idLayerToChange');\n * layerToChange.opacity = 0.5;\n * view.notifyChange(); // update viewer\n *\n * // Listen properties\n * const layerToListen = view.getLayerById('idLayerToListen');\n * layerToListen.addEventListener('visible-property-changed', (event) => console.log(event));\n * layerToListen.addEventListener('opacity-property-changed', (event) => console.log(event));\n */\n function Layer(id) {\n var _this;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Layer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Layer).call(this));\n _this.isLayer = true;\n Object.assign(_assertThisInitialized(_this), config);\n Object.defineProperty(_assertThisInitialized(_this), 'id', {\n value: id,\n writable: false\n }); // Default properties\n\n _this.options = config.options || {};\n\n if (!_this.updateStrategy) {\n _this.updateStrategy = {\n type: STRATEGY_MIN_NETWORK_TRAFFIC,\n options: {}\n };\n }\n\n _this.defineLayerProperty('frozen', false);\n\n _this.info = new InfoLayer(_assertThisInitialized(_this));\n return _this;\n }\n /**\n * Defines a property for this layer, with a default value and a callback\n * executed when the property changes.\n *

\n * When changing the property, it also emits an event, named following this\n * convention: `${propertyName}-property-changed`, with `${propertyName}`\n * being replaced by the name of the property. For example, if the added\n * property name is `frozen`, it will emit a `frozen-property-changed`.\n *

\n * @example The emitted event has some properties assigned to it\n * event = {\n * new: {\n * ${propertyName}: * // the new value of the property\n * },\n * previous: {\n * ${propertyName}: * // the previous value of the property\n * },\n * target: Layer // the layer it has been dispatched from\n * type: string // the name of the emitted event\n * }\n *\n * @param {string} propertyName - The name of the property, also used in\n * the emitted event name.\n * @param {*} defaultValue - The default set value.\n * @param {function} [onChange] - The function executed when the property is\n * changed. Parameters are the layer the property is defined on, and the\n * name of the property.\n */\n\n\n _createClass(Layer, [{\n key: \"defineLayerProperty\",\n value: function defineLayerProperty(propertyName, defaultValue, onChange) {\n var _this2 = this;\n\n var existing = Object.getOwnPropertyDescriptor(this, propertyName);\n\n if (!existing || !existing.set) {\n var property = this[propertyName] == undefined ? defaultValue : this[propertyName];\n Object.defineProperty(this, propertyName, {\n get: function get() {\n return property;\n },\n set: function set(newValue) {\n if (property !== newValue) {\n var event = {\n type: \"\".concat(propertyName, \"-property-changed\"),\n previous: {},\n \"new\": {}\n };\n event.previous[propertyName] = property;\n event[\"new\"][propertyName] = newValue;\n property = newValue;\n\n if (onChange) {\n onChange(_this2, propertyName);\n }\n\n _this2.dispatchEvent(event);\n }\n }\n });\n }\n } // Placeholder\n // eslint-disable-next-line\n\n }, {\n key: \"convert\",\n value: function convert(data) {\n return data;\n }\n /**\n * Remove and dispose all objects from layer.\n */\n // eslint-disable-next-line\n\n }, {\n key: \"delete\",\n value: function _delete() {\n console.warn('Function delete doesn\\'t exist for this layer');\n }\n }]);\n\n return Layer;\n}(THREE.EventDispatcher);\n\nexport default Layer;\nexport var ImageryLayers = {\n // move this to new index\n // After the modification :\n // * the minimum sequence will always be 0\n // * the maximum sequence will always be layers.lenght - 1\n // the ordering of all layers (Except that specified) doesn't change\n moveLayerToIndex: function (layer, newIndex, imageryLayers) {\n newIndex = Math.min(newIndex, imageryLayers.length - 1);\n newIndex = Math.max(newIndex, 0);\n var oldIndex = layer.sequence;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = imageryLayers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var imagery = _step.value;\n\n if (imagery.id === layer.id) {\n // change index of specified layer\n imagery.sequence = newIndex;\n } else if (imagery.sequence > oldIndex && imagery.sequence <= newIndex) {\n // down all layers between the old index and new index (to compensate the deletion of the old index)\n imagery.sequence--;\n } else if (imagery.sequence >= newIndex && imagery.sequence < oldIndex) {\n // up all layers between the new index and old index (to compensate the insertion of the new index)\n imagery.sequence++;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n },\n moveLayerDown: function (layer, imageryLayers) {\n if (layer.sequence > 0) {\n this.moveLayerToIndex(layer, layer.sequence - 1, imageryLayers);\n }\n },\n moveLayerUp: function (layer, imageryLayers) {\n var m = imageryLayers.length - 1;\n\n if (layer.sequence < m) {\n this.moveLayerToIndex(layer, layer.sequence + 1, imageryLayers);\n }\n },\n getColorLayersIdOrderedBySequence: function (imageryLayers) {\n var copy = Array.from(imageryLayers);\n copy.sort(function (a, b) {\n return a.sequence - b.sequence;\n });\n return copy.map(function (l) {\n return l.id;\n });\n }\n};","import { TextDecoder as TextDecoderPolyfill } from 'text-encoding-utf-8';\nexport var TextDecoder = typeof global.TextDecoder === 'function' ? global.TextDecoder : TextDecoderPolyfill;\nexport default new TextDecoder('utf-8');","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n\n/**\n * Custom error thrown when cancelling commands. Allows the caller to act differently if needed.\n * @class\n * @param {Command} command\n */\nvar CancelledCommandException =\n/*#__PURE__*/\nfunction () {\n function CancelledCommandException(command) {\n _classCallCheck(this, CancelledCommandException);\n\n this.command = command;\n }\n\n _createClass(CancelledCommandException, [{\n key: \"toString\",\n value: function toString() {\n return \"Cancelled command \".concat(this.command.requester.id, \"/\").concat(this.command.layer.id);\n }\n }]);\n\n return CancelledCommandException;\n}();\n\nexport default CancelledCommandException;","/**\n * Wrapper around three.js camera to expose some geographic helpers.\n */\nimport * as THREE from 'three';\nimport Coordinates from \"../Core/Geographic/Coordinates\";\nimport DEMUtils from \"../Utils/DEMUtils\";\n\nfunction updatePreSse(camera, height, fov) {\n // sse = projected geometric error on screen plane from distance\n // We're using an approximation, assuming that the geometric error of all\n // objects is perpendicular to the camera view vector (= we always compute\n // for worst case).\n //\n // screen plane object\n // | __\n // | / \\\n // | geometric{|\n // < fov angle . } sse error {| |\n // | \\__/\n // |\n // |<--------------------->\n // | distance\n //\n // geometric_error * screen_width (resp. screen_height)\n // = ---------------------------------------\n // 2 * distance * tan (horizontal_fov / 2) (resp. vertical_fov)\n //\n //\n // We pre-compute the preSSE (= constant part of the screen space error formula) once here\n var verticalFOV = THREE.Math.degToRad(fov);\n var verticalPreSSE = height / (2.0 * Math.tan(verticalFOV * 0.5)); // Note: the preSSE for the horizontal FOV is the same value\n // focale = (this.height * 0.5) / Math.tan(verticalFOV * 0.5);\n // horizontalFOV = 2 * Math.atan(this.width * 0.5 / focale);\n // horizontalPreSSE = this.width / (2.0 * Math.tan(horizontalFOV * 0.5)); (1)\n // => replacing horizontalFOV in Math.tan(horizontalFOV * 0.5)\n // Math.tan(horizontalFOV * 0.5) = Math.tan(2 * Math.atan(this.width * 0.5 / focale) * 0.5)\n // = Math.tan(Math.atan(this.width * 0.5 / focale))\n // = this.width * 0.5 / focale\n // => now replacing focale\n // = this.width * 0.5 / (this.height * 0.5) / Math.tan(verticalFOV * 0.5)\n // = Math.tan(verticalFOV * 0.5) * this.width / this.height\n // => back to (1)\n // horizontalPreSSE = this.width / (2.0 * Math.tan(verticalFOV * 0.5) * this.width / this.height)\n // = this.height / 2.0 * Math.tan(verticalFOV * 0.5)\n // = verticalPreSSE\n\n camera._preSSE = verticalPreSSE;\n}\n\nfunction Camera(crs, width, height) {\n var _this = this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n Object.defineProperty(this, 'crs', {\n get: function get() {\n return crs;\n }\n });\n this.camera3D = options.camera ? options.camera : new THREE.PerspectiveCamera(30, width / height);\n this._viewMatrix = new THREE.Matrix4();\n this.width = width;\n this.height = height;\n this._viewMatrixNeedsUpdate = true;\n this.resize(width, height);\n this._preSSE = Infinity;\n\n if (this.camera3D.isPerspectiveCamera) {\n var fov = this.camera3D.fov;\n Object.defineProperty(this.camera3D, 'fov', {\n get: function get() {\n return fov;\n },\n set: function set(newFov) {\n fov = newFov;\n updatePreSse(_this, _this.height, fov);\n }\n });\n }\n}\n\nCamera.prototype.resize = function (width, height) {\n this.width = width;\n this.height = height;\n var ratio = width / height;\n updatePreSse(this, this.height, this.camera3D.fov);\n\n if (this.camera3D.aspect !== ratio) {\n this.camera3D.aspect = ratio;\n\n if (this.camera3D.isOrthographicCamera) {\n var halfH = (this.camera3D.right - this.camera3D.left) * 0.5 / ratio;\n var y = (this.camera3D.top + this.camera3D.bottom) * 0.5;\n this.camera3D.top = y + halfH;\n this.camera3D.bottom = y - halfH;\n }\n }\n\n if (this.camera3D.updateProjectionMatrix) {\n this.camera3D.updateProjectionMatrix();\n this._viewMatrixNeedsUpdate = true;\n }\n};\n\nCamera.prototype.update = function () {\n // update matrix\n this.camera3D.updateMatrixWorld();\n this._viewMatrixNeedsUpdate = true;\n};\n/**\n * Return the position in the requested CRS, or in camera's CRS if undefined.\n * @param {string} crs if defined (e.g 'EPSG:4236') the camera position will be returned in this CRS\n * @return {Coordinates} Coordinates object holding camera's position\n */\n\n\nCamera.prototype.position = function (crs) {\n return new Coordinates(this.crs, this.camera3D.position).as(crs || this.crs);\n};\n/**\n * Set the position of the camera using a Coordinates object.\n * If you want to modify the position directly using x,y,z value then use camera.camera3D.position.set(x, y, z)\n * @param {Coordinates} position the new position of the camera\n */\n\n\nCamera.prototype.setPosition = function (position) {\n this.camera3D.position.copy(position.as(this.crs));\n};\n\nvar tmp = {\n frustum: new THREE.Frustum(),\n matrix: new THREE.Matrix4(),\n box3: new THREE.Box3()\n};\nvar points = [new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3()];\n\nfunction projectBox3PointsInCameraSpace(camera, box3, matrixWorld) {\n // Projects points in camera space\n // We don't project directly on screen to avoid artifacts when projecting\n // points behind the near plane.\n var m = camera.camera3D.matrixWorldInverse;\n\n if (matrixWorld) {\n m = tmp.matrix.multiplyMatrices(camera.camera3D.matrixWorldInverse, matrixWorld);\n }\n\n points[0].set(box3.min.x, box3.min.y, box3.min.z).applyMatrix4(m);\n points[1].set(box3.min.x, box3.min.y, box3.max.z).applyMatrix4(m);\n points[2].set(box3.min.x, box3.max.y, box3.min.z).applyMatrix4(m);\n points[3].set(box3.min.x, box3.max.y, box3.max.z).applyMatrix4(m);\n points[4].set(box3.max.x, box3.min.y, box3.min.z).applyMatrix4(m);\n points[5].set(box3.max.x, box3.min.y, box3.max.z).applyMatrix4(m);\n points[6].set(box3.max.x, box3.max.y, box3.min.z).applyMatrix4(m);\n points[7].set(box3.max.x, box3.max.y, box3.max.z).applyMatrix4(m); // In camera space objects are along the -Z axis\n // So if min.z is > -near, the object is invisible\n\n var atLeastOneInFrontOfNearPlane = false;\n\n for (var i = 0; i < 8; i++) {\n if (points[i].z <= -camera.camera3D.near) {\n atLeastOneInFrontOfNearPlane = true;\n } else {\n // Clamp to near plane\n points[i].z = -camera.camera3D.near;\n }\n }\n\n return atLeastOneInFrontOfNearPlane ? points : undefined;\n}\n\nvar ndcBox3 = new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1));\n\nCamera.prototype.isBox3Visible = function (box3, matrixWorld) {\n return this.box3SizeOnScreen(box3, matrixWorld).intersectsBox(ndcBox3);\n};\n\nCamera.prototype.isSphereVisible = function (sphere, matrixWorld) {\n if (this._viewMatrixNeedsUpdate) {\n // update visibility testing matrix\n this._viewMatrix.multiplyMatrices(this.camera3D.projectionMatrix, this.camera3D.matrixWorldInverse);\n\n this._viewMatrixNeedsUpdate = false;\n }\n\n if (matrixWorld) {\n tmp.matrix.multiplyMatrices(this._viewMatrix, matrixWorld);\n tmp.frustum.setFromMatrix(tmp.matrix);\n } else {\n tmp.frustum.setFromMatrix(this._viewMatrix);\n }\n\n return tmp.frustum.intersectsSphere(sphere);\n};\n\nCamera.prototype.box3SizeOnScreen = function (box3, matrixWorld) {\n var pts = projectBox3PointsInCameraSpace(this, box3, matrixWorld); // All points are in front of the near plane -> box3 is invisible\n\n if (!pts) {\n return tmp.box3.makeEmpty();\n } // Project points on screen\n\n\n for (var i = 0; i < 8; i++) {\n pts[i].applyMatrix4(this.camera3D.projectionMatrix);\n }\n\n return tmp.box3.setFromPoints(pts);\n};\n/**\n * Test for collision between camera and a geometry layer (DTM/DSM) to adjust camera position\n * It could be modified later to handle an array of geometry layers\n * TODO Improve Coordinates class to handle altitude for any coordinate system (even projected one)\n * @param {view} view where we test the collision between geometry layers and the camera\n * @param {elevationLayer} elevationLayer (DTM/DSM) used to test the collision with the camera. Could be another geometry layer\n * @param {minDistanceCollision} minDistanceCollision the minimum distance allowed between the camera and the surface\n */\n\n\nCamera.prototype.adjustAltitudeToAvoidCollisionWithLayer = function (view, elevationLayer, minDistanceCollision) {\n // We put the camera location in geographic by default to easily handle altitude. (Should be improved in Coordinates class for all ref)\n var camLocation = view.camera.position().as('EPSG:4326');\n\n if (elevationLayer !== undefined) {\n var elevationUnderCamera = DEMUtils.getElevationValueAt(elevationLayer, camLocation);\n\n if (elevationUnderCamera != undefined) {\n var difElevation = camLocation.altitude - (elevationUnderCamera.z + minDistanceCollision); // We move the camera to avoid collisions if too close to terrain\n\n if (difElevation < 0) {\n camLocation.altitude = elevationUnderCamera.z + minDistanceCollision;\n view.camera.camera3D.position.copy(camLocation.as(view.referenceCrs));\n view.notifyChange(this.camera3D);\n }\n }\n }\n};\n\nexport default Camera;","/**\n * Generated On: 2015-10-5\n * Class: c3DEngine\n * Description: 3DEngine est l'interface avec le framework webGL.\n */\n\n/* global Uint8Array, document, window, Image */\nimport * as THREE from 'three';\nimport Capabilities from \"../Core/System/Capabilities\";\nimport { unpack1K } from \"./LayeredMaterial\";\n\nfunction c3DEngine(rendererOrDiv) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var NOIE = !Capabilities.isInternetExplorer(); // pick sensible default options\n\n if (options.antialias === undefined) {\n options.antialias = true;\n }\n\n if (options.alpha === undefined) {\n options.alpha = true;\n }\n\n if (options.logarithmicDepthBuffer === undefined) {\n options.logarithmicDepthBuffer = this.gLDebug || NOIE;\n }\n\n var renderer = rendererOrDiv.domElement ? rendererOrDiv : undefined;\n var viewerDiv = renderer ? undefined : rendererOrDiv;\n this.width = (renderer ? renderer.domElement : viewerDiv).clientWidth;\n this.height = (renderer ? renderer.domElement : viewerDiv).clientHeight;\n this.positionBuffer = null;\n this._nextThreejsLayer = 1;\n this.fullSizeRenderTarget = new THREE.WebGLRenderTarget(this.width, this.height);\n this.fullSizeRenderTarget.texture.minFilter = THREE.LinearFilter;\n this.fullSizeRenderTarget.texture.magFilter = THREE.NearestFilter;\n this.fullSizeRenderTarget.depthBuffer = true;\n this.fullSizeRenderTarget.depthTexture = new THREE.DepthTexture();\n this.fullSizeRenderTarget.depthTexture.type = THREE.UnsignedShortType;\n\n this.renderView = function (view) {\n this.renderer.clear();\n this.renderer.render(view.scene, view.camera.camera3D);\n }.bind(this);\n\n this.onWindowResize = function (w, h) {\n this.width = w;\n this.height = h;\n this.fullSizeRenderTarget.setSize(this.width, this.height);\n this.renderer.setSize(this.width, this.height);\n }.bind(this); // Create renderer\n\n\n try {\n this.renderer = renderer || new THREE.WebGLRenderer({\n canvas: document.createElement('canvas'),\n antialias: options.antialias,\n alpha: options.alpha,\n logarithmicDepthBuffer: options.logarithmicDepthBuffer\n });\n } catch (ex) {\n console.error('Failed to create WebGLRenderer', ex);\n this.renderer = null;\n }\n\n if (!this.renderer) {\n // from THREE/WebGL.js\n var element = document.createElement('div');\n element.id = 'webgl-error-message';\n element.style.fontFamily = 'monospace';\n element.style.fontSize = '13px';\n element.style.fontWeight = 'normal';\n element.style.textAlign = 'center';\n element.style.background = '#fff';\n element.style.color = '#000';\n element.style.padding = '1.5em';\n element.style.width = '400px';\n element.style.margin = '5em auto 0';\n element.innerHTML = window.WebGLRenderingContext ? ['Your graphics card does not seem to support WebGL.
', 'Find out how to get it here.
', 'See also graphics card blacklisting'].join('\\n') : ['Your browser does not seem to support WebGL.
', 'Find out how to get it here.
', 'You can also try another browser like Firefox or Chrome.'].join('\\n');\n viewerDiv.appendChild(element);\n throw new Error('WebGL unsupported');\n }\n\n if (!renderer && options.logarithmicDepthBuffer) {\n // We don't support logarithmicDepthBuffer when EXT_frag_depth is missing.\n // So recreated a renderer if needed.\n if (!this.renderer.extensions.get('EXT_frag_depth')) {\n var _canvas = this.renderer.domElement;\n this.renderer.dispose();\n this.renderer = new THREE.WebGLRenderer({\n canvas: _canvas,\n antialias: options.antialias,\n alpha: options.alpha,\n logarithmicDepthBuffer: false\n });\n }\n } // Let's allow our canvas to take focus\n // The condition below looks weird, but it's correct: querying tabIndex\n // returns -1 if not set, but we still need to explicitly set it to force\n // the tabindex focus flag to true (see\n // https://www.w3.org/TR/html5/editing.html#specially-focusable)\n\n\n if (this.renderer.domElement.tabIndex === -1) {\n this.renderer.domElement.tabIndex = -1;\n }\n\n Capabilities.updateCapabilities(this.renderer);\n this.renderer.setClearColor(0x030508);\n this.renderer.autoClear = false;\n this.renderer.sortObjects = true;\n this.renderer.debug.checkShaderErrors = false;\n\n if (!renderer) {\n this.renderer.setPixelRatio(viewerDiv.devicePixelRatio);\n this.renderer.setSize(viewerDiv.clientWidth, viewerDiv.clientHeight);\n viewerDiv.appendChild(this.renderer.domElement);\n }\n}\n/*\n * return\n */\n\n\nc3DEngine.prototype.getWindowSize = function () {\n return new THREE.Vector2(this.width, this.height);\n};\n/**\n * return renderer THREE.js\n * @returns {undefined|c3DEngine_L7.THREE.WebGLRenderer}\n */\n\n\nc3DEngine.prototype.getRenderer = function () {\n return this.renderer;\n};\n/**\n * Render view to a Uint8Array.\n *\n * @param {View} view - The view to render\n * @param {object} [zone] - partial zone to render\n * @param {number} zone.x - x (in view coordinate)\n * @param {number} zone.y - y (in view coordinate)\n * @param {number} zone.width - width of area to render (in pixels)\n * @param {number} zone.height - height of area to render (in pixels)\n * @return {THREE.RenderTarget} - Uint8Array, 4 bytes per pixel. The first pixel in\n * the array is the bottom-left pixel.\n */\n\n\nc3DEngine.prototype.renderViewToBuffer = function (view, zone) {\n if (!zone) {\n zone = {\n x: 0,\n y: 0,\n width: this.width,\n height: this.height\n };\n }\n\n this.renderViewToRenderTarget(view, this.fullSizeRenderTarget, zone);\n var pixelBuffer = new Uint8Array(4 * zone.width * zone.height);\n this.renderer.readRenderTargetPixels(this.fullSizeRenderTarget, zone.x, this.height - (zone.y + zone.height), zone.width, zone.height, pixelBuffer);\n return pixelBuffer;\n};\n/**\n * Render view to a THREE.RenderTarget.\n *\n * @param {View} view - The view to render\n * @param {THREE.RenderTarget} [target] - destination render target. Default value: full size render target owned by c3DEngine.\n * @param {object} [zone] - partial zone to render (zone x/y uses view coordinates) Note: target must contain complete zone\n * @return {THREE.RenderTarget} - the destination render target\n */\n\n\nc3DEngine.prototype.renderViewToRenderTarget = function (view, target, zone) {\n if (!target) {\n target = this.fullSizeRenderTarget;\n }\n\n var current = this.renderer.getRenderTarget(); // Don't use setViewport / setScissor on renderer because they would affect\n // on screen rendering as well. Instead set them on the render target.\n // Example : this.fullSizeRenderTarget.viewport.set(0, 0, target.width, target.height);\n\n if (zone) {\n this.fullSizeRenderTarget.scissor.set(zone.x, target.height - (zone.y + zone.height), zone.width, zone.height);\n this.fullSizeRenderTarget.scissorTest = true;\n }\n\n this.renderer.setRenderTarget(target);\n this.renderer.clear(true, true, false);\n this.renderer.render(view.scene, view.camera.camera3D);\n this.renderer.setRenderTarget(current);\n this.fullSizeRenderTarget.scissorTest = false;\n return target;\n};\n\nc3DEngine.prototype.bufferToImage = function (pixelBuffer, width, height) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d'); // size the canvas to your desired image\n\n canvas.width = width;\n canvas.height = height;\n var imgData = ctx.getImageData(0, 0, width, height);\n imgData.data.set(pixelBuffer);\n ctx.putImageData(imgData, 0, 0); // create a new img object\n\n var image = new Image(); // set the img.src to the canvas data url\n\n image.src = canvas.toDataURL();\n return image;\n};\n\nc3DEngine.prototype.getUniqueThreejsLayer = function () {\n // We use three.js Object3D.layers feature to manage visibility of\n // geometry layers; so we need an internal counter to assign a new\n // one to each new geometry layer.\n // Warning: only 32 ([0, 31]) different layers can exist.\n if (this._nextThreejsLayer > 31) {\n console.warn('Too much three.js layers. Starting from now all of them will use layerMask = 31');\n this._nextThreejsLayer = 31;\n }\n\n var result = this._nextThreejsLayer++;\n return result;\n};\n\nvar depthRGBA = new THREE.Vector4();\n\nc3DEngine.prototype.depthBufferRGBAValueToOrthoZ = function (depthBufferRGBA, camera) {\n depthRGBA.fromArray(depthBufferRGBA).divideScalar(255.0);\n\n if (Capabilities.isLogDepthBufferSupported()) {\n var gl_FragDepthEXT = unpack1K(depthRGBA);\n var logDepthBufFC = 2.0 / (Math.log(camera.far + 1.0) / Math.LN2); // invert function : gl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n\n return Math.pow(2, 2 * gl_FragDepthEXT / logDepthBufFC);\n } else {\n var gl_FragCoord_Z = unpack1K(depthRGBA);\n gl_FragCoord_Z = gl_FragCoord_Z * 2.0 - 1.0;\n return 2.0 * camera.near * camera.far / (camera.far + camera.near - gl_FragCoord_Z * (camera.far - camera.near));\n }\n};\n\nexport default c3DEngine;","import { Vector2, Vector3 } from 'three';\nimport Protobuf from 'pbf';\nimport { VectorTile } from '@mapbox/vector-tile';\nimport { worldDimension3857 } from \"../Core/Geographic/Extent\";\nimport { FeatureCollection, FEATURE_TYPES } from \"../Core/Feature\";\nimport { featureFilter } from '@mapbox/mapbox-gl-style-spec';\nimport Style from \"../Core/Style\";\nvar globalExtent = new Vector3(worldDimension3857.x, worldDimension3857.y, 1);\nvar lastPoint = new Vector2();\nvar firstPoint = new Vector2();\nvar styleCache = new Map(); // Classify option, it allows to classify a full polygon and its holes.\n// Each polygon with its holes are in one FeatureGeometry.\n// A polygon is determined by its clockwise direction and the holes are in the opposite direction.\n// Clockwise direction is determined by Shoelace formula https://en.wikipedia.org/wiki/Shoelace_formula\n// Draw polygon with canvas doesn't need to classify however it is necessary for meshs.\n\nfunction vtFeatureToFeatureGeometry(vtFeature, feature) {\n var classify = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var geometry = feature.bindNewGeometry();\n classify = classify && feature.type === FEATURE_TYPES.POLYGON;\n geometry.properties = vtFeature.properties;\n var pbf = vtFeature._pbf;\n pbf.pos = vtFeature._geometry;\n var end = pbf.readVarint() + pbf.pos;\n var cmd = 1;\n var length = 0;\n var x = 0;\n var y = 0;\n var count = 0;\n var sum = 0;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) {\n if (count) {\n if (classify && sum > 0 && geometry.indices.length > 0) {\n feature.updateExtent(geometry);\n geometry = feature.bindNewGeometry();\n geometry.properties = vtFeature.properties;\n }\n\n geometry.closeSubGeometry(count);\n geometry.getLastSubGeometry().ccw = sum < 0;\n }\n\n count = 0;\n sum = 0;\n }\n\n count++;\n geometry.pushCoordinatesValues(x, y);\n\n if (count == 1) {\n firstPoint.set(x, y);\n lastPoint.set(x, y);\n } else if (classify && count > 1) {\n sum += (lastPoint.x - x) * (lastPoint.y + y);\n lastPoint.set(x, y);\n }\n } else if (cmd === 7) {\n if (count) {\n count++;\n geometry.pushCoordinatesValues(firstPoint.x, firstPoint.y);\n\n if (classify) {\n sum += (lastPoint.x - firstPoint.x) * (lastPoint.y + firstPoint.y);\n }\n }\n } else {\n throw new Error(\"unknown command \".concat(cmd));\n }\n }\n\n if (count) {\n if (classify && sum > 0 && geometry.indices.length > 0) {\n feature.updateExtent(geometry);\n geometry = feature.bindNewGeometry();\n geometry.properties = vtFeature.properties;\n }\n\n geometry.closeSubGeometry(count);\n geometry.getLastSubGeometry().ccw = sum < 0;\n }\n\n feature.updateExtent(geometry);\n}\n\nvar defaultFilter = function () {\n return true;\n};\n\nfunction readPBF(file, options) {\n var vectorTile = new VectorTile(new Protobuf(file));\n var extentSource = options.extentSource || file.coords;\n var sourceLayers = Object.keys(vectorTile.layers);\n\n if (sourceLayers.length < 1) {\n return;\n } // x,y,z tile coordinates\n\n\n var x = extentSource.col;\n var z = extentSource.zoom; // We need to move from TMS to Google/Bing/OSM coordinates\n // https://alastaira.wordpress.com/2011/07/06/converting-tms-tile-coordinates-to-googlebingosm-tile-coordinates/\n // Only if the layer.origin is top\n\n var y = options.isInverted ? extentSource.row : (1 << z) - extentSource.row - 1;\n options.buildExtent = true;\n options.mergeFeatures = true;\n options.withAltitude = false;\n options.withNormal = false;\n var features = new FeatureCollection('EPSG:3857', options); // TODO remove defaultFilter;\n\n features.filter = options.filter || defaultFilter;\n var vFeature = vectorTile.layers[sourceLayers[0]];\n var size = vFeature.extent * Math.pow(2, z);\n var center = -0.5 * size;\n features.scale.set(size, -size, 1).divide(globalExtent);\n features.translation.set(-(vFeature.extent * x + center), -(vFeature.extent * y + center), 0).divide(features.scale);\n var allLayers = features.filter;\n\n if (!features.filter.loaded) {\n allLayers.forEach(function (l) {\n l.filterExpression = featureFilter(l.filter);\n });\n features.filter.loaded = true;\n }\n\n sourceLayers.forEach(function (layer_id) {\n var sourceLayer = vectorTile.layers[layer_id];\n var layersStyle = allLayers.filter(function (l) {\n return sourceLayer.name == l['source-layer'];\n });\n\n var _loop = function (i) {\n var vtFeature = sourceLayer.feature(i);\n var layerStyle = layersStyle.filter(function (l) {\n return l.filterExpression({\n zoom: extentSource.zoom\n }, vtFeature);\n })[0];\n\n if (layerStyle) {\n var properties = vtFeature.properties;\n properties.style = styleCache.get(layerStyle.id);\n\n if (!properties.style) {\n properties.style = new Style();\n properties.style.setFromVectorTileLayer(layerStyle);\n styleCache.set(layerStyle.id, properties.style);\n }\n\n var feature = features.getFeatureByType(vtFeature.type - 1);\n vtFeatureToFeatureGeometry(vtFeature, feature);\n }\n };\n\n for (var i = 0; i < sourceLayer.length; i++) {\n _loop(i);\n }\n });\n features.removeEmptyFeature();\n features.updateExtent();\n features.extent = extentSource;\n return Promise.resolve(features);\n}\n/**\n * @module VectorTileParser\n */\n\n\nexport default {\n /**\n * Parse a vector tile file and return a [Feature]{@link module:GeoJsonParser.Feature}\n * or an array of Features. While multiple formats of vector tile are\n * available, the only one supported for the moment is the\n * [Mapbox Vector Tile]{@link https://www.mapbox.com/vector-tiles/specification/}.\n *\n * @param {ArrayBuffer} file - The vector tile file to parse.\n * @param {Object} options - Options controlling the parsing.\n * @param {Extent} options.extent - The Extent to convert the input coordinates to.\n * @param {Extent} options.coords - Coordinates of the layer.\n * @param {Extent=} options.filteringExtent - Optional filter to reject features\n * outside of this extent.\n * @param {boolean} [options.mergeFeatures=true] - If true all geometries are merged by type and multi-type\n * @param {boolean} [options.withNormal=true] - If true each coordinate normal is computed\n * @param {boolean} [options.withAltitude=true] - If true each coordinate altitude is kept\n * @param {function=} options.filter - Filter function to remove features.\n * @param {string=} options.isInverted - This option is to be set to the\n * correct value, true or false (default being false), if the computation of\n * the coordinates needs to be inverted to same scheme as OSM, Google Maps\n * or other system. See [this link]{@link\n * https://alastaira.wordpress.com/2011/07/06/converting-tms-tile-coordinates-to-googlebingosm-tile-coordinates}\n * for more informations.\n *\n * @return {Promise} A Promise resolving with a Feature or an array a\n * Features.\n */\n parse: function parse(file, options) {\n return Promise.resolve(readPBF(file, options));\n }\n};","import GeoJsonParser from \"../Parser/GeoJsonParser\";\nimport VectorTileParser from \"../Parser/VectorTileParser\";\nimport Fetcher from \"./Fetcher\";\nimport Cache from \"../Core/Scheduler/Cache\";\nimport CancelledCommandException from \"../Core/Scheduler/CancelledCommandException\";\nexport var supportedFetchers = new Map([['image/x-bil;bits=32', Fetcher.textureFloat], ['geojson', Fetcher.json], ['application/json', Fetcher.json], ['application/x-protobuf;type=mapbox-vector', Fetcher.arrayBuffer]]);\nvar supportedParsers = new Map([['geojson', GeoJsonParser.parse], ['application/json', GeoJsonParser.parse], ['application/x-protobuf;type=mapbox-vector', VectorTileParser.parse]]);\n\nfunction isValidData(data, extentDestination, validFn) {\n if (data && (!validFn || validFn(data, extentDestination))) {\n return data;\n }\n}\n\nvar error = function (err, url, source) {\n source.handlingError(err, url);\n throw err;\n};\n\nfunction convertSourceData(data, extDest, layer) {\n return layer.convert(data, extDest, layer);\n}\n\nfunction parseSourceData(data, extSrc, extDest, layer) {\n var source = layer.source;\n\n var parser = source.parser || supportedParsers.get(source.format) || function (d) {\n return Promise.resolve(d);\n };\n\n var options = {\n buildExtent: source.isFileSource || !layer.isGeometryLayer,\n crsIn: source.projection,\n crsOut: layer.projection,\n // TODO FIXME: error in filtering vector tile\n // filteringExtent: extentDestination.as(layer.projection),\n filteringExtent: !source.isFileSource && layer.isGeometryLayer ? extDest : undefined,\n overrideAltitudeInToZero: layer.overrideAltitudeInToZero,\n filter: layer.filter,\n isInverted: source.isInverted,\n mergeFeatures: layer.mergeFeatures === undefined ? true : layer.mergeFeatures,\n withNormal: layer.isGeometryLayer,\n withAltitude: layer.isGeometryLayer\n };\n data.coords = extSrc;\n return parser(data, options).then(function (parsedFile) {\n if (source.isFileSource) {\n source.parsedData = parsedFile;\n\n if (parsedFile.extent && parsedFile.extent.crs != 'EPSG:4978') {\n source.extent = parsedFile.extent;\n }\n }\n\n return parsedFile;\n });\n}\n\nfunction fetchSourceData(url, layer) {\n var source = layer.source;\n var fetcher = source.fetcher || supportedFetchers.get(source.format) || Fetcher.texture; // Fetch data\n\n return fetcher(url, source.networkOptions);\n}\n\nexport default {\n executeCommand: function executeCommand(command) {\n var promises = [];\n var layer = command.layer;\n var source = layer.source;\n var requester = command.requester;\n var extentsSource = command.extentsSource;\n var extentsDestination = command.extentsDestination || extentsSource;\n var parsedData = command.parsedData || []; // TODO: Find best place to cancel Command\n\n if (requester && !requester.material) {\n // request has been deleted\n return Promise.reject(new CancelledCommandException(command));\n }\n\n var _loop = function (i) {\n var extSource = extentsSource[i];\n var extDest = extentsDestination[i]; // If source, we must fetch and convert data\n // URL of the resource you want to fetch\n\n var url = source.urlFromExtent(extSource); // Already fetched and parsed data that can be used\n\n var validedParsedData = isValidData(parsedData[i], extDest, layer.isValidData) || source.parsedData; // Tag to Cache data\n\n var tag = \"\".concat(source.uid, \"-\").concat(extSource.toString('-')); // Get converted source data, in cache\n\n var convertedSourceData = Cache.get(tag); // If data isn't in cache\n\n if (!convertedSourceData) {\n if (validedParsedData) {\n // Convert\n convertedSourceData = convertSourceData(validedParsedData, extDest, layer);\n } else if (source.fetchedData) {\n // Parse and convert\n convertedSourceData = parseSourceData(source.fetchedData, extSource, extDest, layer).then(function (parsedData) {\n return convertSourceData(parsedData, extDest, layer);\n }, function (err) {\n return error(err, url, source);\n });\n } else {\n // Fetch, parse and convert\n convertedSourceData = fetchSourceData(url, layer).then(function (fetchedData) {\n return parseSourceData(fetchedData, extSource, extDest, layer);\n }, function (err) {\n return error(err, url, source);\n }).then(function (parsedData) {\n return convertSourceData(parsedData, extDest, layer);\n }, function (err) {\n return error(err, url, source);\n });\n } // Put converted data in cache\n\n\n Cache.set(tag, convertedSourceData, Cache.POLICIES.TEXTURE);\n } // Verify some command is resolved\n // See old WFSProvider : command.resolve(result)\n\n\n promises.push(convertedSourceData);\n };\n\n for (var i = 0, max = extentsSource.length; i < max; i++) {\n _loop(i, max);\n }\n\n return Promise.all(promises);\n }\n};","import * as THREE from 'three'; // See the different constants holding ordinal, name, numElements, byteSize in PointAttributes.cpp in PotreeConverter\n// elementByteSize is byteSize / numElements\n\nvar POINT_ATTTRIBUTES = {\n POSITION_CARTESIAN: {\n numElements: 3,\n arrayType: Float32Array,\n attributeName: 'position'\n },\n COLOR_PACKED: {\n numElements: 4,\n arrayType: Uint8Array,\n attributeName: 'color',\n normalized: true\n },\n INTENSITY: {\n numElements: 1,\n numByte: 2,\n // using Float32Array because Float16Array doesn't exist\n arrayType: Float32Array,\n attributeName: 'intensity',\n normalized: true\n },\n CLASSIFICATION: {\n numElements: 1,\n arrayType: Uint8Array,\n attributeName: 'classification'\n },\n // Note: at the time of writing, PotreeConverter will only generate normals in Oct16 format\n // see PotreeConverter.cpp:121\n // we keep all the historical value to still supports old conversion\n NORMAL_SPHEREMAPPED: {\n numElements: 2,\n arrayType: Uint8Array,\n attributeName: 'sphereMappedNormal'\n },\n // see https://web.archive.org/web/20150303053317/http://lgdv.cs.fau.de/get/1602\n NORMAL_OCT16: {\n numElements: 2,\n arrayType: Uint8Array,\n attributeName: 'oct16Normal'\n },\n NORMAL: {\n numElements: 3,\n arrayType: Float32Array,\n attributeName: 'normal'\n }\n};\n\nvar _loop = function () {\n var potreeName = _Object$keys[_i];\n var attr = POINT_ATTTRIBUTES[potreeName];\n attr.potreeName = potreeName;\n attr.numByte = attr.numByte || attr.arrayType.BYTES_PER_ELEMENT;\n attr.byteSize = attr.numElements * attr.numByte;\n attr.normalized = attr.normalized || false; // chrome is known to perform badly when we call a method without respecting its arity\n\n var fnName = \"getUint\".concat(attr.numByte * 8);\n attr.getValue = attr.numByte === 1 ? function (view, offset) {\n return view[fnName](offset);\n } : function (view, offset) {\n return view[fnName](offset, true);\n };\n};\n\nfor (var _i = 0, _Object$keys = Object.keys(POINT_ATTTRIBUTES); _i < _Object$keys.length; _i++) {\n _loop();\n}\n\nexport default {\n /** @module PotreeBinParser */\n\n /** Parse .bin PotreeConverter format and convert to a THREE.BufferGeometry\n * @function parse\n * @param {ArrayBuffer} buffer - the bin buffer.\n * @param {Object} pointAttributes - the point attributes information contained in layer.metadata coming from cloud.js\n * @return {Promise} - a promise that resolves with a THREE.BufferGeometry.\n *\n */\n parse: function (buffer, pointAttributes) {\n if (!buffer) {\n throw new Error('No array buffer provided.');\n }\n\n var view = new DataView(buffer); // Format: X1,Y1,Z1,R1,G1,B1,A1,[...],XN,YN,ZN,RN,GN,BN,AN\n\n var pointByteSize = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = pointAttributes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var potreeName = _step.value;\n pointByteSize += POINT_ATTTRIBUTES[potreeName].byteSize;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var numPoints = Math.floor(buffer.byteLength / pointByteSize);\n var geometry = new THREE.BufferGeometry();\n var elemOffset = 0;\n var attrOffset = 0;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = pointAttributes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _potreeName = _step2.value;\n var attr = POINT_ATTTRIBUTES[_potreeName];\n var arrayLength = attr.numElements * numPoints;\n var array = new attr.arrayType(arrayLength);\n\n for (var arrayOffset = 0; arrayOffset < arrayLength; arrayOffset += attr.numElements) {\n for (var elemIdx = 0; elemIdx < attr.numElements; elemIdx++) {\n array[arrayOffset + elemIdx] = attr.getValue(view, attrOffset + elemIdx * attr.numByte);\n }\n\n attrOffset += pointByteSize;\n }\n\n elemOffset += attr.byteSize;\n attrOffset = elemOffset;\n geometry.addAttribute(attr.attributeName, new THREE.BufferAttribute(array, attr.numElements, attr.normalized));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n geometry.computeBoundingBox();\n return Promise.resolve(geometry);\n }\n};","import CancelledCommandException from \"../Core/Scheduler/CancelledCommandException\";\nexport default {\n executeCommand: function executeCommand(command) {\n var promises = [];\n var layer = command.layer;\n var requester = command.requester;\n var extentsSource = command.extentsSource;\n\n if (requester && !requester.material) {\n return Promise.reject(new CancelledCommandException(command));\n }\n\n for (var i = 0, size = extentsSource.length; i < size; i++) {\n promises.push(layer.convert(requester, extentsSource[i]));\n }\n\n return Promise.all(promises);\n }\n};","import * as THREE from 'three';\nexport default {\n /** @module PotreeCinParser */\n\n /** Parse .cin PotreeConverter format (see {@link https://github.com/peppsac/PotreeConverter/tree/custom_bin}) and convert to a THREE.BufferGeometry\n * @function parse\n * @param {ArrayBuffer} buffer - the cin buffer.\n * @return {Promise} - a promise that resolves with a THREE.BufferGeometry.\n *\n */\n parse: function (buffer) {\n if (!buffer) {\n throw new Error('No array buffer provided.');\n } // Format: MinX,MinY,MinZ,MaxX,MaxY,MaxZ,X1,Y1,Z1,[...],XN,YN,ZN,R1,G1,B1,A1,[...],RN,GN,BN,AN\n\n\n var view = new DataView(buffer, 0, 6 * 4);\n var min = new THREE.Vector3(view.getFloat32(0, true), view.getFloat32(4, true), view.getFloat32(8, true));\n var max = new THREE.Vector3(view.getFloat32(12, true), view.getFloat32(16, true), view.getFloat32(20, true));\n var box = new THREE.Box3(min, max);\n var numPoints = Math.floor((buffer.byteLength - 24) / 16);\n var positions = new Float32Array(buffer, 24, 3 * numPoints);\n var colors = new Uint8Array(buffer, 24 + 3 * 4 * numPoints, 4 * numPoints);\n var geometry = new THREE.BufferGeometry();\n geometry.addAttribute('position', new THREE.BufferAttribute(positions, 3));\n geometry.addAttribute('color', new THREE.BufferAttribute(colors, 4, true));\n geometry.boundingBox = box;\n return Promise.resolve(geometry);\n }\n};","import * as THREE from 'three';\nimport Fetcher from \"./Fetcher\";\nimport PointCloudProcessing from \"../Process/PointCloudProcessing\";\nimport PotreeBinParser from \"../Parser/PotreeBinParser\";\nimport PotreeCinParser from \"../Parser/PotreeCinParser\";\nimport PointsMaterial, { MODE } from \"../Renderer/PointsMaterial\";\nimport Picking from \"../Core/Picking\";\nimport Extent from \"../Core/Geographic/Extent\"; // Create an A(xis)A(ligned)B(ounding)B(ox) for the child `childIndex` of one aabb.\n// (PotreeConverter protocol builds implicit octree hierarchy by applying the same\n// subdivision algo recursively)\n\nfunction createChildAABB(aabb, childIndex) {\n // Code taken from potree\n var min = aabb.min;\n var max = aabb.max;\n var dHalfLength = new THREE.Vector3().copy(max).sub(min).multiplyScalar(0.5);\n var xHalfLength = new THREE.Vector3(dHalfLength.x, 0, 0);\n var yHalfLength = new THREE.Vector3(0, dHalfLength.y, 0);\n var zHalfLength = new THREE.Vector3(0, 0, dHalfLength.z);\n var cmin = min;\n var cmax = new THREE.Vector3().add(min).add(dHalfLength);\n\n if (childIndex === 1) {\n min = new THREE.Vector3().copy(cmin).add(zHalfLength);\n max = new THREE.Vector3().copy(cmax).add(zHalfLength);\n } else if (childIndex === 3) {\n min = new THREE.Vector3().copy(cmin).add(zHalfLength).add(yHalfLength);\n max = new THREE.Vector3().copy(cmax).add(zHalfLength).add(yHalfLength);\n } else if (childIndex === 0) {\n min = cmin;\n max = cmax;\n } else if (childIndex === 2) {\n min = new THREE.Vector3().copy(cmin).add(yHalfLength);\n max = new THREE.Vector3().copy(cmax).add(yHalfLength);\n } else if (childIndex === 5) {\n min = new THREE.Vector3().copy(cmin).add(zHalfLength).add(xHalfLength);\n max = new THREE.Vector3().copy(cmax).add(zHalfLength).add(xHalfLength);\n } else if (childIndex === 7) {\n min = new THREE.Vector3().copy(cmin).add(dHalfLength);\n max = new THREE.Vector3().copy(cmax).add(dHalfLength);\n } else if (childIndex === 4) {\n min = new THREE.Vector3().copy(cmin).add(xHalfLength);\n max = new THREE.Vector3().copy(cmax).add(xHalfLength);\n } else if (childIndex === 6) {\n min = new THREE.Vector3().copy(cmin).add(xHalfLength).add(yHalfLength);\n max = new THREE.Vector3().copy(cmax).add(xHalfLength).add(yHalfLength);\n }\n\n return new THREE.Box3(min, max);\n}\n\nfunction parseOctree(layer, hierarchyStepSize, root) {\n return Fetcher.arrayBuffer(\"\".concat(root.baseurl, \"/r\").concat(root.name, \".hrc\"), layer.fetchOptions).then(function (blob) {\n var view = new DataView(blob);\n var stack = [];\n var offset = 0;\n root.childrenBitField = view.getUint8(0);\n offset += 1;\n root.numPoints = view.getUint32(1, true);\n offset += 4;\n root.children = [];\n stack.push(root);\n\n while (stack.length && offset < blob.byteLength) {\n var snode = stack.shift(); // look up 8 children\n\n for (var i = 0; i < 8; i++) {\n // does snode have a #i child ?\n if (snode.childrenBitField & 1 << i && offset + 5 <= blob.byteLength) {\n var c = view.getUint8(offset);\n offset += 1;\n var n = view.getUint32(offset, true);\n offset += 4;\n\n if (n == 0) {\n n = root.numPoints;\n }\n\n var childname = snode.name + i;\n var bounds = createChildAABB(snode.bbox, i);\n var url = root.baseurl;\n\n if (childname.length % hierarchyStepSize == 0) {\n var myname = childname.substr(root.name.length);\n url = \"\".concat(root.baseurl, \"/\").concat(myname);\n }\n\n var item = {\n numPoints: n,\n childrenBitField: c,\n children: [],\n name: childname,\n baseurl: url,\n bbox: bounds,\n layer: layer,\n parent: snode\n };\n snode.children.push(item);\n stack.push(item);\n }\n }\n }\n\n return root;\n });\n}\n\nfunction findChildrenByName(node, name) {\n if (node.name === name) {\n return node;\n }\n\n var charIndex = node.name.length;\n\n for (var i = 0; i < node.children.length; i++) {\n if (node.children[i].name[charIndex] == name[charIndex]) {\n return findChildrenByName(node.children[i], name);\n }\n }\n\n throw new Error(\"Cannot find node with name '\".concat(name, \"'\"));\n}\n\nvar nextuuid = 1;\n\nfunction addPickingAttribute(points) {\n // generate unique id for picking\n var numPoints = points.geometry.attributes.position.count;\n var ids = new Uint8Array(4 * numPoints);\n var baseId = nextuuid++;\n\n if (numPoints > 0xffff || baseId > 0xffff) {\n // TODO: fixme\n console.warn('Currently picking is limited to Points with less than 65535 elements and less than 65535 Points instances');\n return points;\n }\n\n for (var i = 0; i < numPoints; i++) {\n // todo numpoints > 16bits\n var v = baseId << 16 | i;\n ids[4 * i + 0] = (v & 0xff000000) >> 24;\n ids[4 * i + 1] = (v & 0x00ff0000) >> 16;\n ids[4 * i + 2] = (v & 0x0000ff00) >> 8;\n ids[4 * i + 3] = (v & 0x000000ff) >> 0;\n }\n\n points.baseId = baseId;\n points.geometry.addAttribute('unique_id', new THREE.BufferAttribute(ids, 4, true));\n return points;\n}\n\nfunction computeBbox(layer) {\n var bbox;\n\n if (layer.isFromPotreeConverter) {\n bbox = new THREE.Box3(new THREE.Vector3(layer.metadata.boundingBox.lx, layer.metadata.boundingBox.ly, layer.metadata.boundingBox.lz), new THREE.Vector3(layer.metadata.boundingBox.ux, layer.metadata.boundingBox.uy, layer.metadata.boundingBox.uz));\n } else {\n // lopocs\n var idx = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = layer.metadata[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var entry = _step.value;\n\n if (entry.table == layer.table) {\n break;\n }\n\n idx++;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n bbox = new THREE.Box3(new THREE.Vector3(layer.metadata[idx].bbox.xmin, layer.metadata[idx].bbox.ymin, layer.metadata[idx].bbox.zmin), new THREE.Vector3(layer.metadata[idx].bbox.xmax, layer.metadata[idx].bbox.ymax, layer.metadata[idx].bbox.zmax));\n }\n\n return bbox;\n}\n\nfunction parseMetadata(metadata, layer) {\n layer.metadata = metadata;\n var customBinFormat = true; // Lopocs pointcloud server can expose the same file structure as PotreeConverter output.\n // The only difference is the metadata root file (cloud.js vs infos/sources), and we can\n // check for the existence of a `scale` field.\n // (if `scale` is defined => we're fetching files from PotreeConverter)\n\n if (layer.metadata.scale != undefined) {\n layer.isFromPotreeConverter = true; // PotreeConverter format\n\n customBinFormat = layer.metadata.pointAttributes === 'CIN'; // do we have normal information\n\n var normal = Array.isArray(layer.metadata.pointAttributes) && layer.metadata.pointAttributes.find(function (elem) {\n return elem.startsWith('NORMAL');\n });\n\n if (normal) {\n layer.material.defines[normal] = 1;\n }\n } else {\n // Lopocs\n layer.metadata.scale = 1;\n layer.metadata.octreeDir = \"itowns/\".concat(layer.table, \".points\");\n layer.metadata.hierarchyStepSize = 1000000; // ignore this with lopocs\n\n customBinFormat = true;\n }\n\n layer.parse = customBinFormat ? PotreeCinParser.parse : PotreeBinParser.parse;\n layer.extension = customBinFormat ? 'cin' : 'bin';\n layer.supportsProgressiveDisplay = customBinFormat;\n}\n\nexport function getObjectToUpdateForAttachedLayers(meta) {\n if (meta.obj) {\n var p = meta.parent;\n\n if (p && p.obj) {\n return {\n element: meta.obj,\n parent: p.obj\n };\n } else {\n return {\n element: meta.obj\n };\n }\n }\n}\nexport default {\n preprocessDataLayer: function preprocessDataLayer(layer, view) {\n if (!layer.file) {\n layer.file = 'cloud.js';\n }\n\n if (!layer.group) {\n layer.group = new THREE.Group();\n layer.object3d.add(layer.group);\n layer.group.updateMatrixWorld();\n }\n\n if (!layer.bboxes) {\n layer.bboxes = new THREE.Group();\n layer.object3d.add(layer.bboxes);\n layer.bboxes.updateMatrixWorld();\n layer.bboxes.visible = false;\n } // default options\n\n\n layer.fetchOptions = layer.fetchOptions || {};\n layer.octreeDepthLimit = layer.octreeDepthLimit || -1;\n layer.pointBudget = layer.pointBudget || 2000000;\n layer.pointSize = layer.pointSize === 0 || !isNaN(layer.pointSize) ? layer.pointSize : 4;\n layer.sseThreshold = layer.sseThreshold || 2;\n layer.material = layer.material || {};\n layer.material = layer.material.isMaterial ? layer.material : new PointsMaterial(layer.material);\n layer.material.defines = layer.material.defines || {};\n layer.mode = MODE.COLOR; // default update methods\n\n layer.preUpdate = PointCloudProcessing.preUpdate;\n layer.update = PointCloudProcessing.update;\n layer.postUpdate = PointCloudProcessing.postUpdate; // override the default method, since updated objects are metadata in this case\n\n layer.getObjectToUpdateForAttachedLayers = getObjectToUpdateForAttachedLayers; // this probably needs to be moved to somewhere else\n\n layer.pickObjectsAt = function (view, mouse, radius) {\n return Picking.pickPointsAt(view, mouse, radius, layer);\n };\n\n return Fetcher.json(\"\".concat(layer.url, \"/\").concat(layer.file), layer.fetchOptions).then(function (metadata) {\n parseMetadata(metadata, layer);\n var bbox = computeBbox(layer);\n return parseOctree(layer, layer.metadata.hierarchyStepSize, {\n baseurl: \"\".concat(layer.url, \"/\").concat(layer.metadata.octreeDir, \"/r\"),\n name: '',\n bbox: bbox\n });\n }).then(function (root) {\n // eslint-disable-next-line no-console\n console.log('LAYER metadata:', root);\n layer.root = root;\n root.findChildrenByName = findChildrenByName.bind(root, root);\n layer.extent = Extent.fromBox3(view.referenceCrs, root.bbox);\n return layer;\n });\n },\n executeCommand: function executeCommand(command) {\n var layer = command.layer;\n var metadata = command.requester; // Query HRC if we don't have children metadata yet.\n\n if (metadata.childrenBitField && metadata.children.length === 0) {\n parseOctree(layer, layer.metadata.hierarchyStepSize, metadata).then(function () {\n return command.view.notifyChange(layer, false);\n });\n } // `isLeaf` is for lopocs and allows the pointcloud server to consider that the current\n // node is the last one, even if we could subdivide even further.\n // It's necessary because lopocs doens't know about the hierarchy (it generates it on the fly\n // when we request .hrc files)\n\n\n var url = \"\".concat(metadata.baseurl, \"/r\").concat(metadata.name, \".\").concat(layer.extension, \"?isleaf=\").concat(command.isLeaf ? 1 : 0);\n return Fetcher.arrayBuffer(url, layer.fetchOptions).then(function (buffer) {\n return layer.parse(buffer, layer.metadata.pointAttributes);\n }).then(function (geometry) {\n var points = new THREE.Points(geometry, layer.material.clone());\n addPickingAttribute(points);\n points.frustumCulled = false;\n points.matrixAutoUpdate = false;\n points.position.copy(metadata.bbox.min);\n points.scale.set(layer.metadata.scale, layer.metadata.scale, layer.metadata.scale);\n points.updateMatrix();\n points.tightbbox = geometry.boundingBox.applyMatrix4(points.matrix);\n points.layers.set(layer.threejsLayer);\n points.layer = layer;\n points.extent = Extent.fromBox3(command.view.referenceCrs, metadata.bbox);\n points.userData.metadata = metadata;\n return points;\n });\n }\n};\nexport var _testing = {\n parseMetadata: parseMetadata\n};","/**\n * Generated On: 2015-10-5\n * Class: Scheduler\n * Description: Cette classe singleton gère les requetes/Commandes de la scène. Ces commandes peuvent etre synchrone ou asynchrone. Elle permet d'executer, de prioriser et d'annuler les commandes de la pile. Les commandes executées sont placées dans une autre file d'attente.\n */\nimport PriorityQueue from 'js-priority-queue';\nimport DataSourceProvider from \"../../Provider/DataSourceProvider\";\nimport TileProvider from \"../../Provider/TileProvider\";\nimport $3dTilesProvider from \"../../Provider/3dTilesProvider\";\nimport PointCloudProvider from \"../../Provider/PointCloudProvider\";\nimport CancelledCommandException from \"./CancelledCommandException\";\n\nfunction queueOrdering(a, b) {\n var cmp = b.priority - a.priority; // Prioritize recent commands\n\n if (cmp === 0) {\n return b.timestamp - a.timestamp;\n }\n\n return cmp;\n}\n\nfunction drawNextLayer(storages) {\n // Dithering algorithm to select the next layer\n // see https://gamedev.stackexchange.com/a/95696 for more details\n var sum = 0;\n var selected;\n var max;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = storages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n var st = item[1];\n\n if (st.q.length > 0) {\n sum += st.priority;\n st.accumulator += st.priority; // Select the biggest accumulator\n\n if (!selected || st.accumulator > max) {\n selected = st;\n max = st.accumulator;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (selected) {\n selected.accumulator -= sum;\n return selected.q;\n }\n}\n\nfunction _instanciateQueue() {\n return {\n queue: function queue(command) {\n var layer = command.layer;\n var st = this.storages.get(layer.id);\n\n if (!st) {\n st = {\n q: new PriorityQueue({\n comparator: queueOrdering\n }),\n priority: 1,\n accumulator: 0\n };\n this.storages.set(layer.id, st);\n } // update priority (layer.priority may have changed)\n\n\n st.priority = layer.priority || 1;\n st.q.queue(command);\n this.counters.pending++;\n },\n storages: new Map(),\n counters: {\n // commands in progress\n executing: 0,\n // commands successfully executed\n executed: 0,\n // commands failed\n failed: 0,\n // commands cancelled\n cancelled: 0,\n // commands pending\n pending: 0\n },\n execute: function execute(cmd, provider) {\n var _this = this;\n\n this.counters.pending--;\n this.counters.executing++;\n return provider.executeCommand(cmd).then(function (result) {\n _this.counters.executing--;\n cmd.resolve(result); // only count successul commands\n\n _this.counters.executed++;\n }, function (err) {\n _this.counters.executing--;\n cmd.reject(err);\n _this.counters.failed++;\n });\n }\n };\n}\n/**\n * The Scheduler is in charge of managing the [Providers]{@link Provider} that\n * are used to gather resources needed to display the layers on a {@link View}.\n * There is only one instance of a Scheduler per webview, and it is instanciated\n * with the creation of the first view.\n *\n * @constructor\n */\n\n\nfunction Scheduler() {\n // Constructor\n this.defaultQueue = _instanciateQueue();\n this.hostQueues = new Map();\n this.providers = {};\n this.maxCommandsPerHost = 6; // TODO: add an options to not instanciate default providers\n\n this.initDefaultProviders();\n}\n\nScheduler.prototype.constructor = Scheduler;\n\nScheduler.prototype.initDefaultProviders = function () {\n // Register all providers\n this.addProtocolProvider('tile', TileProvider);\n this.addProtocolProvider('3d-tiles', $3dTilesProvider);\n this.addProtocolProvider('potreeconverter', PointCloudProvider);\n};\n\nScheduler.prototype.runCommand = function (command, queue, executingCounterUpToDate) {\n var _this2 = this;\n\n var protocol = command.layer.protocol || command.layer.source.protocol;\n var provider = this.getProtocolProvider(protocol);\n\n if (!provider) {\n throw new Error(\"No known provider for layer \".concat(command.layer.id));\n }\n\n queue.execute(command, provider, executingCounterUpToDate).then(function () {\n // notify view that one command ended.\n command.view.notifyChange(command.requester, command.redraw); // try to execute next command\n\n if (queue.counters.executing < _this2.maxCommandsPerHost) {\n var cmd = _this2.deQueue(queue);\n\n if (cmd) {\n _this2.runCommand(cmd, queue);\n }\n }\n });\n};\n\nScheduler.prototype.execute = function (command) {\n var _this3 = this;\n\n // TODO: check for mandatory commands fields\n // parse host\n var layer = command.layer;\n var host = layer.source && layer.source.url ? new URL(layer.source.url, document.location).host : undefined;\n command.promise = new Promise(function (resolve, reject) {\n command.resolve = resolve;\n command.reject = reject;\n }); // init queue if needed\n\n if (host && !this.hostQueues.has(host)) {\n this.hostQueues.set(host, _instanciateQueue());\n }\n\n var q = host ? this.hostQueues.get(host) : this.defaultQueue;\n command.timestamp = Date.now();\n q.queue(command);\n\n if (q.counters.executing < this.maxCommandsPerHost) {\n // Defer the processing after the end of the current frame.\n // Promise.resolve or setTimeout(..., 0) will do the job, the difference\n // is:\n // - setTimeout is a new task, queued in the event-loop queues\n // - Promise is a micro-task, executed before other tasks\n Promise.resolve().then(function () {\n if (q.counters.executing < _this3.maxCommandsPerHost) {\n var cmd = _this3.deQueue(q);\n\n if (cmd) {\n _this3.runCommand(cmd, q);\n }\n }\n });\n }\n\n return command.promise;\n};\n/**\n * A Provider has the responsability to handle protocols and datablobs. Given a\n * data request (see {@link Provider#executeCommand} for details about this\n * request), it fetches serialized datasets, file content or even file chunks.\n *\n * @interface Provider\n */\n\n/**\n * When adding a layer to a view, some preprocessing can be done on it, before\n * fetching or creating resources attached to it. For example, in the WMTS and\n * WFS providers (included in iTowns), default options to the layer are added if\n * some are missing.\n *\n * @function\n * @name Provider#preprocessDataLayer\n *\n * @param {Layer} layer\n * @param {View} [view]\n * @param {Scheduler} [scheduler]\n * @param {Layer} [parentLayer]\n */\n\n/**\n * In the {@link Scheduler} loop, this function is called every time the layer\n * needs new information about itself. For tiled layers, it gets the necessary\n * tiles, given the current position of the camera on the map. For simple layers\n * like a GPX trace, it gets the data once.\n *

\n * It passes a `command` object as a parameter, with the `view` and the `layer`\n * always present. The other parameters are optional.\n *\n * @function\n * @name Provider#executeCommand\n *\n * @param {Object} command\n * @param {View} command.view\n * @param {Layer} command.layer\n * @param {TileMesh} [command.requester] - Every layer is attached to a tile.\n * @param {number} [command.targetLevel] - The target level is used when there\n * is a tiled layer, such as WMTS or TMS, but not in case like a GPX layer.\n *\n * @return {Promise} The {@link Scheduler} always expect a Promise as a result,\n * resolving to an object containing sufficient information for the associated\n * processing to the current layer. For example, see the\n * [LayeredMaterialNodeProcessing#updateLayeredMaterialNodeElevation]{@link\n * https://github.com/iTowns/itowns/blob/master/src/Process/LayeredMaterialNodeProcessing.js}\n * class or other processing class.\n */\n\n/**\n * Adds a provider for a specified protocol. The provider will be used when\n * executing the queue to provide resources. See {@link Provider} for more\n * informations.\n * By default, some protocols are already set in iTowns: WMTS, WMS, WFS, TMS,\n * XYZ, PotreeConverter, Rasterizer, 3D-Tiles and Static.\n *

\n * Warning: if the specified protocol has already a provider attached to it, the\n * current provider will be overwritten by the given provider.\n *\n * @param {string} protocol - The name of the protocol to add. This is the\n * `protocol` parameter put inside the configuration when adding a layer. The\n * capitalization of the name is not taken into account here.\n * @param {Provider} provider - The provider to link to the protocol, that must\n * respect the {@link Provider} interface description.\n *\n * @throws {Error} an error if any method of the {@link Provider} is not present\n * in the provider.\n */\n\n\nScheduler.prototype.addProtocolProvider = function (protocol, provider) {\n if (typeof provider.executeCommand !== 'function') {\n throw new Error(\"Can't add provider for \".concat(protocol, \": missing a executeCommand function.\"));\n }\n\n this.providers[protocol] = provider;\n};\n/**\n * Get a specific {@link Provider} given a particular protocol.\n *\n * @param {string} protocol\n *\n * @return {Provider}\n */\n\n\nScheduler.prototype.getProtocolProvider = function (protocol) {\n return this.providers[protocol] || DataSourceProvider;\n};\n\nScheduler.prototype.commandsWaitingExecutionCount = function () {\n var sum = this.defaultQueue.counters.pending + this.defaultQueue.counters.executing;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = this.hostQueues[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var q = _step2.value;\n sum += q[1].counters.pending + q[1].counters.executing;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return sum;\n};\n\nScheduler.prototype.commandsRunningCount = function () {\n var sum = this.defaultQueue.counters.executing;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.hostQueues[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var q = _step3.value;\n sum += q[1].counters.executing;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return sum;\n};\n\nScheduler.prototype.resetCommandsCount = function (type) {\n var sum = this.defaultQueue.counters[type];\n this.defaultQueue.counters[type] = 0;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = this.hostQueues[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var q = _step4.value;\n sum += q[1].counters[type];\n q[1].counters[type] = 0;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4[\"return\"] != null) {\n _iterator4[\"return\"]();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return sum;\n};\n\nScheduler.prototype.deQueue = function (queue) {\n var st = drawNextLayer(queue.storages);\n\n while (st && st.length > 0) {\n var cmd = st.dequeue();\n\n if (cmd.earlyDropFunction && cmd.earlyDropFunction(cmd)) {\n queue.counters.pending--;\n queue.counters.cancelled++;\n cmd.reject(new CancelledCommandException(cmd));\n } else {\n return cmd;\n }\n }\n\n return undefined;\n};\n\nexport default Scheduler;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\n\n/* global window */\nimport * as THREE from 'three';\nimport Camera from \"../Renderer/Camera\";\nimport MainLoop, { MAIN_LOOP_EVENTS, RENDERING_PAUSED } from \"./MainLoop\";\nimport c3DEngine from \"../Renderer/c3DEngine\";\nimport RenderMode from \"../Renderer/RenderMode\";\nimport { getMaxColorSamplerUnitsCount } from \"../Renderer/LayeredMaterial\";\nimport Scheduler from \"./Scheduler/Scheduler\";\nimport Picking from \"./Picking\";\nexport var VIEW_EVENTS = {\n /**\n * Fires when all the layers of the view are considered initialized.\n * Initialized in this context means: all layers are ready to be\n * displayed (no pending network access, no visual improvement to be\n * expected, ...).\n * If you add new layers, the event will be fired again when all\n * layers are ready.\n * @event View#layers-initialized\n * @property type {string} layers-initialized\n */\n LAYERS_INITIALIZED: 'layers-initialized',\n LAYER_REMOVED: 'layer-removed'\n};\n/**\n * Constructs an Itowns View instance\n *\n * @param {string} crs - The default CRS of Three.js coordinates. Should be a cartesian CRS.\n * @param {HTMLElement} viewerDiv - Where to instanciate the Three.js scene in the DOM\n * @param {Object=} options - Optional properties.\n * @param {?MainLoop} options.mainLoop - {@link MainLoop} instance to use, otherwise a default one will be constructed\n * @param {?(WebGLRenderer|object)} options.renderer - {@link WebGLRenderer} instance to use, otherwise\n * a default one will be constructed. In this case, if options.renderer is an object, it will be used to\n * configure the renderer (see {@link c3DEngine}. If not present, a new <canvas> will be created and\n * added to viewerDiv (mutually exclusive with mainLoop)\n * @param {?Scene} options.scene3D - {@link Scene} instance to use, otherwise a default one will be constructed\n * @constructor\n */\n\nfunction View(crs, viewerDiv) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!viewerDiv) {\n throw new Error('Invalid viewerDiv parameter (must non be null/undefined)');\n }\n\n this.referenceCrs = crs;\n var engine; // options.renderer can be 2 separate things:\n // - an actual renderer (in this case we don't use viewerDiv)\n // - options for the renderer to be created\n\n if (options.renderer && options.renderer.domElement) {\n engine = new c3DEngine(options.renderer);\n } else {\n engine = new c3DEngine(viewerDiv, options.renderer);\n }\n\n this.mainLoop = options.mainLoop || new MainLoop(new Scheduler(), engine);\n this.scene = options.scene3D || new THREE.Scene();\n\n if (!options.scene3D) {\n this.scene.autoUpdate = false;\n }\n\n this.camera = new Camera(this.referenceCrs, this.mainLoop.gfxEngine.getWindowSize().x, this.mainLoop.gfxEngine.getWindowSize().y, options);\n this._frameRequesters = {};\n this._layers = [];\n window.addEventListener('resize', function () {\n // If the user gave us a container (
) then itowns' size is\n // the container's size. Otherwise we use window' size.\n _this.mainLoop.gfxEngine.onWindowResize(viewerDiv.clientWidth, viewerDiv.clientHeight);\n\n _this.camera.resize(viewerDiv.clientWidth, viewerDiv.clientHeight);\n\n _this.notifyChange(_this.camera.camera3D);\n }, false);\n this._changeSources = new Set();\n this._delayedFrameRequesterRemoval = [];\n\n this._allLayersAreReadyCallback = function () {\n // all layers must be ready\n var allReady = _this.getLayers().every(function (layer) {\n return layer.ready;\n });\n\n if (allReady && _this.mainLoop.scheduler.commandsWaitingExecutionCount() == 0 && _this.mainLoop.renderingState == RENDERING_PAUSED) {\n _this.dispatchEvent({\n type: VIEW_EVENTS.LAYERS_INITIALIZED\n });\n\n _this.removeFrameRequester(MAIN_LOOP_EVENTS.UPDATE_END, _this._allLayersAreReadyCallback);\n }\n };\n\n this.camera.resize(viewerDiv.clientWidth, viewerDiv.clientHeight);\n}\n\nView.prototype = Object.create(THREE.EventDispatcher.prototype);\nView.prototype.constructor = View;\n\nvar _syncGeometryLayerVisibility = function (layer, view) {\n if (layer.object3d) {\n layer.object3d.visible = layer.visible;\n }\n\n if (layer.threejsLayer) {\n if (layer.visible) {\n view.camera.camera3D.layers.enable(layer.threejsLayer);\n } else {\n view.camera.camera3D.layers.disable(layer.threejsLayer);\n }\n }\n};\n\nfunction _preprocessLayer(view, layer, provider, parentLayer) {\n if (parentLayer && !layer.extent) {\n layer.extent = parentLayer.extent;\n\n if (layer.source && !layer.source.extent) {\n layer.source.extent = parentLayer.extent;\n }\n }\n\n if (layer.isGeometryLayer) {\n if (parentLayer) {\n // layer.threejsLayer *must* be assigned before preprocessing,\n // because TileProvider.preprocessDataLayer function uses it.\n layer.threejsLayer = view.mainLoop.gfxEngine.getUniqueThreejsLayer();\n }\n\n layer.defineLayerProperty('visible', true, function () {\n return _syncGeometryLayerVisibility(layer, view);\n });\n\n _syncGeometryLayerVisibility(layer, view); // Find projection layer, this is projection destination\n\n\n layer.projection = view.referenceCrs;\n } else if (layer.source.tileMatrixSet === 'PM' || layer.source.projection == 'EPSG:3857') {\n layer.projection = 'EPSG:3857';\n } else {\n layer.projection = parentLayer.extent.crs;\n }\n\n if (!layer.whenReady) {\n if (provider && provider.preprocessDataLayer) {\n layer.whenReady = provider.preprocessDataLayer(layer, view, view.mainLoop.scheduler, parentLayer);\n } else if (layer.source && layer.source.whenReady) {\n layer.whenReady = layer.source.whenReady;\n } else {\n layer.whenReady = Promise.resolve();\n }\n }\n\n layer.whenReady = layer.whenReady.then(function () {\n layer.ready = true;\n return layer;\n });\n return layer;\n}\n/**\n * Add layer in viewer.\n * The layer id must be unique.\n *\n * This function calls `preprocessDataLayer` of the relevant provider with this\n * layer and set `layer.whenReady` to a promise that resolves when\n * the preprocessing operation is done. This promise is also returned by\n * `addLayer` allowing to chain call.\n *\n * @param {LayerOptions|Layer|GeometryLayer} layer\n * @param {Layer=} parentLayer\n * @return {Promise} a promise resolved with the new layer object when it is fully initialized or rejected if any error occurred.\n */\n\n\nView.prototype.addLayer = function (layer, parentLayer) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n if (!layer) {\n reject(new Error('layer is undefined'));\n return;\n }\n\n var duplicate = _this2.getLayerById(layer.id);\n\n if (duplicate) {\n reject(new Error(\"Invalid id '\".concat(layer.id, \"': id already used\")));\n return;\n }\n\n var protocol = layer.source ? layer.source.protocol : layer.protocol;\n\n var provider = _this2.mainLoop.scheduler.getProtocolProvider(protocol);\n\n if (layer.protocol && !provider) {\n reject(new Error(\"\".concat(layer.protocol, \" is not a recognized protocol name.\")));\n return;\n }\n\n layer = _preprocessLayer(_this2, layer, provider, parentLayer);\n\n if (parentLayer) {\n if (layer.isColorLayer) {\n var layerColors = _this2.getLayers(function (l) {\n return l.isColorLayer;\n });\n\n var sumColorLayers = parentLayer.countColorLayersTextures.apply(parentLayer, _toConsumableArray(layerColors).concat([layer]));\n\n if (sumColorLayers <= getMaxColorSamplerUnitsCount()) {\n parentLayer.attach(layer);\n } else {\n reject(new Error(\"Cant add color layer \".concat(layer.id, \": the maximum layer is reached\")));\n return;\n }\n } else {\n parentLayer.attach(layer);\n }\n } else {\n if (typeof layer.update !== 'function') {\n reject(new Error('Cant add GeometryLayer: missing a update function'));\n return;\n }\n\n if (typeof layer.preUpdate !== 'function') {\n reject(new Error('Cant add GeometryLayer: missing a preUpdate function'));\n return;\n }\n\n _this2._layers.push(layer);\n }\n\n if (layer.object3d && !layer.object3d.parent && layer.object3d !== _this2.scene) {\n _this2.scene.add(layer.object3d);\n }\n\n layer.whenReady.then(function (layer) {\n _this2.notifyChange(parentLayer || layer, false);\n\n if (!_this2._frameRequesters[MAIN_LOOP_EVENTS.UPDATE_END] || !_this2._frameRequesters[MAIN_LOOP_EVENTS.UPDATE_END].includes(_this2._allLayersAreReadyCallback)) {\n _this2.addFrameRequester(MAIN_LOOP_EVENTS.UPDATE_END, _this2._allLayersAreReadyCallback);\n }\n\n resolve(layer);\n });\n });\n};\n/**\n * Removes a specific imagery layer from the current layer list. This removes layers inserted with attach().\n * @example\n * view.removeLayer('layerId');\n * @param {string} layerId The identifier\n * @return {boolean}\n */\n\n\nView.prototype.removeLayer = function (layerId) {\n var layer = this.getLayerById(layerId);\n\n if (layer) {\n var parentLayer = layer.parent; // Remove and dispose all nodes\n\n layer[\"delete\"](); // Detach layer if it's attached\n\n if (parentLayer && !parentLayer.detach(layer)) {\n throw new Error(\"Error to detach \".concat(layerId, \" from \").concat(parentLayer.id));\n } else if (parentLayer == undefined) {\n // Remove layer from viewer\n this._layers.splice(this._layers.findIndex(function (l) {\n return l.id == layerId;\n }), 1);\n }\n\n if (layer.isColorLayer) {\n // Update color layers sequence\n var imageryLayers = this.getLayers(function (l) {\n return l.isColorLayer;\n });\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = imageryLayers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var color = _step.value;\n\n if (color.sequence > layer.sequence) {\n color.sequence--;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n this.notifyChange(parentLayer || this.camera.camera3D, true);\n this.dispatchEvent({\n type: VIEW_EVENTS.LAYER_REMOVED,\n layerId: layerId\n });\n return true;\n } else {\n throw new Error(\"\".concat(layerId, \" doesn't exist\"));\n }\n};\n/**\n * Notifies the scene it needs to be updated due to changes exterior to the\n * scene itself (e.g. camera movement).\n * non-interactive events (e.g: texture loaded)\n * @param {*} changeSource\n * @param {boolean} needsRedraw - indicates if notified change requires a full scene redraw.\n */\n\n\nView.prototype.notifyChange = function () {\n var changeSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n var needsRedraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (changeSource) {\n this._changeSources.add(changeSource);\n }\n\n this.mainLoop.scheduleViewUpdate(this, needsRedraw);\n};\n/**\n * Get all layers, with an optionnal filter applied.\n * The filter method will be called with 2 args:\n * - 1st: current layer\n * - 2nd: (optional) the geometry layer to which the current layer is attached\n * @example\n * // get all layers\n * view.getLayers();\n * // get all color layers\n * view.getLayers(layer => layer.isColorLayer);\n * // get all elevation layers\n * view.getLayers(layer => layer.isElevationLayer);\n * // get all geometry layers\n * view.getLayers(layer => layer.isGeometryLayer);\n * // get one layer with id\n * view.getLayers(layer => layer.id === 'itt');\n * @param {function(Layer):boolean} filter\n * @returns {Array}\n */\n\n\nView.prototype.getLayers = function (filter) {\n var result = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = this._layers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var layer = _step2.value;\n\n if (!filter || filter(layer)) {\n result.push(layer);\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = layer.attachedLayers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var attached = _step3.value;\n\n if (!filter || filter(attached, layer)) {\n result.push(attached);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return result;\n};\n/**\n * Gets the layer by identifier.\n *\n * @param {String} layerId The layer identifier\n * @return {Layer} The layer by identifier.\n */\n\n\nView.prototype.getLayerById = function (layerId) {\n var layers = this.getLayers(function (l) {\n return l.id === layerId;\n });\n\n if (layers.length) {\n return layers[0];\n }\n};\n/**\n * @param {Layer} layer\n * @returns {GeometryLayer} the parent layer of the given layer or undefined.\n */\n\n\nView.prototype.getParentLayer = function (layer) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = this._layers[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var geometryLayer = _step4.value;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = geometryLayer.attachedLayers[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var attached = _step5.value;\n\n if (attached === layer) {\n return geometryLayer;\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5[\"return\"] != null) {\n _iterator5[\"return\"]();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4[\"return\"] != null) {\n _iterator4[\"return\"]();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n};\n/**\n * @name FrameRequester\n * @function\n *\n * @description\n * Method that will be called each time the `MainLoop` updates. This function\n * will be given as parameter the delta (in ms) between this update and the\n * previous one, and whether or not we just started to render again. This update\n * is considered as the \"next\" update if `view.notifyChange` was called during a\n * precedent update. If `view.notifyChange` has been called by something else\n * (other micro/macrotask, UI events etc...), then this update is considered as\n * being the \"first\". It can also receive optional arguments, depending on the\n * attach point of this function. Currently only `BEFORE_LAYER_UPDATE /\n * AFTER_LAYER_UPDATE` attach points provide an additional argument: the layer\n * being updated.\n *

\n *\n * This means that if a `frameRequester` function wants to animate something, it\n * should keep on calling `view.notifyChange` until its task is done.\n *

\n *\n * Implementors of `frameRequester` should keep in mind that this function will\n * be potentially called at each frame, thus care should be given about\n * performance.\n *

\n *\n * Typical frameRequesters are controls, module wanting to animate moves or UI\n * elements etc... Basically anything that would want to call\n * requestAnimationFrame.\n *\n * @param {number} dt\n * @param {boolean} updateLoopRestarted\n * @param {...*} args\n */\n\n/**\n * Add a frame requester to this view.\n *\n * FrameRequesters can activate the MainLoop update by calling view.notifyChange.\n *\n * @param {String} when - decide when the frameRequester should be called during\n * the update cycle. Can be any of {@link MAIN_LOOP_EVENTS}.\n * @param {FrameRequester} frameRequester - this function will be called at each\n * MainLoop update with the time delta between last update, or 0 if the MainLoop\n * has just been relaunched.\n */\n\n\nView.prototype.addFrameRequester = function (when, frameRequester) {\n if (typeof frameRequester !== 'function') {\n throw new Error('frameRequester must be a function');\n }\n\n if (!this._frameRequesters[when]) {\n this._frameRequesters[when] = [frameRequester];\n } else {\n this._frameRequesters[when].push(frameRequester);\n }\n};\n/**\n * Remove a frameRequester.\n * The effective removal will happen either later; at worst it'll be at\n * the beginning of the next frame.\n *\n * @param {String} when - attach point of this requester. Can be any of\n * {@link MAIN_LOOP_EVENTS}.\n * @param {FrameRequester} frameRequester\n */\n\n\nView.prototype.removeFrameRequester = function (when, frameRequester) {\n if (this._frameRequesters[when].includes(frameRequester)) {\n this._delayedFrameRequesterRemoval.push({\n when: when,\n frameRequester: frameRequester\n });\n } else {\n console.error('Invalid call to removeFrameRequester: frameRequester isn\\'t registered');\n }\n};\n\nView.prototype._executeFrameRequestersRemovals = function () {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = this._delayedFrameRequesterRemoval[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var toDelete = _step6.value;\n\n var index = this._frameRequesters[toDelete.when].indexOf(toDelete.frameRequester);\n\n if (index >= 0) {\n this._frameRequesters[toDelete.when].splice(index, 1);\n } else {\n console.warn('FrameReq has already been removed');\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6[\"return\"] != null) {\n _iterator6[\"return\"]();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n this._delayedFrameRequesterRemoval.length = 0;\n};\n/**\n * Execute a frameRequester.\n *\n * @param {String} when - attach point of this (these) requester(s). Can be any\n * of {@link MAIN_LOOP_EVENTS}.\n * @param {Number} dt - delta between this update and the previous one\n * @param {boolean} updateLoopRestarted\n * @param {...*} args - optional arguments\n */\n\n\nView.prototype.execFrameRequesters = function (when, dt, updateLoopRestarted) {\n if (!this._frameRequesters[when]) {\n return;\n }\n\n if (this._delayedFrameRequesterRemoval.length > 0) {\n this._executeFrameRequestersRemovals();\n }\n\n for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = this._frameRequesters[when][Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var frameRequester = _step7.value;\n\n if (frameRequester.update) {\n frameRequester.update(dt, updateLoopRestarted, args);\n } else {\n frameRequester(dt, updateLoopRestarted, args);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7[\"return\"] != null) {\n _iterator7[\"return\"]();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n};\n\nvar _eventCoords = new THREE.Vector2();\n/**\n * Extract view coordinates from a mouse-event / touch-event\n * @param {event} event - event can be a MouseEvent or a TouchEvent\n * @param {number} touchIdx - finger index when using a TouchEvent (default: 0)\n * @return {THREE.Vector2} - view coordinates (in pixels, 0-0 = top-left of the View)\n */\n\n\nView.prototype.eventToViewCoords = function (event) {\n var touchIdx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (event.touches === undefined || !event.touches.length) {\n return _eventCoords.set(event.offsetX, event.offsetY);\n } else {\n var br = this.mainLoop.gfxEngine.renderer.domElement.getBoundingClientRect();\n return _eventCoords.set(event.touches[touchIdx].clientX - br.x, event.touches[touchIdx].clientY - br.y);\n }\n};\n/**\n * Extract normalized coordinates (NDC) from a mouse-event / touch-event\n * @param {event} event - event can be a MouseEvent or a TouchEvent\n * @param {number} touchIdx - finger index when using a TouchEvent (default: 0)\n * @return {THREE.Vector2} - NDC coordinates (x and y are [-1, 1])\n */\n\n\nView.prototype.eventToNormalizedCoords = function (event) {\n var touchIdx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this.viewToNormalizedCoords(this.eventToViewCoords(event, touchIdx));\n};\n/**\n * Convert view coordinates to normalized coordinates (NDC)\n * @param {THREE.Vector2} viewCoords (in pixels, 0-0 = top-left of the View)\n * @return {THREE.Vector2} - NDC coordinates (x and y are [-1, 1])\n */\n\n\nView.prototype.viewToNormalizedCoords = function (viewCoords) {\n _eventCoords.x = 2 * (viewCoords.x / this.camera.width) - 1;\n _eventCoords.y = -2 * (viewCoords.y / this.camera.height) + 1;\n return _eventCoords;\n};\n/**\n * Convert NDC coordinates to view coordinates\n * @param {THREE.Vector2} ndcCoords\n * @return {THREE.Vector2} - view coordinates (in pixels, 0-0 = top-left of the View)\n */\n\n\nView.prototype.normalizedToViewCoords = function (ndcCoords) {\n _eventCoords.x = (ndcCoords.x + 1) * 0.5 * this.camera.width;\n _eventCoords.y = (ndcCoords.y - 1) * -0.5 * this.camera.height;\n return _eventCoords;\n};\n/**\n * Return objects from some layers/objects3d under the mouse in this view.\n *\n * @param {Object} mouseOrEvt - mouse position in window coordinates (0, 0 = top-left)\n * or MouseEvent or TouchEvent\n * @param {number} radius - picking will happen in a circle centered on mouseOrEvt. Radius\n * is the radius of this circle, in pixels\n * @param {...*} where - where to look for objects. Can be either: empty (= look\n * in all layers with type == 'geometry'), layer ids or layers or a mix of all\n * the above.\n * @return {Array} - an array of objects. Each element contains at least an object\n * property which is the Object3D under the cursor. Then depending on the queried\n * layer/source, there may be additionnal properties (coming from THREE.Raycaster\n * for instance).\n *\n * @example\n * view.pickObjectsAt({ x, y })\n * view.pickObjectsAt({ x, y }, 1, 'wfsBuilding')\n * view.pickObjectsAt({ x, y }, 3, 'wfsBuilding', myLayer)\n */\n\n\nView.prototype.pickObjectsAt = function (mouseOrEvt, radius) {\n var results = [];\n\n for (var _len2 = arguments.length, where = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n where[_key2 - 2] = arguments[_key2];\n }\n\n var sources = where.length == 0 ? this.getLayers(function (l) {\n return l.isGeometryLayer;\n }) : [].concat(where);\n var mouse = mouseOrEvt instanceof Event ? this.eventToViewCoords(mouseOrEvt) : mouseOrEvt;\n radius = radius || 0;\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = sources[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var source = _step8.value;\n\n if (source.isLayer || typeof source === 'string') {\n var layer = typeof source === 'string' ? this.getLayerById(source) : source;\n\n if (!layer || !layer.ready) {\n console.warn('view.pickObjectAt : layer is not ready : ', source);\n continue;\n }\n\n var parentLayer = this.getParentLayer(layer);\n\n if (!parentLayer) {\n var sp = layer.pickObjectsAt(this, mouse, radius); // warning: sp might be very large, so we can't use '...sp' (we'll hit\n // 'javascript maximum call stack size exceeded' error) nor\n // Array.prototype.push.apply(result, sp)\n\n for (var i = 0; i < sp.length; i++) {\n results.push(sp[i]);\n }\n } else {\n // raycast using parent layer object3d\n var obj = Picking.pickObjectsAt(this, mouse, radius, parentLayer.object3d); // then filter the results\n\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = obj[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var o = _step9.value;\n\n if (o.layer === layer) {\n results.push(o);\n }\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9[\"return\"] != null) {\n _iterator9[\"return\"]();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n }\n } else if (source.isObject3D) {\n Picking.pickObjectsAt(this, mouse, radius, source, results);\n } else {\n throw new Error(\"Invalid where arg (value = \".concat(where, \"). Expected layers, layer ids or Object3Ds\"));\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8[\"return\"] != null) {\n _iterator8[\"return\"]();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n\n return results;\n};\n\nView.prototype.readDepthBuffer = function (x, y, width, height) {\n var g = this.mainLoop.gfxEngine;\n var currentWireframe = this.tileLayer.wireframe;\n var currentOpacity = this.tileLayer.opacity;\n var currentVisibility = this.tileLayer.visible;\n\n if (currentWireframe) {\n this.tileLayer.wireframe = false;\n }\n\n if (currentOpacity < 1.0) {\n this.tileLayer.opacity = 1.0;\n }\n\n if (!currentVisibility) {\n this.tileLayer.visible = true;\n }\n\n var restore = this.tileLayer.level0Nodes.map(function (n) {\n return RenderMode.push(n, RenderMode.MODES.DEPTH);\n });\n var buffer = g.renderViewToBuffer({\n camera: this.camera,\n scene: this.tileLayer.object3d\n }, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n restore.forEach(function (r) {\n return r();\n });\n\n if (this.tileLayer.wireframe !== currentWireframe) {\n this.tileLayer.wireframe = currentWireframe;\n }\n\n if (this.tileLayer.opacity !== currentOpacity) {\n this.tileLayer.opacity = currentOpacity;\n }\n\n if (this.tileLayer.visible !== currentVisibility) {\n this.tileLayer.visible = currentVisibility;\n }\n\n return buffer;\n};\n\nvar matrix = new THREE.Matrix4();\nvar screen = new THREE.Vector2();\nvar ray = new THREE.Ray();\nvar direction = new THREE.Vector3();\n/**\n * Returns the world position (view's crs: referenceCrs) under view coordinates.\n * This position is computed with depth buffer.\n *\n * @param {THREE.Vector2} mouse position in view coordinates (in pixel), if it's null so it's view's center.\n * @param {THREE.Vector3} [target=THREE.Vector3()] target. the result will be copied into this Vector3. If not present a new one will be created.\n * @return {THREE.Vector3} the world position in view's crs: referenceCrs.\n */\n\nView.prototype.getPickingPositionFromDepth = function (mouse) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE.Vector3();\n\n if (!this.tileLayer || this.tileLayer.level0Nodes.length == 0 || !this.tileLayer.level0Nodes[0]) {\n target = undefined;\n return;\n }\n\n var l = this.mainLoop;\n var viewPaused = l.scheduler.commandsWaitingExecutionCount() == 0 && l.renderingState == RENDERING_PAUSED;\n var g = l.gfxEngine;\n var dim = g.getWindowSize();\n var camera = this.camera.camera3D;\n mouse = mouse || dim.clone().multiplyScalar(0.5);\n mouse.x = Math.floor(mouse.x);\n mouse.y = Math.floor(mouse.y); // Prepare state\n\n var prev = camera.layers.mask;\n camera.layers.mask = 1 << this.tileLayer.threejsLayer; // Render/Read to buffer\n\n var buffer;\n\n if (viewPaused) {\n this._fullSizeDepthBuffer = this._fullSizeDepthBuffer || this.readDepthBuffer(0, 0, dim.x, dim.y);\n var id = ((dim.y - mouse.y - 1) * dim.x + mouse.x) * 4;\n buffer = this._fullSizeDepthBuffer.slice(id, id + 4);\n } else {\n buffer = this.readDepthBuffer(mouse.x, mouse.y, 1, 1);\n }\n\n screen.x = mouse.x / dim.x * 2 - 1;\n screen.y = -(mouse.y / dim.y) * 2 + 1; // Origin\n\n ray.origin.copy(camera.position); // Direction\n\n ray.direction.set(screen.x, screen.y, 0.5); // Unproject\n\n matrix.multiplyMatrices(camera.matrixWorld, matrix.getInverse(camera.projectionMatrix));\n ray.direction.applyMatrix4(matrix);\n ray.direction.sub(ray.origin);\n direction.set(0, 0, 1.0);\n direction.applyMatrix4(matrix);\n direction.sub(ray.origin);\n var angle = direction.angleTo(ray.direction);\n var orthoZ = g.depthBufferRGBAValueToOrthoZ(buffer, camera);\n var length = orthoZ / Math.cos(angle);\n target.addVectors(camera.position, ray.direction.setLength(length));\n camera.layers.mask = prev;\n\n if (target.length() > 10000000) {\n return undefined;\n }\n\n return target;\n};\n\nexport default View;","/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\n\n\nvar _Group = function () {\n\tthis._tweens = {};\n\tthis._tweensAddedDuringUpdate = {};\n};\n\n_Group.prototype = {\n\tgetAll: function () {\n\n\t\treturn Object.keys(this._tweens).map(function (tweenId) {\n\t\t\treturn this._tweens[tweenId];\n\t\t}.bind(this));\n\n\t},\n\n\tremoveAll: function () {\n\n\t\tthis._tweens = {};\n\n\t},\n\n\tadd: function (tween) {\n\n\t\tthis._tweens[tween.getId()] = tween;\n\t\tthis._tweensAddedDuringUpdate[tween.getId()] = tween;\n\n\t},\n\n\tremove: function (tween) {\n\n\t\tdelete this._tweens[tween.getId()];\n\t\tdelete this._tweensAddedDuringUpdate[tween.getId()];\n\n\t},\n\n\tupdate: function (time, preserve) {\n\n\t\tvar tweenIds = Object.keys(this._tweens);\n\n\t\tif (tweenIds.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttime = time !== undefined ? time : TWEEN.now();\n\n\t\t// Tweens are updated in \"batches\". If you add a new tween during an update, then the\n\t\t// new tween will be updated in the next batch.\n\t\t// If you remove a tween during an update, it may or may not be updated. However,\n\t\t// if the removed tween was added during the current batch, then it will not be updated.\n\t\twhile (tweenIds.length > 0) {\n\t\t\tthis._tweensAddedDuringUpdate = {};\n\n\t\t\tfor (var i = 0; i < tweenIds.length; i++) {\n\n\t\t\t\tvar tween = this._tweens[tweenIds[i]];\n\n\t\t\t\tif (tween && tween.update(time) === false) {\n\t\t\t\t\ttween._isPlaying = false;\n\n\t\t\t\t\tif (!preserve) {\n\t\t\t\t\t\tdelete this._tweens[tweenIds[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttweenIds = Object.keys(this._tweensAddedDuringUpdate);\n\t\t}\n\n\t\treturn true;\n\n\t}\n};\n\nvar TWEEN = new _Group();\n\nTWEEN.Group = _Group;\nTWEEN._nextId = 0;\nTWEEN.nextId = function () {\n\treturn TWEEN._nextId++;\n};\n\n\n// Include a performance.now polyfill.\n// In node.js, use process.hrtime.\nif (typeof (self) === 'undefined' && typeof (process) !== 'undefined' && process.hrtime) {\n\tTWEEN.now = function () {\n\t\tvar time = process.hrtime();\n\n\t\t// Convert [seconds, nanoseconds] to milliseconds.\n\t\treturn time[0] * 1000 + time[1] / 1000000;\n\t};\n}\n// In a browser, use self.performance.now if it is available.\nelse if (typeof (self) !== 'undefined' &&\n self.performance !== undefined &&\n\t\t self.performance.now !== undefined) {\n\t// This must be bound, because directly assigning this function\n\t// leads to an invocation exception in Chrome.\n\tTWEEN.now = self.performance.now.bind(self.performance);\n}\n// Use Date.now if it is available.\nelse if (Date.now !== undefined) {\n\tTWEEN.now = Date.now;\n}\n// Otherwise, use 'new Date().getTime()'.\nelse {\n\tTWEEN.now = function () {\n\t\treturn new Date().getTime();\n\t};\n}\n\n\nTWEEN.Tween = function (object, group) {\n\tthis._object = object;\n\tthis._valuesStart = {};\n\tthis._valuesEnd = {};\n\tthis._valuesStartRepeat = {};\n\tthis._duration = 1000;\n\tthis._repeat = 0;\n\tthis._repeatDelayTime = undefined;\n\tthis._yoyo = false;\n\tthis._isPlaying = false;\n\tthis._reversed = false;\n\tthis._delayTime = 0;\n\tthis._startTime = null;\n\tthis._easingFunction = TWEEN.Easing.Linear.None;\n\tthis._interpolationFunction = TWEEN.Interpolation.Linear;\n\tthis._chainedTweens = [];\n\tthis._onStartCallback = null;\n\tthis._onStartCallbackFired = false;\n\tthis._onUpdateCallback = null;\n\tthis._onRepeatCallback = null;\n\tthis._onCompleteCallback = null;\n\tthis._onStopCallback = null;\n\tthis._group = group || TWEEN;\n\tthis._id = TWEEN.nextId();\n\n};\n\nTWEEN.Tween.prototype = {\n\tgetId: function () {\n\t\treturn this._id;\n\t},\n\n\tisPlaying: function () {\n\t\treturn this._isPlaying;\n\t},\n\n\tto: function (properties, duration) {\n\n\t\tthis._valuesEnd = Object.create(properties);\n\n\t\tif (duration !== undefined) {\n\t\t\tthis._duration = duration;\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tduration: function duration(d) {\n\t\tthis._duration = d;\n\t\treturn this;\n\t},\n\n\tstart: function (time) {\n\n\t\tthis._group.add(this);\n\n\t\tthis._isPlaying = true;\n\n\t\tthis._onStartCallbackFired = false;\n\n\t\tthis._startTime = time !== undefined ? typeof time === 'string' ? TWEEN.now() + parseFloat(time) : time : TWEEN.now();\n\t\tthis._startTime += this._delayTime;\n\n\t\tfor (var property in this._valuesEnd) {\n\n\t\t\t// Check if an Array was provided as property value\n\t\t\tif (this._valuesEnd[property] instanceof Array) {\n\n\t\t\t\tif (this._valuesEnd[property].length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Create a local copy of the Array with the start value at the front\n\t\t\t\tthis._valuesEnd[property] = [this._object[property]].concat(this._valuesEnd[property]);\n\n\t\t\t}\n\n\t\t\t// If `to()` specifies a property that doesn't exist in the source object,\n\t\t\t// we should not set that property in the object\n\t\t\tif (this._object[property] === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Save the starting value.\n\t\t\tthis._valuesStart[property] = this._object[property];\n\n\t\t\tif ((this._valuesStart[property] instanceof Array) === false) {\n\t\t\t\tthis._valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\n\t\t\t}\n\n\t\t\tthis._valuesStartRepeat[property] = this._valuesStart[property] || 0;\n\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tstop: function () {\n\n\t\tif (!this._isPlaying) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis._group.remove(this);\n\t\tthis._isPlaying = false;\n\n\t\tif (this._onStopCallback !== null) {\n\t\t\tthis._onStopCallback(this._object);\n\t\t}\n\n\t\tthis.stopChainedTweens();\n\t\treturn this;\n\n\t},\n\n\tend: function () {\n\n\t\tthis.update(Infinity);\n\t\treturn this;\n\n\t},\n\n\tstopChainedTweens: function () {\n\n\t\tfor (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n\t\t\tthis._chainedTweens[i].stop();\n\t\t}\n\n\t},\n\n\tgroup: function (group) {\n\t\tthis._group = group;\n\t\treturn this;\n\t},\n\n\tdelay: function (amount) {\n\n\t\tthis._delayTime = amount;\n\t\treturn this;\n\n\t},\n\n\trepeat: function (times) {\n\n\t\tthis._repeat = times;\n\t\treturn this;\n\n\t},\n\n\trepeatDelay: function (amount) {\n\n\t\tthis._repeatDelayTime = amount;\n\t\treturn this;\n\n\t},\n\n\tyoyo: function (yoyo) {\n\n\t\tthis._yoyo = yoyo;\n\t\treturn this;\n\n\t},\n\n\teasing: function (easingFunction) {\n\n\t\tthis._easingFunction = easingFunction;\n\t\treturn this;\n\n\t},\n\n\tinterpolation: function (interpolationFunction) {\n\n\t\tthis._interpolationFunction = interpolationFunction;\n\t\treturn this;\n\n\t},\n\n\tchain: function () {\n\n\t\tthis._chainedTweens = arguments;\n\t\treturn this;\n\n\t},\n\n\tonStart: function (callback) {\n\n\t\tthis._onStartCallback = callback;\n\t\treturn this;\n\n\t},\n\n\tonUpdate: function (callback) {\n\n\t\tthis._onUpdateCallback = callback;\n\t\treturn this;\n\n\t},\n\n\tonRepeat: function onRepeat(callback) {\n\n\t\tthis._onRepeatCallback = callback;\n\t\treturn this;\n\n\t},\n\n\tonComplete: function (callback) {\n\n\t\tthis._onCompleteCallback = callback;\n\t\treturn this;\n\n\t},\n\n\tonStop: function (callback) {\n\n\t\tthis._onStopCallback = callback;\n\t\treturn this;\n\n\t},\n\n\tupdate: function (time) {\n\n\t\tvar property;\n\t\tvar elapsed;\n\t\tvar value;\n\n\t\tif (time < this._startTime) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (this._onStartCallbackFired === false) {\n\n\t\t\tif (this._onStartCallback !== null) {\n\t\t\t\tthis._onStartCallback(this._object);\n\t\t\t}\n\n\t\t\tthis._onStartCallbackFired = true;\n\t\t}\n\n\t\telapsed = (time - this._startTime) / this._duration;\n\t\telapsed = (this._duration === 0 || elapsed > 1) ? 1 : elapsed;\n\n\t\tvalue = this._easingFunction(elapsed);\n\n\t\tfor (property in this._valuesEnd) {\n\n\t\t\t// Don't update properties that do not exist in the source object\n\t\t\tif (this._valuesStart[property] === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar start = this._valuesStart[property] || 0;\n\t\t\tvar end = this._valuesEnd[property];\n\n\t\t\tif (end instanceof Array) {\n\n\t\t\t\tthis._object[property] = this._interpolationFunction(end, value);\n\n\t\t\t} else {\n\n\t\t\t\t// Parses relative end values with start as base (e.g.: +10, -3)\n\t\t\t\tif (typeof (end) === 'string') {\n\n\t\t\t\t\tif (end.charAt(0) === '+' || end.charAt(0) === '-') {\n\t\t\t\t\t\tend = start + parseFloat(end);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tend = parseFloat(end);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Protect against non numeric properties.\n\t\t\t\tif (typeof (end) === 'number') {\n\t\t\t\t\tthis._object[property] = start + (end - start) * value;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif (this._onUpdateCallback !== null) {\n\t\t\tthis._onUpdateCallback(this._object, elapsed);\n\t\t}\n\n\t\tif (elapsed === 1) {\n\n\t\t\tif (this._repeat > 0) {\n\n\t\t\t\tif (isFinite(this._repeat)) {\n\t\t\t\t\tthis._repeat--;\n\t\t\t\t}\n\n\t\t\t\t// Reassign starting values, restart by making startTime = now\n\t\t\t\tfor (property in this._valuesStartRepeat) {\n\n\t\t\t\t\tif (typeof (this._valuesEnd[property]) === 'string') {\n\t\t\t\t\t\tthis._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this._yoyo) {\n\t\t\t\t\t\tvar tmp = this._valuesStartRepeat[property];\n\n\t\t\t\t\t\tthis._valuesStartRepeat[property] = this._valuesEnd[property];\n\t\t\t\t\t\tthis._valuesEnd[property] = tmp;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._valuesStart[property] = this._valuesStartRepeat[property];\n\n\t\t\t\t}\n\n\t\t\t\tif (this._yoyo) {\n\t\t\t\t\tthis._reversed = !this._reversed;\n\t\t\t\t}\n\n\t\t\t\tif (this._repeatDelayTime !== undefined) {\n\t\t\t\t\tthis._startTime = time + this._repeatDelayTime;\n\t\t\t\t} else {\n\t\t\t\t\tthis._startTime = time + this._delayTime;\n\t\t\t\t}\n\n\t\t\t\tif (this._onRepeatCallback !== null) {\n\t\t\t\t\tthis._onRepeatCallback(this._object);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\n\t\t\t} else {\n\n\t\t\t\tif (this._onCompleteCallback !== null) {\n\n\t\t\t\t\tthis._onCompleteCallback(this._object);\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n\t\t\t\t\t// Make the chained tweens start exactly at the time they should,\n\t\t\t\t\t// even if the `update()` method was called way past the duration of the tween\n\t\t\t\t\tthis._chainedTweens[i].start(this._startTime + this._duration);\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n};\n\n\nTWEEN.Easing = {\n\n\tLinear: {\n\n\t\tNone: function (k) {\n\n\t\t\treturn k;\n\n\t\t}\n\n\t},\n\n\tQuadratic: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn k * k;\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn k * (2 - k);\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn 0.5 * k * k;\n\t\t\t}\n\n\t\t\treturn - 0.5 * (--k * (k - 2) - 1);\n\n\t\t}\n\n\t},\n\n\tCubic: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn k * k * k;\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn --k * k * k + 1;\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn 0.5 * k * k * k;\n\t\t\t}\n\n\t\t\treturn 0.5 * ((k -= 2) * k * k + 2);\n\n\t\t}\n\n\t},\n\n\tQuartic: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn k * k * k * k;\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn 1 - (--k * k * k * k);\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn 0.5 * k * k * k * k;\n\t\t\t}\n\n\t\t\treturn - 0.5 * ((k -= 2) * k * k * k - 2);\n\n\t\t}\n\n\t},\n\n\tQuintic: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn k * k * k * k * k;\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn --k * k * k * k * k + 1;\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn 0.5 * k * k * k * k * k;\n\t\t\t}\n\n\t\t\treturn 0.5 * ((k -= 2) * k * k * k * k + 2);\n\n\t\t}\n\n\t},\n\n\tSinusoidal: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn 1 - Math.cos(k * Math.PI / 2);\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn Math.sin(k * Math.PI / 2);\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\treturn 0.5 * (1 - Math.cos(Math.PI * k));\n\n\t\t}\n\n\t},\n\n\tExponential: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn k === 0 ? 0 : Math.pow(1024, k - 1);\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn k === 1 ? 1 : 1 - Math.pow(2, - 10 * k);\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif (k === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (k === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn 0.5 * Math.pow(1024, k - 1);\n\t\t\t}\n\n\t\t\treturn 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2);\n\n\t\t}\n\n\t},\n\n\tCircular: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn 1 - Math.sqrt(1 - k * k);\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\treturn Math.sqrt(1 - (--k * k));\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn - 0.5 * (Math.sqrt(1 - k * k) - 1);\n\t\t\t}\n\n\t\t\treturn 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n\n\t\t}\n\n\t},\n\n\tElastic: {\n\n\t\tIn: function (k) {\n\n\t\t\tif (k === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (k === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\tif (k === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (k === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\treturn Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1;\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif (k === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\tif (k === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tk *= 2;\n\n\t\t\tif (k < 1) {\n\t\t\t\treturn -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);\n\t\t\t}\n\n\t\t\treturn 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1;\n\n\t\t}\n\n\t},\n\n\tBack: {\n\n\t\tIn: function (k) {\n\n\t\t\tvar s = 1.70158;\n\n\t\t\treturn k * k * ((s + 1) * k - s);\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\tvar s = 1.70158;\n\n\t\t\treturn --k * k * ((s + 1) * k + s) + 1;\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tvar s = 1.70158 * 1.525;\n\n\t\t\tif ((k *= 2) < 1) {\n\t\t\t\treturn 0.5 * (k * k * ((s + 1) * k - s));\n\t\t\t}\n\n\t\t\treturn 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n\n\t\t}\n\n\t},\n\n\tBounce: {\n\n\t\tIn: function (k) {\n\n\t\t\treturn 1 - TWEEN.Easing.Bounce.Out(1 - k);\n\n\t\t},\n\n\t\tOut: function (k) {\n\n\t\t\tif (k < (1 / 2.75)) {\n\t\t\t\treturn 7.5625 * k * k;\n\t\t\t} else if (k < (2 / 2.75)) {\n\t\t\t\treturn 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\n\t\t\t} else if (k < (2.5 / 2.75)) {\n\t\t\t\treturn 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\n\t\t\t} else {\n\t\t\t\treturn 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\n\t\t\t}\n\n\t\t},\n\n\t\tInOut: function (k) {\n\n\t\t\tif (k < 0.5) {\n\t\t\t\treturn TWEEN.Easing.Bounce.In(k * 2) * 0.5;\n\t\t\t}\n\n\t\t\treturn TWEEN.Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5;\n\n\t\t}\n\n\t}\n\n};\n\nTWEEN.Interpolation = {\n\n\tLinear: function (v, k) {\n\n\t\tvar m = v.length - 1;\n\t\tvar f = m * k;\n\t\tvar i = Math.floor(f);\n\t\tvar fn = TWEEN.Interpolation.Utils.Linear;\n\n\t\tif (k < 0) {\n\t\t\treturn fn(v[0], v[1], f);\n\t\t}\n\n\t\tif (k > 1) {\n\t\t\treturn fn(v[m], v[m - 1], m - f);\n\t\t}\n\n\t\treturn fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\n\n\t},\n\n\tBezier: function (v, k) {\n\n\t\tvar b = 0;\n\t\tvar n = v.length - 1;\n\t\tvar pw = Math.pow;\n\t\tvar bn = TWEEN.Interpolation.Utils.Bernstein;\n\n\t\tfor (var i = 0; i <= n; i++) {\n\t\t\tb += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\n\t\t}\n\n\t\treturn b;\n\n\t},\n\n\tCatmullRom: function (v, k) {\n\n\t\tvar m = v.length - 1;\n\t\tvar f = m * k;\n\t\tvar i = Math.floor(f);\n\t\tvar fn = TWEEN.Interpolation.Utils.CatmullRom;\n\n\t\tif (v[0] === v[m]) {\n\n\t\t\tif (k < 0) {\n\t\t\t\ti = Math.floor(f = m * (1 + k));\n\t\t\t}\n\n\t\t\treturn fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\n\n\t\t} else {\n\n\t\t\tif (k < 0) {\n\t\t\t\treturn v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\n\t\t\t}\n\n\t\t\tif (k > 1) {\n\t\t\t\treturn v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\n\t\t\t}\n\n\t\t\treturn fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\n\n\t\t}\n\n\t},\n\n\tUtils: {\n\n\t\tLinear: function (p0, p1, t) {\n\n\t\t\treturn (p1 - p0) * t + p0;\n\n\t\t},\n\n\t\tBernstein: function (n, i) {\n\n\t\t\tvar fc = TWEEN.Interpolation.Utils.Factorial;\n\n\t\t\treturn fc(n) / fc(i) / fc(n - i);\n\n\t\t},\n\n\t\tFactorial: (function () {\n\n\t\t\tvar a = [1];\n\n\t\t\treturn function (n) {\n\n\t\t\t\tvar s = 1;\n\n\t\t\t\tif (a[n]) {\n\t\t\t\t\treturn a[n];\n\t\t\t\t}\n\n\t\t\t\tfor (var i = n; i > 1; i--) {\n\t\t\t\t\ts *= i;\n\t\t\t\t}\n\n\t\t\t\ta[n] = s;\n\t\t\t\treturn s;\n\n\t\t\t};\n\n\t\t})(),\n\n\t\tCatmullRom: 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\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};\n\n// UMD (Universal Module Definition)\n(function (root) {\n\n\tif (typeof define === 'function' && define.amd) {\n\n\t\t// AMD\n\t\tdefine([], function () {\n\t\t\treturn TWEEN;\n\t\t});\n\n\t} else if (typeof module !== 'undefined' && typeof exports === 'object') {\n\n\t\t// Node.js\n\t\tmodule.exports = TWEEN;\n\n\t} else if (root !== undefined) {\n\n\t\t// Global variable\n\t\troot.TWEEN = TWEEN;\n\n\t}\n\n})(this);\n","var core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var MODES = {\n FINAL: 0,\n // final color\n DEPTH: 1,\n // depth buffer\n ID: 2 // id object\n\n};\n\nfunction push(object3d, mode) {\n var _mode = object3d.mode !== undefined ? object3d.mode : MODES.FINAL;\n\n if (_mode == mode) {\n return function () {};\n }\n\n var setMode = function (m) {\n return function (node) {\n var material = node.material;\n\n if (material) {\n material.mode = m;\n }\n };\n };\n\n object3d.traverse(setMode(mode));\n return function () {\n object3d.traverse(setMode(_mode));\n };\n} // Rendering mode\n// According to the rendering mode, the material's object switches\n// the mode property of the materials\n\n\nexport default {\n MODES: MODES,\n push: push\n};","/**\n * Generated On: 2015-10-5\n * Class: Projection\n * Description: Outils de projections cartographiques et de convertion\n */\nimport { Math as MathExt } from 'three';\nimport Coordinates from \"./Coordinates\";\nimport Extent from \"./Extent\";\nvar PI_OV_FOUR = Math.PI / 4;\nvar PI_OV_TWO = Math.PI / 2;\nvar INV_TWO_PI = 1.0 / (Math.PI * 2);\nvar LOG_TWO = Math.log(2.0);\n\nfunction WGS84LatitudeClamp(latitude) {\n return Math.min(84, Math.max(-86, latitude));\n}\n\nvar dim = {\n x: 0,\n y: 0\n};\nvar center = new Coordinates('EPSG:4326', 0, 0, 0);\nvar Projection = {\n /**\n * Convert latitude to y coordinate in TileMatrixSet\n * @param {number} latitude - latitude in degrees\n * @return {number}\n */\n WGS84ToY: function WGS84ToY(latitude) {\n return 0.5 - Math.log(Math.tan(PI_OV_FOUR + MathExt.degToRad(latitude) * 0.5)) * INV_TWO_PI;\n },\n\n /**\n * Convert from y coordinate in TileMatrixSet to WGS84 latitude\n * @param {number} y - coords in TileMatrixSet\n * @return {number} - latitude in degrees\n */\n YToWGS84: function YToWGS84(y) {\n return MathExt.radToDeg(2 * (Math.atan(Math.exp(-(y - 0.5) / INV_TWO_PI)) - PI_OV_FOUR));\n },\n getCoordWMTS_WGS84: function getCoordWMTS_WGS84(tileCoord, bbox, tileMatrixSet) {\n // TODO: PM, WGS84G are hard-coded reference to IGN's TileMatrixSet\n if (tileMatrixSet === 'PM') {\n return WMTS_WGS84ToWMTS_PM(tileCoord, bbox);\n } else if (tileMatrixSet === 'WGS84G') {\n return [tileCoord.clone()];\n } else {\n throw new Error(\"Unsupported TileMatrixSet '\".concat(tileMatrixSet, \"'\"));\n }\n },\n WGS84toWMTS: function WGS84toWMTS(bbox) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Extent('WMTS:WGS84G', 0, 0, 0);\n bbox.dimensions(dim);\n var zoom = Math.floor(Math.log(Math.PI / MathExt.degToRad(dim.y)) / LOG_TWO + 0.5);\n var nY = Math.pow(2, zoom);\n var uX = Math.PI * 2 / (2 * nY);\n var uY = Math.PI / nY;\n bbox.center(center);\n var col = Math.floor((Math.PI + MathExt.degToRad(center.longitude)) / uX);\n var row = Math.floor(nY - (PI_OV_TWO + MathExt.degToRad(center.latitude)) / uY);\n return target.set(zoom, row, col);\n },\n UnitaryToLongitudeWGS84: function UnitaryToLongitudeWGS84(u, bbox) {\n bbox.dimensions(dim);\n return bbox.west + u * dim.x;\n },\n UnitaryToLatitudeWGS84: function UnitaryToLatitudeWGS84(v, bbox) {\n bbox.dimensions(dim);\n return bbox.south + v * dim.y;\n }\n};\n\nfunction WMTS_WGS84ToWMTS_PM(cWMTS, bbox) {\n var wmtsBox = [];\n var level = cWMTS.zoom + 1;\n var nbRow = Math.pow(2, level);\n var sizeRow = 1.0 / nbRow;\n var yMin = Projection.WGS84ToY(WGS84LatitudeClamp(bbox.north));\n var yMax = Projection.WGS84ToY(WGS84LatitudeClamp(bbox.south));\n var maxRow;\n var minRow = Math.floor(yMin / sizeRow); // ]N; N+1] => N\n\n maxRow = Math.ceil(yMax / sizeRow) - 1; // make sure we don't exceed boundaries\n\n maxRow = Math.min(maxRow, nbRow - 1);\n var minCol = cWMTS.col;\n\n for (var r = maxRow; r >= minRow; r--) {\n for (var c = minCol; c <= minCol; c++) {\n wmtsBox.push(new Extent('WMTS:PM', level, r, c));\n }\n }\n\n return wmtsBox;\n}\n\nexport default Projection;","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","import Coordinates from \"../Core/Geographic/Coordinates\";\nimport Feature, { FeatureCollection, FEATURE_TYPES } from \"../Core/Feature\";\nimport Style from \"../Core/Style\";\n\nfunction readCRS(json) {\n if (json.crs) {\n if (json.crs.type.toLowerCase() == 'epsg') {\n return \"EPSG:\".concat(json.crs.properties.code);\n } else if (json.crs.type.toLowerCase() == 'name') {\n var epsgIdx = json.crs.properties.name.toLowerCase().indexOf('epsg:');\n\n if (epsgIdx >= 0) {\n // authority:version:code => EPSG:[...]:code\n var codeStart = json.crs.properties.name.indexOf(':', epsgIdx + 5);\n\n if (codeStart > 0) {\n return \"EPSG:\".concat(json.crs.properties.name.substr(codeStart + 1));\n }\n }\n }\n\n throw new Error(\"Unsupported CRS type '\".concat(json.crs, \"'\"));\n } // assume default crs\n\n\n return 'EPSG:4326';\n}\n\nvar coord = new Coordinates('EPSG:4978', 0, 0, 0); // filter with the first point\n\nvar firstPtIsOut = function (extent, aCoords, crs) {\n coord.crs = crs;\n coord.setFromArray(aCoords[0]);\n return !extent.isPointInside(coord);\n};\n\nvar toFeature = {\n populateGeometry: function populateGeometry(crsIn, coordinates, geometry) {\n var setAltitude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n geometry.startSubGeometry(coordinates.length);\n var useAlti = setAltitude && typeof coordinates[0][2] == 'number'; // coordinates is a list of pair [[x1, y1], [x2, y2], ..., [xn, yn]]\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = coordinates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var pair = _step.value;\n coord.crs = crsIn;\n coord.setFromValues(pair[0], pair[1], useAlti ? pair[2] : 0);\n geometry.pushCoordinates(coord);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n geometry.updateExtent();\n },\n \"default\": function _default(feature, crsIn, coordsIn, filteringExtent, setAltitude, properties) {\n if (filteringExtent && firstPtIsOut(filteringExtent, coordsIn, crsIn)) {\n return;\n }\n\n var geometry = feature.bindNewGeometry();\n geometry.properties = properties;\n geometry.properties.style = new Style().setFromGeojsonProperties(properties, feature.type);\n this.populateGeometry(crsIn, coordsIn, geometry, setAltitude);\n feature.updateExtent(geometry);\n },\n polygon: function polygon(feature, crsIn, coordsIn, filteringExtent, setAltitude, properties) {\n // filtering\n if (filteringExtent && firstPtIsOut(filteringExtent, coordsIn[0], crsIn)) {\n return;\n }\n\n var geometry = feature.bindNewGeometry();\n geometry.properties = properties;\n geometry.properties.style = new Style().setFromGeojsonProperties(properties, feature.type); // Then read contour and holes\n\n for (var i = 0; i < coordsIn.length; i++) {\n this.populateGeometry(crsIn, coordsIn[i], geometry, setAltitude);\n }\n\n feature.updateExtent(geometry);\n },\n multi: function multi(type, feature, crsIn, coordsIn, filteringExtent, setAltitude, properties) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = coordsIn[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var coords = _step2.value;\n this[type](feature, crsIn, coords, filteringExtent, setAltitude, properties);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n};\n\nfunction coordinatesToFeature(type, feature, crsIn, coordinates, filteringExtent, setAltitude, properties) {\n if (coordinates.length == 0) {\n return;\n }\n\n switch (type) {\n case 'point':\n case 'linestring':\n return toFeature[\"default\"](feature, crsIn, coordinates, filteringExtent, setAltitude, properties);\n\n case 'multipoint':\n case 'multilinestring':\n return toFeature.multi('default', feature, crsIn, coordinates, filteringExtent, setAltitude, properties);\n\n case 'polygon':\n return toFeature.polygon(feature, crsIn, coordinates, filteringExtent, setAltitude, properties);\n\n case 'multipolygon':\n return toFeature.multi('polygon', feature, crsIn, coordinates, filteringExtent, setAltitude, properties);\n\n case 'geometrycollection':\n default:\n throw new Error(\"Unhandled geojson type \".concat(feature.type));\n }\n}\n\nfunction toFeatureType(jsonType) {\n switch (jsonType) {\n case 'point':\n case 'multipoint':\n return FEATURE_TYPES.POINT;\n\n case 'linestring':\n case 'multilinestring':\n return FEATURE_TYPES.LINE;\n\n case 'polygon':\n case 'multipolygon':\n return FEATURE_TYPES.POLYGON;\n\n case 'geometrycollection':\n default:\n throw new Error(\"Unhandled geometry type \".concat(jsonType));\n }\n}\n\nvar keyProperties = ['type', 'geometry', 'properties'];\n\nfunction jsonFeatureToFeature(crsIn, crsOut, json, filteringExtent, options, featureCollection) {\n if (options.filter && !options.filter(json.properties, json.geometry)) {\n return;\n }\n\n var jsonType = json.geometry.type.toLowerCase();\n var featureType = toFeatureType(jsonType);\n var feature = options.mergeFeatures ? featureCollection.getFeatureByType(featureType) : new Feature(featureType, crsOut, options);\n var geometryCount = feature.geometryCount;\n var coordinates = jsonType != 'point' ? json.geometry.coordinates : [json.geometry.coordinates];\n var setAltitude = !options.overrideAltitudeInToZero && options.withAltitude;\n var properties = json.properties || {}; // copy other properties\n\n for (var _i = 0, _Object$keys = Object.keys(json); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if (!keyProperties.includes(key.toLowerCase())) {\n properties[key] = json[key];\n }\n }\n\n coordinatesToFeature(jsonType, feature, crsIn, coordinates, filteringExtent, setAltitude, properties);\n\n if (feature.geometryCount == geometryCount) {\n return;\n }\n\n return feature;\n}\n\nfunction jsonFeaturesToFeatures(crsIn, crsOut, jsonFeatures, filteringExtent, options) {\n var features = new FeatureCollection(crsOut, options);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = jsonFeatures[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var jsonFeature = _step3.value;\n var feature = jsonFeatureToFeature(crsIn, crsOut, jsonFeature, filteringExtent, options, features);\n\n if (feature && !options.mergeFeatures) {\n features.pushFeature(feature);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n if (options.mergeFeatures) {\n features.removeEmptyFeature();\n features.updateExtent();\n }\n\n return features;\n}\n/**\n * The GeoJsonParser module provide a [parse]{@link module:GeoJsonParser.parse}\n * method that takes a GeoJSON in and gives an object formatted for iTowns\n * containing all necessary informations to display this GeoJSON.\n *\n * @module GeoJsonParser\n */\n\n\nexport default {\n /**\n * @typedef {Object} GeoJsonParserOptions\n * @property {string} crsOut - The CRS to convert the input coordinates\n * to.\n * @property {string} crsIn - Override the data CRS.\n * @property {Extent} [filteringExtent] - Optional filter to reject\n * features outside of this extent.\n * @property {boolean} [buildExtent=false] - If true the geometry will\n * have an extent property containing the area covered by the geom\n * @property {function} [filter] - Filter function to remove features\n * @property {boolean} [mergeFeatures=true] - If true all geometries are merged by type and multi-type\n * @property {boolean} [withNormal=true] - If true each coordinate normal is computed\n * @property {boolean} [withAltitude=true] - If true each coordinate altitude is kept\n * @property {boolean} [overrideAltitudeInToZero=false] - If true, the altitude of the source data isn't taken into account for 3D geometry convertions.\n * the altitude will be override to 0. This can be useful if you don't have a DEM or provide a new one when converting (with Layer.convert).\n */\n\n /**\n * Parse a GeoJSON file content and return a [FeatureCollection]{@link FeatureCollection}.\n *\n * @param {string} json - The GeoJSON file content to parse.\n * @param {GeoJsonParser~GeoJsonParserOptions} options - Options controlling\n * the parsing.\n *\n * @return {Promise} A promise resolving with a [FeatureCollection]{@link FeatureCollection}.\n */\n parse: function parse(json) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var crsOut = options.crsOut;\n var filteringExtent = options.filteringExtent;\n\n if (typeof json === 'string') {\n json = JSON.parse(json);\n }\n\n options.crsIn = options.crsIn || readCRS(json);\n options.mergeFeatures = options.mergeFeatures == undefined ? true : options.mergeFeatures;\n options.withNormal = options.withNormal == undefined ? true : options.withNormal;\n options.withAltitude = options.withAltitude == undefined ? true : options.withAltitude;\n\n switch (json.type.toLowerCase()) {\n case 'featurecollection':\n return Promise.resolve(jsonFeaturesToFeatures(options.crsIn, crsOut, json.features, filteringExtent, options));\n\n case 'feature':\n return Promise.resolve(jsonFeaturesToFeatures(options.crsIn, crsOut, [json], filteringExtent, options));\n\n default:\n throw new Error(\"Unsupported GeoJSON type: '\".concat(json.type));\n }\n }\n};","import * as THREE from 'three';\nimport utf8Decoder from \"../Utils/Utf8Decoder\";\nimport BatchTableParser from \"./BatchTableParser\";\nexport default {\n /** @module PntsParser */\n\n /** Parse pnts buffer and extract THREE.Points and batch table\n * @function parse\n * @param {ArrayBuffer} buffer - the pnts buffer.\n * @return {Promise} - a promise that resolves with an object containig a THREE.Points (point) and a batch table (batchTable).\n *\n */\n parse: function (buffer) {\n if (!buffer) {\n throw new Error('No array buffer provided.');\n }\n\n var view = new DataView(buffer);\n var byteOffset = 0;\n var pntsHeader = {};\n var batchTable = {};\n var point = {}; // Magic type is unsigned char [4]\n\n pntsHeader.magic = utf8Decoder.decode(new Uint8Array(buffer, byteOffset, 4));\n byteOffset += 4;\n\n if (pntsHeader.magic) {\n // Version, byteLength, batchTableJSONByteLength, batchTableBinaryByteLength and batchTable types are uint32\n pntsHeader.version = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n pntsHeader.byteLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n pntsHeader.FTJSONLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n pntsHeader.FTBinaryLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n pntsHeader.BTJSONLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n pntsHeader.BTBinaryLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT; // binary table\n\n if (pntsHeader.FTBinaryLength > 0) {\n point = parseFeatureBinary(buffer, byteOffset, pntsHeader.FTJSONLength);\n } // batch table\n\n\n if (pntsHeader.BTJSONLength > 0) {\n var sizeBegin = 28 + pntsHeader.FTJSONLength + pntsHeader.FTBinaryLength;\n batchTable = BatchTableParser.parse(buffer.slice(sizeBegin, pntsHeader.BTJSONLength + sizeBegin));\n }\n\n var pnts = {\n point: point,\n batchTable: batchTable\n };\n return Promise.resolve(pnts);\n } else {\n throw new Error('Invalid pnts file.');\n }\n }\n};\n\nfunction parseFeatureBinary(array, byteOffset, FTJSONLength) {\n // Init geometry\n var geometry = new THREE.BufferGeometry(); // init Array feature binary\n\n var subArrayJson = utf8Decoder.decode(new Uint8Array(array, byteOffset, FTJSONLength));\n var parseJSON = JSON.parse(subArrayJson);\n var lengthFeature;\n\n if (parseJSON.POINTS_LENGTH) {\n lengthFeature = parseJSON.POINTS_LENGTH;\n }\n\n if (parseJSON.POSITION) {\n var byteOffsetPos = parseJSON.POSITION.byteOffset + subArrayJson.length + byteOffset;\n var positionArray = new Float32Array(array, byteOffsetPos, lengthFeature * 3);\n geometry.addAttribute('position', new THREE.BufferAttribute(positionArray, 3));\n }\n\n if (parseJSON.RGB) {\n var byteOffsetCol = parseJSON.RGB.byteOffset + subArrayJson.length + byteOffset;\n var colorArray = new Uint8Array(array, byteOffsetCol, lengthFeature * 3);\n geometry.addAttribute('color', new THREE.BufferAttribute(colorArray, 3, true));\n }\n\n if (parseJSON.POSITION_QUANTIZED) {\n throw new Error('For pnts loader, POSITION_QUANTIZED: not yet managed');\n }\n\n if (parseJSON.RGBA) {\n throw new Error('For pnts loader, RGBA: not yet managed');\n }\n\n if (parseJSON.RGB565) {\n throw new Error('For pnts loader, RGB565: not yet managed');\n }\n\n if (parseJSON.NORMAL) {\n throw new Error('For pnts loader, NORMAL: not yet managed');\n }\n\n if (parseJSON.NORMAL_OCT16P) {\n throw new Error('For pnts loader, NORMAL_OCT16P: not yet managed');\n }\n\n if (parseJSON.BATCH_ID) {\n throw new Error('For pnts loader, BATCH_ID: not yet managed');\n } // Add RTC feature\n\n\n var offset = parseJSON.RTC_CENTER ? new THREE.Vector3().fromArray(parseJSON.RTC_CENTER) : undefined;\n return {\n geometry: geometry,\n offset: offset\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport B3dmParser from \"../Parser/B3dmParser\";\nimport PntsParser from \"../Parser/PntsParser\";\nimport Fetcher from \"./Fetcher\";\nimport OBB from \"../Renderer/OBB\";\nimport Extent from \"../Core/Geographic/Extent\";\nimport { pre3dTilesUpdate, process3dTilesNode, init3dTilesLayer } from \"../Process/3dTilesProcessing\";\nimport utf8Decoder from \"../Utils/Utf8Decoder\";\n/** @classdesc\n * Class mapping 3D Tiles extensions names to their associated parsing methods.\n */\n\nvar $3DTilesExtensions =\n/*#__PURE__*/\nfunction () {\n function $3DTilesExtensions() {\n _classCallCheck(this, $3DTilesExtensions);\n\n this.extensionsMap = new Map();\n }\n /**\n * Register a 3D Tiles extension: Maps an extension name to its parser\n * @param {String} extensionName - Name of the extension\n * @param {Function} parser - The function for parsing the extension\n */\n\n\n _createClass($3DTilesExtensions, [{\n key: \"registerExtension\",\n value: function registerExtension(extensionName, parser) {\n this.extensionsMap.set(extensionName, parser);\n }\n /**\n * Get the parser of a given extension\n * @param {String} extensionName - Name of the extension\n * @returns {Function} - The function for parsing the extension\n */\n\n }, {\n key: \"getParser\",\n value: function getParser(extensionName) {\n return this.extensionsMap.get(extensionName);\n }\n /**\n * Test if an extension is registered\n * @param {String} extensionName - Name of the extension\n * @returns {boolean} - true if the extension is registered and false\n * otherwise\n */\n\n }, {\n key: \"isExtensionRegistered\",\n value: function isExtensionRegistered(extensionName) {\n return this.extensionsMap.has(extensionName);\n }\n }]);\n\n return $3DTilesExtensions;\n}();\n/**\n * Global object holding 3D Tiles extensions. Extensions must be registered\n * with their parser by the client.\n * @type {$3DTilesExtensions}\n */\n\n\nexport var $3dTilesExtensions = new $3DTilesExtensions();\n/** @classdesc\n * Abstract class for 3DTiles Extensions. Extensions implemented by the user\n * must inherit from this class. Example of extension extending this class:\n * [BatchTableHierarchyExtension]{@link BatchTableHierarchyExtension}\n */\n\nexport var $3dTilesAbstractExtension =\n/*#__PURE__*/\nfunction () {\n function $3dTilesAbstractExtension() {\n _classCallCheck(this, $3dTilesAbstractExtension);\n\n if (this.constructor === $3dTilesAbstractExtension) {\n throw new TypeError('Abstract class \"AbstractExtension\" ' + 'cannot be instantiated directly');\n }\n }\n /**\n * Method to get the displayable information related to a given feature\n * from an extension. All extensions must implement it (event if it\n * returns an empty object).\n * @param {integer} featureId - id of the feature\n */\n // disable warning saying that we don't use 'this' in this method\n // eslint-disable-next-line\n\n\n _createClass($3dTilesAbstractExtension, [{\n key: \"getPickingInfo\",\n value: function getPickingInfo() {\n throw new Error('You must implement getPickingInfo function ' + 'in your extension');\n }\n }]);\n\n return $3dTilesAbstractExtension;\n}();\nexport function $3dTilesIndex(tileset, baseURL) {\n var counter = 1;\n this.index = {};\n var inverseTileTransform = new THREE.Matrix4();\n\n var recurse = function (node, baseURL, parent) {\n // compute transform (will become Object3D.matrix when the object is downloaded)\n node.transform = node.transform ? new THREE.Matrix4().fromArray(node.transform) : undefined; // The only reason to store _worldFromLocalTransform is because of extendTileset where we need the\n // transform chain for one node.\n\n node._worldFromLocalTransform = node.transform;\n\n if (parent && parent._worldFromLocalTransform) {\n if (node.transform) {\n node._worldFromLocalTransform = new THREE.Matrix4().multiplyMatrices(parent._worldFromLocalTransform, node.transform);\n } else {\n node._worldFromLocalTransform = parent._worldFromLocalTransform;\n }\n } // getBox only use inverseTileTransform for volume.region so let's not\n // compute the inverse matrix each time\n // Assumes that node.boundingVolume is defined if node.viewerRequestVolume is undefined\n\n\n if (node.viewerRequestVolume && node.viewerRequestVolume.region || node.boundingVolume.region) {\n if (node._worldFromLocalTransform) {\n inverseTileTransform.getInverse(node._worldFromLocalTransform);\n } else {\n inverseTileTransform.identity();\n }\n }\n\n node.viewerRequestVolume = node.viewerRequestVolume ? getBox(node.viewerRequestVolume, inverseTileTransform) : undefined;\n node.boundingVolume = getBox(node.boundingVolume, inverseTileTransform);\n this.index[counter] = node;\n node.tileId = counter;\n node.baseURL = baseURL;\n counter++;\n\n if (node.children) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = node.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var child = _step.value;\n recurse(child, baseURL, node);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }.bind(this);\n\n recurse(tileset.root, baseURL);\n\n this.extendTileset = function (tileset, nodeId, baseURL) {\n recurse(tileset.root, baseURL, this.index[nodeId]);\n this.index[nodeId].children = [tileset.root];\n this.index[nodeId].isTileset = true;\n };\n}\nexport function getObjectToUpdateForAttachedLayers(meta) {\n if (meta.content) {\n var result = [];\n meta.content.traverse(function (obj) {\n if (obj.isObject3D && obj.material && obj.layer == meta.layer) {\n result.push(obj);\n }\n });\n var p = meta.parent;\n\n if (p && p.content) {\n return {\n elements: result,\n parent: p.content\n };\n } else {\n return {\n elements: result\n };\n }\n }\n}\n\nfunction preprocessDataLayer(layer, view, scheduler) {\n layer.preUpdate = layer.preUpdate || pre3dTilesUpdate;\n layer.update = layer.update || process3dTilesNode();\n layer.sseThreshold = layer.sseThreshold || 16;\n layer.cleanupDelay = layer.cleanupDelay || 1000; // override the default method, since updated objects are metadata in this case\n\n layer.getObjectToUpdateForAttachedLayers = getObjectToUpdateForAttachedLayers;\n layer._cleanableTiles = [];\n return Fetcher.json(layer.url, layer.networkOptions).then(function (tileset) {\n layer.tileset = tileset; // Verify that extensions of the tileset have been registered to\n // $3dTilesExtensions\n\n if (tileset.extensionsUsed) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = tileset.extensionsUsed[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var extensionUsed = _step2.value;\n\n // if current extension is not registered\n if (!$3dTilesExtensions.isExtensionRegistered(extensionUsed)) {\n if (tileset.extensionsRequired && tileset.extensionsRequired.includes(extensionUsed)) {\n console.error(\"3D Tiles tileset required extension \\\"\".concat(extensionUsed, \"\\\" must be registered to $3dTilesExtensions global object of iTowns to be parsed and used.\"));\n } else {\n console.warn(\"3D Tiles tileset used extension \\\"\".concat(extensionUsed, \"\\\" must be registered to $3dTilesExtensions global object of iTowns to be parsed and used.\"));\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n var urlPrefix = layer.url.slice(0, layer.url.lastIndexOf('/') + 1);\n layer.tileIndex = new $3dTilesIndex(tileset, urlPrefix);\n layer.asset = tileset.asset;\n return init3dTilesLayer(view, scheduler, layer, tileset.root);\n });\n}\n\nvar extent = new Extent('EPSG:4326', 0, 0, 0, 0);\n\nfunction getBox(volume, inverseTileTransform) {\n if (volume.region) {\n var region = volume.region;\n extent.set(THREE.Math.radToDeg(region[0]), THREE.Math.radToDeg(region[2]), THREE.Math.radToDeg(region[1]), THREE.Math.radToDeg(region[3]));\n var box = new OBB().setFromExtent(extent); // at this point box.matrix = box.epsg4978_from_local, so\n // we transform it in parent_from_local by using parent's epsg4978_from_local\n // which from our point of view is epsg4978_from_parent.\n // box.matrix = (epsg4978_from_parent ^ -1) * epsg4978_from_local\n // = parent_from_epsg4978 * epsg4978_from_local\n // = parent_from_local\n\n box.matrix.premultiply(inverseTileTransform); // update position, rotation and scale\n\n box.matrix.decompose(box.position, box.quaternion, box.scale);\n return {\n region: box\n };\n } else if (volume.box) {\n // TODO: only works for axis aligned boxes\n var _box = volume.box; // box[0], box[1], box[2] = center of the box\n // box[3], box[4], box[5] = x axis direction and half-length\n // box[6], box[7], box[8] = y axis direction and half-length\n // box[9], box[10], box[11] = z axis direction and half-length\n\n var center = new THREE.Vector3(_box[0], _box[1], _box[2]);\n var w = center.x - _box[3];\n var e = center.x + _box[3];\n var s = center.y - _box[7];\n var n = center.y + _box[7];\n var b = center.z - _box[11];\n var t = center.z + _box[11];\n return {\n box: new THREE.Box3(new THREE.Vector3(w, s, b), new THREE.Vector3(e, n, t))\n };\n } else if (volume.sphere) {\n var sphere = new THREE.Sphere(new THREE.Vector3(volume.sphere[0], volume.sphere[1], volume.sphere[2]), volume.sphere[3]);\n return {\n sphere: sphere\n };\n }\n}\n\nfunction b3dmToMesh(data, layer, url) {\n var urlBase = THREE.LoaderUtils.extractUrlBase(url);\n var options = {\n gltfUpAxis: layer.asset.gltfUpAxis,\n urlBase: urlBase,\n overrideMaterials: layer.overrideMaterials,\n doNotPatchMaterial: layer.doNotPatchMaterial,\n opacity: layer.opacity\n };\n return B3dmParser.parse(data, options).then(function (result) {\n var batchTable = result.batchTable;\n var object3d = result.gltf.scene;\n return {\n batchTable: batchTable,\n object3d: object3d\n };\n });\n}\n\nfunction pntsParse(data, layer) {\n return PntsParser.parse(data).then(function (result) {\n var material = layer.material ? layer.material.clone() : new THREE.PointsMaterial({\n size: 0.05,\n vertexColors: THREE.VertexColors\n }); // creation points with geometry and material\n\n var points = new THREE.Points(result.point.geometry, material);\n\n if (result.point.offset) {\n points.position.copy(result.point.offset);\n }\n\n return {\n object3d: points\n };\n });\n}\n\nexport function configureTile(tile, layer, metadata, parent) {\n tile.frustumCulled = false;\n tile.layer = layer; // parse metadata\n\n if (metadata.transform) {\n tile.applyMatrix(metadata.transform);\n }\n\n tile.geometricError = metadata.geometricError;\n tile.tileId = metadata.tileId;\n\n if (metadata.refine) {\n tile.additiveRefinement = metadata.refine.toUpperCase() === 'ADD';\n } else {\n tile.additiveRefinement = parent ? parent.additiveRefinement : false;\n }\n\n tile.viewerRequestVolume = metadata.viewerRequestVolume;\n tile.boundingVolume = metadata.boundingVolume;\n\n if (tile.boundingVolume.region) {\n tile.add(tile.boundingVolume.region);\n }\n\n tile.updateMatrixWorld();\n}\n\nfunction executeCommand(command) {\n var layer = command.layer;\n var metadata = command.metadata;\n var tile = new THREE.Object3D();\n configureTile(tile, layer, metadata, command.requester); // Patch for supporting 3D Tiles pre 1.0 (metadata.content.url) and 1.0\n // (metadata.content.uri)\n\n var path = metadata.content && (metadata.content.url || metadata.content.uri);\n\n var setLayer = function (obj) {\n obj.layers.set(layer.threejsLayer);\n obj.userData.metadata = metadata;\n obj.layer = layer;\n\n if (obj.material) {\n obj.material.transparent = layer.opacity < 1.0;\n obj.material.opacity = layer.opacity;\n obj.material.wireframe = layer.wireframe;\n }\n };\n\n if (path) {\n // Check if we have relative or absolute url (with tileset's lopocs for example)\n var url = path.startsWith('http') ? path : metadata.baseURL + path;\n var supportedFormats = {\n b3dm: b3dmToMesh,\n pnts: pntsParse\n };\n return Fetcher.arrayBuffer(url, layer.networkOptions).then(function (result) {\n if (result !== undefined) {\n var func;\n var magic = utf8Decoder.decode(new Uint8Array(result, 0, 4));\n\n if (magic[0] === '{') {\n result = JSON.parse(utf8Decoder.decode(new Uint8Array(result)));\n var newPrefix = url.slice(0, url.lastIndexOf('/') + 1);\n layer.tileIndex.extendTileset(result, metadata.tileId, newPrefix);\n } else if (magic == 'b3dm') {\n func = supportedFormats.b3dm;\n } else if (magic == 'pnts') {\n func = supportedFormats.pnts;\n } else {\n return Promise.reject(\"Unsupported magic code \".concat(magic));\n }\n\n if (func) {\n // TODO: request should be delayed if there is a viewerRequestVolume\n return func(result, layer, url).then(function (content) {\n tile.content = content.object3d;\n\n if (content.batchTable) {\n tile.batchTable = content.batchTable;\n }\n\n tile.add(content.object3d);\n tile.traverse(setLayer);\n return tile;\n });\n }\n }\n\n tile.traverse(setLayer);\n return tile;\n });\n } else {\n tile.traverse(setLayer);\n return Promise.resolve(tile);\n }\n}\n\nexport default {\n preprocessDataLayer: preprocessDataLayer,\n executeCommand: executeCommand\n};","import * as THREE from 'three';\nimport RenderMode from \"../Renderer/RenderMode\";\nimport { unpack1K } from \"../Renderer/LayeredMaterial\";\n\nfunction hideEverythingElse(view) {\n var threejsLayer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // We want to render only 'object' and its hierarchy.\n // So if it uses threejsLayer defined -> force it on the camera\n // (or use the default one: 0)\n var prev = view.camera.camera3D.layers.mask;\n view.camera.camera3D.layers.mask = 1 << threejsLayer;\n return function () {\n view.camera.camera3D.layers.mask = prev;\n };\n}\n\nvar depthRGBA = new THREE.Vector4(); // TileMesh picking support function\n\nfunction screenCoordsToNodeId(view, tileLayer, viewCoords) {\n var radius = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var dim = view.mainLoop.gfxEngine.getWindowSize();\n viewCoords = viewCoords || new THREE.Vector2(Math.floor(dim.x / 2), Math.floor(dim.y / 2));\n var restore = tileLayer.level0Nodes.map(function (n) {\n return RenderMode.push(n, RenderMode.MODES.ID);\n });\n var undoHide = hideEverythingElse(view, tileLayer.object3d, tileLayer.threejsLayer);\n var buffer = view.mainLoop.gfxEngine.renderViewToBuffer({\n camera: view.camera,\n scene: tileLayer.object3d\n }, {\n x: viewCoords.x - radius,\n y: viewCoords.y - radius,\n width: 1 + radius * 2,\n height: 1 + radius * 2\n });\n undoHide();\n restore.forEach(function (r) {\n return r();\n });\n var ids = [];\n traversePickingCircle(radius, function (x, y) {\n var idx = (y * 2 * radius + x) * 4;\n var data = buffer.slice(idx, idx + 4);\n depthRGBA.fromArray(data).divideScalar(255.0);\n var unpack = unpack1K(depthRGBA, Math.pow(256, 3));\n\n var _id = Math.round(unpack);\n\n if (!ids.includes(_id)) {\n ids.push(_id);\n }\n });\n return ids;\n}\n\nfunction traversePickingCircle(radius, callback) {\n // iterate on radius so we get closer to the mouse\n // results first.\n // Result traversal order for radius=2\n // --3--\n // -323-\n // 32123\n // -323\n // --3--\n var prevSq;\n\n for (var r = 0; r <= radius; r++) {\n var sq = r * r;\n\n for (var x = -r; x <= r; x++) {\n var sqx = x * x;\n\n for (var y = -r; y <= r; y++) {\n var dist = sqx + y * y; // skip if too far\n\n if (dist > sq) {\n continue;\n } // skip if belongs to previous\n\n\n if (dist <= prevSq) {\n continue;\n }\n\n if (callback(x, y) === false) {\n return;\n }\n }\n }\n\n prevSq = sq;\n }\n}\n\nfunction findLayerInParent(obj) {\n if (obj.layer) {\n return obj.layer;\n }\n\n if (obj.parent) {\n return findLayerInParent(obj.parent);\n }\n}\n\nvar raycaster = new THREE.Raycaster();\n/**\n * @module Picking\n *\n * Implement various picking methods for geometry layers.\n * These methods are not meant to be used directly, see View.pickObjectsAt\n * instead.\n *\n * All the methods here takes the same parameters:\n * - the View instance\n * - view coordinates (in pixels) where picking should be done\n * - radius (in pixels) of the picking circle\n * - layer: the geometry layer used for picking\n */\n\nexport default {\n pickTilesAt: function pickTilesAt(_view, viewCoords, radius, layer) {\n var results = [];\n\n var _ids = screenCoordsToNodeId(_view, layer, viewCoords, radius);\n\n var extractResult = function (node) {\n if (_ids.includes(node.id) && node.isTileMesh) {\n results.push({\n object: node,\n layer: layer\n });\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = layer.level0Nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var n = _step.value;\n n.traverse(extractResult);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return results;\n },\n pickPointsAt: function pickPointsAt(view, viewCoords, radius, layer) {\n if (!layer.root) {\n return;\n } // enable picking mode for points material\n\n\n layer.object3d.traverse(function (o) {\n if (o.isPoints && o.baseId) {\n o.material.enablePicking(true);\n }\n });\n var undoHide = hideEverythingElse(view, layer.object3d, layer.threejsLayer); // render 1 pixel\n // TODO: support more than 1 pixel selection\n\n var buffer = view.mainLoop.gfxEngine.renderViewToBuffer({\n camera: view.camera,\n scene: layer.object3d\n }, {\n x: viewCoords.x - radius,\n y: viewCoords.y - radius,\n width: 1 + radius * 2,\n height: 1 + radius * 2\n });\n undoHide();\n var candidates = [];\n traversePickingCircle(radius, function (x, y) {\n var idx = (y * 2 * radius + x) * 4;\n var data = buffer.slice(idx, idx + 4); // see PointCloudProvider and the construction of unique_id\n\n var objId = data[0] << 8 | data[1];\n var index = data[2] << 8 | data[3];\n var r = {\n objId: objId,\n index: index\n };\n\n for (var i = 0; i < candidates.length; i++) {\n if (candidates[i].objId == r.objId && candidates[i].index == r.index) {\n return;\n }\n }\n\n candidates.push(r);\n });\n var result = [];\n layer.object3d.traverse(function (o) {\n if (o.isPoints && o.baseId) {\n // disable picking mode\n o.material.enablePicking(false); // if baseId matches objId, the clicked point belongs to `o`\n\n for (var i = 0; i < candidates.length; i++) {\n if (candidates[i].objId == o.baseId) {\n result.push({\n object: o,\n index: candidates[i].index,\n layer: layer\n });\n }\n }\n }\n });\n return result;\n },\n\n /*\n * Default picking method. Uses THREE.Raycaster\n */\n pickObjectsAt: function pickObjectsAt(view, viewCoords, radius, object) {\n var target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n // Instead of doing N raycast (1 per x,y returned by traversePickingCircle),\n // we force render the zone of interest.\n // Then we'll only do raycasting for the pixels where something was drawn.\n var zone = {\n x: viewCoords.x - radius,\n y: viewCoords.y - radius,\n width: 1 + radius * 2,\n height: 1 + radius * 2\n };\n var pixels = view.mainLoop.gfxEngine.renderViewToBuffer({\n scene: object,\n camera: view.camera\n }, zone);\n var clearColor = view.mainLoop.gfxEngine.renderer.getClearColor();\n var clearR = Math.round(255 * clearColor.r);\n var clearG = Math.round(255 * clearColor.g);\n var clearB = Math.round(255 * clearColor.b); // Raycaster use NDC coordinate\n\n var normalized = view.viewToNormalizedCoords(viewCoords);\n var tmp = normalized.clone();\n traversePickingCircle(radius, function (x, y) {\n // x, y are offset from the center of the picking circle,\n // and pixels is a square where 0, 0 is the top-left corner.\n // So we need to shift x,y by radius.\n var offset = ((y + radius) * (radius * 2 + 1) + (x + radius)) * 4;\n var r = pixels[offset];\n var g = pixels[offset + 1];\n var b = pixels[offset + 2]; // Use approx. test to avoid rounding error or to behave\n // differently depending on hardware rounding mode.\n\n if (Math.abs(clearR - r) <= 1 && Math.abs(clearG - g) <= 1 && Math.abs(clearB - b) <= 1) {\n // skip because nothing has been rendered here\n return;\n } // Perform raycasting\n\n\n tmp.setX(normalized.x + x / view.camera.width).setY(normalized.y + y / view.camera.height);\n raycaster.setFromCamera(tmp, view.camera.camera3D);\n var intersects = raycaster.intersectObject(object, true);\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = intersects[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var inter = _step2.value;\n inter.layer = findLayerInParent(inter.object);\n target.push(inter);\n } // Stop at first hit\n\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return target.length == 0;\n });\n return target;\n }\n};","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","var data = new Map();\nvar stats = new Map();\n/**\n * This is a copy of the Map object, except that it also store a value for last\n * time used. This value is used for cache expiration mechanism.\n *

\n * This module can be imported anywhere, its data will be shared, as it is a\n * single instance.\n *\n * @module Cache\n *\n * @example\n * import Cache from './Cache';\n *\n * Cache.set('foo', { bar: 1 }, Cache.POLICIES.TEXTURE);\n * Cache.set('acme', { bar: 32 });\n *\n * Cache.get('foo');\n *\n * Cache.delete('foo');\n *\n * Cache.clear();\n */\n\nvar Cache = {\n /**\n * Cache policies for flushing. Those policies can be used when something is\n * [set]{@link Cache.set} into the Cache, as the lifetime property.\n *\n * @typedef {Object} POLICIES\n *\n * @property {number} INFINITE - The entry is never flushed, except when the\n * `all` flag is set to `true` when calling {@link Cache.flush}.\n * @property {number} TEXTURE - Shortcut for texture resources. Time is 15 minutes.\n * @property {number} ELEVATION - Shortcut for elevation resources. Time is 15\n * minutes.\n */\n POLICIES: {\n INFINITE: Infinity,\n TEXTURE: 900000,\n ELEVATION: 900000\n },\n\n /**\n * Returns the entry related to the specified key from the cache. The last\n * time used property of the entry is updated to extend the longevity of the\n * entry.\n *\n * @name module:Cache.get\n * @function\n *\n * @param {string} key\n *\n * @return {Object}\n */\n get: function get(key) {\n var entry = data.get(key);\n var stat = stats.get(key) || stats.set(key, {\n hit: 0,\n miss: 0\n });\n\n if (entry) {\n stat.hit++;\n entry.lastTimeUsed = Date.now();\n return entry.value;\n }\n\n stat.miss++;\n },\n\n /**\n * Adds or updates an entry with a specified key. A lifetime can be added,\n * by specifying a numerical value or using the {@link Cache.POLICIES}\n * values. By default an entry has an infinite lifetime.\n *\n * @name module:Cache.set\n * @function\n *\n * @param {string} key\n * @param {Object} value\n * @param {number} [lifetime]\n *\n * @return {Object} the added value\n */\n set: function set(key, value) {\n var lifetime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n var entry = {\n value: value,\n lastTimeUsed: Date.now(),\n lifetime: lifetime\n };\n data.set(key, entry);\n return value;\n },\n\n /**\n * Deletes the specified entry from the cache.\n *\n * @name module:Cache.delete\n * @function\n *\n * @param {string} key\n *\n * @return {boolean} - Confirmation that the entry has been deleted.\n */\n \"delete\": function _delete(key) {\n return data[\"delete\"](key);\n },\n\n /**\n * Removes all entries of the cache.\n *\n * @name module:Cache.clear\n * @function\n */\n clear: data.clear(),\n\n /**\n * Flush the cache: entries that have been present for too long since the\n * last time they were used, are removed from the cache. By default, the\n * time is the current time, but the interval can be reduced by doing\n * something like `Cache.flush(Date.now() - reductionTime)`. If you want to\n * clear the whole cache, use {@link Cache.clear} instead.\n *\n * @name module:Cache.flush\n * @function\n *\n * @param {number} [time]\n *\n * @return {Object} Statistics about the flush: `before` gives the number of\n * entries before flushing, `after` the number after flushing, `hit` the\n * number of total successful hit on resources in the cache, and `miss` the\n * number of failed hit. The hit and miss are based since the last flush,\n * and are reset on every flush.\n */\n flush: function flush() {\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n var before = data.size;\n data.forEach(function (entry, key) {\n if (entry.lifetime < time - entry.lastTimeUsed) {\n data[\"delete\"](key);\n }\n });\n var hit = 0;\n var miss = 0;\n stats.forEach(function (stat) {\n hit += stat.hit;\n miss += stat.miss;\n });\n stats.clear();\n return {\n before: before,\n after: data.size,\n hit: hit,\n miss: miss\n };\n }\n};\nObject.freeze(Cache);\nexport default Cache;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/typeof\";\nimport * as THREE from 'three';\nimport Extent from \"../Core/Geographic/Extent\";\n\nfunction requestNewTile(view, scheduler, geometryLayer, metadata, parent, redraw) {\n var command = {\n /* mandatory */\n view: view,\n requester: parent,\n layer: geometryLayer,\n priority: parent ? 1.0 / (parent.distance + 1) : 100,\n\n /* specific params */\n metadata: metadata,\n redraw: redraw\n };\n return scheduler.execute(command);\n}\n\nfunction getChildTiles(tile) {\n // only keep children that have the same layer and a valid tileId\n return tile.children.filter(function (n) {\n return n.layer == tile.layer && n.tileId;\n });\n}\n\nfunction subdivideNode(context, layer, node, cullingTest) {\n if (node.additiveRefinement) {\n // Additive refinement can only fetch visible children.\n _subdivideNodeAdditive(context, layer, node, cullingTest);\n } else {\n // Substractive refinement on the other hand requires to replace\n // node with all of its children\n _subdivideNodeSubstractive(context, layer, node);\n }\n}\n\nvar tmpBox3 = new THREE.Box3();\nvar tmpSphere = new THREE.Sphere();\n\nfunction boundingVolumeToExtent(crs, volume, transform) {\n if (volume.region) {\n var box = tmpBox3.copy(volume.region.box3D).applyMatrix4(volume.region.matrixWorld);\n return Extent.fromBox3(crs, box);\n } else if (volume.box) {\n var _box = tmpBox3.copy(volume.box).applyMatrix4(transform);\n\n return Extent.fromBox3(crs, _box);\n } else {\n var sphere = tmpSphere.copy(volume.sphere).applyMatrix4(transform);\n return new Extent(crs, {\n west: sphere.center.x - sphere.radius,\n east: sphere.center.x + sphere.radius,\n south: sphere.center.y - sphere.radius,\n north: sphere.center.y + sphere.radius\n });\n }\n}\n\nvar tmpMatrix = new THREE.Matrix4();\n\nfunction _subdivideNodeAdditive(context, layer, node, cullingTest) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function () {\n var child = _step.value;\n\n // child being downloaded => skip\n if (child.promise || child.loaded) {\n return \"continue\";\n } // 'child' is only metadata (it's *not* a THREE.Object3D). 'cullingTest' needs\n // a matrixWorld, so we compute it: it's node's matrixWorld x child's transform\n\n\n var overrideMatrixWorld = node.matrixWorld;\n\n if (child.transform) {\n overrideMatrixWorld = tmpMatrix.multiplyMatrices(node.matrixWorld, child.transform);\n }\n\n var isVisible = cullingTest ? !cullingTest(context.camera, child, overrideMatrixWorld) : true; // child is not visible => skip\n\n if (!isVisible) {\n return \"continue\";\n }\n\n child.promise = requestNewTile(context.view, context.scheduler, layer, child, node, true).then(function (tile) {\n node.add(tile);\n tile.updateMatrixWorld();\n var extent = boundingVolumeToExtent(layer.extent.crs, tile.boundingVolume, tile.matrixWorld);\n tile.traverse(function (obj) {\n obj.extent = extent;\n });\n context.view.notifyChange(child);\n child.loaded = true;\n delete child.promise;\n });\n };\n\n for (var _iterator = layer.tileIndex.index[node.tileId].children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction _subdivideNodeSubstractive(context, layer, node) {\n if (!node.pendingSubdivision && getChildTiles(node).length == 0) {\n var _ret2 = function () {\n var childrenTiles = layer.tileIndex.index[node.tileId].children;\n\n if (childrenTiles === undefined || childrenTiles.length === 0) {\n return {\n v: void 0\n };\n }\n\n node.pendingSubdivision = true;\n var promises = [];\n\n var _loop2 = function (i) {\n promises.push(requestNewTile(context.view, context.scheduler, layer, childrenTiles[i], node, false).then(function (tile) {\n childrenTiles[i].loaded = true;\n node.add(tile);\n tile.updateMatrixWorld();\n\n if (node.additiveRefinement) {\n context.view.notifyChange(node);\n }\n\n layer.tileIndex.index[tile.tileId].loaded = true;\n }));\n };\n\n for (var i = 0; i < childrenTiles.length; i++) {\n _loop2(i);\n }\n\n Promise.all(promises).then(function () {\n node.pendingSubdivision = false;\n context.view.notifyChange(node);\n });\n }();\n\n if (_typeof(_ret2) === \"object\") return _ret2.v;\n }\n}\n\nexport function $3dTilesCulling(camera, node, tileMatrixWorld) {\n // For viewer Request Volume https://github.com/AnalyticalGraphicsInc/3d-tiles-samples/tree/master/tilesets/TilesetWithRequestVolume\n if (node.viewerRequestVolume) {\n var nodeViewer = node.viewerRequestVolume;\n\n if (nodeViewer.region) {\n // TODO\n return true;\n }\n\n if (nodeViewer.box) {\n // TODO\n return true;\n }\n\n if (nodeViewer.sphere) {\n var worldCoordinateCenter = nodeViewer.sphere.center.clone();\n worldCoordinateCenter.applyMatrix4(tileMatrixWorld); // To check the distance between the center sphere and the camera\n\n if (!(camera.camera3D.position.distanceTo(worldCoordinateCenter) <= nodeViewer.sphere.radius)) {\n return true;\n }\n }\n } // For bounding volume\n\n\n if (node.boundingVolume) {\n var boundingVolume = node.boundingVolume;\n\n if (boundingVolume.region) {\n return !camera.isBox3Visible(boundingVolume.region.box3D, tileMatrixWorld.clone().multiply(boundingVolume.region.matrix));\n }\n\n if (boundingVolume.box) {\n return !camera.isBox3Visible(boundingVolume.box, tileMatrixWorld);\n }\n\n if (boundingVolume.sphere) {\n return !camera.isSphereVisible(boundingVolume.sphere, tileMatrixWorld);\n }\n }\n\n return false;\n} // Cleanup all 3dtiles|three.js starting from a given node n.\n// n's children can be of 2 types:\n// - have a 'content' attribute -> it's a tileset and must\n// be cleaned with cleanup3dTileset()\n// - doesn't have 'content' -> it's a raw Object3D object,\n// and must be cleaned with _cleanupObject3D()\n\nfunction cleanup3dTileset(layer, n) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // If this layer is not using additive refinement, we can only\n // clean a tile if all its neighbours are cleaned as well because\n // a tile can only be in 2 states:\n // - displayed and no children displayed\n // - hidden and all of its children displayed\n // So here we implement a conservative measure: if T is cleanable\n // we actually only clean its children tiles.\n var canCleanCompletely = n.additiveRefinement || depth > 0;\n\n for (var i = 0; i < n.children.length; i++) {\n // skip non-tiles elements\n if (!n.children[i].content) {\n if (canCleanCompletely) {\n n.children[i].traverse(_cleanupObject3D);\n }\n } else {\n cleanup3dTileset(layer, n.children[i], depth + 1);\n }\n }\n\n if (canCleanCompletely) {\n if (n.dispose) {\n n.dispose();\n }\n\n delete n.content;\n layer.tileIndex.index[n.tileId].loaded = false;\n n.remove.apply(n, _toConsumableArray(n.children)); // and finally remove from parent\n\n if (depth == 0 && n.parent) {\n n.parent.remove(n);\n }\n } else {\n var tiles = getChildTiles(n);\n n.remove.apply(n, _toConsumableArray(tiles));\n }\n} // This function is used to cleanup a Object3D hierarchy.\n// (no 3dtiles spectific code here because this is managed by cleanup3dTileset)\n\n\nfunction _cleanupObject3D(n) {\n // all children of 'n' are raw Object3D\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = n.children[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var child = _step2.value;\n\n _cleanupObject3D(child);\n } // free resources\n\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (n.material) {\n n.material.dispose();\n }\n\n if (n.geometry) {\n n.geometry.dispose();\n }\n\n n.remove.apply(n, _toConsumableArray(n.children));\n} // this is a layer\n\n\nexport function pre3dTilesUpdate() {\n if (!this.visible) {\n return [];\n } // Elements removed are added in the layer._cleanableTiles list.\n // Since we simply push in this array, the first item is always\n // the oldest one.\n\n\n var now = Date.now();\n\n if (this._cleanableTiles.length && now - this._cleanableTiles[0].cleanableSince > this.cleanupDelay) {\n // Make sure we don't clean root tile\n this.root.cleanableSince = undefined;\n var i = 0;\n\n for (; i < this._cleanableTiles.length; i++) {\n var elt = this._cleanableTiles[i];\n\n if (now - elt.cleanableSince > this.cleanupDelay) {\n cleanup3dTileset(this, elt);\n } else {\n // later entries are younger\n break;\n }\n } // remove deleted elements from _cleanableTiles\n\n\n this._cleanableTiles.splice(0, i);\n }\n\n return [this.root];\n}\nvar boundingVolumeBox = new THREE.Box3();\nvar boundingVolumeSphere = new THREE.Sphere();\nexport function computeNodeSSE(camera, node) {\n node.distance = 0;\n\n if (node.boundingVolume.region) {\n boundingVolumeBox.copy(node.boundingVolume.region.box3D);\n boundingVolumeBox.applyMatrix4(node.boundingVolume.region.matrixWorld);\n node.distance = boundingVolumeBox.distanceToPoint(camera.camera3D.position);\n } else if (node.boundingVolume.box) {\n // boundingVolume.box is affected by matrixWorld\n boundingVolumeBox.copy(node.boundingVolume.box);\n boundingVolumeBox.applyMatrix4(node.matrixWorld);\n node.distance = boundingVolumeBox.distanceToPoint(camera.camera3D.position);\n } else if (node.boundingVolume.sphere) {\n // boundingVolume.sphere is affected by matrixWorld\n boundingVolumeSphere.copy(node.boundingVolume.sphere);\n boundingVolumeSphere.applyMatrix4(node.matrixWorld); // TODO: see https://github.com/iTowns/itowns/issues/800\n\n node.distance = Math.max(0.0, boundingVolumeSphere.distanceToPoint(camera.camera3D.position));\n } else {\n return Infinity;\n }\n\n if (node.distance === 0) {\n // This test is needed in case geometricError = distance = 0\n return Infinity;\n }\n\n return camera._preSSE * (node.geometricError / node.distance);\n}\nexport function init3dTilesLayer(view, scheduler, layer) {\n return requestNewTile(view, scheduler, layer, layer.tileset.root, undefined, true).then(function (tile) {\n delete layer.tileset;\n layer.object3d.add(tile);\n tile.updateMatrixWorld();\n layer.tileIndex.index[tile.tileId].loaded = true;\n layer.root = tile;\n layer.extent = boundingVolumeToExtent(layer.projection || view.referenceCrs, tile.boundingVolume, tile.matrixWorld);\n });\n}\n\nfunction setDisplayed(node, display) {\n // The geometry of the tile is not in node, but in node.content\n // To change the display state, we change node.content.visible instead of\n // node.material.visible\n if (node.content) {\n node.content.visible = display;\n }\n}\n\nfunction markForDeletion(layer, elt) {\n if (!elt.cleanableSince) {\n elt.cleanableSince = Date.now();\n\n layer._cleanableTiles.push(elt);\n }\n}\n\nexport function process3dTilesNode() {\n var cullingTest = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $3dTilesCulling;\n var subdivisionTest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : $3dTilesSubdivisionControl;\n return function (context, layer, node) {\n // early exit if parent's subdivision is in progress\n if (node.parent.pendingSubdivision && !node.parent.additiveRefinement) {\n node.visible = false;\n return undefined;\n } // do proper culling\n\n\n var isVisible = cullingTest ? !cullingTest(context.camera, node, node.matrixWorld) : true;\n node.visible = isVisible;\n\n if (isVisible) {\n if (node.cleanableSince) {\n layer._cleanableTiles.splice(layer._cleanableTiles.indexOf(node), 1);\n\n node.cleanableSince = undefined;\n }\n\n var returnValue;\n\n if (node.pendingSubdivision || subdivisionTest(context, layer, node)) {\n subdivideNode(context, layer, node, cullingTest); // display iff children aren't ready\n\n setDisplayed(node, node.pendingSubdivision || node.additiveRefinement);\n returnValue = getChildTiles(node);\n } else {\n setDisplayed(node, true);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = getChildTiles(node)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var n = _step3.value;\n n.visible = false;\n markForDeletion(layer, n);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n return returnValue;\n }\n\n markForDeletion(layer, node);\n };\n}\nexport function $3dTilesSubdivisionControl(context, layer, node) {\n if (layer.tileIndex.index[node.tileId].children === undefined) {\n return false;\n }\n\n if (layer.tileIndex.index[node.tileId].isTileset) {\n return true;\n }\n\n var sse = computeNodeSSE(context.camera, node);\n return sse > layer.sseThreshold;\n}","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport Layer from \"./Layer\";\nimport Picking from \"../Core/Picking\";\n\nfunction disposeMesh(obj) {\n if (obj.dispose) {\n obj.dispose();\n } else {\n if (obj.geometry) {\n obj.geometry.dispose();\n }\n\n if (obj.material) {\n obj.material.dispose();\n }\n }\n}\n\nfunction traverse(obj, callback) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = obj.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var child = _step.value;\n traverse(child, callback);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n callback(obj);\n}\n/**\n * Fires when the opacity of the layer has changed.\n * @event GeometryLayer#opacity-property-changed\n */\n\n/**\n * @property {boolean} isGeometryLayer - Used to checkout whether this layer is\n * a GeometryLayer. Default is true. You should not change this, as it is used\n * internally for optimisation.\n */\n\n\nvar GeometryLayer =\n/*#__PURE__*/\nfunction (_Layer) {\n _inherits(GeometryLayer, _Layer);\n\n /**\n * A layer usually managing a geometry to display on a view. For example, it\n * can be a layer of buildings extruded from a a WFS stream.\n *\n * @constructor\n * @extends Layer\n *\n * @param {string} id - The id of the layer, that should be unique. It is\n * not mandatory, but an error will be emitted if this layer is added a\n * {@link View} that already has a layer going by that id.\n * @param {THREE.Object3d} object3d - The object3d used to contain the\n * geometry of the GeometryLayer. It is usually a `THREE.Group`, but it can\n * be anything inheriting from a `THREE.Object3d`.\n * @param {Object} [config] - Optional configuration, all elements in it\n * will be merged as is in the layer. For example, if the configuration\n * contains three elements `name, protocol, extent`, these elements will be\n * available using `layer.name` or something else depending on the property\n * name.\n * @param {WMTSSource|WMSSource|WFSSource|TMSSource|FileSource} [config.source] -\n * Description and options of the source.\n *\n * @throws {Error} `object3d` must be a valid `THREE.Object3d`.\n *\n * @example\n * // Create a GeometryLayer\n * const geometry = new GeometryLayer('buildings', {\n * source: {\n * url: 'http://server.geo/wfs?',\n * protocol: 'wfs',\n * format: 'application/json'\n * },\n * });\n *\n * // Add the layer\n * view.addLayer(geometry);\n */\n function GeometryLayer(id, object3d) {\n var _this;\n\n var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, GeometryLayer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(GeometryLayer).call(this, id, config));\n _this.isGeometryLayer = true;\n\n if (!object3d || !object3d.isObject3D) {\n throw new Error(\"Missing/Invalid object3d parameter (must be a\\n three.js Object3D instance)\");\n }\n\n if (object3d.type === 'Group' && object3d.name === '') {\n object3d.name = id;\n }\n\n Object.defineProperty(_assertThisInitialized(_this), 'object3d', {\n value: object3d,\n writable: false,\n configurable: true\n });\n\n _this.defineLayerProperty('opacity', 1.0, function () {\n var root = _this.parent ? _this.parent.object3d : _this.object3d;\n root.traverse(function (object) {\n if (object.layer == _assertThisInitialized(_this)) {\n _this.changeOpacity(object);\n } else if (object.content && object.content.layer == _assertThisInitialized(_this)) {\n object.content.traverse(_this.changeOpacity);\n }\n });\n });\n\n _this.defineLayerProperty('wireframe', false, function () {\n var root = _this.parent ? _this.parent.object3d : _this.object3d;\n root.traverse(function (object) {\n if (object.layer == _assertThisInitialized(_this) && object.material) {\n object.material.wireframe = _this.wireframe;\n } else if (object.content && object.content.layer == _assertThisInitialized(_this)) {\n object.content.traverse(function (o) {\n if (o.material && o.layer == _assertThisInitialized(_this)) {\n o.material.wireframe = _this.wireframe;\n }\n });\n }\n });\n });\n\n _this.attachedLayers = [];\n _this.visible = config.visible == undefined ? true : config.visible; // Attached layers expect to receive the visual representation of a\n // layer (= THREE object with a material). So if a layer's update\n // function don't process this kind of object, the layer must provide a\n // getObjectToUpdateForAttachedLayers function that returns the correct\n // object to update for attached layer.\n // See 3dtilesProvider or PointCloudProvider for examples.\n // eslint-disable-next-line arrow-body-style\n\n _this.getObjectToUpdateForAttachedLayers = function (obj) {\n if (obj.parent && obj.material) {\n return {\n element: obj,\n parent: obj.parent\n };\n }\n };\n\n return _this;\n } // Placeholder\n // eslint-disable-next-line\n\n\n _createClass(GeometryLayer, [{\n key: \"postUpdate\",\n value: function postUpdate() {} // Placeholder\n // eslint-disable-next-line\n\n }, {\n key: \"culling\",\n value: function culling() {\n return true;\n }\n /**\n * Attach another layer to this one. Layers attached to a GeometryLayer will\n * be available in `geometryLayer.attachedLayers`.\n *\n * @param {Layer} layer - The layer to attach, that must have an `update`\n * method.\n */\n\n }, {\n key: \"attach\",\n value: function attach(layer) {\n if (!layer.update) {\n throw new Error(\"Missing 'update' function -> can't attach layer\\n \".concat(layer.id));\n }\n\n this.attachedLayers.push(layer); // To traverse GeometryLayer object3d attached\n\n layer.parent = this;\n }\n /**\n * Detach a layer attached to this one. See {@link attach} to learn how to\n * attach a layer.\n *\n * @param {Layer} layer - The layer to detach.\n *\n * @return {boolean} Confirmation of the detachment of the layer.\n */\n\n }, {\n key: \"detach\",\n value: function detach(layer) {\n var count = this.attachedLayers.length;\n this.attachedLayers = this.attachedLayers.filter(function (attached) {\n return attached.id != layer.id;\n });\n layer.parent = undefined;\n return this.attachedLayers.length < count;\n }\n /**\n * All layer's meshs are removed from scene and disposed from video device.\n */\n\n }, {\n key: \"delete\",\n value: function _delete() {\n var _this2 = this;\n\n // if Layer is attached\n if (this.parent) {\n traverse(this.parent.object3d, function (obj) {\n if (obj.layer && obj.layer.id == _this2.id) {\n obj.parent.remove(obj);\n disposeMesh(obj);\n }\n });\n } else {\n if (this.object3d.parent) {\n this.object3d.parent.remove(this.object3d);\n }\n\n this.object3d.traverse(disposeMesh);\n }\n }\n /**\n * Picking method for this layer. It uses the {@link Picking#pickObjectsAt}\n * method.\n *\n * @param {View} view - The view instance.\n * @param {Object} coordinates - The coordinates to pick in the view. It\n * should have at least `x` and `y` properties.\n * @param {number} radius - Radius of the picking circle.\n *\n * @return {Array} An array containing all targets picked under the\n * specified coordinates.\n */\n\n }, {\n key: \"pickObjectsAt\",\n value: function pickObjectsAt(view, coordinates) {\n var radius = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.options.defaultPickingRadius;\n return Picking.pickObjectsAt(view, coordinates, radius, this.object3d);\n }\n /**\n * Change the opacity of an object, according to the value of the `opacity`\n * property of this layer.\n *\n * @param {Object} object - The object to change the opacity from. It is\n * usually a `THREE.Object3d` or an implementation of it.\n */\n\n }, {\n key: \"changeOpacity\",\n value: function changeOpacity(object) {\n if (object.material) {\n // != undefined: we want the test to pass if opacity is 0\n if (object.material.opacity != undefined) {\n object.material.transparent = this.opacity < 1.0;\n object.material.opacity = this.opacity;\n }\n\n if (object.material.uniforms && object.material.uniforms.opacity != undefined) {\n object.material.transparent = this.opacity < 1.0;\n object.material.uniforms.opacity.value = this.opacity;\n }\n }\n }\n }]);\n\n return GeometryLayer;\n}(Layer);\n\nexport default GeometryLayer;","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","import { EMPTY_TEXTURE_ZOOM } from \"../Renderer/MaterialLayer\";\n/**\n * This modules implements various layer update strategies.\n *\n * Default strategy is STRATEGY_MIN_NETWORK_TRAFFIC which aims\n * to reduce the amount of network traffic.\n */\n\nexport var STRATEGY_MIN_NETWORK_TRAFFIC = 0;\nexport var STRATEGY_GROUP = 1;\nexport var STRATEGY_PROGRESSIVE = 2;\nexport var STRATEGY_DICHOTOMY = 3;\n\nfunction _minimizeNetworkTraffic(node, nodeLevel, currentLevel) {\n if (node.pendingSubdivision) {\n return currentLevel;\n }\n\n return nodeLevel;\n} // Maps nodeLevel to groups defined in layer's options\n// eg with groups = [3, 7, 12]:\n// * nodeLevel = 2 -> 3\n// * nodeLevel = 4 -> 3\n// * nodeLevel = 7 -> 7\n// * nodeLevel = 15 -> 12\n\n\nfunction _group(nodeLevel, currentLevel, options) {\n var f = options.groups.filter(function (val) {\n return val <= nodeLevel;\n });\n return f.length ? f[f.length - 1] : options.groups[0];\n}\n\nfunction _progressive(nodeLevel, currentLevel, options) {\n return Math.min(nodeLevel, currentLevel + (options.increment || 1));\n} // Load textures at mid-point between current level and node's level.\n// This produces smoother transitions and a single fetch updates multiple\n// tiles thanks to caching.\n\n\nfunction _dichotomy(nodeLevel, currentLevel) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (currentLevel == EMPTY_TEXTURE_ZOOM) {\n return options.zoom ? options.zoom.min : 0;\n }\n\n return Math.min(nodeLevel, Math.ceil((currentLevel + nodeLevel) / 2));\n}\n\nexport function chooseNextLevelToFetch(strategy, node) {\n var nodeLevel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : node.level;\n var currentLevel = arguments.length > 3 ? arguments[3] : undefined;\n var layer = arguments.length > 4 ? arguments[4] : undefined;\n var failureParams = arguments.length > 5 ? arguments[5] : undefined;\n var nextLevelToFetch;\n var maxZoom = layer.source.zoom ? layer.source.zoom.max : Infinity;\n\n if (failureParams) {\n nextLevelToFetch = _dichotomy(failureParams.targetLevel, currentLevel, layer.source);\n } else {\n switch (strategy) {\n case STRATEGY_GROUP:\n nextLevelToFetch = _group(nodeLevel, currentLevel, layer.updateStrategy.options);\n break;\n\n case STRATEGY_PROGRESSIVE:\n {\n nextLevelToFetch = _progressive(nodeLevel, currentLevel, layer.updateStrategy.options);\n break;\n }\n\n case STRATEGY_DICHOTOMY:\n nextLevelToFetch = _dichotomy(nodeLevel, currentLevel, layer.source);\n break;\n // default strategy\n\n case STRATEGY_MIN_NETWORK_TRAFFIC:\n default:\n nextLevelToFetch = _minimizeNetworkTraffic(node, nodeLevel, currentLevel);\n }\n }\n\n return Math.min(nextLevelToFetch, maxZoom);\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _get from \"@babel/runtime/helpers/get\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport * as THREE from 'three';\nimport TileGeometry from \"../Core/TileGeometry\";\nimport BuilderEllipsoidTile from \"../Core/Prefab/Globe/BuilderEllipsoidTile\";\nimport Coordinates from \"../Core/Geographic/Coordinates\";\nimport CRS from \"../Core/Geographic/Crs\"; // get oriented bounding box of tile\n\nvar builder = new BuilderEllipsoidTile();\nvar size = new THREE.Vector3();\nvar dimension = new THREE.Vector2();\nvar center = new THREE.Vector3();\nvar coord = new Coordinates('EPSG:4326', 0, 0, 0);\n\nvar OBB =\n/*#__PURE__*/\nfunction (_THREE$Object3D) {\n _inherits(OBB, _THREE$Object3D);\n\n /**\n * Oriented bounding box\n * @constructor\n * @extends THREE.Object3D\n * @param {THREE.Vector3} min representing the lower (x, y, z) boundary of the box. Default is ( + Infinity, + Infinity, + Infinity ).\n * @param {THREE.Vector3} max representing the lower upper (x, y, z) boundary of the box. Default is ( - Infinity, - Infinity, - Infinity ).\n */\n function OBB() {\n var _this;\n\n var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new THREE.Vector3(+Infinity, +Infinity, +Infinity);\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new THREE.Vector3(-Infinity, -Infinity, -Infinity);\n\n _classCallCheck(this, OBB);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(OBB).call(this));\n _this.box3D = new THREE.Box3(min.clone(), max.clone());\n _this.natBox = _this.box3D.clone();\n _this.z = {\n min: 0,\n max: 0\n };\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n /**\n * Creates a new instance of the object with same properties than original.\n *\n * @return {OBB} Copy of this object.\n */\n\n\n _createClass(OBB, [{\n key: \"clone\",\n value: function clone() {\n return new OBB().copy(this);\n }\n /**\n * Copy the property of OBB\n *\n * @param {OBB} cOBB OBB to copy\n * @return {OBB} the copy\n */\n\n }, {\n key: \"copy\",\n value: function copy(cOBB) {\n _get(_getPrototypeOf(OBB.prototype), \"copy\", this).call(this, cOBB);\n\n this.box3D.copy(cOBB.box3D);\n this.natBox.copy(cOBB.natBox);\n this.z.min = cOBB.z.min;\n this.z.max = cOBB.z.max;\n return this;\n }\n /**\n * Update the top point world\n *\n */\n\n }, {\n key: \"update\",\n value: function update() {\n this.updateMatrixWorld(true);\n }\n /**\n * Update z min and z max of oriented bounding box\n *\n * @param {number} min The minimum of oriented bounding box\n * @param {number} max The maximum of oriented bounding box\n */\n\n }, {\n key: \"updateZ\",\n value: function updateZ(min, max) {\n this.z = {\n min: min,\n max: max\n };\n this.box3D.min.z = this.natBox.min.z + min;\n this.box3D.max.z = this.natBox.max.z + max;\n }\n /**\n * Set bouding box value to points\n *\n * @param {Array} points The points to set\n * @return {Array} The points seted\n */\n\n }, {\n key: \"toPoints\",\n value: function toPoints(points) {\n // top points of bounding box\n points[0].set(this.box3D.max.x, this.box3D.max.y, this.box3D.max.z);\n points[1].set(this.box3D.min.x, this.box3D.max.y, this.box3D.max.z);\n points[2].set(this.box3D.min.x, this.box3D.min.y, this.box3D.max.z);\n points[3].set(this.box3D.max.x, this.box3D.min.y, this.box3D.max.z);\n points[4].set(this.box3D.max.x, this.box3D.max.y, this.box3D.min.z);\n points[5].set(this.box3D.min.x, this.box3D.max.y, this.box3D.min.z);\n points[6].set(this.box3D.min.x, this.box3D.min.y, this.box3D.min.z);\n points[7].set(this.box3D.max.x, this.box3D.min.y, this.box3D.min.z);\n return points;\n }\n /**\n * Determines if the sphere is above the XY space of the box\n *\n * @param {Sphere} sphere The sphere\n * @return {boolean} True if sphere is above the XY space of the box, False otherwise.\n */\n\n }, {\n key: \"isSphereAboveXYBox\",\n value: function isSphereAboveXYBox(sphere) {\n var localSpherePosition = this.worldToLocal(sphere.position); // get obb closest point to sphere center by clamping\n\n var x = Math.max(this.box3D.min.x, Math.min(localSpherePosition.x, this.box3D.max.x));\n var y = Math.max(this.box3D.min.y, Math.min(localSpherePosition.y, this.box3D.max.y)); // this is the same as isPointInsideSphere.position\n\n var distance = Math.sqrt((x - localSpherePosition.x) * (x - localSpherePosition.x) + (y - localSpherePosition.y) * (y - localSpherePosition.y));\n return distance < sphere.radius;\n }\n /**\n * Compute OBB from extent.\n * The OBB resulted can be only in the system 'EPSG:3946'.\n *\n * @param {Extent} extent The extent (with crs 'EPSG:4326') to compute oriented bounding box\n * @param {number} minHeight The minimum height of OBB\n * @param {number} maxHeight The maximum height of OBB\n * @return {OBB} return this object\n */\n\n }, {\n key: \"setFromExtent\",\n value: function setFromExtent(extent) {\n var minHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : extent.min || 0;\n var maxHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : extent.max || 0;\n\n if (extent.crs == 'EPSG:4326') {\n var _builder$computeShara = builder.computeSharableExtent(extent),\n sharableExtent = _builder$computeShara.sharableExtent,\n quaternion = _builder$computeShara.quaternion,\n position = _builder$computeShara.position; // Compute the minimum count of segment to build tile\n\n\n var segment = Math.max(Math.floor(sharableExtent.dimensions(dimension).x / 90 + 1), 2);\n var geometry = new TileGeometry({\n extent: sharableExtent,\n level: 0,\n segment: segment,\n disableSkirt: true,\n builder: builder\n });\n this.copy(builder.OBB(geometry.boundingBox));\n this.updateZ(minHeight, maxHeight);\n this.position.copy(position);\n this.quaternion.copy(quaternion);\n this.updateMatrixWorld(true);\n } else if (!extent.isTiledCrs() && CRS.isMetricUnit(extent.crs)) {\n extent.center(coord).toVector3(this.position);\n extent.dimensions(dimension);\n size.set(dimension.x, dimension.y, Math.abs(maxHeight - minHeight));\n this.box3D.setFromCenterAndSize(center, size);\n this.updateMatrixWorld(true);\n } else {\n throw new Error('Unsupported extent crs');\n }\n\n return this;\n }\n }]);\n\n return OBB;\n}(THREE.Object3D);\n\nexport default OBB;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport { FEATURE_TYPES } from \"./Feature\";\nvar inv255 = 1 / 255;\n\nfunction rgba2rgb(orig) {\n var result = orig.match(/(?:((hsl|rgb)a? *\\(([\\d.%]+(?:deg|g?rad|turn)?)[ ,]*([\\d.%]+)[ ,]*([\\d.%]+)[ ,/]*([\\d.%]*)\\))|(#((?:[\\d\\w]{3}){1,2})([\\d\\w]{1,2})?))/i);\n\n if (!result) {\n return {\n color: orig,\n opacity: 1.0\n };\n } else if (result[7]) {\n var opacity = 1.0;\n\n if (result[9]) {\n opacity = parseInt(result[9].length == 1 ? \"\".concat(result[9]).concat(result[9]) : result[9], 16) * inv255;\n }\n\n return {\n color: \"#\".concat(result[8]),\n opacity: opacity\n };\n } else if (result[0]) {\n return {\n color: \"\".concat(result[2], \"(\").concat(result[3], \",\").concat(result[4], \",\").concat(result[5], \")\"),\n opacity: Number(result[6]) || 1.0\n };\n }\n}\n/**\n * Style defines {@link Feature} style.\n */\n\n\nvar Style =\n/*#__PURE__*/\nfunction () {\n /**\n * @constructor\n * @param {object} [params]\n * @param {object} [params.fill] fill style.\n * @param {string} [params.fill.color] fill color string css.\n * @param {number} [params.fill.opacity] fill opacity.\n * @param {object} [params.stroke] stroke style.\n * @param {string} [params.stroke.color] stroke color string css.\n * @param {number} [params.stroke.opacity] stroke opacity.\n * @param {number} [params.stroke.width] stroke line width.\n * @param {object} [params.point] point style.\n * @param {string} [params.point.color] point color string css.\n * @param {string} [params.point.line] point line color string css.\n * @param {number} [params.point.width] point line width.\n * @param {number} [params.point.opacity] point opacity.\n * @param {number} [params.point.radius] point line radius\n */\n function Style() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Style);\n\n this.isStyle = true;\n params.fill = params.fill || {};\n params.stroke = params.stroke || {};\n params.point = params.point || {};\n this.fill = {\n color: params.fill.color,\n opacity: params.fill.opacity\n };\n this.stroke = {\n color: params.stroke.color,\n opacity: params.stroke.opacity,\n width: params.stroke.width\n };\n this.point = {\n color: params.point.color,\n line: params.point.line,\n opacity: params.point.opacity,\n radius: params.point.radius,\n width: params.point.width\n };\n }\n /**\n * set Style from geojson properties.\n * @param {object} properties geojson properties.\n * @param {number} type\n * @returns {Style}\n */\n\n\n _createClass(Style, [{\n key: \"setFromGeojsonProperties\",\n value: function setFromGeojsonProperties(properties, type) {\n if (type === FEATURE_TYPES.POINT) {\n this.point.color = properties.fill || 'white';\n this.point.opacity = properties['fill-opacity'] || 1.0;\n this.point.line = properties.stroke || 'gray';\n this.point.radius = properties.radius || 2.0;\n } else {\n this.stroke.color = properties.stroke;\n this.stroke.width = properties['stroke-width'];\n this.stroke.opacity = properties['stroke-opacity'];\n\n if (type !== FEATURE_TYPES.LINE) {\n this.fill.color = properties.fill;\n this.fill.opacity = properties['fill-opacity'] || 1.0;\n }\n }\n\n return this;\n }\n /**\n * set Style from vector tile layer properties.\n * @param {object} layer vector tile layer.\n * @returns {Style}\n */\n\n }, {\n key: \"setFromVectorTileLayer\",\n value: function setFromVectorTileLayer(layer) {\n if (layer.type === 'fill' && !this.fill.color) {\n var _rgba2rgb = rgba2rgb(layer.paint['fill-color']),\n color = _rgba2rgb.color,\n opacity = _rgba2rgb.opacity;\n\n this.fill.color = color;\n this.fill.opacity = layer.paint['fill-opacity'] || opacity || 1.0;\n }\n\n if (layer.type === 'line' && !this.stroke.color) {\n var _rgba2rgb2 = rgba2rgb(layer.paint['line-color']),\n _color = _rgba2rgb2.color,\n _opacity = _rgba2rgb2.opacity;\n\n this.stroke.color = _color;\n\n if ('line-width' in layer.paint) {\n this.stroke.width = layer.paint['line-width'].base || 3.0;\n }\n\n this.stroke.opacity = layer.paint['line-opacity'] || _opacity || 1.0;\n }\n\n if (layer.type === 'symbol') {\n var _rgba2rgb3 = rgba2rgb(layer.paint['text-color']),\n _color2 = _rgba2rgb3.color,\n _opacity2 = _rgba2rgb3.opacity;\n\n this.point.color = _color2;\n this.point.opacity = _opacity2;\n this.point.radius = 1.5;\n }\n\n return this;\n }\n }]);\n\n return Style;\n}();\n\nexport default Style;","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","'use strict';\nvar support = require('./support');\nvar compressions = require('./compressions');\nvar nodeBuffer = require('./nodeBuffer');\n/**\n * Convert a string to a \"binary string\" : a string containing only char codes between 0 and 255.\n * @param {string} str the string to transform.\n * @return {String} the binary string.\n */\nexports.string2binary = function(str) {\n var result = \"\";\n for (var i = 0; i < str.length; i++) {\n result += String.fromCharCode(str.charCodeAt(i) & 0xff);\n }\n return result;\n};\nexports.arrayBuffer2Blob = function(buffer, mimeType) {\n exports.checkSupport(\"blob\");\n\tmimeType = mimeType || 'application/zip';\n\n try {\n // Blob constructor\n return new Blob([buffer], {\n type: mimeType\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n return builder.getBlob(mimeType);\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n var chunk = 65536;\n var result = [],\n len = array.length,\n type = exports.getTypeOf(array),\n k = 0,\n canUseApply = true;\n try {\n switch(type) {\n case \"uint8array\":\n String.fromCharCode.apply(null, new Uint8Array(0));\n break;\n case \"nodebuffer\":\n String.fromCharCode.apply(null, nodeBuffer(0));\n break;\n }\n } catch(e) {\n canUseApply = false;\n }\n\n // no apply : slow and painful algorithm\n // default browser on android 4.*\n if (!canUseApply) {\n var resultStr = \"\";\n for(var i = 0; i < array.length;i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n }\n while (k < len && chunk > 1) {\n try {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n return result.join(\"\");\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodeBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodeBuffer(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodeBuffer(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodeBuffer.test(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this browser\");\n }\n};\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nexports.findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nexports.isRegExp = function (object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n","var rePosition = new RegExp('gl_Position.*(?![^]*gl_Position)');\nvar reMain = new RegExp('[^\\\\w]*main[^\\\\w]*(void)?[^\\\\w]*{');\nexport default {\n patchMaterialForLogDepthSupport: function patchMaterialForLogDepthSupport(material) {\n // Check if the shader does not already use the log depth buffer\n if (material.vertexShader.includes('USE_LOGDEPTHBUF') || material.vertexShader.includes('logdepthbuf_pars_vertex')) {\n return;\n } // Add vertex shader log depth buffer header\n\n\n material.vertexShader = \"#include \\n#define EPSILON 1e-6\\n\".concat(material.vertexShader); // Add log depth buffer code snippet after last gl_Position modification\n\n var re = rePosition.exec(material.vertexShader);\n var idx = re[0].length + re.index;\n material.vertexShader = \"\".concat(material.vertexShader.slice(0, idx), \"\\n#include \\n\").concat(material.vertexShader.slice(idx)); // Add fragment shader log depth buffer header\n\n material.fragmentShader = \"#include \\n\".concat(material.fragmentShader); // Add log depth buffer code snippet at the first line of the main function\n\n re = reMain.exec(material.fragmentShader);\n idx = re[0].length + re.index;\n material.fragmentShader = \"\".concat(material.fragmentShader.slice(0, idx), \"\\n#include \\n\").concat(material.fragmentShader.slice(idx));\n material.defines = {\n USE_LOGDEPTHBUF: 1,\n USE_LOGDEPTHBUF_EXT: 1\n };\n },\n // adapted from unrollLoops in WebGLProgram\n unrollLoops: function unrollLoops(string, defines) {\n // look for a for loop with an unroll_loop pragma\n // The detection of the scope of the for loop is hacky as it does not support nested scopes\n var pattern = /#pragma unroll_loop\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*([\\w\\d]+);\\s*i\\s+<\\s+([\\w\\d]+);\\s*i\\s*\\+\\+\\s*\\)\\s*\\{\\n([^}]*)\\}/g;\n\n function replace(match, start, end, snippet) {\n var unroll = '';\n start = start in defines ? defines[start] : parseInt(start, 10);\n end = end in defines ? defines[end] : parseInt(end, 10);\n\n for (var i = start; i < end; i++) {\n unroll += snippet.replace(/\\bi\\b/g, \" \".concat(i, \" \"));\n }\n\n return unroll;\n }\n\n return string.replace(pattern, replace);\n }\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport { Vector4, Uniform, NoBlending, NormalBlending, RawShaderMaterial } from 'three';\n\n/* babel-plugin-inline-import './Shader/PointsVS.glsl' */\nvar PointsVS = \"precision highp float;\\nprecision highp int;\\n\\n#include \\n#define EPSILON 1e-6\\n\\nattribute vec3 position;\\nuniform mat4 projectionMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform float size;\\n\\nuniform bool pickingMode;\\nuniform int mode;\\nuniform float opacity;\\nuniform vec4 overlayColor;\\nattribute vec3 color;\\nattribute vec4 unique_id;\\nattribute float intensity;\\n\\n#if defined(NORMAL_OCT16)\\nattribute vec2 oct16Normal;\\n#elif defined(NORMAL_SPHEREMAPPED)\\nattribute vec2 sphereMappedNormal;\\n#else\\nattribute vec3 normal;\\n#endif\\n\\nvarying vec4 vColor;\\n\\n// see https://web.archive.org/web/20150303053317/http://lgdv.cs.fau.de/get/1602\\n// and implementation in PotreeConverter (BINPointReader.cpp) and potree (BinaryDecoderWorker.js)\\n#if defined(NORMAL_OCT16)\\nvec3 decodeOct16Normal(vec2 encodedNormal) {\\n vec2 nNorm = 2. * (encodedNormal / 255.) - 1.;\\n vec3 n;\\n n.z = 1. - abs(nNorm.x) - abs(nNorm.y);\\n if (n.z >= 0.) {\\n n.x = nNorm.x;\\n n.y = nNorm.y;\\n } else {\\n n.x = sign(nNorm.x) - sign(nNorm.x) * sign(nNorm.y) * nNorm.y;\\n n.y = sign(nNorm.y) - sign(nNorm.y) * sign(nNorm.x) * nNorm.x;\\n }\\n return normalize(n);\\n}\\n#elif defined(NORMAL_SPHEREMAPPED)\\n// see http://aras-p.info/texts/CompactNormalStorage.html method #4\\n// or see potree's implementation in BINPointReader.cpp\\nvec3 decodeSphereMappedNormal(vec2 encodedNormal) {\\n vec2 fenc = 2. * encodedNormal / 255. - 1.;\\n float f = dot(fenc,fenc);\\n float g = 2. * sqrt(1. - f);\\n vec3 n;\\n n.xy = fenc * g;\\n n.z = 1. - 2. * f;\\n return n;\\n}\\n#endif\\n\\nvoid main() {\\n\\n#if defined(NORMAL_OCT16)\\n vec3 normal = decodeOct16Normal(oct16Normal);\\n#elif defined(NORMAL_SPHEREMAPPED)\\n vec3 normal = decodeSphereMappedNormal(sphereMappedNormal);\\n#elif defined(NORMAL)\\n // nothing to do\\n#else\\n // default to color\\n vec3 normal = color;\\n#endif\\n\\n if (pickingMode) {\\n vColor = unique_id;\\n } else if (mode == MODE_INTENSITY) {\\n vColor = vec4(intensity, intensity, intensity, opacity);\\n } else if (mode == MODE_NORMAL) {\\n vColor = vec4(abs(normal), opacity);\\n } else {\\n // default to color mode\\n vColor = vec4(mix(color, overlayColor.rgb, overlayColor.a), opacity);\\n }\\n\\n gl_Position = projectionMatrix * (modelViewMatrix * vec4( position, 1.0 ));\\n\\n if (size > 0.) {\\n gl_PointSize = size;\\n } else {\\n gl_PointSize = clamp(-size / gl_Position.w, 3.0, 10.0);\\n }\\n\\n #include \\n}\\n\";\n\n/* babel-plugin-inline-import './Shader/PointsFS.glsl' */\nvar PointsFS = \"precision highp float;\\nprecision highp int;\\n\\n#include \\n\\nvarying vec4 vColor;\\n\\nvoid main() {\\n // circular point rendering\\n if(length(gl_PointCoord - 0.5) > 0.5){\\n discard;\\n }\\n\\n gl_FragColor = vColor;\\n\\n #include \\n}\\n\";\nimport Capabilities from \"../Core/System/Capabilities\";\nexport var MODE = {\n COLOR: 0,\n INTENSITY: 1,\n CLASSIFICATION: 2,\n NORMAL: 3\n};\n\nvar PointsMaterial =\n/*#__PURE__*/\nfunction (_RawShaderMaterial) {\n _inherits(PointsMaterial, _RawShaderMaterial);\n\n function PointsMaterial() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, PointsMaterial);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PointsMaterial).call(this, options));\n _this.vertexShader = PointsVS;\n _this.fragmentShader = PointsFS;\n _this.size = options.size || 0;\n _this.scale = options.scale || 0.05 * 0.5 / Math.tan(1.0 / 2.0); // autosizing scale\n\n _this.overlayColor = options.overlayColor || new Vector4(0, 0, 0, 0);\n _this.mode = options.mode || MODE.COLOR;\n _this.picking = false;\n\n for (var key in MODE) {\n if (Object.prototype.hasOwnProperty.call(MODE, key)) {\n _this.defines[\"MODE_\".concat(key)] = MODE[key];\n }\n }\n\n _this.uniforms.size = new Uniform(_this.size);\n _this.uniforms.mode = new Uniform(_this.mode);\n _this.uniforms.pickingMode = new Uniform(_this.picking);\n _this.uniforms.opacity = new Uniform(_this.opacity);\n _this.uniforms.overlayColor = new Uniform(_this.overlayColor);\n\n if (Capabilities.isLogDepthBufferSupported()) {\n _this.defines.USE_LOGDEPTHBUF = 1;\n _this.defines.USE_LOGDEPTHBUF_EXT = 1;\n }\n\n _this.updateUniforms();\n\n return _this;\n }\n\n _createClass(PointsMaterial, [{\n key: \"enablePicking\",\n value: function enablePicking(picking) {\n this.picking = picking;\n this.blending = picking ? NoBlending : NormalBlending;\n this.updateUniforms();\n }\n }, {\n key: \"updateUniforms\",\n value: function updateUniforms() {\n // if size is null, switch to autosizing using the canvas height\n this.uniforms.size.value = this.size > 0 ? this.size : -this.scale * window.innerHeight;\n this.uniforms.mode.value = this.mode;\n this.uniforms.pickingMode.value = this.picking;\n this.uniforms.opacity.value = this.opacity;\n this.uniforms.overlayColor.value = this.overlayColor;\n }\n }, {\n key: \"update\",\n value: function update(source) {\n this.visible = source.visible;\n this.opacity = source.opacity;\n this.transparent = source.transparent;\n this.size = source.size;\n this.mode = source.mode;\n this.picking = source.picking;\n this.scale = source.scale;\n this.overlayColor.copy(source.overlayColor);\n this.updateUniforms();\n Object.assign(this.defines, source.defines);\n return this;\n }\n }]);\n\n return PointsMaterial;\n}(RawShaderMaterial);\n\nexport default PointsMaterial;","import * as THREE from 'three';\nimport CancelledCommandException from \"../Core/Scheduler/CancelledCommandException\"; // Draw a cube with lines (12 lines).\n\nfunction cube(size) {\n var h = size.clone().multiplyScalar(0.5);\n var geometry = new THREE.Geometry();\n var line = new THREE.Line(geometry);\n geometry.vertices.push(new THREE.Vector3(-h.x, -h.y, -h.z), new THREE.Vector3(-h.x, h.y, -h.z), new THREE.Vector3(-h.x, h.y, -h.z), new THREE.Vector3(h.x, h.y, -h.z), new THREE.Vector3(h.x, h.y, -h.z), new THREE.Vector3(h.x, -h.y, -h.z), new THREE.Vector3(h.x, -h.y, -h.z), new THREE.Vector3(-h.x, -h.y, -h.z), new THREE.Vector3(-h.x, -h.y, h.z), new THREE.Vector3(-h.x, h.y, h.z), new THREE.Vector3(-h.x, h.y, h.z), new THREE.Vector3(h.x, h.y, h.z), new THREE.Vector3(h.x, h.y, h.z), new THREE.Vector3(h.x, -h.y, h.z), new THREE.Vector3(h.x, -h.y, h.z), new THREE.Vector3(-h.x, -h.y, h.z), new THREE.Vector3(-h.x, -h.y, -h.z), new THREE.Vector3(-h.x, -h.y, h.z), new THREE.Vector3(-h.x, h.y, -h.z), new THREE.Vector3(-h.x, h.y, h.z), new THREE.Vector3(h.x, h.y, -h.z), new THREE.Vector3(h.x, h.y, h.z), new THREE.Vector3(h.x, -h.y, -h.z), new THREE.Vector3(h.x, -h.y, h.z));\n line.computeLineDistances();\n return line.geometry;\n}\n\nfunction initBoundingBox(elt, layer) {\n var size = new THREE.Vector3();\n elt.tightbbox.getSize(size);\n elt.obj.boxHelper = new THREE.LineSegments(cube(size), elt.childrenBitField ? new THREE.LineDashedMaterial({\n color: 0,\n dashSize: 0.25,\n gapSize: 0.25\n }) : new THREE.LineBasicMaterial({\n color: 0\n }));\n elt.obj.boxHelper.frustumCulled = false;\n elt.obj.boxHelper.position.copy(elt.tightbbox.min);\n elt.obj.boxHelper.position.add(size.multiplyScalar(0.5));\n elt.obj.boxHelper.updateMatrixWorld(true);\n elt.obj.boxHelper.autoUpdateMatrix = false;\n elt.obj.boxHelper.material.linewidth = 2;\n elt.obj.boxHelper.layers.mask = layer.bboxes.layers.mask;\n layer.bboxes.add(elt.obj.boxHelper);\n elt.obj.boxHelper.updateMatrixWorld();\n}\n\nfunction computeScreenSpaceError(context, layer, elt, distance) {\n if (distance <= 0) {\n return Infinity;\n }\n\n var pointSpacing = layer.metadata.spacing / Math.pow(2, elt.name.length); // Estimate the onscreen distance between 2 points\n\n var onScreenSpacing = context.camera.preSSE * pointSpacing / distance; // [ P1 ]--------------[ P2 ]\n // <---------------------> = pointsSpacing (in world coordinates)\n // ~ onScreenSpacing (in pixels)\n // <------> = layer.pointSize (in pixels)\n\n return Math.max(0.0, onScreenSpacing - layer.pointSize);\n}\n\nfunction markForDeletion(elt) {\n if (elt.obj) {\n elt.obj.material.visible = false;\n }\n\n if (!elt.notVisibleSince) {\n elt.notVisibleSince = Date.now(); // Set .sse to an invalid value\n\n elt.sse = -1;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = elt.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var child = _step.value;\n markForDeletion(child);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nexport default {\n preUpdate: function preUpdate(context, changeSources) {\n // Bail-out if not ready\n if (!this.root) {\n return [];\n } // See https://cesiumjs.org/hosted-apps/massiveworlds/downloads/Ring/WorldScaleTerrainRendering.pptx\n // slide 17\n\n\n context.camera.preSSE = context.camera.height / (2 * Math.tan(THREE.Math.degToRad(context.camera.camera3D.fov) * 0.5));\n\n if (this.material) {\n this.material.visible = this.visible;\n this.material.opacity = this.opacity;\n this.material.transparent = this.opacity < 1;\n this.material.size = this.pointSize;\n } // lookup lowest common ancestor of changeSources\n\n\n var commonAncestorName;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = changeSources.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var source = _step2.value;\n\n if (source.isCamera || source == this) {\n // if the change is caused by a camera move, no need to bother\n // to find common ancestor: we need to update the whole tree:\n // some invisible tiles may now be visible\n return [this.root];\n }\n\n if (source.obj === undefined) {\n continue;\n } // filter sources that belong to our layer\n\n\n if (source.obj.isPoints && source.obj.layer == this) {\n if (!commonAncestorName) {\n commonAncestorName = source.name;\n } else {\n var i = void 0;\n\n for (i = 0; i < Math.min(source.name.length, commonAncestorName.length); i++) {\n if (source.name[i] != commonAncestorName[i]) {\n break;\n }\n }\n\n commonAncestorName = commonAncestorName.substr(0, i);\n\n if (commonAncestorName.length == 0) {\n break;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (commonAncestorName) {\n return [this.root.findChildrenByName(commonAncestorName)];\n } // Start updating from hierarchy root\n\n\n return [this.root];\n },\n update: function update(context, layer, elt) {\n elt.visible = false;\n\n if (layer.octreeDepthLimit >= 0 && layer.octreeDepthLimit < elt.name.length) {\n markForDeletion(elt);\n return;\n } // pick the best bounding box\n\n\n var bbox = elt.tightbbox ? elt.tightbbox : elt.bbox;\n elt.visible = context.camera.isBox3Visible(bbox, layer.object3d.matrixWorld);\n\n if (!elt.visible) {\n markForDeletion(elt);\n return;\n }\n\n elt.notVisibleSince = undefined; // only load geometry if this elements has points\n\n if (elt.numPoints > 0) {\n if (elt.obj) {\n if (elt.obj.material.update) {\n elt.obj.material.update(layer.material);\n } else {\n elt.obj.material.copy(layer.material);\n }\n } else if (!elt.promise) {\n var distance = Math.max(0.001, bbox.distanceToPoint(context.camera.camera3D.position)); // Increase priority of nearest node\n\n var priority = computeScreenSpaceError(context, layer, elt, distance) / distance;\n elt.promise = context.scheduler.execute({\n layer: layer,\n requester: elt,\n view: context.view,\n priority: priority,\n redraw: true,\n isLeaf: elt.childrenBitField == 0,\n earlyDropFunction: function earlyDropFunction(cmd) {\n return !cmd.requester.visible || !layer.visible;\n }\n }).then(function (pts) {\n if (layer.onPointsCreated) {\n layer.onPointsCreated(layer, pts);\n }\n\n elt.obj = pts; // store tightbbox to avoid ping-pong (bbox = larger => visible, tight => invisible)\n\n elt.tightbbox = pts.tightbbox; // make sure to add it here, otherwise it might never\n // be added nor cleaned\n\n layer.group.add(elt.obj);\n elt.obj.updateMatrixWorld(true);\n elt.promise = null;\n }, function (err) {\n if (err instanceof CancelledCommandException) {\n elt.promise = null;\n }\n });\n }\n }\n\n if (elt.children && elt.children.length) {\n var _distance = bbox.distanceToPoint(context.camera.camera3D.position);\n\n elt.sse = computeScreenSpaceError(context, layer, elt, _distance) / layer.sseThreshold;\n\n if (elt.sse >= 1) {\n return elt.children;\n } else {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = elt.children[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var child = _step3.value;\n markForDeletion(child);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n }\n },\n postUpdate: function postUpdate(context, layer) {\n if (!layer.group) {\n return;\n }\n\n layer.displayedCount = 0;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = layer.group.children[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _pts2 = _step4.value;\n\n if (_pts2.material.visible) {\n var _count2 = _pts2.geometry.attributes.position.count;\n\n _pts2.geometry.setDrawRange(0, _count2);\n\n layer.displayedCount += _count2;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4[\"return\"] != null) {\n _iterator4[\"return\"]();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n if (layer.displayedCount > layer.pointBudget) {\n // 2 different point count limit implementation, depending on the pointcloud source\n if (layer.supportsProgressiveDisplay) {\n // In this format, points are evenly distributed within a node,\n // so we can draw a percentage of each node and still get a correct\n // representation\n var reduction = layer.pointBudget / layer.displayedCount;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = layer.group.children[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var pts = _step5.value;\n\n if (pts.material.visible) {\n var count = Math.floor(pts.geometry.drawRange.count * reduction);\n\n if (count > 0) {\n pts.geometry.setDrawRange(0, count);\n } else {\n pts.material.visible = false;\n }\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5[\"return\"] != null) {\n _iterator5[\"return\"]();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n layer.displayedCount *= reduction;\n } else {\n // This format doesn't require points to be evenly distributed, so\n // we're going to sort the nodes by \"importance\" (= on screen size)\n // and display only the first N nodes\n layer.group.children.sort(function (p1, p2) {\n return p2.userData.metadata.sse - p1.userData.metadata.sse;\n });\n var limitHit = false;\n layer.displayedCount = 0;\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = layer.group.children[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var _pts = _step6.value;\n var _count = _pts.geometry.attributes.position.count;\n\n if (limitHit || layer.displayedCount + _count > layer.pointBudget) {\n _pts.material.visible = false;\n limitHit = true;\n } else {\n layer.displayedCount += _count;\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6[\"return\"] != null) {\n _iterator6[\"return\"]();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n }\n }\n\n var now = Date.now();\n\n for (var i = layer.group.children.length - 1; i >= 0; i--) {\n var obj = layer.group.children[i];\n\n if (!obj.material.visible && now - obj.userData.metadata.notVisibleSince > 10000) {\n // remove from group\n layer.group.children.splice(i, 1);\n obj.material.dispose();\n obj.geometry.dispose();\n obj.material = null;\n obj.geometry = null;\n obj.userData.metadata.obj = null;\n }\n }\n }\n};","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport * as THREE from 'three';\nimport Coordinates from \"../Core/Geographic/Coordinates\";\nvar FAST_READ_Z = 0;\nvar PRECISE_READ_Z = 1;\n/**\n * Utility module to retrieve elevation at a given coordinates.\n * The returned value is read in the elevation textures used by the graphics card\n * to render the tiles (globe or plane).\n * This implies that the return value may change depending on the current tile resolution.\n */\n\nexport default {\n /**\n * Return current displayed elevation at coord in meters.\n * @param {GeometryLayer} layer The tile layer owning the elevation textures we're going to query.\n * This is typically the globeLayer or a planeLayer.\n * @param {Coordinates} coord The coordinates that we're interested in\n * @param {Number} method 2 available method: FAST_READ_Z (default) or PRECISE_READ_Z. Chosing between\n * the 2 is a compromise between performance and visual quality\n * @param {Array} tileHint Optional array of tiles to speed up the process. You can give candidates tiles\n * likely to contain 'coord'. Otherwise the lookup process starts from the root.\n * @return {object} undefined if no result or z: displayed elevation in meters, texture: where the z value comes from, tile: owner of the texture\n */\n getElevationValueAt: function getElevationValueAt(layer, coord) {\n var method = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : FAST_READ_Z;\n var tileHint = arguments.length > 3 ? arguments[3] : undefined;\n\n var result = _readZ(layer, method, coord, tileHint || layer.level0Nodes);\n\n if (result) {\n return {\n z: result.coord.z,\n texture: result.texture,\n tile: result.tile\n };\n }\n },\n\n /**\n * Helper method that will position an object directly on the ground.\n * @param {GeometryLayer} layer The tile layer owning the elevation textures we're going to query.\n * This is typically the globeLayer or a planeLayer.\n * @param {string} objectCRS the CRS used by the object coordinates. You probably want to use view.referenceCRS here.\n * @param {Object3D} obj the object we want to modify.\n * @param {object} options\n * @param {number} options.method see getElevationValueAt documentation\n * @param {boolean} options.modifyGeometry if unset/false, this function will modify object.position. If true, it will\n * modify obj.geometry.vertices or obj.geometry.attributes.position\n * @param {Array} tileHint see getElevationValueAt documentation\n * @return {boolean} true if successful, false if we couldn't lookup the elevation at the given coords\n */\n placeObjectOnGround: function placeObjectOnGround(layer, objectCRS, obj) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var tileHint = arguments.length > 4 ? arguments[4] : undefined;\n var tiles;\n\n if (tileHint) {\n tiles = tileHint.concat(layer.level0Nodes);\n } else {\n tiles = layer.level0Nodes;\n }\n\n if (!options.modifyGeometry) {\n if (options.cache) {\n options.cache.length = 1;\n }\n\n var matrices = {\n worldFromLocal: obj.parent ? obj.parent.matrixWorld : undefined,\n localFromWorld: obj.parent ? new THREE.Matrix4().getInverse(obj.parent.matrixWorld) : undefined\n };\n\n var result = _updateVector3(layer, options.method || FAST_READ_Z, tiles, objectCRS, obj.position, options.offset || 0, matrices, undefined, options.cache ? options.cache[0] : undefined);\n\n if (result) {\n if (options.cache) {\n options.cache[0] = result;\n }\n\n obj.updateMatrix();\n obj.updateMatrixWorld();\n return true;\n }\n } else {\n var _matrices = {\n worldFromLocal: obj.matrixWorld,\n localFromWorld: new THREE.Matrix4().getInverse(obj.matrixWorld)\n };\n var geometry = obj.geometry;\n\n if (geometry.vertices) {\n if (options.cache) {\n options.cache.length = geometry.vertices.length;\n }\n\n var success = true;\n var coord = new Coordinates(objectCRS);\n\n for (var i = 0; i < geometry.vertices.length; i++) {\n var cached = options.cache ? options.cache[i] : undefined;\n\n var _result = _updateVector3(layer, options.method || FAST_READ_Z, tiles, objectCRS, geometry.vertices[i], options.offset || 0, _matrices, coord, cached);\n\n if (options.cache) {\n options.cache[i] = _result;\n }\n\n if (!_result) {\n success = false;\n }\n }\n\n geometry.verticesNeedUpdate = true;\n return success;\n } else if (geometry.isBufferGeometry) {\n if (options.cache) {\n options.cache.length = geometry.attributes.position.count;\n }\n\n var _success = true;\n var tmp = new THREE.Vector3();\n\n var _coord = new Coordinates(objectCRS);\n\n for (var _i = 0; _i < geometry.attributes.position.count; _i++) {\n var _cached = options.cache ? options.cache[_i] : undefined;\n\n tmp.fromBufferAttribute(geometry.attributes.position, _i);\n var prev = tmp.z;\n\n var _result2 = _updateVector3(layer, options.method || FAST_READ_Z, tiles, objectCRS, tmp, options.offset || 0, _matrices, _coord, _cached);\n\n if (options.cache) {\n options.cache[_i] = _result2;\n }\n\n if (!_result2) {\n _success = false;\n }\n\n if (prev != tmp.z) {\n geometry.attributes.position.needsUpdate = true;\n }\n\n geometry.attributes.position.setXYZ(_i, tmp.x, tmp.y, tmp.z);\n }\n\n return _success;\n }\n }\n },\n FAST_READ_Z: FAST_READ_Z,\n PRECISE_READ_Z: PRECISE_READ_Z\n};\n\nfunction tileAt(pt, tile) {\n if (tile.extent) {\n if (!tile.extent.isPointInside(pt)) {\n return undefined;\n }\n\n for (var i = 0; i < tile.children.length; i++) {\n var t = tileAt(pt, tile.children[i]);\n\n if (t) {\n return t;\n }\n }\n\n var tileLayer = tile.material.getElevationLayer();\n\n if (tileLayer && tileLayer.level >= 0) {\n return tile;\n }\n\n return undefined;\n }\n}\n\nvar _canvas;\n\nfunction _readTextureValueAt(layer, texture) {\n for (var _len = arguments.length, uv = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n uv[_key - 2] = arguments[_key];\n }\n\n for (var i = 0; i < uv.length; i += 2) {\n uv[i] = THREE.Math.clamp(uv[i], 0, texture.image.width - 1);\n uv[i + 1] = THREE.Math.clamp(uv[i + 1], 0, texture.image.height - 1);\n }\n\n if (texture.image.data) {\n // read a single value\n if (uv.length === 2) {\n return texture.image.data[uv[1] * texture.image.width + uv[0]];\n } // or read multiple values\n\n\n var result = [];\n\n for (var _i2 = 0; _i2 < uv.length; _i2 += 2) {\n result.push(texture.image.data[uv[_i2 + 1] * texture.image.width + uv[_i2]]);\n }\n\n return result;\n } else {\n if (!_canvas) {\n _canvas = document.createElement('canvas');\n _canvas.width = 2;\n _canvas.height = 2;\n }\n\n var minx = Infinity;\n var miny = Infinity;\n var maxx = -Infinity;\n var maxy = -Infinity;\n\n for (var _i3 = 0; _i3 < uv.length; _i3 += 2) {\n minx = Math.min(uv[_i3], minx);\n miny = Math.min(uv[_i3 + 1], miny);\n maxx = Math.max(uv[_i3], maxx);\n maxy = Math.max(uv[_i3 + 1], maxy);\n }\n\n var dw = maxx - minx + 1;\n var dh = maxy - miny + 1;\n _canvas.width = Math.max(_canvas.width, dw);\n _canvas.height = Math.max(_canvas.height, dh);\n\n var ctx = _canvas.getContext('2d');\n\n ctx.drawImage(texture.image, minx, miny, dw, dh, 0, 0, dw, dh);\n var d = ctx.getImageData(0, 0, dw, dh);\n var elevationLayer = layer.attachedLayers.filter(function (l) {\n return l.isElevationLayer;\n })[0];\n var _result3 = [];\n\n for (var _i4 = 0; _i4 < uv.length; _i4 += 2) {\n var ox = uv[_i4] - minx;\n var oy = uv[_i4 + 1] - miny; // d is 4 bytes per pixel\n\n _result3.push(THREE.Math.lerp(elevationLayer.colorTextureElevationMinZ, elevationLayer.colorTextureElevationMaxZ, d.data[4 * oy * dw + 4 * ox] / 255));\n }\n\n if (uv.length === 2) {\n return _result3[0];\n } else {\n return _result3;\n }\n }\n}\n\nfunction _convertUVtoTextureCoords(texture, u, v) {\n var width = texture.image.width;\n var height = texture.image.height;\n var up = Math.max(0, u * width - 0.5);\n var vp = Math.max(0, v * height - 0.5);\n var u1 = Math.floor(up);\n var u2 = Math.ceil(up);\n var v1 = Math.floor(vp);\n var v2 = Math.ceil(vp);\n return {\n u1: u1,\n u2: u2,\n v1: v1,\n v2: v2,\n wu: up - u1,\n wv: vp - v1\n };\n}\n\nfunction _readTextureValueNearestFiltering(layer, texture, vertexU, vertexV) {\n var coords = _convertUVtoTextureCoords(texture, vertexU, vertexV);\n\n var u = coords.wu <= 0 ? coords.u1 : coords.u2;\n var v = coords.wv <= 0 ? coords.v1 : coords.v2;\n return _readTextureValueAt(layer, texture, u, v);\n}\n\nfunction _readTextureValueWithBilinearFiltering(layer, texture, vertexU, vertexV) {\n var coords = _convertUVtoTextureCoords(texture, vertexU, vertexV);\n\n var _readTextureValueAt2 = _readTextureValueAt(layer, texture, coords.u1, coords.v1, coords.u2, coords.v1, coords.u1, coords.v2, coords.u2, coords.v2),\n _readTextureValueAt3 = _slicedToArray(_readTextureValueAt2, 4),\n z11 = _readTextureValueAt3[0],\n z21 = _readTextureValueAt3[1],\n z12 = _readTextureValueAt3[2],\n z22 = _readTextureValueAt3[3]; // horizontal filtering\n\n\n var zu1 = THREE.Math.lerp(z11, z21, coords.wu);\n var zu2 = THREE.Math.lerp(z12, z22, coords.wu); // then vertical filtering\n\n return THREE.Math.lerp(zu1, zu2, coords.wv);\n}\n\nfunction _readZFast(layer, texture, uv) {\n return _readTextureValueNearestFiltering(layer, texture, uv.x, uv.y);\n}\n\nvar bary = new THREE.Vector3();\n\nfunction _readZCorrect(layer, texture, uv, tileDimensions, tileOwnerDimensions) {\n // We need to emulate the vertex shader code that does 2 thing:\n // - interpolate (u, v) between triangle vertices: u,v will be multiple of 1/nsegments\n // (for now assume nsegments == 16)\n // - read elevation texture at (u, v) for\n // Determine u,v based on the vertices count.\n // 'modulo' is the gap (in [0, 1]) between 2 successive vertices in the geometry\n // e.g if you have 5 vertices, the only possible values for u (or v) are: 0, 0.25, 0.5, 0.75, 1\n // so modulo would be 0.25\n // note: currently the number of segments is hard-coded to 16 (see TileProvider) => 17 vertices\n var modulo = tileDimensions.x / tileOwnerDimensions.x / (17 - 1);\n var u = Math.floor(uv.x / modulo) * modulo;\n var v = Math.floor(uv.y / modulo) * modulo;\n\n if (u == 1) {\n u -= modulo;\n }\n\n if (v == 1) {\n v -= modulo;\n } // Build 4 vertices, 3 of them will be our triangle:\n // 11---21\n // | / |\n // | / |\n // | / |\n // 21---22\n\n\n var u1 = u;\n var u2 = u + modulo;\n var v1 = v;\n var v2 = v + modulo; // Our multiple z-value will be weigh-blended, depending on the distance of the real point\n // so lu (resp. lv) are the weight. When lu -> 0 (resp. 1) the final value -> z at u1 (resp. u2)\n\n var lu = (uv.x - u) / modulo;\n var lv = (uv.y - v) / modulo; // Determine if we're going to read the vertices from the top-left or lower-right triangle\n // (low-right = on the line 21-22 or under the diagonal lu = 1 - lv)\n\n var tri = new THREE.Triangle(new THREE.Vector3(u1, v2), new THREE.Vector3(u2, v1), lv == 1 || lu / (1 - lv) >= 1 ? new THREE.Vector3(u2, v2) : new THREE.Vector3(u1, v1)); // bary holds the respective weight of each vertices of the triangles\n\n tri.getBarycoord(new THREE.Vector3(uv.x, uv.y), bary); // read the 3 interesting values\n\n var z1 = _readTextureValueWithBilinearFiltering(layer, texture, tri.a.x, tri.a.y);\n\n var z2 = _readTextureValueWithBilinearFiltering(layer, texture, tri.b.x, tri.b.y);\n\n var z3 = _readTextureValueWithBilinearFiltering(layer, texture, tri.c.x, tri.c.y); // Blend with bary\n\n\n return z1 * bary.x + z2 * bary.y + z3 * bary.z;\n}\n\nvar temp = {\n v: new THREE.Vector3(),\n coord1: new Coordinates('EPSG:4978'),\n coord2: new Coordinates('EPSG:4978'),\n offset: new THREE.Vector2()\n};\nvar dimension = new THREE.Vector2();\n\nfunction offsetInExtent(point, extent) {\n var target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new THREE.Vector2();\n\n if (point.crs != extent.crs) {\n throw new Error(\"Unsupported mix: \".concat(point.crs, \" and \").concat(extent.crs));\n }\n\n extent.dimensions(dimension);\n var originX = (point.x - extent.west) / dimension.x;\n var originY = (extent.north - point.y) / dimension.y;\n return target.set(originX, originY);\n}\n\nfunction _readZ(layer, method, coord, nodes, cache) {\n var pt = coord.as(layer.extent.crs, temp.coord1);\n var tileWithValidElevationTexture = null; // first check in cache\n\n if (cache && cache.tile && cache.tile.material) {\n tileWithValidElevationTexture = tileAt(pt, cache.tile);\n }\n\n for (var i = 0; !tileWithValidElevationTexture && i < nodes.length; i++) {\n tileWithValidElevationTexture = tileAt(pt, nodes[i]);\n }\n\n if (!tileWithValidElevationTexture) {\n // failed to find a tile, abort\n return;\n }\n\n var tile = tileWithValidElevationTexture;\n var tileLayer = tile.material.getElevationLayer();\n var src = tileLayer.textures[0]; // check cache value if existing\n\n if (cache) {\n if (cache.id === src.id && cache.version === src.version) {\n return {\n coord: pt,\n texture: src,\n tile: tile\n };\n }\n } // Assuming that tiles are split in 4 children, we lookup the parent that\n // really owns this texture\n\n\n var stepsUpInHierarchy = Math.round(Math.log2(1.0 / tileLayer.offsetScales[0].z));\n\n for (var _i5 = 0; _i5 < stepsUpInHierarchy; _i5++) {\n tileWithValidElevationTexture = tileWithValidElevationTexture.parent;\n } // offset = offset from top-left\n\n\n offsetInExtent(pt, tileWithValidElevationTexture.extent, temp.offset); // At this point we have:\n // - tileWithValidElevationTexture.texture.image which is the current image\n // used for rendering\n // - offset which is the offset in this texture for the coordinate we're\n // interested in\n // We now have 2 options:\n // - the fast one: read the value of tileWithValidElevationTexture.texture.image\n // at (offset.x, offset.y) and we're done\n // - the correct one: emulate the vertex shader code\n\n if (method == PRECISE_READ_Z) {\n pt.z = _readZCorrect(layer, src, temp.offset, tile.extent.dimensions(), tileWithValidElevationTexture.extent.dimensions());\n } else {\n pt.z = _readZFast(layer, src, temp.offset);\n }\n\n return {\n coord: pt,\n texture: src,\n tile: tile\n };\n}\n\nfunction _updateVector3(layer, method, nodes, vecCRS, vec, offset) {\n var matrices = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n var coords = arguments.length > 7 ? arguments[7] : undefined;\n var cache = arguments.length > 8 ? arguments[8] : undefined;\n var coord = coords || new Coordinates(vecCRS);\n\n if (matrices.worldFromLocal) {\n coord.setFromVector3(temp.v.copy(vec).applyMatrix4(matrices.worldFromLocal));\n } else {\n coord.setFromVector3(vec);\n }\n\n var result = _readZ(layer, method, coord, nodes, cache);\n\n if (result) {\n result.coord.z += offset;\n result.coord.as(vecCRS, temp.coord2).toVector3(vec);\n\n if (matrices.localFromWorld) {\n vec.applyMatrix4(matrices.localFromWorld);\n }\n\n return {\n id: result.texture.id,\n version: result.texture.version,\n tile: result.tile\n };\n }\n}","/**\n * Calculates the minimum maximum elevation of xbil buffer\n *\n * @param {number} buffer The buffer to parse\n * @param {number} width The buffer's width\n * @param {number} height The buffer's height\n * @param {THREE.Vector4} pitch The pitch, restrict zone to parse\n * @return {Object} The minimum maximum elevation.\n */\nexport function computeMinMaxElevation(buffer, width, height, pitch) {\n var min = 1000000;\n var max = -1000000;\n\n if (!buffer) {\n // Return null values means there's no elevation values.\n // They can't be determined.\n // Don't return 0 because the result will be wrong\n return {\n min: null,\n max: null\n };\n }\n\n var sizeX = pitch ? Math.floor(pitch.z * width) : buffer.length;\n var sizeY = pitch ? Math.floor(pitch.z * height) : 1;\n var xs = pitch ? Math.floor(pitch.x * width) : 0;\n var ys = pitch ? Math.floor(pitch.y * height) : 0;\n var inc = pitch ? Math.max(Math.floor(sizeX / 8), 2) : 16;\n\n for (var y = ys; y < ys + sizeY; y += inc) {\n var pit = y * (width || 0);\n\n for (var x = xs; x < xs + sizeX; x += inc) {\n var val = buffer[pit + x];\n\n if (val > -10.0) {\n max = Math.max(max, val);\n min = Math.min(min, val);\n }\n }\n }\n\n if (max === -1000000 || min === 1000000) {\n // Return null values means the elevation values are incoherent\n // They can't be determined.\n // Don't return 0, -1000000 or 1000000 because the result will be wrong\n return {\n min: null,\n max: null\n };\n }\n\n return {\n min: min,\n max: max\n };\n} // We check if the elevation texture has some significant values through corners\n\nexport function checkNodeElevationTextureValidity(data, noDataValue) {\n var l = data.length;\n return data[0] > noDataValue && data[l - 1] > noDataValue && data[Math.sqrt(l) - 1] > noDataValue && data[l - Math.sqrt(l)] > noDataValue;\n}\n\nfunction getIndiceWithPitch(i, pitch, w) {\n // Return corresponding indice in parent tile using pitch\n // normalized\n var currentY = Math.floor(i / w) / w; // normalized\n\n var newX = pitch.x + i % w / w * pitch.z;\n var newY = pitch.y + currentY * pitch.w;\n var newIndice = Math.floor(newY * w) * w + Math.floor(newX * w);\n return newIndice;\n} // This function replaces noDataValue by significant values from parent texture\n\n\nexport function insertSignificantValuesFromParent(data, dataParent, noDataValue, pitch) {\n for (var i = 0, l = data.length; i < l; ++i) {\n if (data[i] === noDataValue) {\n data[i] = dataParent[getIndiceWithPitch(i, pitch, 256)];\n }\n }\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nexport default {\n /**\n * Cleanup obj to release three.js allocated resources\n * @param {Object3D} obj object to release\n */\n cleanup: function cleanup(obj) {\n obj.layer = null;\n\n if (typeof obj.dispose === 'function') {\n obj.dispose();\n } else {\n if (obj.geometry) {\n obj.geometry.dispose(); // the Object Removal Helper causes inconsistencies\n // when it assigns null to a geometry present in the Cache.\n // Actually, the cache can provide a mesh whose geometry is null.\n // see https://github.com/iTowns/itowns/issues/869\n // obj.geometry = null;\n }\n\n if (obj.material) {\n obj.material.dispose(); // obj.material = null;\n }\n }\n },\n\n /**\n * Remove obj's children belonging to a layer.\n * Neither obj nor its children will be disposed!\n * @param {Layer} layer The layer that objects must belong to. Other object are ignored\n * @param {Object3D} obj The Object3D we want to clean\n * @return {Array} an array of removed Object3D from obj (not including the recursive removals)\n */\n removeChildren: function removeChildren(layer, obj) {\n var toRemove = obj.children.filter(function (c) {\n return c.layer === layer;\n });\n obj.remove.apply(obj, _toConsumableArray(toRemove));\n return toRemove;\n },\n\n /**\n * Remove obj's children belonging to a layer and cleanup objexts.\n * obj will be disposed but its children **won't**!\n * @param {Layer} layer The layer that objects must belong to. Other object are ignored\n * @param {Object3D} obj The Object3D we want to clean\n * @return {Array} an array of removed Object3D from obj (not including the recursive removals)\n */\n removeChildrenAndCleanup: function removeChildrenAndCleanup(layer, obj) {\n var toRemove = obj.children.filter(function (c) {\n return c.layer === layer;\n });\n obj.remove.apply(obj, _toConsumableArray(toRemove));\n\n if (obj.layer === layer) {\n this.cleanup(obj);\n }\n\n return toRemove;\n },\n\n /**\n * Recursively remove obj's children belonging to a layer.\n * All removed obj will have their geometry/material disposed.\n * @param {Layer} layer The layer that objects must belong to. Other object are ignored\n * @param {Object3D} obj The Object3D we want to clean\n * @return {Array} an array of removed Object3D from obj (not including the recursive removals)\n */\n removeChildrenAndCleanupRecursively: function removeChildrenAndCleanupRecursively(layer, obj) {\n var toRemove = obj.children.filter(function (c) {\n return c.layer === layer;\n });\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = toRemove[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var c = _step.value;\n this.removeChildrenAndCleanupRecursively(layer, c);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n obj.remove.apply(obj, _toConsumableArray(toRemove));\n\n if (obj.layer === layer) {\n this.cleanup(obj);\n }\n\n return toRemove;\n }\n};","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","// This file has been added and patched after installing the NPM modules (via NPM script 'prepare')\nimport * as THREE from 'three';\nvar threeExamples = {};\n/*\n * @author mrdoob / http://mrdoob.com/\n */\n\nthreeExamples.DDSLoader = function (manager) {\n THREE.CompressedTextureLoader.call(this, manager);\n this._parser = threeExamples.DDSLoader.parse;\n};\n\nthreeExamples.DDSLoader.prototype = Object.create(THREE.CompressedTextureLoader.prototype);\nthreeExamples.DDSLoader.prototype.constructor = threeExamples.DDSLoader;\n\nthreeExamples.DDSLoader.parse = function (buffer, loadMipmaps) {\n var dds = {\n mipmaps: [],\n width: 0,\n height: 0,\n format: null,\n mipmapCount: 1\n }; // Adapted from @toji's DDS utils\n // https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js\n // All values and structures referenced from:\n // http://msdn.microsoft.com/en-us/library/bb943991.aspx/\n\n function fourCCToInt32(value) {\n return value.charCodeAt(0) + (value.charCodeAt(1) << 8) + (value.charCodeAt(2) << 16) + (value.charCodeAt(3) << 24);\n }\n\n function int32ToFourCC(value) {\n return String.fromCharCode(value & 0xff, value >> 8 & 0xff, value >> 16 & 0xff, value >> 24 & 0xff);\n }\n\n function loadARGBMip(buffer, dataOffset, width, height) {\n var dataLength = width * height * 4;\n var srcBuffer = new Uint8Array(buffer, dataOffset, dataLength);\n var byteArray = new Uint8Array(dataLength);\n var dst = 0;\n var src = 0;\n\n for (var y = 0; y < height; y++) {\n for (var x = 0; x < width; x++) {\n var b = srcBuffer[src];\n src++;\n var g = srcBuffer[src];\n src++;\n var r = srcBuffer[src];\n src++;\n var a = srcBuffer[src];\n src++;\n byteArray[dst] = r;\n dst++; //r\n\n byteArray[dst] = g;\n dst++; //g\n\n byteArray[dst] = b;\n dst++; //b\n\n byteArray[dst] = a;\n dst++; //a\n }\n }\n\n return byteArray;\n }\n\n var FOURCC_DXT1 = fourCCToInt32(\"DXT1\");\n var FOURCC_DXT3 = fourCCToInt32(\"DXT3\");\n var FOURCC_DXT5 = fourCCToInt32(\"DXT5\");\n var FOURCC_ETC1 = fourCCToInt32(\"ETC1\");\n // Parse header\n var header = new Int32Array(buffer, 0, 31);\n\n if (header[0] !== 0x20534444) {\n console.error('threeExamples.DDSLoader.parse: Invalid magic number in DDS header.');\n return dds;\n }\n\n if (!header[20] & 0x4) {\n console.error('threeExamples.DDSLoader.parse: Unsupported format, must contain a FourCC code.');\n return dds;\n }\n\n var blockBytes;\n var fourCC = header[21];\n var isRGBAUncompressed = false;\n\n switch (fourCC) {\n case FOURCC_DXT1:\n blockBytes = 8;\n dds.format = THREE.RGB_S3TC_DXT1_Format;\n break;\n\n case FOURCC_DXT3:\n blockBytes = 16;\n dds.format = THREE.RGBA_S3TC_DXT3_Format;\n break;\n\n case FOURCC_DXT5:\n blockBytes = 16;\n dds.format = THREE.RGBA_S3TC_DXT5_Format;\n break;\n\n case FOURCC_ETC1:\n blockBytes = 8;\n dds.format = THREE.RGB_ETC1_Format;\n break;\n\n default:\n if (header[22] === 32 && header[23] & 0xff0000 && header[24] & 0xff00 && header[25] & 0xff && header[26] & 0xff000000) {\n isRGBAUncompressed = true;\n blockBytes = 64;\n dds.format = THREE.RGBAFormat;\n } else {\n console.error('threeExamples.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC(fourCC));\n return dds;\n }\n\n }\n\n dds.mipmapCount = 1;\n\n if (header[2] & 0x20000 && loadMipmaps !== false) {\n dds.mipmapCount = Math.max(1, header[7]);\n }\n\n var caps2 = header[28];\n dds.isCubemap = caps2 & 0x200 ? true : false;\n\n if (dds.isCubemap && (!(caps2 & 0x400) || !(caps2 & 0x800) || !(caps2 & 0x1000) || !(caps2 & 0x2000) || !(caps2 & 0x4000) || !(caps2 & 0x8000))) {\n console.error('threeExamples.DDSLoader.parse: Incomplete cubemap faces');\n return dds;\n }\n\n dds.width = header[4];\n dds.height = header[3];\n var dataOffset = header[1] + 4; // Extract mipmaps buffers\n\n var faces = dds.isCubemap ? 6 : 1;\n\n for (var face = 0; face < faces; face++) {\n var width = dds.width;\n var height = dds.height;\n\n for (var i = 0; i < dds.mipmapCount; i++) {\n if (isRGBAUncompressed) {\n var byteArray = loadARGBMip(buffer, dataOffset, width, height);\n var dataLength = byteArray.length;\n } else {\n var dataLength = Math.max(4, width) / 4 * Math.max(4, height) / 4 * blockBytes;\n var byteArray = new Uint8Array(buffer, dataOffset, dataLength);\n }\n\n var mipmap = {\n \"data\": byteArray,\n \"width\": width,\n \"height\": height\n };\n dds.mipmaps.push(mipmap);\n dataOffset += dataLength;\n width = Math.max(width >> 1, 1);\n height = Math.max(height >> 1, 1);\n }\n }\n\n return dds;\n};\n\nexport default threeExamples.DDSLoader;","import _typeof from \"@babel/runtime/helpers/typeof\";\n// This file has been added and patched after installing the NPM modules (via NPM script 'prepare')\nimport * as THREE from 'three';\nvar threeExamples = {};\nimport DDSLoader from \"./DDSLoader\";\n/**\n* @author Rich Tibbett / https://github.com/richtr\n* @author mrdoob / http://mrdoob.com/\n* @author Tony Parisi / http://www.tonyparisi.com/\n* @author Takahiro / https://github.com/takahirox\n* @author Don McCurdy / https://www.donmccurdy.com\n*/\n\nthreeExamples.GLTFLoader = function () {\n function GLTFLoader(manager) {\n this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;\n this.dracoLoader = null;\n }\n\n GLTFLoader.prototype = {\n constructor: GLTFLoader,\n crossOrigin: 'anonymous',\n load: function load(url, onLoad, onProgress, onError) {\n var scope = this;\n var resourcePath;\n\n if (this.resourcePath !== undefined) {\n resourcePath = this.resourcePath;\n } else if (this.path !== undefined) {\n resourcePath = this.path;\n } else {\n resourcePath = THREE.LoaderUtils.extractUrlBase(url);\n } // Tells the LoadingManager to track an extra item, which resolves after\n // the model is fully loaded. This means the count of items loaded will\n // be incorrect, but ensures manager.onLoad() does not fire early.\n\n\n scope.manager.itemStart(url);\n\n var _onError = function (e) {\n if (onError) {\n onError(e);\n } else {\n console.error(e);\n }\n\n scope.manager.itemError(url);\n scope.manager.itemEnd(url);\n };\n\n var loader = new THREE.FileLoader(scope.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.load(url, function (data) {\n try {\n scope.parse(data, resourcePath, function (gltf) {\n onLoad(gltf);\n scope.manager.itemEnd(url);\n }, _onError);\n } catch (e) {\n _onError(e);\n }\n }, onProgress, _onError);\n },\n setCrossOrigin: function setCrossOrigin(value) {\n this.crossOrigin = value;\n return this;\n },\n setPath: function setPath(value) {\n this.path = value;\n return this;\n },\n setResourcePath: function setResourcePath(value) {\n this.resourcePath = value;\n return this;\n },\n setDRACOLoader: function setDRACOLoader(dracoLoader) {\n this.dracoLoader = dracoLoader;\n return this;\n },\n parse: function parse(data, path, onLoad, onError) {\n var content;\n var extensions = {};\n\n if (typeof data === 'string') {\n content = data;\n } else {\n var magic = THREE.LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n\n if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n try {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n } catch (error) {\n if (onError) onError(error);\n return;\n }\n\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n } else {\n content = THREE.LoaderUtils.decodeText(new Uint8Array(data));\n }\n }\n\n var json = JSON.parse(content);\n\n if (json.asset === undefined || json.asset.version[0] < 2) {\n if (onError) onError(new Error('threeExamples.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported. Use LegacyGLTFLoader instead.'));\n return;\n }\n\n if (json.extensionsUsed) {\n for (var i = 0; i < json.extensionsUsed.length; ++i) {\n var extensionName = json.extensionsUsed[i];\n var extensionsRequired = json.extensionsRequired || [];\n\n switch (extensionName) {\n case EXTENSIONS.KHR_LIGHTS_PUNCTUAL:\n extensions[extensionName] = new GLTFLightsExtension(json);\n break;\n\n case EXTENSIONS.KHR_MATERIALS_UNLIT:\n extensions[extensionName] = new GLTFMaterialsUnlitExtension(json);\n break;\n\n case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n extensions[extensionName] = new GLTFMaterialsPbrSpecularGlossinessExtension(json);\n break;\n\n case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n extensions[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n break;\n\n case EXTENSIONS.MSFT_TEXTURE_DDS:\n extensions[EXTENSIONS.MSFT_TEXTURE_DDS] = new GLTFTextureDDSExtension();\n break;\n\n case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] = new GLTFTextureTransformExtension(json);\n break;\n\n default:\n if (extensionsRequired.indexOf(extensionName) >= 0) {\n console.warn('threeExamples.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n }\n\n }\n }\n }\n\n var parser = new GLTFParser(json, extensions, {\n path: path || this.resourcePath || '',\n crossOrigin: this.crossOrigin,\n manager: this.manager\n });\n parser.parse(onLoad, onError);\n }\n };\n /* GLTFREGISTRY */\n\n function GLTFRegistry() {\n var objects = {};\n return {\n get: function get(key) {\n return objects[key];\n },\n add: function add(key, object) {\n objects[key] = object;\n },\n remove: function remove(key) {\n delete objects[key];\n },\n removeAll: function removeAll() {\n objects = {};\n }\n };\n }\n /*********************************/\n\n /********** EXTENSIONS ***********/\n\n /*********************************/\n\n\n var EXTENSIONS = {\n KHR_BINARY_GLTF: 'KHR_binary_glTF',\n KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n MSFT_TEXTURE_DDS: 'MSFT_texture_dds'\n };\n /**\n * DDS Texture Extension\n *\n * Specification:\n * https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\n *\n */\n\n function GLTFTextureDDSExtension() {\n if (!DDSLoader) {\n throw new Error('threeExamples.GLTFLoader: Attempting to load .dds texture without importing DDSLoader');\n }\n\n this.name = EXTENSIONS.MSFT_TEXTURE_DDS;\n this.ddsLoader = new DDSLoader();\n }\n /**\n * Lights Extension\n *\n * Specification: PENDING\n */\n\n\n function GLTFLightsExtension(json) {\n this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n var extension = json.extensions && json.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL] || {};\n this.lightDefs = extension.lights || [];\n }\n\n GLTFLightsExtension.prototype.loadLight = function (lightIndex) {\n var lightDef = this.lightDefs[lightIndex];\n var lightNode;\n var color = new THREE.Color(0xffffff);\n if (lightDef.color !== undefined) color.fromArray(lightDef.color);\n var range = lightDef.range !== undefined ? lightDef.range : 0;\n\n switch (lightDef.type) {\n case 'directional':\n lightNode = new THREE.DirectionalLight(color);\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n case 'point':\n lightNode = new THREE.PointLight(color);\n lightNode.distance = range;\n break;\n\n case 'spot':\n lightNode = new THREE.SpotLight(color);\n lightNode.distance = range; // Handle spotlight properties.\n\n lightDef.spot = lightDef.spot || {};\n lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n lightNode.angle = lightDef.spot.outerConeAngle;\n lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n lightNode.target.position.set(0, 0, -1);\n lightNode.add(lightNode.target);\n break;\n\n default:\n throw new Error('threeExamples.GLTFLoader: Unexpected light type, \"' + lightDef.type + '\".');\n } // Some lights (e.g. spot) default to a position other than the origin. Reset the position\n // here, because node-level parsing will only override position if explicitly specified.\n\n\n lightNode.position.set(0, 0, 0);\n lightNode.decay = 2;\n if (lightDef.intensity !== undefined) lightNode.intensity = lightDef.intensity;\n lightNode.name = lightDef.name || 'light_' + lightIndex;\n return Promise.resolve(lightNode);\n };\n /**\n * Unlit Materials Extension (pending)\n *\n * PR: https://github.com/KhronosGroup/glTF/pull/1163\n */\n\n\n function GLTFMaterialsUnlitExtension() {\n this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n }\n\n GLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\n return THREE.MeshBasicMaterial;\n };\n\n GLTFMaterialsUnlitExtension.prototype.extendParams = function (materialParams, materialDef, parser) {\n var pending = [];\n materialParams.color = new THREE.Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n var metallicRoughness = materialDef.pbrMetallicRoughness;\n\n if (metallicRoughness) {\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n var array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\n }\n }\n\n return Promise.all(pending);\n };\n /* BINARY EXTENSION */\n\n\n var BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\n var BINARY_EXTENSION_HEADER_LENGTH = 12;\n var BINARY_EXTENSION_CHUNK_TYPES = {\n JSON: 0x4E4F534A,\n BIN: 0x004E4942\n };\n\n function GLTFBinaryExtension(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n this.content = null;\n this.body = null;\n var headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n this.header = {\n magic: THREE.LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true)\n };\n\n if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error('threeExamples.GLTFLoader: Unsupported glTF-Binary header.');\n } else if (this.header.version < 2.0) {\n throw new Error('threeExamples.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.');\n }\n\n var chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n var chunkIndex = 0;\n\n while (chunkIndex < chunkView.byteLength) {\n var chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n var chunkType = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n\n if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n var contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n this.content = THREE.LoaderUtils.decodeText(contentArray);\n } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n var byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n this.body = data.slice(byteOffset, byteOffset + chunkLength);\n } // Clients must ignore chunks with unknown types.\n\n\n chunkIndex += chunkLength;\n }\n\n if (this.content === null) {\n throw new Error('threeExamples.GLTFLoader: JSON content not found.');\n }\n }\n /**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/pull/874\n */\n\n\n function GLTFDracoMeshCompressionExtension(json, dracoLoader) {\n if (!dracoLoader) {\n throw new Error('threeExamples.GLTFLoader: No DRACOLoader instance provided.');\n }\n\n this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n this.json = json;\n this.dracoLoader = dracoLoader;\n }\n\n GLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function (primitive, parser) {\n var json = this.json;\n var dracoLoader = this.dracoLoader;\n var bufferViewIndex = primitive.extensions[this.name].bufferView;\n var gltfAttributeMap = primitive.extensions[this.name].attributes;\n var threeAttributeMap = {};\n var attributeNormalizedMap = {};\n var attributeTypeMap = {};\n\n for (var attributeName in gltfAttributeMap) {\n var threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n }\n\n for (attributeName in primitive.attributes) {\n var threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n\n if (gltfAttributeMap[attributeName] !== undefined) {\n var accessorDef = json.accessors[primitive.attributes[attributeName]];\n var componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n attributeTypeMap[threeAttributeName] = componentType;\n attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\n }\n }\n\n return parser.getDependency('bufferView', bufferViewIndex).then(function (bufferView) {\n return new Promise(function (resolve) {\n dracoLoader.decodeDracoFile(bufferView, function (geometry) {\n for (var attributeName in geometry.attributes) {\n var attribute = geometry.attributes[attributeName];\n var normalized = attributeNormalizedMap[attributeName];\n if (normalized !== undefined) attribute.normalized = normalized;\n }\n\n resolve(geometry);\n }, threeAttributeMap, attributeTypeMap);\n });\n });\n };\n /**\n * Texture Transform Extension\n *\n * Specification:\n */\n\n\n function GLTFTextureTransformExtension() {\n this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n }\n\n GLTFTextureTransformExtension.prototype.extendTexture = function (texture, transform) {\n texture = texture.clone();\n\n if (transform.offset !== undefined) {\n texture.offset.fromArray(transform.offset);\n }\n\n if (transform.rotation !== undefined) {\n texture.rotation = transform.rotation;\n }\n\n if (transform.scale !== undefined) {\n texture.repeat.fromArray(transform.scale);\n }\n\n if (transform.texCoord !== undefined) {\n console.warn('threeExamples.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.');\n }\n\n texture.needsUpdate = true;\n return texture;\n };\n /**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\n */\n\n\n function GLTFMaterialsPbrSpecularGlossinessExtension() {\n return {\n name: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\n specularGlossinessParams: ['color', 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity', 'emissive', 'emissiveIntensity', 'emissiveMap', 'bumpMap', 'bumpScale', 'normalMap', 'displacementMap', 'displacementScale', 'displacementBias', 'specularMap', 'specular', 'glossinessMap', 'glossiness', 'alphaMap', 'envMap', 'envMapIntensity', 'refractionRatio'],\n getMaterialType: function getMaterialType() {\n return THREE.ShaderMaterial;\n },\n extendParams: function extendParams(materialParams, materialDef, parser) {\n var pbrSpecularGlossiness = materialDef.extensions[this.name];\n var shader = THREE.ShaderLib['standard'];\n var uniforms = THREE.UniformsUtils.clone(shader.uniforms);\n var specularMapParsFragmentChunk = ['#ifdef USE_SPECULARMAP', '\tuniform sampler2D specularMap;', '#endif'].join('\\n');\n var glossinessMapParsFragmentChunk = ['#ifdef USE_GLOSSINESSMAP', '\tuniform sampler2D glossinessMap;', '#endif'].join('\\n');\n var specularMapFragmentChunk = ['vec3 specularFactor = specular;', '#ifdef USE_SPECULARMAP', '\tvec4 texelSpecular = texture2D( specularMap, vUv );', '\ttexelSpecular = sRGBToLinear( texelSpecular );', '\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', '\tspecularFactor *= texelSpecular.rgb;', '#endif'].join('\\n');\n var glossinessMapFragmentChunk = ['float glossinessFactor = glossiness;', '#ifdef USE_GLOSSINESSMAP', '\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );', '\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', '\tglossinessFactor *= texelGlossiness.a;', '#endif'].join('\\n');\n var lightPhysicalFragmentChunk = ['PhysicalMaterial material;', 'material.diffuseColor = diffuseColor.rgb;', 'material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );', 'material.specularColor = specularFactor.rgb;'].join('\\n');\n var fragmentShader = shader.fragmentShader.replace('uniform float roughness;', 'uniform vec3 specular;').replace('uniform float metalness;', 'uniform float glossiness;').replace('#include ', specularMapParsFragmentChunk).replace('#include ', glossinessMapParsFragmentChunk).replace('#include ', specularMapFragmentChunk).replace('#include ', glossinessMapFragmentChunk).replace('#include ', lightPhysicalFragmentChunk);\n delete uniforms.roughness;\n delete uniforms.metalness;\n delete uniforms.roughnessMap;\n delete uniforms.metalnessMap;\n uniforms.specular = {\n value: new THREE.Color().setHex(0x111111)\n };\n uniforms.glossiness = {\n value: 0.5\n };\n uniforms.specularMap = {\n value: null\n };\n uniforms.glossinessMap = {\n value: null\n };\n materialParams.vertexShader = shader.vertexShader;\n materialParams.fragmentShader = fragmentShader;\n materialParams.uniforms = uniforms;\n materialParams.defines = {\n 'STANDARD': ''\n };\n materialParams.color = new THREE.Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n var pending = [];\n\n if (Array.isArray(pbrSpecularGlossiness.diffuseFactor)) {\n var array = pbrSpecularGlossiness.diffuseFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (pbrSpecularGlossiness.diffuseTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', pbrSpecularGlossiness.diffuseTexture));\n }\n\n materialParams.emissive = new THREE.Color(0.0, 0.0, 0.0);\n materialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n materialParams.specular = new THREE.Color(1.0, 1.0, 1.0);\n\n if (Array.isArray(pbrSpecularGlossiness.specularFactor)) {\n materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);\n }\n\n if (pbrSpecularGlossiness.specularGlossinessTexture !== undefined) {\n var specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n pending.push(parser.assignTexture(materialParams, 'glossinessMap', specGlossMapDef));\n pending.push(parser.assignTexture(materialParams, 'specularMap', specGlossMapDef));\n }\n\n return Promise.all(pending);\n },\n createMaterial: function createMaterial(params) {\n // setup material properties based on MeshStandardMaterial for Specular-Glossiness\n var material = new THREE.ShaderMaterial({\n defines: params.defines,\n vertexShader: params.vertexShader,\n fragmentShader: params.fragmentShader,\n uniforms: params.uniforms,\n fog: true,\n lights: true,\n opacity: params.opacity,\n transparent: params.transparent\n });\n material.isGLTFSpecularGlossinessMaterial = true;\n material.color = params.color;\n material.map = params.map === undefined ? null : params.map;\n material.lightMap = null;\n material.lightMapIntensity = 1.0;\n material.aoMap = params.aoMap === undefined ? null : params.aoMap;\n material.aoMapIntensity = 1.0;\n material.emissive = params.emissive;\n material.emissiveIntensity = 1.0;\n material.emissiveMap = params.emissiveMap === undefined ? null : params.emissiveMap;\n material.bumpMap = params.bumpMap === undefined ? null : params.bumpMap;\n material.bumpScale = 1;\n material.normalMap = params.normalMap === undefined ? null : params.normalMap;\n if (params.normalScale) material.normalScale = params.normalScale;\n material.displacementMap = null;\n material.displacementScale = 1;\n material.displacementBias = 0;\n material.specularMap = params.specularMap === undefined ? null : params.specularMap;\n material.specular = params.specular;\n material.glossinessMap = params.glossinessMap === undefined ? null : params.glossinessMap;\n material.glossiness = params.glossiness;\n material.alphaMap = null;\n material.envMap = params.envMap === undefined ? null : params.envMap;\n material.envMapIntensity = 1.0;\n material.refractionRatio = 0.98;\n material.extensions.derivatives = true;\n return material;\n },\n\n /**\n * Clones a GLTFSpecularGlossinessMaterial instance. The ShaderMaterial.copy() method can\n * copy only properties it knows about or inherits, and misses many properties that would\n * normally be defined by MeshStandardMaterial.\n *\n * This method allows GLTFSpecularGlossinessMaterials to be cloned in the process of\n * loading a glTF model, but cloning later (e.g. by the user) would require these changes\n * AND also updating `.onBeforeRender` on the parent mesh.\n *\n * @param {THREE.ShaderMaterial} source\n * @return {THREE.ShaderMaterial}\n */\n cloneMaterial: function cloneMaterial(source) {\n var target = source.clone();\n target.isGLTFSpecularGlossinessMaterial = true;\n var params = this.specularGlossinessParams;\n\n for (var i = 0, il = params.length; i < il; i++) {\n var value = source[params[i]];\n target[params[i]] = value && value.isColor ? value.clone() : value;\n }\n\n return target;\n },\n // Here's based on refreshUniformsCommon() and refreshUniformsStandard() in WebGLRenderer.\n refreshUniforms: function refreshUniforms(renderer, scene, camera, geometry, material) {\n if (material.isGLTFSpecularGlossinessMaterial !== true) {\n return;\n }\n\n var uniforms = material.uniforms;\n var defines = material.defines;\n uniforms.opacity.value = material.opacity;\n uniforms.diffuse.value.copy(material.color);\n uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n uniforms.map.value = material.map;\n uniforms.specularMap.value = material.specularMap;\n uniforms.alphaMap.value = material.alphaMap;\n uniforms.lightMap.value = material.lightMap;\n uniforms.lightMapIntensity.value = material.lightMapIntensity;\n uniforms.aoMap.value = material.aoMap;\n uniforms.aoMapIntensity.value = material.aoMapIntensity; // uv repeat and offset setting priorities\n // 1. color map\n // 2. specular map\n // 3. normal map\n // 4. bump map\n // 5. alpha map\n // 6. emissive map\n\n var uvScaleMap;\n\n if (material.map) {\n uvScaleMap = material.map;\n } else if (material.specularMap) {\n uvScaleMap = material.specularMap;\n } else if (material.displacementMap) {\n uvScaleMap = material.displacementMap;\n } else if (material.normalMap) {\n uvScaleMap = material.normalMap;\n } else if (material.bumpMap) {\n uvScaleMap = material.bumpMap;\n } else if (material.glossinessMap) {\n uvScaleMap = material.glossinessMap;\n } else if (material.alphaMap) {\n uvScaleMap = material.alphaMap;\n } else if (material.emissiveMap) {\n uvScaleMap = material.emissiveMap;\n }\n\n if (uvScaleMap !== undefined) {\n // backwards compatibility\n if (uvScaleMap.isWebGLRenderTarget) {\n uvScaleMap = uvScaleMap.texture;\n }\n\n if (uvScaleMap.matrixAutoUpdate === true) {\n uvScaleMap.updateMatrix();\n }\n\n uniforms.uvTransform.value.copy(uvScaleMap.matrix);\n }\n\n if (material.envMap) {\n uniforms.envMap.value = material.envMap;\n uniforms.envMapIntensity.value = material.envMapIntensity; // don't flip CubeTexture envMaps, flip everything else:\n // WebGLRenderTargetCube will be flipped for backwards compatibility\n // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\n // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\n\n uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? -1 : 1;\n uniforms.reflectivity.value = material.reflectivity;\n uniforms.refractionRatio.value = material.refractionRatio;\n uniforms.maxMipLevel.value = renderer.properties.get(material.envMap).__maxMipLevel;\n }\n\n uniforms.specular.value.copy(material.specular);\n uniforms.glossiness.value = material.glossiness;\n uniforms.glossinessMap.value = material.glossinessMap;\n uniforms.emissiveMap.value = material.emissiveMap;\n uniforms.bumpMap.value = material.bumpMap;\n uniforms.normalMap.value = material.normalMap;\n uniforms.displacementMap.value = material.displacementMap;\n uniforms.displacementScale.value = material.displacementScale;\n uniforms.displacementBias.value = material.displacementBias;\n\n if (uniforms.glossinessMap.value !== null && defines.USE_GLOSSINESSMAP === undefined) {\n defines.USE_GLOSSINESSMAP = ''; // set USE_ROUGHNESSMAP to enable vUv\n\n defines.USE_ROUGHNESSMAP = '';\n }\n\n if (uniforms.glossinessMap.value === null && defines.USE_GLOSSINESSMAP !== undefined) {\n delete defines.USE_GLOSSINESSMAP;\n delete defines.USE_ROUGHNESSMAP;\n }\n }\n };\n }\n /*********************************/\n\n /********** INTERPOLATION ********/\n\n /*********************************/\n // Spline Interpolation\n // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\n\n\n function GLTFCubicSplineInterpolant(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n THREE.Interpolant.call(this, parameterPositions, sampleValues, sampleSize, resultBuffer);\n }\n\n GLTFCubicSplineInterpolant.prototype = Object.create(THREE.Interpolant.prototype);\n GLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\n\n GLTFCubicSplineInterpolant.prototype.copySampleValue_ = function (index) {\n // Copies a sample value to the result buffer. See description of glTF\n // CUBICSPLINE values layout in interpolate_() function below.\n var result = this.resultBuffer,\n values = this.sampleValues,\n valueSize = this.valueSize;\n\n for (var i = 0; i !== valueSize; i++) {\n result[i] = values[index * valueSize * 3 + valueSize + i];\n }\n\n return result;\n };\n\n GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\n\n GLTFCubicSplineInterpolant.prototype.interpolate_ = function (i1, t0, t, t1) {\n var result = this.resultBuffer;\n var values = this.sampleValues;\n var stride = this.valueSize;\n var stride3 = stride * 3;\n var td = t1 - t0;\n var p = (t - t0) / td;\n var pp = p * p;\n var ppp = pp * p;\n var offset1 = i1 * stride3;\n var offset0 = offset1 - stride3;\n var s2 = -2 * ppp + 3 * pp;\n var s3 = ppp - pp;\n\n // Layout of keyframe output values for CUBICSPLINE animations:\n // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n for (var i = 0; i !== stride; i++) {\n var p0 = values[offset0 + i + stride]; // splineVertex_k\n\n var m0 = values[offset0 + i + stride * 2] * td; // outTangent_k * (t_k+1 - t_k)\n\n var p1 = values[offset1 + i + stride]; // splineVertex_k+1\n\n var m1 = values[offset1 + i] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n result[i] = (1 - s2) * p0 + (s3 - pp + p) * m0 + s2 * p1 + s3 * m1;\n }\n\n return result;\n };\n /*********************************/\n\n /********** INTERNALS ************/\n\n /*********************************/\n\n /* CONSTANTS */\n\n\n var WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n POINTS: 0,\n LINES: 1,\n LINE_LOOP: 2,\n LINE_STRIP: 3,\n TRIANGLES: 4,\n TRIANGLE_STRIP: 5,\n TRIANGLE_FAN: 6,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123\n };\n ({\n 5126: Number,\n //35674: THREE.Matrix2,\n 35675: THREE.Matrix3,\n 35676: THREE.Matrix4,\n 35664: THREE.Vector2,\n 35665: THREE.Vector3,\n 35666: THREE.Vector4,\n 35678: THREE.Texture\n });\n var WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n var WEBGL_FILTERS = {\n 9728: THREE.NearestFilter,\n 9729: THREE.LinearFilter,\n 9984: THREE.NearestMipMapNearestFilter,\n 9985: THREE.LinearMipMapNearestFilter,\n 9986: THREE.NearestMipMapLinearFilter,\n 9987: THREE.LinearMipMapLinearFilter\n };\n var WEBGL_WRAPPINGS = {\n 33071: THREE.ClampToEdgeWrapping,\n 33648: THREE.MirroredRepeatWrapping,\n 10497: THREE.RepeatWrapping\n };\n ({\n 1028: THREE.BackSide,\n // Culling front\n 1029: THREE.FrontSide // Culling back\n //1032: THREE.NoSide // Culling front and back, what to do?\n\n });\n ({\n 512: THREE.NeverDepth,\n 513: THREE.LessDepth,\n 514: THREE.EqualDepth,\n 515: THREE.LessEqualDepth,\n 516: THREE.GreaterEqualDepth,\n 517: THREE.NotEqualDepth,\n 518: THREE.GreaterEqualDepth,\n 519: THREE.AlwaysDepth\n });\n ({\n 32774: THREE.AddEquation,\n 32778: THREE.SubtractEquation,\n 32779: THREE.ReverseSubtractEquation\n });\n ({\n 0: THREE.ZeroFactor,\n 1: THREE.OneFactor,\n 768: THREE.SrcColorFactor,\n 769: THREE.OneMinusSrcColorFactor,\n 770: THREE.SrcAlphaFactor,\n 771: THREE.OneMinusSrcAlphaFactor,\n 772: THREE.DstAlphaFactor,\n 773: THREE.OneMinusDstAlphaFactor,\n 774: THREE.DstColorFactor,\n 775: THREE.OneMinusDstColorFactor,\n 776: THREE.SrcAlphaSaturateFactor // The followings are not supported by Three.js yet\n //32769: CONSTANT_COLOR,\n //32770: ONE_MINUS_CONSTANT_COLOR,\n //32771: CONSTANT_ALPHA,\n //32772: ONE_MINUS_CONSTANT_COLOR\n\n });\n var WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n var ATTRIBUTES = {\n POSITION: 'position',\n NORMAL: 'normal',\n TANGENT: 'tangent',\n TEXCOORD_0: 'uv',\n TEXCOORD_1: 'uv2',\n COLOR_0: 'color',\n WEIGHTS_0: 'skinWeight',\n JOINTS_0: 'skinIndex',\n _BATCHID: '_BATCHID'\n };\n var PATH_PROPERTIES = {\n scale: 'scale',\n translation: 'position',\n rotation: 'quaternion',\n weights: 'morphTargetInfluences'\n };\n var INTERPOLATION = {\n CUBICSPLINE: undefined,\n // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n // keyframe track will be initialized with a default interpolation type, then modified.\n LINEAR: THREE.InterpolateLinear,\n STEP: THREE.InterpolateDiscrete\n };\n var ALPHA_MODES = {\n OPAQUE: 'OPAQUE',\n MASK: 'MASK',\n BLEND: 'BLEND'\n };\n var MIME_TYPE_FORMATS = {\n 'image/png': THREE.RGBAFormat,\n 'image/jpeg': THREE.RGBFormat\n };\n /* UTILITY FUNCTIONS */\n\n function resolveURL(url, path) {\n // Invalid URL\n if (typeof url !== 'string' || url === '') return ''; // Absolute URL http://,https://,//\n\n if (/^(https?:)?\\/\\//i.test(url)) return url; // Data URI\n\n if (/^data:.*,.*$/i.test(url)) return url; // Blob URL\n\n if (/^blob:.*$/i.test(url)) return url; // Relative URL\n\n return path + url;\n }\n\n var defaultMaterial;\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\n\n function createDefaultMaterial() {\n defaultMaterial = defaultMaterial || new THREE.MeshStandardMaterial({\n color: 0xFFFFFF,\n emissive: 0x000000,\n metalness: 1,\n roughness: 1,\n transparent: false,\n depthTest: true,\n side: THREE.FrontSide\n });\n return defaultMaterial;\n }\n\n function addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n // Add unknown glTF extensions to an object's userData.\n for (var name in objectDef.extensions) {\n if (knownExtensions[name] === undefined) {\n object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n object.userData.gltfExtensions[name] = objectDef.extensions[name];\n }\n }\n }\n /**\n * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\n\n\n function assignExtrasToUserData(object, gltfDef) {\n if (gltfDef.extras !== undefined) {\n if (_typeof(gltfDef.extras) === 'object') {\n Object.assign(object.userData, gltfDef.extras);\n } else {\n console.warn('threeExamples.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras);\n }\n }\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {THREE.BufferGeometry} geometry\n * @param {Array} targets\n * @param {GLTFParser} parser\n * @return {Promise}\n */\n\n\n function addMorphTargets(geometry, targets, parser) {\n var hasMorphPosition = false;\n var hasMorphNormal = false;\n\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n if (target.POSITION !== undefined) hasMorphPosition = true;\n if (target.NORMAL !== undefined) hasMorphNormal = true;\n if (hasMorphPosition && hasMorphNormal) break;\n }\n\n if (!hasMorphPosition && !hasMorphNormal) return Promise.resolve(geometry);\n var pendingPositionAccessors = [];\n var pendingNormalAccessors = [];\n\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n\n if (hasMorphPosition) {\n var pendingAccessor = target.POSITION !== undefined ? parser.getDependency('accessor', target.POSITION) : geometry.attributes.position;\n pendingPositionAccessors.push(pendingAccessor);\n }\n\n if (hasMorphNormal) {\n var pendingAccessor = target.NORMAL !== undefined ? parser.getDependency('accessor', target.NORMAL) : geometry.attributes.normal;\n pendingNormalAccessors.push(pendingAccessor);\n }\n }\n\n return Promise.all([Promise.all(pendingPositionAccessors), Promise.all(pendingNormalAccessors)]).then(function (accessors) {\n var morphPositions = accessors[0];\n var morphNormals = accessors[1]; // Clone morph target accessors before modifying them.\n\n for (var i = 0, il = morphPositions.length; i < il; i++) {\n if (geometry.attributes.position === morphPositions[i]) continue;\n morphPositions[i] = cloneBufferAttribute(morphPositions[i]);\n }\n\n for (var i = 0, il = morphNormals.length; i < il; i++) {\n if (geometry.attributes.normal === morphNormals[i]) continue;\n morphNormals[i] = cloneBufferAttribute(morphNormals[i]);\n }\n\n for (var i = 0, il = targets.length; i < il; i++) {\n var target = targets[i];\n var attributeName = 'morphTarget' + i;\n\n if (hasMorphPosition) {\n // Three.js morph position is absolute value. The formula is\n // basePosition\n // + weight0 * ( morphPosition0 - basePosition )\n // + weight1 * ( morphPosition1 - basePosition )\n // ...\n // while the glTF one is relative\n // basePosition\n // + weight0 * glTFmorphPosition0\n // + weight1 * glTFmorphPosition1\n // ...\n // then we need to convert from relative to absolute here.\n if (target.POSITION !== undefined) {\n var positionAttribute = morphPositions[i];\n positionAttribute.name = attributeName;\n var position = geometry.attributes.position;\n\n for (var j = 0, jl = positionAttribute.count; j < jl; j++) {\n positionAttribute.setXYZ(j, positionAttribute.getX(j) + position.getX(j), positionAttribute.getY(j) + position.getY(j), positionAttribute.getZ(j) + position.getZ(j));\n }\n }\n }\n\n if (hasMorphNormal) {\n // see target.POSITION's comment\n if (target.NORMAL !== undefined) {\n var normalAttribute = morphNormals[i];\n normalAttribute.name = attributeName;\n var normal = geometry.attributes.normal;\n\n for (var j = 0, jl = normalAttribute.count; j < jl; j++) {\n normalAttribute.setXYZ(j, normalAttribute.getX(j) + normal.getX(j), normalAttribute.getY(j) + normal.getY(j), normalAttribute.getZ(j) + normal.getZ(j));\n }\n }\n }\n }\n\n if (hasMorphPosition) geometry.morphAttributes.position = morphPositions;\n if (hasMorphNormal) geometry.morphAttributes.normal = morphNormals;\n return geometry;\n });\n }\n /**\n * @param {THREE.Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\n\n\n function updateMorphTargets(mesh, meshDef) {\n mesh.updateMorphTargets();\n\n if (meshDef.weights !== undefined) {\n for (var i = 0, il = meshDef.weights.length; i < il; i++) {\n mesh.morphTargetInfluences[i] = meshDef.weights[i];\n }\n } // .extras has user-defined data, so check that .extras.targetNames is an array.\n\n\n if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n var targetNames = meshDef.extras.targetNames;\n\n if (mesh.morphTargetInfluences.length === targetNames.length) {\n mesh.morphTargetDictionary = {};\n\n for (var i = 0, il = targetNames.length; i < il; i++) {\n mesh.morphTargetDictionary[targetNames[i]] = i;\n }\n } else {\n console.warn('threeExamples.GLTFLoader: Invalid extras.targetNames length. Ignoring names.');\n }\n }\n }\n\n function createPrimitiveKey(primitiveDef) {\n var dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n var geometryKey;\n\n if (dracoExtension) {\n geometryKey = 'draco:' + dracoExtension.bufferView + ':' + dracoExtension.indices + ':' + createAttributesKey(dracoExtension.attributes);\n } else {\n geometryKey = primitiveDef.indices + ':' + createAttributesKey(primitiveDef.attributes) + ':' + primitiveDef.mode;\n }\n\n return geometryKey;\n }\n\n function createAttributesKey(attributes) {\n var attributesKey = '';\n var keys = Object.keys(attributes).sort();\n\n for (var i = 0, il = keys.length; i < il; i++) {\n attributesKey += keys[i] + ':' + attributes[keys[i]] + ';';\n }\n\n return attributesKey;\n }\n\n function cloneBufferAttribute(attribute) {\n if (attribute.isInterleavedBufferAttribute) {\n var count = attribute.count;\n var itemSize = attribute.itemSize;\n var array = attribute.array.slice(0, count * itemSize);\n\n for (var i = 0, j = 0; i < count; ++i) {\n array[j++] = attribute.getX(i);\n if (itemSize >= 2) array[j++] = attribute.getY(i);\n if (itemSize >= 3) array[j++] = attribute.getZ(i);\n if (itemSize >= 4) array[j++] = attribute.getW(i);\n }\n\n return new THREE.BufferAttribute(array, itemSize, attribute.normalized);\n }\n\n return attribute.clone();\n }\n /* GLTF PARSER */\n\n\n function GLTFParser(json, extensions, options) {\n this.json = json || {};\n this.extensions = extensions || {};\n this.options = options || {}; // loader object cache\n\n this.cache = new GLTFRegistry(); // BufferGeometry caching\n\n this.primitiveCache = {};\n this.textureLoader = new THREE.TextureLoader(this.options.manager);\n this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n this.fileLoader = new THREE.FileLoader(this.options.manager);\n this.fileLoader.setResponseType('arraybuffer');\n }\n\n GLTFParser.prototype.parse = function (onLoad, onError) {\n var parser = this;\n var json = this.json;\n var extensions = this.extensions; // Clear the loader cache\n\n this.cache.removeAll(); // Mark the special nodes/meshes in json for efficient parse\n\n this.markDefs();\n Promise.all([this.getDependencies('scene'), this.getDependencies('animation'), this.getDependencies('camera')]).then(function (dependencies) {\n var result = {\n scene: dependencies[0][json.scene || 0],\n scenes: dependencies[0],\n animations: dependencies[1],\n cameras: dependencies[2],\n asset: json.asset,\n parser: parser,\n userData: {}\n };\n addUnknownExtensionsToUserData(extensions, result, json);\n onLoad(result);\n })[\"catch\"](onError);\n };\n /**\n * Marks the special nodes/meshes in json for efficient parse.\n */\n\n\n GLTFParser.prototype.markDefs = function () {\n var nodeDefs = this.json.nodes || [];\n var skinDefs = this.json.skins || [];\n var meshDefs = this.json.meshes || [];\n var meshReferences = {};\n var meshUses = {}; // Nothing in the node definition indicates whether it is a Bone or an\n // Object3D. Use the skins' joint references to mark bones.\n\n for (var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n var joints = skinDefs[skinIndex].joints;\n\n for (var i = 0, il = joints.length; i < il; i++) {\n nodeDefs[joints[i]].isBone = true;\n }\n } // Meshes can (and should) be reused by multiple nodes in a glTF asset. To\n // avoid having more than one THREE.Mesh with the same name, count\n // references and rename instances below.\n //\n // Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\n\n for (var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n var nodeDef = nodeDefs[nodeIndex];\n\n if (nodeDef.mesh !== undefined) {\n if (meshReferences[nodeDef.mesh] === undefined) {\n meshReferences[nodeDef.mesh] = meshUses[nodeDef.mesh] = 0;\n }\n\n meshReferences[nodeDef.mesh]++; // Nothing in the mesh definition indicates whether it is\n // a SkinnedMesh or Mesh. Use the node's mesh reference\n // to mark SkinnedMesh if node has skin.\n\n if (nodeDef.skin !== undefined) {\n meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n }\n }\n }\n\n this.json.meshReferences = meshReferences;\n this.json.meshUses = meshUses;\n };\n /**\n * Requests the specified dependency asynchronously, with caching.\n * @param {string} type\n * @param {number} index\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.getDependency = function (type, index) {\n var cacheKey = type + ':' + index;\n var dependency = this.cache.get(cacheKey);\n\n if (!dependency) {\n switch (type) {\n case 'scene':\n dependency = this.loadScene(index);\n break;\n\n case 'node':\n dependency = this.loadNode(index);\n break;\n\n case 'mesh':\n dependency = this.loadMesh(index);\n break;\n\n case 'accessor':\n dependency = this.loadAccessor(index);\n break;\n\n case 'bufferView':\n dependency = this.loadBufferView(index);\n break;\n\n case 'buffer':\n dependency = this.loadBuffer(index);\n break;\n\n case 'material':\n dependency = this.loadMaterial(index);\n break;\n\n case 'texture':\n dependency = this.loadTexture(index);\n break;\n\n case 'skin':\n dependency = this.loadSkin(index);\n break;\n\n case 'animation':\n dependency = this.loadAnimation(index);\n break;\n\n case 'camera':\n dependency = this.loadCamera(index);\n break;\n\n case 'light':\n dependency = this.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].loadLight(index);\n break;\n\n default:\n throw new Error('Unknown type: ' + type);\n }\n\n this.cache.add(cacheKey, dependency);\n }\n\n return dependency;\n };\n /**\n * Requests all dependencies of the specified type asynchronously, with caching.\n * @param {string} type\n * @return {Promise>}\n */\n\n\n GLTFParser.prototype.getDependencies = function (type) {\n var dependencies = this.cache.get(type);\n\n if (!dependencies) {\n var parser = this;\n var defs = this.json[type + (type === 'mesh' ? 'es' : 's')] || [];\n dependencies = Promise.all(defs.map(function (def, index) {\n return parser.getDependency(type, index);\n }));\n this.cache.add(type, dependencies);\n }\n\n return dependencies;\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadBuffer = function (bufferIndex) {\n var bufferDef = this.json.buffers[bufferIndex];\n var loader = this.fileLoader;\n\n if (bufferDef.type && bufferDef.type !== 'arraybuffer') {\n throw new Error('threeExamples.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.');\n } // If present, GLB container is required to be the first buffer.\n\n\n if (bufferDef.uri === undefined && bufferIndex === 0) {\n return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n }\n\n var options = this.options;\n return new Promise(function (resolve, reject) {\n loader.load(resolveURL(bufferDef.uri, options.path), resolve, undefined, function () {\n reject(new Error('threeExamples.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n });\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n * @param {number} bufferViewIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadBufferView = function (bufferViewIndex) {\n var bufferViewDef = this.json.bufferViews[bufferViewIndex];\n return this.getDependency('buffer', bufferViewDef.buffer).then(function (buffer) {\n var byteLength = bufferViewDef.byteLength || 0;\n var byteOffset = bufferViewDef.byteOffset || 0;\n return buffer.slice(byteOffset, byteOffset + byteLength);\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n * @param {number} accessorIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadAccessor = function (accessorIndex) {\n var parser = this;\n var json = this.json;\n var accessorDef = this.json.accessors[accessorIndex];\n\n if (accessorDef.bufferView === undefined && accessorDef.sparse === undefined) {\n // Ignore empty accessors, which may be used to declare runtime\n // information about attributes coming from another source (e.g. Draco\n // compression extension).\n return Promise.resolve(null);\n }\n\n var pendingBufferViews = [];\n\n if (accessorDef.bufferView !== undefined) {\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.bufferView));\n } else {\n pendingBufferViews.push(null);\n }\n\n if (accessorDef.sparse !== undefined) {\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.indices.bufferView));\n pendingBufferViews.push(this.getDependency('bufferView', accessorDef.sparse.values.bufferView));\n }\n\n return Promise.all(pendingBufferViews).then(function (bufferViews) {\n var bufferView = bufferViews[0];\n var itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n var TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType]; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\n var elementBytes = TypedArray.BYTES_PER_ELEMENT;\n var byteOffset = accessorDef.byteOffset || 0;\n var byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[accessorDef.bufferView].byteStride : undefined;\n var normalized = accessorDef.normalized === true;\n var array, bufferAttribute; // The buffer is not interleaved if the stride is the item size in bytes.\n\n if (byteStride && byteStride !== elementBytes * itemSize) {\n var ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType;\n var ib = parser.cache.get(ibCacheKey);\n\n if (!ib) {\n // Use the full buffer if it's interleaved.\n array = new TypedArray(bufferView); // Integer parameters to IB/IBA are in array elements, not bytes.\n\n ib = new THREE.InterleavedBuffer(array, byteStride / elementBytes);\n parser.cache.add(ibCacheKey, ib);\n }\n\n bufferAttribute = new THREE.InterleavedBufferAttribute(ib, itemSize, byteOffset / elementBytes, normalized);\n } else {\n if (bufferView === null) {\n array = new TypedArray(accessorDef.count * itemSize);\n } else {\n array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n }\n\n bufferAttribute = new THREE.BufferAttribute(array, itemSize, normalized);\n } // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\n\n if (accessorDef.sparse !== undefined) {\n var itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n var TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n var byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n var byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n var sparseIndices = new TypedArrayIndices(bufferViews[1], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices);\n var sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n\n if (bufferView !== null) {\n // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n bufferAttribute.setArray(bufferAttribute.array.slice());\n }\n\n for (var i = 0, il = sparseIndices.length; i < il; i++) {\n var index = sparseIndices[i];\n bufferAttribute.setX(index, sparseValues[i * itemSize]);\n if (itemSize >= 2) bufferAttribute.setY(index, sparseValues[i * itemSize + 1]);\n if (itemSize >= 3) bufferAttribute.setZ(index, sparseValues[i * itemSize + 2]);\n if (itemSize >= 4) bufferAttribute.setW(index, sparseValues[i * itemSize + 3]);\n if (itemSize >= 5) throw new Error('threeExamples.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.');\n }\n }\n\n return bufferAttribute;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n * @param {number} textureIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadTexture = function (textureIndex) {\n var parser = this;\n var json = this.json;\n var options = this.options;\n var textureLoader = this.textureLoader;\n var URL = window.URL || window.webkitURL;\n var textureDef = json.textures[textureIndex];\n var textureExtensions = textureDef.extensions || {};\n var source;\n\n if (textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS]) {\n source = json.images[textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS].source];\n } else {\n source = json.images[textureDef.source];\n }\n\n var sourceURI = source.uri;\n var isObjectURL = false;\n\n if (source.bufferView !== undefined) {\n // Load binary image data from bufferView, if provided.\n sourceURI = parser.getDependency('bufferView', source.bufferView).then(function (bufferView) {\n isObjectURL = true;\n var blob = new Blob([bufferView], {\n type: source.mimeType\n });\n sourceURI = URL.createObjectURL(blob);\n return sourceURI;\n });\n }\n\n return Promise.resolve(sourceURI).then(function (sourceURI) {\n // Load Texture resource.\n var loader = THREE.Loader.Handlers.get(sourceURI);\n\n if (!loader) {\n loader = textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS] ? parser.extensions[EXTENSIONS.MSFT_TEXTURE_DDS].ddsLoader : textureLoader;\n }\n\n return new Promise(function (resolve, reject) {\n loader.load(resolveURL(sourceURI, options.path), resolve, undefined, reject);\n });\n }).then(function (texture) {\n // Clean up resources and configure Texture.\n if (isObjectURL === true) {\n URL.revokeObjectURL(sourceURI);\n }\n\n texture.flipY = false;\n if (textureDef.name !== undefined) texture.name = textureDef.name; // Ignore unknown mime types, like DDS files.\n\n if (source.mimeType in MIME_TYPE_FORMATS) {\n texture.format = MIME_TYPE_FORMATS[source.mimeType];\n }\n\n var samplers = json.samplers || {};\n var sampler = samplers[textureDef.sampler] || {};\n texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || THREE.LinearFilter;\n texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || THREE.LinearMipMapLinearFilter;\n texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || THREE.RepeatWrapping;\n texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || THREE.RepeatWrapping;\n return texture;\n });\n };\n /**\n * Asynchronously assigns a texture to the given material parameters.\n * @param {Object} materialParams\n * @param {string} mapName\n * @param {Object} mapDef\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.assignTexture = function (materialParams, mapName, mapDef) {\n var parser = this;\n return this.getDependency('texture', mapDef.index).then(function (texture) {\n if (!texture.isCompressedTexture) {\n switch (mapName) {\n case 'aoMap':\n case 'emissiveMap':\n case 'metalnessMap':\n case 'normalMap':\n case 'roughnessMap':\n texture.format = THREE.RGBFormat;\n break;\n }\n }\n\n if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n var transform = mapDef.extensions !== undefined ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : undefined;\n\n if (transform) {\n texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n }\n }\n\n materialParams[mapName] = texture;\n });\n };\n /**\n * Assigns final material to a Mesh, Line, or Points instance. The instance\n * already has a material (generated from the glTF material options alone)\n * but reuse of the same glTF material may require multiple threejs materials\n * to accomodate different primitive types, defines, etc. New materials will\n * be created if necessary, and reused from a cache.\n * @param {THREE.Object3D} mesh Mesh, Line, or Points instance.\n */\n\n\n GLTFParser.prototype.assignFinalMaterial = function (mesh) {\n var geometry = mesh.geometry;\n var material = mesh.material;\n var extensions = this.extensions;\n var useVertexTangents = geometry.attributes.tangent !== undefined;\n var useVertexColors = geometry.attributes.color !== undefined;\n var useFlatShading = geometry.attributes.normal === undefined;\n var useSkinning = mesh.isSkinnedMesh === true;\n var useMorphTargets = Object.keys(geometry.morphAttributes).length > 0;\n var useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\n\n if (mesh.isPoints) {\n var cacheKey = 'PointsMaterial:' + material.uuid;\n var pointsMaterial = this.cache.get(cacheKey);\n\n if (!pointsMaterial) {\n pointsMaterial = new THREE.PointsMaterial();\n THREE.Material.prototype.copy.call(pointsMaterial, material);\n pointsMaterial.color.copy(material.color);\n pointsMaterial.map = material.map;\n pointsMaterial.lights = false; // PointsMaterial doesn't support lights yet\n\n this.cache.add(cacheKey, pointsMaterial);\n }\n\n material = pointsMaterial;\n } else if (mesh.isLine) {\n var cacheKey = 'LineBasicMaterial:' + material.uuid;\n var lineMaterial = this.cache.get(cacheKey);\n\n if (!lineMaterial) {\n lineMaterial = new THREE.LineBasicMaterial();\n THREE.Material.prototype.copy.call(lineMaterial, material);\n lineMaterial.color.copy(material.color);\n lineMaterial.lights = false; // LineBasicMaterial doesn't support lights yet\n\n this.cache.add(cacheKey, lineMaterial);\n }\n\n material = lineMaterial;\n } // Clone the material if it will be modified\n\n\n if (useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets) {\n var cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n if (material.isGLTFSpecularGlossinessMaterial) cacheKey += 'specular-glossiness:';\n if (useSkinning) cacheKey += 'skinning:';\n if (useVertexTangents) cacheKey += 'vertex-tangents:';\n if (useVertexColors) cacheKey += 'vertex-colors:';\n if (useFlatShading) cacheKey += 'flat-shading:';\n if (useMorphTargets) cacheKey += 'morph-targets:';\n if (useMorphNormals) cacheKey += 'morph-normals:';\n var cachedMaterial = this.cache.get(cacheKey);\n\n if (!cachedMaterial) {\n cachedMaterial = material.isGLTFSpecularGlossinessMaterial ? extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].cloneMaterial(material) : material.clone();\n if (useSkinning) cachedMaterial.skinning = true;\n if (useVertexTangents) cachedMaterial.vertexTangents = true;\n if (useVertexColors) cachedMaterial.vertexColors = THREE.VertexColors;\n if (useFlatShading) cachedMaterial.flatShading = true;\n if (useMorphTargets) cachedMaterial.morphTargets = true;\n if (useMorphNormals) cachedMaterial.morphNormals = true;\n this.cache.add(cacheKey, cachedMaterial);\n }\n\n material = cachedMaterial;\n } // workarounds for mesh and geometry\n\n\n if (material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined) {\n console.log('threeExamples.GLTFLoader: Duplicating UVs to support aoMap.');\n geometry.addAttribute('uv2', new THREE.BufferAttribute(geometry.attributes.uv.array, 2));\n }\n\n if (material.isGLTFSpecularGlossinessMaterial) {\n // for GLTFSpecularGlossinessMaterial(ShaderMaterial) uniforms runtime update\n mesh.onBeforeRender = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].refreshUniforms;\n }\n\n mesh.material = material;\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n * @param {number} materialIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadMaterial = function (materialIndex) {\n var parser = this;\n var json = this.json;\n var extensions = this.extensions;\n var materialDef = json.materials[materialIndex];\n var materialType;\n var materialParams = {};\n var materialExtensions = materialDef.extensions || {};\n var pending = [];\n\n if (materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) {\n var sgExtension = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];\n materialType = sgExtension.getMaterialType();\n pending.push(sgExtension.extendParams(materialParams, materialDef, parser));\n } else if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n var kmuExtension = extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];\n materialType = kmuExtension.getMaterialType();\n pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n } else {\n // Specification:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n materialType = THREE.MeshStandardMaterial;\n var metallicRoughness = materialDef.pbrMetallicRoughness || {};\n materialParams.color = new THREE.Color(1.0, 1.0, 1.0);\n materialParams.opacity = 1.0;\n\n if (Array.isArray(metallicRoughness.baseColorFactor)) {\n var array = metallicRoughness.baseColorFactor;\n materialParams.color.fromArray(array);\n materialParams.opacity = array[3];\n }\n\n if (metallicRoughness.baseColorTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'map', metallicRoughness.baseColorTexture));\n }\n\n materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n if (metallicRoughness.metallicRoughnessTexture !== undefined) {\n pending.push(parser.assignTexture(materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture));\n pending.push(parser.assignTexture(materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture));\n }\n }\n\n if (materialDef.doubleSided === true) {\n materialParams.side = THREE.DoubleSide;\n }\n\n var alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n if (alphaMode === ALPHA_MODES.BLEND) {\n materialParams.transparent = true;\n } else {\n materialParams.transparent = false;\n\n if (alphaMode === ALPHA_MODES.MASK) {\n materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n }\n }\n\n if (materialDef.normalTexture !== undefined && materialType !== THREE.MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'normalMap', materialDef.normalTexture));\n materialParams.normalScale = new THREE.Vector2(1, 1);\n\n if (materialDef.normalTexture.scale !== undefined) {\n materialParams.normalScale.set(materialDef.normalTexture.scale, materialDef.normalTexture.scale);\n }\n }\n\n if (materialDef.occlusionTexture !== undefined && materialType !== THREE.MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'aoMap', materialDef.occlusionTexture));\n\n if (materialDef.occlusionTexture.strength !== undefined) {\n materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n }\n }\n\n if (materialDef.emissiveFactor !== undefined && materialType !== THREE.MeshBasicMaterial) {\n materialParams.emissive = new THREE.Color().fromArray(materialDef.emissiveFactor);\n }\n\n if (materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial) {\n pending.push(parser.assignTexture(materialParams, 'emissiveMap', materialDef.emissiveTexture));\n }\n\n return Promise.all(pending).then(function () {\n var material;\n\n if (materialType === THREE.ShaderMaterial) {\n material = extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);\n } else {\n material = new materialType(materialParams);\n }\n\n if (materialDef.name !== undefined) material.name = materialDef.name; // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\n\n if (material.map) material.map.encoding = THREE.sRGBEncoding;\n if (material.emissiveMap) material.emissiveMap.encoding = THREE.sRGBEncoding;\n if (material.specularMap) material.specularMap.encoding = THREE.sRGBEncoding;\n assignExtrasToUserData(material, materialDef);\n if (materialDef.extensions) addUnknownExtensionsToUserData(extensions, material, materialDef);\n return material;\n });\n };\n /**\n * @param {THREE.BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise}\n */\n\n\n function addPrimitiveAttributes(geometry, primitiveDef, parser) {\n var attributes = primitiveDef.attributes;\n var pending = [];\n\n function assignAttributeAccessor(accessorIndex, attributeName) {\n return parser.getDependency('accessor', accessorIndex).then(function (accessor) {\n geometry.addAttribute(attributeName, accessor);\n });\n }\n\n for (var gltfAttributeName in attributes) {\n var threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase(); // Skip attributes already provided by e.g. Draco extension.\n\n if (threeAttributeName in geometry.attributes) continue;\n pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n }\n\n if (primitiveDef.indices !== undefined && !geometry.index) {\n var accessor = parser.getDependency('accessor', primitiveDef.indices).then(function (accessor) {\n geometry.setIndex(accessor);\n });\n pending.push(accessor);\n }\n\n assignExtrasToUserData(geometry, primitiveDef);\n return Promise.all(pending).then(function () {\n return primitiveDef.targets !== undefined ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n });\n }\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n *\n * Creates BufferGeometries from primitives.\n *\n * @param {Array} primitives\n * @return {Promise>}\n */\n\n\n GLTFParser.prototype.loadGeometries = function (primitives) {\n var parser = this;\n var extensions = this.extensions;\n var cache = this.primitiveCache;\n\n function createDracoPrimitive(primitive) {\n return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function (geometry) {\n return addPrimitiveAttributes(geometry, primitive, parser);\n });\n }\n\n var pending = [];\n\n for (var i = 0, il = primitives.length; i < il; i++) {\n var primitive = primitives[i];\n var cacheKey = createPrimitiveKey(primitive); // See if we've already created this geometry\n\n var cached = cache[cacheKey];\n\n if (cached) {\n // Use the cached geometry if it exists\n pending.push(cached.promise);\n } else {\n var geometryPromise;\n\n if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n // Use DRACO geometry if available\n geometryPromise = createDracoPrimitive(primitive);\n } else {\n // Otherwise create a new geometry\n geometryPromise = addPrimitiveAttributes(new THREE.BufferGeometry(), primitive, parser);\n } // Cache this geometry\n\n\n cache[cacheKey] = {\n primitive: primitive,\n promise: geometryPromise\n };\n pending.push(geometryPromise);\n }\n }\n\n return Promise.all(pending);\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n * @param {number} meshIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadMesh = function (meshIndex) {\n var parser = this;\n var json = this.json;\n this.extensions;\n var meshDef = json.meshes[meshIndex];\n var primitives = meshDef.primitives;\n var pending = [];\n\n for (var i = 0, il = primitives.length; i < il; i++) {\n var material = primitives[i].material === undefined ? createDefaultMaterial() : this.getDependency('material', primitives[i].material);\n pending.push(material);\n }\n\n return Promise.all(pending).then(function (originalMaterials) {\n return parser.loadGeometries(primitives).then(function (geometries) {\n var meshes = [];\n\n for (var i = 0, il = geometries.length; i < il; i++) {\n var geometry = geometries[i];\n var primitive = primitives[i]; // 1. create Mesh\n\n var mesh;\n var material = originalMaterials[i];\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === undefined) {\n // .isSkinnedMesh isn't in glTF spec. See .markDefs()\n mesh = meshDef.isSkinnedMesh === true ? new THREE.SkinnedMesh(geometry, material) : new THREE.Mesh(geometry, material);\n if (mesh.isSkinnedMesh === true) mesh.normalizeSkinWeights(); // #15319\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n mesh.drawMode = THREE.TriangleStripDrawMode;\n } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n mesh.drawMode = THREE.TriangleFanDrawMode;\n }\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n mesh = new THREE.LineSegments(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n mesh = new THREE.Line(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n mesh = new THREE.LineLoop(geometry, material);\n } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n mesh = new THREE.Points(geometry, material);\n } else {\n throw new Error('threeExamples.GLTFLoader: Primitive mode unsupported: ' + primitive.mode);\n }\n\n if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n updateMorphTargets(mesh, meshDef);\n }\n\n mesh.name = meshDef.name || 'mesh_' + meshIndex;\n if (geometries.length > 1) mesh.name += '_' + i;\n assignExtrasToUserData(mesh, meshDef);\n parser.assignFinalMaterial(mesh);\n meshes.push(mesh);\n }\n\n if (meshes.length === 1) {\n return meshes[0];\n }\n\n var group = new THREE.Group();\n\n for (var i = 0, il = meshes.length; i < il; i++) {\n group.add(meshes[i]);\n }\n\n return group;\n });\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n * @param {number} cameraIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadCamera = function (cameraIndex) {\n var camera;\n var cameraDef = this.json.cameras[cameraIndex];\n var params = cameraDef[cameraDef.type];\n\n if (!params) {\n console.warn('threeExamples.GLTFLoader: Missing camera parameters.');\n return;\n }\n\n if (cameraDef.type === 'perspective') {\n camera = new THREE.PerspectiveCamera(THREE.Math.radToDeg(params.yfov), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6);\n } else if (cameraDef.type === 'orthographic') {\n camera = new THREE.OrthographicCamera(params.xmag / -2, params.xmag / 2, params.ymag / 2, params.ymag / -2, params.znear, params.zfar);\n }\n\n if (cameraDef.name !== undefined) camera.name = cameraDef.name;\n assignExtrasToUserData(camera, cameraDef);\n return Promise.resolve(camera);\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n * @param {number} skinIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadSkin = function (skinIndex) {\n var skinDef = this.json.skins[skinIndex];\n var skinEntry = {\n joints: skinDef.joints\n };\n\n if (skinDef.inverseBindMatrices === undefined) {\n return Promise.resolve(skinEntry);\n }\n\n return this.getDependency('accessor', skinDef.inverseBindMatrices).then(function (accessor) {\n skinEntry.inverseBindMatrices = accessor;\n return skinEntry;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n * @param {number} animationIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadAnimation = function (animationIndex) {\n var json = this.json;\n var animationDef = json.animations[animationIndex];\n var pendingNodes = [];\n var pendingInputAccessors = [];\n var pendingOutputAccessors = [];\n var pendingSamplers = [];\n var pendingTargets = [];\n\n for (var i = 0, il = animationDef.channels.length; i < il; i++) {\n var channel = animationDef.channels[i];\n var sampler = animationDef.samplers[channel.sampler];\n var target = channel.target;\n var name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\n var input = animationDef.parameters !== undefined ? animationDef.parameters[sampler.input] : sampler.input;\n var output = animationDef.parameters !== undefined ? animationDef.parameters[sampler.output] : sampler.output;\n pendingNodes.push(this.getDependency('node', name));\n pendingInputAccessors.push(this.getDependency('accessor', input));\n pendingOutputAccessors.push(this.getDependency('accessor', output));\n pendingSamplers.push(sampler);\n pendingTargets.push(target);\n }\n\n return Promise.all([Promise.all(pendingNodes), Promise.all(pendingInputAccessors), Promise.all(pendingOutputAccessors), Promise.all(pendingSamplers), Promise.all(pendingTargets)]).then(function (dependencies) {\n var nodes = dependencies[0];\n var inputAccessors = dependencies[1];\n var outputAccessors = dependencies[2];\n var samplers = dependencies[3];\n var targets = dependencies[4];\n var tracks = [];\n\n for (var i = 0, il = nodes.length; i < il; i++) {\n var node = nodes[i];\n var inputAccessor = inputAccessors[i];\n var outputAccessor = outputAccessors[i];\n var sampler = samplers[i];\n var target = targets[i];\n if (node === undefined) continue;\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n var TypedKeyframeTrack;\n\n switch (PATH_PROPERTIES[target.path]) {\n case PATH_PROPERTIES.weights:\n TypedKeyframeTrack = THREE.NumberKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.rotation:\n TypedKeyframeTrack = THREE.QuaternionKeyframeTrack;\n break;\n\n case PATH_PROPERTIES.position:\n case PATH_PROPERTIES.scale:\n default:\n TypedKeyframeTrack = THREE.VectorKeyframeTrack;\n break;\n }\n\n var targetName = node.name ? node.name : node.uuid;\n var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : THREE.InterpolateLinear;\n var targetNames = [];\n\n if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n // Node may be a THREE.Group (glTF mesh with several primitives) or a THREE.Mesh.\n node.traverse(function (object) {\n if (object.isMesh === true && object.morphTargetInfluences) {\n targetNames.push(object.name ? object.name : object.uuid);\n }\n });\n } else {\n targetNames.push(targetName);\n }\n\n for (var j = 0, jl = targetNames.length; j < jl; j++) {\n var track = new TypedKeyframeTrack(targetNames[j] + '.' + PATH_PROPERTIES[target.path], inputAccessor.array, outputAccessor.array, interpolation); // Override interpolation with custom factory method.\n\n if (sampler.interpolation === 'CUBICSPLINE') {\n track.createInterpolant = function (result) {\n // A CUBICSPLINE keyframe in glTF has three output values for each input value,\n // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n // must be divided by three to get the interpolant's sampleSize argument.\n return new GLTFCubicSplineInterpolant(this.times, this.values, this.getValueSize() / 3, result);\n }; // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\n\n track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n }\n\n tracks.push(track);\n }\n }\n\n var name = animationDef.name !== undefined ? animationDef.name : 'animation_' + animationIndex;\n return new THREE.AnimationClip(name, undefined, tracks);\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n * @param {number} nodeIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadNode = function (nodeIndex) {\n var json = this.json;\n var extensions = this.extensions;\n var parser = this;\n var meshReferences = json.meshReferences;\n var meshUses = json.meshUses;\n var nodeDef = json.nodes[nodeIndex];\n return function () {\n // .isBone isn't in glTF spec. See .markDefs\n if (nodeDef.isBone === true) {\n return Promise.resolve(new THREE.Bone());\n } else if (nodeDef.mesh !== undefined) {\n return parser.getDependency('mesh', nodeDef.mesh).then(function (mesh) {\n var node;\n\n if (meshReferences[nodeDef.mesh] > 1) {\n var instanceNum = meshUses[nodeDef.mesh]++;\n node = mesh.clone();\n node.name += '_instance_' + instanceNum; // onBeforeRender copy for Specular-Glossiness\n\n node.onBeforeRender = mesh.onBeforeRender;\n\n for (var i = 0, il = node.children.length; i < il; i++) {\n node.children[i].name += '_instance_' + instanceNum;\n node.children[i].onBeforeRender = mesh.children[i].onBeforeRender;\n }\n } else {\n node = mesh;\n } // if weights are provided on the node, override weights on the mesh.\n\n\n if (nodeDef.weights !== undefined) {\n node.traverse(function (o) {\n if (!o.isMesh) return;\n\n for (var i = 0, il = nodeDef.weights.length; i < il; i++) {\n o.morphTargetInfluences[i] = nodeDef.weights[i];\n }\n });\n }\n\n return node;\n });\n } else if (nodeDef.camera !== undefined) {\n return parser.getDependency('camera', nodeDef.camera);\n } else if (nodeDef.extensions && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL] && nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light !== undefined) {\n return parser.getDependency('light', nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light);\n } else {\n return Promise.resolve(new THREE.Object3D());\n }\n }().then(function (node) {\n if (nodeDef.name !== undefined) {\n node.userData.name = nodeDef.name;\n node.name = THREE.PropertyBinding.sanitizeNodeName(nodeDef.name);\n }\n\n assignExtrasToUserData(node, nodeDef);\n if (nodeDef.extensions) addUnknownExtensionsToUserData(extensions, node, nodeDef);\n\n if (nodeDef.matrix !== undefined) {\n var matrix = new THREE.Matrix4();\n matrix.fromArray(nodeDef.matrix);\n node.applyMatrix(matrix);\n } else {\n if (nodeDef.translation !== undefined) {\n node.position.fromArray(nodeDef.translation);\n }\n\n if (nodeDef.rotation !== undefined) {\n node.quaternion.fromArray(nodeDef.rotation);\n }\n\n if (nodeDef.scale !== undefined) {\n node.scale.fromArray(nodeDef.scale);\n }\n }\n\n return node;\n });\n };\n /**\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n * @param {number} sceneIndex\n * @return {Promise}\n */\n\n\n GLTFParser.prototype.loadScene = function () {\n // scene node hierachy builder\n function buildNodeHierachy(nodeId, parentObject, json, parser) {\n var nodeDef = json.nodes[nodeId];\n return parser.getDependency('node', nodeId).then(function (node) {\n if (nodeDef.skin === undefined) return node; // build skeleton here as well\n\n var skinEntry;\n return parser.getDependency('skin', nodeDef.skin).then(function (skin) {\n skinEntry = skin;\n var pendingJoints = [];\n\n for (var i = 0, il = skinEntry.joints.length; i < il; i++) {\n pendingJoints.push(parser.getDependency('node', skinEntry.joints[i]));\n }\n\n return Promise.all(pendingJoints);\n }).then(function (jointNodes) {\n var meshes = node.isGroup === true ? node.children : [node];\n\n for (var i = 0, il = meshes.length; i < il; i++) {\n var mesh = meshes[i];\n var bones = [];\n var boneInverses = [];\n\n for (var j = 0, jl = jointNodes.length; j < jl; j++) {\n var jointNode = jointNodes[j];\n\n if (jointNode) {\n bones.push(jointNode);\n var mat = new THREE.Matrix4();\n\n if (skinEntry.inverseBindMatrices !== undefined) {\n mat.fromArray(skinEntry.inverseBindMatrices.array, j * 16);\n }\n\n boneInverses.push(mat);\n } else {\n console.warn('threeExamples.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[j]);\n }\n }\n\n mesh.bind(new THREE.Skeleton(bones, boneInverses), mesh.matrixWorld);\n }\n\n return node;\n });\n }).then(function (node) {\n // build node hierachy\n parentObject.add(node);\n var pending = [];\n\n if (nodeDef.children) {\n var children = nodeDef.children;\n\n for (var i = 0, il = children.length; i < il; i++) {\n var child = children[i];\n pending.push(buildNodeHierachy(child, node, json, parser));\n }\n }\n\n return Promise.all(pending);\n });\n }\n\n return function (sceneIndex) {\n var json = this.json;\n var extensions = this.extensions;\n var sceneDef = this.json.scenes[sceneIndex];\n var parser = this;\n var scene = new THREE.Scene();\n if (sceneDef.name !== undefined) scene.name = sceneDef.name;\n assignExtrasToUserData(scene, sceneDef);\n if (sceneDef.extensions) addUnknownExtensionsToUserData(extensions, scene, sceneDef);\n var nodeIds = sceneDef.nodes || [];\n var pending = [];\n\n for (var i = 0, il = nodeIds.length; i < il; i++) {\n pending.push(buildNodeHierachy(nodeIds[i], scene, json, parser));\n }\n\n return Promise.all(pending).then(function () {\n return scene;\n });\n };\n }();\n\n return GLTFLoader;\n}();\n\nexport default threeExamples.GLTFLoader;","import _typeof from \"@babel/runtime/helpers/typeof\";\n// This file has been added and patched after installing the NPM modules (via NPM script 'prepare')\nimport * as THREE from 'three';\nvar threeExamples = {}; // Copyright 2016 The Draco Authors.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n\n/**\n * @param {THREE.LoadingManager} manager\n */\nthreeExamples.DRACOLoader = function (manager) {\n this.timeLoaded = 0;\n this.manager = manager || THREE.DefaultLoadingManager;\n this.materials = null;\n this.verbosity = 0;\n this.attributeOptions = {};\n this.drawMode = THREE.TrianglesDrawMode; // Native Draco attribute type to Three.JS attribute type.\n\n this.nativeAttributeMap = {\n 'position': 'POSITION',\n 'normal': 'NORMAL',\n 'color': 'COLOR',\n 'uv': 'TEX_COORD'\n };\n};\n\nthreeExamples.DRACOLoader.prototype = {\n constructor: threeExamples.DRACOLoader,\n load: function load(url, onLoad, onProgress, onError) {\n var scope = this;\n var loader = new THREE.FileLoader(scope.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.load(url, function (blob) {\n scope.decodeDracoFile(blob, onLoad);\n }, onProgress, onError);\n },\n setPath: function setPath(value) {\n this.path = value;\n return this;\n },\n setVerbosity: function setVerbosity(level) {\n this.verbosity = level;\n return this;\n },\n\n /**\n * Sets desired mode for generated geometry indices.\n * Can be either:\n * THREE.TrianglesDrawMode\n * THREE.TriangleStripDrawMode\n */\n setDrawMode: function setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n },\n\n /**\n * Skips dequantization for a specific attribute.\n * |attributeName| is the THREE.js name of the given attribute type.\n * The only currently supported |attributeName| is 'position', more may be\n * added in future.\n */\n setSkipDequantization: function setSkipDequantization(attributeName, skip) {\n var skipDequantization = true;\n if (typeof skip !== 'undefined') skipDequantization = skip;\n this.getAttributeOptions(attributeName).skipDequantization = skipDequantization;\n return this;\n },\n\n /**\n * Decompresses a Draco buffer. Names of attributes (for ID and type maps)\n * must be one of the supported three.js types, including: position, color,\n * normal, uv, uv2, skinIndex, skinWeight.\n *\n * @param {ArrayBuffer} rawBuffer\n * @param {Function} callback\n * @param {Object|undefined} attributeUniqueIdMap Provides a pre-defined ID\n * for each attribute in the geometry to be decoded. If given,\n * `attributeTypeMap` is required and `nativeAttributeMap` will be\n * ignored.\n * @param {Object|undefined} attributeTypeMap Provides a predefined data\n * type (as a typed array constructor) for each attribute in the\n * geometry to be decoded.\n */\n decodeDracoFile: function decodeDracoFile(rawBuffer, callback, attributeUniqueIdMap, attributeTypeMap) {\n var scope = this;\n threeExamples.DRACOLoader.getDecoderModule().then(function (module) {\n scope.decodeDracoFileInternal(rawBuffer, module.decoder, callback, attributeUniqueIdMap, attributeTypeMap);\n });\n },\n decodeDracoFileInternal: function decodeDracoFileInternal(rawBuffer, dracoDecoder, callback, attributeUniqueIdMap, attributeTypeMap) {\n /*\n * Here is how to use Draco Javascript decoder and get the geometry.\n */\n var buffer = new dracoDecoder.DecoderBuffer();\n buffer.Init(new Int8Array(rawBuffer), rawBuffer.byteLength);\n var decoder = new dracoDecoder.Decoder();\n /*\n * Determine what type is this file: mesh or point cloud.\n */\n\n var geometryType = decoder.GetEncodedGeometryType(buffer);\n\n if (geometryType == dracoDecoder.TRIANGULAR_MESH) {\n if (this.verbosity > 0) {\n console.log('Loaded a mesh.');\n }\n } else if (geometryType == dracoDecoder.POINT_CLOUD) {\n if (this.verbosity > 0) {\n console.log('Loaded a point cloud.');\n }\n } else {\n var errorMsg = 'threeExamples.DRACOLoader: Unknown geometry type.';\n console.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n callback(this.convertDracoGeometryTo3JS(dracoDecoder, decoder, geometryType, buffer, attributeUniqueIdMap, attributeTypeMap));\n },\n addAttributeToGeometry: function addAttributeToGeometry(dracoDecoder, decoder, dracoGeometry, attributeName, attributeType, attribute, geometry, geometryBuffer) {\n if (attribute.ptr === 0) {\n var errorMsg = 'threeExamples.DRACOLoader: No attribute ' + attributeName;\n console.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n var numComponents = attribute.num_components();\n var numPoints = dracoGeometry.num_points();\n var numValues = numPoints * numComponents;\n var attributeData;\n var TypedBufferAttribute;\n\n switch (attributeType) {\n case Float32Array:\n attributeData = new dracoDecoder.DracoFloat32Array();\n decoder.GetAttributeFloatForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Float32Array(numValues);\n TypedBufferAttribute = THREE.Float32BufferAttribute;\n break;\n\n case Int8Array:\n attributeData = new dracoDecoder.DracoInt8Array();\n decoder.GetAttributeInt8ForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Int8Array(numValues);\n TypedBufferAttribute = THREE.Int8BufferAttribute;\n break;\n\n case Int16Array:\n attributeData = new dracoDecoder.DracoInt16Array();\n decoder.GetAttributeInt16ForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Int16Array(numValues);\n TypedBufferAttribute = THREE.Int16BufferAttribute;\n break;\n\n case Int32Array:\n attributeData = new dracoDecoder.DracoInt32Array();\n decoder.GetAttributeInt32ForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Int32Array(numValues);\n TypedBufferAttribute = THREE.Int32BufferAttribute;\n break;\n\n case Uint8Array:\n attributeData = new dracoDecoder.DracoUInt8Array();\n decoder.GetAttributeUInt8ForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Uint8Array(numValues);\n TypedBufferAttribute = THREE.Uint8BufferAttribute;\n break;\n\n case Uint16Array:\n attributeData = new dracoDecoder.DracoUInt16Array();\n decoder.GetAttributeUInt16ForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Uint16Array(numValues);\n TypedBufferAttribute = THREE.Uint16BufferAttribute;\n break;\n\n case Uint32Array:\n attributeData = new dracoDecoder.DracoUInt32Array();\n decoder.GetAttributeUInt32ForAllPoints(dracoGeometry, attribute, attributeData);\n geometryBuffer[attributeName] = new Uint32Array(numValues);\n TypedBufferAttribute = THREE.Uint32BufferAttribute;\n break;\n\n default:\n var errorMsg = 'threeExamples.DRACOLoader: Unexpected attribute type.';\n console.error(errorMsg);\n throw new Error(errorMsg);\n } // Copy data from decoder.\n\n\n for (var i = 0; i < numValues; i++) {\n geometryBuffer[attributeName][i] = attributeData.GetValue(i);\n } // Add attribute to THREEJS geometry for rendering.\n\n\n geometry.addAttribute(attributeName, new TypedBufferAttribute(geometryBuffer[attributeName], numComponents));\n dracoDecoder.destroy(attributeData);\n },\n convertDracoGeometryTo3JS: function convertDracoGeometryTo3JS(dracoDecoder, decoder, geometryType, buffer, attributeUniqueIdMap, attributeTypeMap) {\n // TODO: Should not assume native Draco attribute IDs apply.\n if (this.getAttributeOptions('position').skipDequantization === true) {\n decoder.SkipAttributeTransform(dracoDecoder.POSITION);\n }\n\n var dracoGeometry;\n var decodingStatus;\n var start_time = performance.now();\n\n if (geometryType === dracoDecoder.TRIANGULAR_MESH) {\n dracoGeometry = new dracoDecoder.Mesh();\n decodingStatus = decoder.DecodeBufferToMesh(buffer, dracoGeometry);\n } else {\n dracoGeometry = new dracoDecoder.PointCloud();\n decodingStatus = decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n }\n\n if (!decodingStatus.ok() || dracoGeometry.ptr == 0) {\n var errorMsg = 'threeExamples.DRACOLoader: Decoding failed: ';\n errorMsg += decodingStatus.error_msg();\n console.error(errorMsg);\n dracoDecoder.destroy(decoder);\n dracoDecoder.destroy(dracoGeometry);\n throw new Error(errorMsg);\n }\n\n var decode_end = performance.now();\n dracoDecoder.destroy(buffer);\n /*\n * Example on how to retrieve mesh and attributes.\n */\n\n var numFaces;\n\n if (geometryType == dracoDecoder.TRIANGULAR_MESH) {\n numFaces = dracoGeometry.num_faces();\n\n if (this.verbosity > 0) {\n console.log('Number of faces loaded: ' + numFaces.toString());\n }\n } else {\n numFaces = 0;\n }\n\n var numPoints = dracoGeometry.num_points();\n var numAttributes = dracoGeometry.num_attributes();\n\n if (this.verbosity > 0) {\n console.log('Number of points loaded: ' + numPoints.toString());\n console.log('Number of attributes loaded: ' + numAttributes.toString());\n } // Verify if there is position attribute.\n // TODO: Should not assume native Draco attribute IDs apply.\n\n\n var posAttId = decoder.GetAttributeId(dracoGeometry, dracoDecoder.POSITION);\n\n if (posAttId == -1) {\n var errorMsg = 'threeExamples.DRACOLoader: No position attribute found.';\n console.error(errorMsg);\n dracoDecoder.destroy(decoder);\n dracoDecoder.destroy(dracoGeometry);\n throw new Error(errorMsg);\n }\n\n var posAttribute = decoder.GetAttribute(dracoGeometry, posAttId); // Structure for converting to THREEJS geometry later.\n\n var geometryBuffer = {}; // Import data to Three JS geometry.\n\n var geometry = new THREE.BufferGeometry(); // Do not use both the native attribute map and a provided (e.g. glTF) map.\n\n if (attributeUniqueIdMap) {\n // Add attributes of user specified unique id. E.g. GLTF models.\n for (var attributeName in attributeUniqueIdMap) {\n var attributeType = attributeTypeMap[attributeName];\n var attributeId = attributeUniqueIdMap[attributeName];\n var attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeId);\n this.addAttributeToGeometry(dracoDecoder, decoder, dracoGeometry, attributeName, attributeType, attribute, geometry, geometryBuffer);\n }\n } else {\n // Add native Draco attribute type to geometry.\n for (var attributeName in this.nativeAttributeMap) {\n var attId = decoder.GetAttributeId(dracoGeometry, dracoDecoder[this.nativeAttributeMap[attributeName]]);\n\n if (attId !== -1) {\n if (this.verbosity > 0) {\n console.log('Loaded ' + attributeName + ' attribute.');\n }\n\n var attribute = decoder.GetAttribute(dracoGeometry, attId);\n this.addAttributeToGeometry(dracoDecoder, decoder, dracoGeometry, attributeName, Float32Array, attribute, geometry, geometryBuffer);\n }\n }\n } // For mesh, we need to generate the faces.\n\n\n if (geometryType == dracoDecoder.TRIANGULAR_MESH) {\n if (this.drawMode === THREE.TriangleStripDrawMode) {\n var stripsArray = new dracoDecoder.DracoInt32Array();\n decoder.GetTriangleStripsFromMesh(dracoGeometry, stripsArray);\n geometryBuffer.indices = new Uint32Array(stripsArray.size());\n\n for (var i = 0; i < stripsArray.size(); ++i) {\n geometryBuffer.indices[i] = stripsArray.GetValue(i);\n }\n\n dracoDecoder.destroy(stripsArray);\n } else {\n var numIndices = numFaces * 3;\n geometryBuffer.indices = new Uint32Array(numIndices);\n var ia = new dracoDecoder.DracoInt32Array();\n\n for (var i = 0; i < numFaces; ++i) {\n decoder.GetFaceFromMesh(dracoGeometry, i, ia);\n var index = i * 3;\n geometryBuffer.indices[index] = ia.GetValue(0);\n geometryBuffer.indices[index + 1] = ia.GetValue(1);\n geometryBuffer.indices[index + 2] = ia.GetValue(2);\n }\n\n dracoDecoder.destroy(ia);\n }\n }\n\n geometry.drawMode = this.drawMode;\n\n if (geometryType == dracoDecoder.TRIANGULAR_MESH) {\n geometry.setIndex(new (geometryBuffer.indices.length > 65535 ? THREE.Uint32BufferAttribute : THREE.Uint16BufferAttribute)(geometryBuffer.indices, 1));\n } // TODO: Should not assume native Draco attribute IDs apply.\n // TODO: Can other attribute types be quantized?\n\n\n var posTransform = new dracoDecoder.AttributeQuantizationTransform();\n\n if (posTransform.InitFromAttribute(posAttribute)) {\n // Quantized attribute. Store the quantization parameters into the\n // THREE.js attribute.\n geometry.attributes['position'].isQuantized = true;\n geometry.attributes['position'].maxRange = posTransform.range();\n geometry.attributes['position'].numQuantizationBits = posTransform.quantization_bits();\n geometry.attributes['position'].minValues = new Float32Array(3);\n\n for (var i = 0; i < 3; ++i) {\n geometry.attributes['position'].minValues[i] = posTransform.min_value(i);\n }\n }\n\n dracoDecoder.destroy(posTransform);\n dracoDecoder.destroy(decoder);\n dracoDecoder.destroy(dracoGeometry);\n this.decode_time = decode_end - start_time;\n this.import_time = performance.now() - decode_end;\n\n if (this.verbosity > 0) {\n console.log('Decode time: ' + this.decode_time);\n console.log('Import time: ' + this.import_time);\n }\n\n return geometry;\n },\n isVersionSupported: function isVersionSupported(version, callback) {\n threeExamples.DRACOLoader.getDecoderModule().then(function (module) {\n callback(module.decoder.isVersionSupported(version));\n });\n },\n getAttributeOptions: function getAttributeOptions(attributeName) {\n if (typeof this.attributeOptions[attributeName] === 'undefined') this.attributeOptions[attributeName] = {};\n return this.attributeOptions[attributeName];\n }\n};\nthreeExamples.DRACOLoader.decoderPath = './';\nthreeExamples.DRACOLoader.decoderConfig = {};\nthreeExamples.DRACOLoader.decoderModulePromise = null;\n/**\n * Sets the base path for decoder source files.\n * @param {string} path\n */\n\nthreeExamples.DRACOLoader.setDecoderPath = function (path) {\n threeExamples.DRACOLoader.decoderPath = path;\n};\n/**\n * Sets decoder configuration and releases singleton decoder module. Module\n * will be recreated with the next decoding call.\n * @param {Object} config\n */\n\n\nthreeExamples.DRACOLoader.setDecoderConfig = function (config) {\n var wasmBinary = threeExamples.DRACOLoader.decoderConfig.wasmBinary;\n threeExamples.DRACOLoader.decoderConfig = config || {};\n threeExamples.DRACOLoader.releaseDecoderModule(); // Reuse WASM binary.\n\n if (wasmBinary) threeExamples.DRACOLoader.decoderConfig.wasmBinary = wasmBinary;\n};\n/**\n * Releases the singleton DracoDecoderModule instance. Module will be recreated\n * with the next decoding call.\n */\n\n\nthreeExamples.DRACOLoader.releaseDecoderModule = function () {\n threeExamples.DRACOLoader.decoderModulePromise = null;\n};\n/**\n * Gets WebAssembly or asm.js singleton instance of DracoDecoderModule\n * after testing for browser support. Returns Promise that resolves when\n * module is available.\n * @return {Promise<{decoder: DracoDecoderModule}>}\n */\n\n\nthreeExamples.DRACOLoader.getDecoderModule = function () {\n var scope = this;\n var path = threeExamples.DRACOLoader.decoderPath;\n var config = threeExamples.DRACOLoader.decoderConfig;\n var promise = threeExamples.DRACOLoader.decoderModulePromise;\n if (promise) return promise; // Load source files.\n\n if (typeof DracoDecoderModule !== 'undefined') {\n // Loaded externally.\n promise = Promise.resolve();\n } else if ((typeof WebAssembly === \"undefined\" ? \"undefined\" : _typeof(WebAssembly)) !== 'object' || config.type === 'js') {\n // Load with asm.js.\n promise = threeExamples.DRACOLoader._loadScript(path + 'draco_decoder.js');\n } else {\n // Load with WebAssembly.\n config.wasmBinaryFile = path + 'draco_decoder.wasm';\n promise = threeExamples.DRACOLoader._loadScript(path + 'draco_wasm_wrapper.js').then(function () {\n return threeExamples.DRACOLoader._loadArrayBuffer(config.wasmBinaryFile);\n }).then(function (wasmBinary) {\n config.wasmBinary = wasmBinary;\n });\n } // Wait for source files, then create and return a decoder.\n\n\n promise = promise.then(function () {\n return new Promise(function (resolve) {\n config.onModuleLoaded = function (decoder) {\n scope.timeLoaded = performance.now(); // Module is Promise-like. Wrap before resolving to avoid loop.\n\n resolve({\n decoder: decoder\n });\n };\n\n DracoDecoderModule(config);\n });\n });\n threeExamples.DRACOLoader.decoderModulePromise = promise;\n return promise;\n};\n/**\n * @param {string} src\n * @return {Promise}\n */\n\n\nthreeExamples.DRACOLoader._loadScript = function (src) {\n var prevScript = document.getElementById('decoder_script');\n\n if (prevScript !== null) {\n prevScript.parentNode.removeChild(prevScript);\n }\n\n var head = document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n script.id = 'decoder_script';\n script.type = 'text/javascript';\n script.src = src;\n return new Promise(function (resolve) {\n script.onload = resolve;\n head.appendChild(script);\n });\n};\n/**\n * @param {string} src\n * @return {Promise}\n */\n\n\nthreeExamples.DRACOLoader._loadArrayBuffer = function (src) {\n var loader = new THREE.FileLoader();\n loader.setResponseType('arraybuffer');\n return new Promise(function (resolve, reject) {\n loader.load(src, resolve, undefined, reject);\n });\n};\n\nexport default threeExamples.DRACOLoader;","// This file has been added and patched after installing the NPM modules (via NPM script 'prepare')\nimport * as THREE from 'three';\nvar threeExamples = {};\n/**\n * @author Rich Tibbett / https://github.com/richtr\n * @author mrdoob / http://mrdoob.com/\n * @author Tony Parisi / http://www.tonyparisi.com/\n * @author Takahiro / https://github.com/takahirox\n */\n\nthreeExamples.LegacyGLTFLoader = function () {\n function LegacyGLTFLoader(manager) {\n this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;\n }\n\n LegacyGLTFLoader.prototype = {\n constructor: LegacyGLTFLoader,\n crossOrigin: 'anonymous',\n load: function load(url, onLoad, onProgress, onError) {\n var scope = this;\n var resourcePath;\n\n if (this.resourcePath !== undefined) {\n resourcePath = this.resourcePath;\n } else if (this.path !== undefined) {\n resourcePath = this.path;\n } else {\n resourcePath = THREE.LoaderUtils.extractUrlBase(url);\n }\n\n var loader = new THREE.FileLoader(scope.manager);\n loader.setPath(this.path);\n loader.setResponseType('arraybuffer');\n loader.load(url, function (data) {\n scope.parse(data, resourcePath, onLoad);\n }, onProgress, onError);\n },\n setCrossOrigin: function setCrossOrigin(value) {\n this.crossOrigin = value;\n return this;\n },\n setPath: function setPath(value) {\n this.path = value;\n },\n setResourcePath: function setResourcePath(value) {\n this.resourcePath = value;\n return this;\n },\n parse: function parse(data, path, callback) {\n var content;\n var extensions = {};\n var magic = THREE.LoaderUtils.decodeText(new Uint8Array(data, 0, 4));\n\n if (magic === BINARY_EXTENSION_HEADER_DEFAULTS.magic) {\n extensions[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n content = extensions[EXTENSIONS.KHR_BINARY_GLTF].content;\n } else {\n content = THREE.LoaderUtils.decodeText(new Uint8Array(data));\n }\n\n var json = JSON.parse(content);\n\n if (json.extensionsUsed && json.extensionsUsed.indexOf(EXTENSIONS.KHR_MATERIALS_COMMON) >= 0) {\n extensions[EXTENSIONS.KHR_MATERIALS_COMMON] = new GLTFMaterialsCommonExtension(json);\n }\n\n var parser = new GLTFParser(json, extensions, {\n crossOrigin: this.crossOrigin,\n manager: this.manager,\n path: path || this.resourcePath || ''\n });\n parser.parse(function (scene, scenes, cameras, animations) {\n callback({\n \"scene\": scene,\n \"scenes\": scenes,\n \"cameras\": cameras,\n \"animations\": animations\n });\n });\n }\n };\n /* GLTFREGISTRY */\n\n function GLTFRegistry() {\n var objects = {};\n return {\n get: function get(key) {\n return objects[key];\n },\n add: function add(key, object) {\n objects[key] = object;\n },\n remove: function remove(key) {\n delete objects[key];\n },\n removeAll: function removeAll() {\n objects = {};\n },\n update: function update(scene, camera) {\n for (var name in objects) {\n var object = objects[name];\n\n if (object.update) {\n object.update(scene, camera);\n }\n }\n }\n };\n }\n /* GLTFSHADERS */\n\n\n LegacyGLTFLoader.Shaders = {\n update: function update() {\n console.warn('threeExamples.LegacyGLTFLoader.Shaders has been deprecated, and now updates automatically.');\n }\n };\n /* GLTFSHADER */\n\n function GLTFShader(targetNode, allNodes) {\n var boundUniforms = {}; // bind each uniform to its source node\n\n var uniforms = targetNode.material.uniforms;\n\n for (var uniformId in uniforms) {\n var uniform = uniforms[uniformId];\n\n if (uniform.semantic) {\n var sourceNodeRef = uniform.node;\n var sourceNode = targetNode;\n\n if (sourceNodeRef) {\n sourceNode = allNodes[sourceNodeRef];\n }\n\n boundUniforms[uniformId] = {\n semantic: uniform.semantic,\n sourceNode: sourceNode,\n targetNode: targetNode,\n uniform: uniform\n };\n }\n }\n\n this.boundUniforms = boundUniforms;\n this._m4 = new THREE.Matrix4();\n } // Update - update all the uniform values\n\n\n GLTFShader.prototype.update = function (scene, camera) {\n var boundUniforms = this.boundUniforms;\n\n for (var name in boundUniforms) {\n var boundUniform = boundUniforms[name];\n\n switch (boundUniform.semantic) {\n case \"MODELVIEW\":\n var m4 = boundUniform.uniform.value;\n m4.multiplyMatrices(camera.matrixWorldInverse, boundUniform.sourceNode.matrixWorld);\n break;\n\n case \"MODELVIEWINVERSETRANSPOSE\":\n var m3 = boundUniform.uniform.value;\n\n this._m4.multiplyMatrices(camera.matrixWorldInverse, boundUniform.sourceNode.matrixWorld);\n\n m3.getNormalMatrix(this._m4);\n break;\n\n case \"PROJECTION\":\n var m4 = boundUniform.uniform.value;\n m4.copy(camera.projectionMatrix);\n break;\n\n case \"JOINTMATRIX\":\n var m4v = boundUniform.uniform.value;\n\n for (var mi = 0; mi < m4v.length; mi++) {\n // So it goes like this:\n // SkinnedMesh world matrix is already baked into MODELVIEW;\n // transform joints to local space,\n // then transform using joint's inverse\n m4v[mi].getInverse(boundUniform.sourceNode.matrixWorld).multiply(boundUniform.targetNode.skeleton.bones[mi].matrixWorld).multiply(boundUniform.targetNode.skeleton.boneInverses[mi]).multiply(boundUniform.targetNode.bindMatrix);\n }\n\n break;\n\n default:\n console.warn(\"Unhandled shader semantic: \" + boundUniform.semantic);\n break;\n }\n }\n };\n /* ANIMATION */\n\n\n LegacyGLTFLoader.Animations = {\n update: function update() {\n console.warn('threeExamples.LegacyGLTFLoader.Animation has been deprecated. Use THREE.AnimationMixer instead.');\n }\n };\n /*********************************/\n\n /********** EXTENSIONS ***********/\n\n /*********************************/\n\n var EXTENSIONS = {\n KHR_BINARY_GLTF: 'KHR_binary_glTF',\n KHR_MATERIALS_COMMON: 'KHR_materials_common'\n };\n /* MATERIALS COMMON EXTENSION */\n\n function GLTFMaterialsCommonExtension(json) {\n this.name = EXTENSIONS.KHR_MATERIALS_COMMON;\n this.lights = {};\n var extension = json.extensions && json.extensions[EXTENSIONS.KHR_MATERIALS_COMMON] || {};\n var lights = extension.lights || {};\n\n for (var lightId in lights) {\n var light = lights[lightId];\n var lightNode;\n var lightParams = light[light.type];\n var color = new THREE.Color().fromArray(lightParams.color);\n\n switch (light.type) {\n case \"directional\":\n lightNode = new THREE.DirectionalLight(color);\n lightNode.position.set(0, 0, 1);\n break;\n\n case \"point\":\n lightNode = new THREE.PointLight(color);\n break;\n\n case \"spot\":\n lightNode = new THREE.SpotLight(color);\n lightNode.position.set(0, 0, 1);\n break;\n\n case \"ambient\":\n lightNode = new THREE.AmbientLight(color);\n break;\n }\n\n if (lightNode) {\n this.lights[lightId] = lightNode;\n }\n }\n }\n /* BINARY EXTENSION */\n\n\n var BINARY_EXTENSION_HEADER_DEFAULTS = {\n magic: 'glTF',\n version: 1,\n contentFormat: 0\n };\n var BINARY_EXTENSION_HEADER_LENGTH = 20;\n\n function GLTFBinaryExtension(data) {\n this.name = EXTENSIONS.KHR_BINARY_GLTF;\n var headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n var header = {\n magic: THREE.LoaderUtils.decodeText(new Uint8Array(data.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true),\n contentLength: headerView.getUint32(12, true),\n contentFormat: headerView.getUint32(16, true)\n };\n\n for (var key in BINARY_EXTENSION_HEADER_DEFAULTS) {\n var value = BINARY_EXTENSION_HEADER_DEFAULTS[key];\n\n if (header[key] !== value) {\n throw new Error('Unsupported glTF-Binary header: Expected \"%s\" to be \"%s\".', key, value);\n }\n }\n\n var contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH, header.contentLength);\n this.header = header;\n this.content = THREE.LoaderUtils.decodeText(contentArray);\n this.body = data.slice(BINARY_EXTENSION_HEADER_LENGTH + header.contentLength, header.length);\n }\n\n GLTFBinaryExtension.prototype.loadShader = function (shader, bufferViews) {\n var bufferView = bufferViews[shader.extensions[EXTENSIONS.KHR_BINARY_GLTF].bufferView];\n var array = new Uint8Array(bufferView);\n return THREE.LoaderUtils.decodeText(array);\n };\n /*********************************/\n\n /********** INTERNALS ************/\n\n /*********************************/\n\n /* CONSTANTS */\n\n\n var WEBGL_CONSTANTS = {\n FLOAT: 5126,\n //FLOAT_MAT2: 35674,\n FLOAT_MAT3: 35675,\n FLOAT_MAT4: 35676,\n FLOAT_VEC2: 35664,\n FLOAT_VEC3: 35665,\n FLOAT_VEC4: 35666,\n LINEAR: 9729,\n REPEAT: 10497,\n SAMPLER_2D: 35678,\n TRIANGLES: 4,\n LINES: 1,\n UNSIGNED_BYTE: 5121,\n UNSIGNED_SHORT: 5123,\n VERTEX_SHADER: 35633,\n FRAGMENT_SHADER: 35632\n };\n var WEBGL_TYPE = {\n 5126: Number,\n //35674: THREE.Matrix2,\n 35675: THREE.Matrix3,\n 35676: THREE.Matrix4,\n 35664: THREE.Vector2,\n 35665: THREE.Vector3,\n 35666: THREE.Vector4,\n 35678: THREE.Texture\n };\n var WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n var WEBGL_FILTERS = {\n 9728: THREE.NearestFilter,\n 9729: THREE.LinearFilter,\n 9984: THREE.NearestMipMapNearestFilter,\n 9985: THREE.LinearMipMapNearestFilter,\n 9986: THREE.NearestMipMapLinearFilter,\n 9987: THREE.LinearMipMapLinearFilter\n };\n var WEBGL_WRAPPINGS = {\n 33071: THREE.ClampToEdgeWrapping,\n 33648: THREE.MirroredRepeatWrapping,\n 10497: THREE.RepeatWrapping\n };\n var WEBGL_TEXTURE_FORMATS = {\n 6406: THREE.AlphaFormat,\n 6407: THREE.RGBFormat,\n 6408: THREE.RGBAFormat,\n 6409: THREE.LuminanceFormat,\n 6410: THREE.LuminanceAlphaFormat\n };\n var WEBGL_TEXTURE_DATATYPES = {\n 5121: THREE.UnsignedByteType,\n 32819: THREE.UnsignedShort4444Type,\n 32820: THREE.UnsignedShort5551Type,\n 33635: THREE.UnsignedShort565Type\n };\n var WEBGL_SIDES = {\n 1028: THREE.BackSide,\n // Culling front\n 1029: THREE.FrontSide // Culling back\n //1032: THREE.NoSide // Culling front and back, what to do?\n\n };\n var WEBGL_DEPTH_FUNCS = {\n 512: THREE.NeverDepth,\n 513: THREE.LessDepth,\n 514: THREE.EqualDepth,\n 515: THREE.LessEqualDepth,\n 516: THREE.GreaterEqualDepth,\n 517: THREE.NotEqualDepth,\n 518: THREE.GreaterEqualDepth,\n 519: THREE.AlwaysDepth\n };\n var WEBGL_BLEND_EQUATIONS = {\n 32774: THREE.AddEquation,\n 32778: THREE.SubtractEquation,\n 32779: THREE.ReverseSubtractEquation\n };\n var WEBGL_BLEND_FUNCS = {\n 0: THREE.ZeroFactor,\n 1: THREE.OneFactor,\n 768: THREE.SrcColorFactor,\n 769: THREE.OneMinusSrcColorFactor,\n 770: THREE.SrcAlphaFactor,\n 771: THREE.OneMinusSrcAlphaFactor,\n 772: THREE.DstAlphaFactor,\n 773: THREE.OneMinusDstAlphaFactor,\n 774: THREE.DstColorFactor,\n 775: THREE.OneMinusDstColorFactor,\n 776: THREE.SrcAlphaSaturateFactor // The followings are not supported by Three.js yet\n //32769: CONSTANT_COLOR,\n //32770: ONE_MINUS_CONSTANT_COLOR,\n //32771: CONSTANT_ALPHA,\n //32772: ONE_MINUS_CONSTANT_COLOR\n\n };\n var WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n var PATH_PROPERTIES = {\n scale: 'scale',\n translation: 'position',\n rotation: 'quaternion'\n };\n var INTERPOLATION = {\n LINEAR: THREE.InterpolateLinear,\n STEP: THREE.InterpolateDiscrete\n };\n var STATES_ENABLES = {\n 2884: 'CULL_FACE',\n 2929: 'DEPTH_TEST',\n 3042: 'BLEND',\n 3089: 'SCISSOR_TEST',\n 32823: 'POLYGON_OFFSET_FILL',\n 32926: 'SAMPLE_ALPHA_TO_COVERAGE'\n };\n /* UTILITY FUNCTIONS */\n\n function _each(object, callback, thisObj) {\n if (!object) {\n return Promise.resolve();\n }\n\n var results;\n var fns = [];\n\n if (Object.prototype.toString.call(object) === '[object Array]') {\n results = [];\n var length = object.length;\n\n for (var idx = 0; idx < length; idx++) {\n var value = callback.call(thisObj || this, object[idx], idx);\n\n if (value) {\n fns.push(value);\n\n if (value instanceof Promise) {\n value.then(function (key, value) {\n results[key] = value;\n }.bind(this, idx));\n } else {\n results[idx] = value;\n }\n }\n }\n } else {\n results = {};\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n var value = callback.call(thisObj || this, object[key], key);\n\n if (value) {\n fns.push(value);\n\n if (value instanceof Promise) {\n value.then(function (key, value) {\n results[key] = value;\n }.bind(this, key));\n } else {\n results[key] = value;\n }\n }\n }\n }\n }\n\n return Promise.all(fns).then(function () {\n return results;\n });\n }\n\n function resolveURL(url, path) {\n // Invalid URL\n if (typeof url !== 'string' || url === '') return ''; // Absolute URL http://,https://,//\n\n if (/^(https?:)?\\/\\//i.test(url)) {\n return url;\n } // Data URI\n\n\n if (/^data:.*,.*$/i.test(url)) {\n return url;\n } // Blob URL\n\n\n if (/^blob:.*$/i.test(url)) {\n return url;\n } // Relative URL\n\n\n return (path || '') + url;\n } // Three.js seems too dependent on attribute names so globally\n // replace those in the shader code\n\n\n function replaceTHREEShaderAttributes(shaderText, technique) {\n // Expected technique attributes\n var attributes = {};\n\n for (var attributeId in technique.attributes) {\n var pname = technique.attributes[attributeId];\n var param = technique.parameters[pname];\n var atype = param.type;\n var semantic = param.semantic;\n attributes[attributeId] = {\n type: atype,\n semantic: semantic\n };\n } // Figure out which attributes to change in technique\n\n\n var shaderParams = technique.parameters;\n var shaderAttributes = technique.attributes;\n var params = {};\n\n for (var attributeId in attributes) {\n var pname = shaderAttributes[attributeId];\n var shaderParam = shaderParams[pname];\n var semantic = shaderParam.semantic;\n\n if (semantic) {\n params[attributeId] = shaderParam;\n }\n }\n\n for (var pname in params) {\n var param = params[pname];\n var semantic = param.semantic;\n var regEx = new RegExp(\"\\\\b\" + pname + \"\\\\b\", \"g\");\n\n switch (semantic) {\n case \"POSITION\":\n shaderText = shaderText.replace(regEx, 'position');\n break;\n\n case \"NORMAL\":\n shaderText = shaderText.replace(regEx, 'normal');\n break;\n\n case 'TEXCOORD_0':\n case 'TEXCOORD0':\n case 'TEXCOORD':\n shaderText = shaderText.replace(regEx, 'uv');\n break;\n\n case 'TEXCOORD_1':\n shaderText = shaderText.replace(regEx, 'uv2');\n break;\n\n case 'COLOR_0':\n case 'COLOR0':\n case 'COLOR':\n shaderText = shaderText.replace(regEx, 'color');\n break;\n\n case \"WEIGHT\":\n shaderText = shaderText.replace(regEx, 'skinWeight');\n break;\n\n case \"JOINT\":\n shaderText = shaderText.replace(regEx, 'skinIndex');\n break;\n }\n }\n\n return shaderText;\n }\n\n function createDefaultMaterial() {\n return new THREE.MeshPhongMaterial({\n color: 0x00000,\n emissive: 0x888888,\n specular: 0x000000,\n shininess: 0,\n transparent: false,\n depthTest: true,\n side: THREE.FrontSide\n });\n } // Deferred constructor for RawShaderMaterial types\n\n\n function DeferredShaderMaterial(params) {\n this.isDeferredShaderMaterial = true;\n this.params = params;\n }\n\n DeferredShaderMaterial.prototype.create = function () {\n var uniforms = THREE.UniformsUtils.clone(this.params.uniforms);\n\n for (var uniformId in this.params.uniforms) {\n var originalUniform = this.params.uniforms[uniformId];\n\n if (originalUniform.value instanceof THREE.Texture) {\n uniforms[uniformId].value = originalUniform.value;\n uniforms[uniformId].value.needsUpdate = true;\n }\n\n uniforms[uniformId].semantic = originalUniform.semantic;\n uniforms[uniformId].node = originalUniform.node;\n }\n\n this.params.uniforms = uniforms;\n return new THREE.RawShaderMaterial(this.params);\n };\n /* GLTF PARSER */\n\n\n function GLTFParser(json, extensions, options) {\n this.json = json || {};\n this.extensions = extensions || {};\n this.options = options || {}; // loader object cache\n\n this.cache = new GLTFRegistry();\n }\n\n GLTFParser.prototype._withDependencies = function (dependencies) {\n var _dependencies = {};\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n var fnName = \"load\" + dependency.charAt(0).toUpperCase() + dependency.slice(1);\n var cached = this.cache.get(dependency);\n\n if (cached !== undefined) {\n _dependencies[dependency] = cached;\n } else if (this[fnName]) {\n var fn = this[fnName]();\n this.cache.add(dependency, fn);\n _dependencies[dependency] = fn;\n }\n }\n\n return _each(_dependencies, function (dependency) {\n return dependency;\n });\n };\n\n GLTFParser.prototype.parse = function (callback) {\n var json = this.json; // Clear the loader cache\n\n this.cache.removeAll(); // Fire the callback on complete\n\n this._withDependencies([\"scenes\", \"cameras\", \"animations\"]).then(function (dependencies) {\n var scenes = [];\n\n for (var name in dependencies.scenes) {\n scenes.push(dependencies.scenes[name]);\n }\n\n var scene = json.scene !== undefined ? dependencies.scenes[json.scene] : scenes[0];\n var cameras = [];\n\n for (var name in dependencies.cameras) {\n var camera = dependencies.cameras[name];\n cameras.push(camera);\n }\n\n var animations = [];\n\n for (var name in dependencies.animations) {\n animations.push(dependencies.animations[name]);\n }\n\n callback(scene, scenes, cameras, animations);\n });\n };\n\n GLTFParser.prototype.loadShaders = function () {\n var json = this.json;\n var extensions = this.extensions;\n var options = this.options;\n return this._withDependencies([\"bufferViews\"]).then(function (dependencies) {\n return _each(json.shaders, function (shader) {\n if (shader.extensions && shader.extensions[EXTENSIONS.KHR_BINARY_GLTF]) {\n return extensions[EXTENSIONS.KHR_BINARY_GLTF].loadShader(shader, dependencies.bufferViews);\n }\n\n return new Promise(function (resolve) {\n var loader = new THREE.FileLoader(options.manager);\n loader.setResponseType('text');\n loader.load(resolveURL(shader.uri, options.path), function (shaderText) {\n resolve(shaderText);\n });\n });\n });\n });\n };\n\n GLTFParser.prototype.loadBuffers = function () {\n var json = this.json;\n var extensions = this.extensions;\n var options = this.options;\n return _each(json.buffers, function (buffer, name) {\n if (name === 'binary_glTF') {\n return extensions[EXTENSIONS.KHR_BINARY_GLTF].body;\n }\n\n if (buffer.type === 'arraybuffer' || buffer.type === undefined) {\n return new Promise(function (resolve) {\n var loader = new THREE.FileLoader(options.manager);\n loader.setResponseType('arraybuffer');\n loader.load(resolveURL(buffer.uri, options.path), function (buffer) {\n resolve(buffer);\n });\n });\n } else {\n console.warn('threeExamples.LegacyGLTFLoader: ' + buffer.type + ' buffer type is not supported');\n }\n });\n };\n\n GLTFParser.prototype.loadBufferViews = function () {\n var json = this.json;\n return this._withDependencies([\"buffers\"]).then(function (dependencies) {\n return _each(json.bufferViews, function (bufferView) {\n var arraybuffer = dependencies.buffers[bufferView.buffer];\n var byteLength = bufferView.byteLength !== undefined ? bufferView.byteLength : 0;\n return arraybuffer.slice(bufferView.byteOffset, bufferView.byteOffset + byteLength);\n });\n });\n };\n\n GLTFParser.prototype.loadAccessors = function () {\n var json = this.json;\n return this._withDependencies([\"bufferViews\"]).then(function (dependencies) {\n return _each(json.accessors, function (accessor) {\n var arraybuffer = dependencies.bufferViews[accessor.bufferView];\n var itemSize = WEBGL_TYPE_SIZES[accessor.type];\n var TypedArray = WEBGL_COMPONENT_TYPES[accessor.componentType]; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\n var elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\n // The buffer is not interleaved if the stride is the item size in bytes.\n if (accessor.byteStride && accessor.byteStride !== elementBytes * itemSize) {\n // Use the full buffer if it's interleaved.\n var array = new TypedArray(arraybuffer); // Integer parameters to IB/IBA are in array elements, not bytes.\n\n var ib = new THREE.InterleavedBuffer(array, accessor.byteStride / elementBytes);\n return new THREE.InterleavedBufferAttribute(ib, itemSize, accessor.byteOffset / elementBytes);\n } else {\n array = new TypedArray(arraybuffer, accessor.byteOffset, accessor.count * itemSize);\n return new THREE.BufferAttribute(array, itemSize);\n }\n });\n });\n };\n\n GLTFParser.prototype.loadTextures = function () {\n var json = this.json;\n this.extensions;\n var options = this.options;\n return this._withDependencies([\"bufferViews\"]).then(function (dependencies) {\n return _each(json.textures, function (texture) {\n if (texture.source) {\n return new Promise(function (resolve) {\n var source = json.images[texture.source];\n var sourceUri = source.uri;\n var isObjectURL = false;\n\n if (source.extensions && source.extensions[EXTENSIONS.KHR_BINARY_GLTF]) {\n var metadata = source.extensions[EXTENSIONS.KHR_BINARY_GLTF];\n var bufferView = dependencies.bufferViews[metadata.bufferView];\n var blob = new Blob([bufferView], {\n type: metadata.mimeType\n });\n sourceUri = URL.createObjectURL(blob);\n isObjectURL = true;\n }\n\n var textureLoader = THREE.Loader.Handlers.get(sourceUri);\n\n if (textureLoader === null) {\n textureLoader = new THREE.TextureLoader(options.manager);\n }\n\n textureLoader.setCrossOrigin(options.crossOrigin);\n textureLoader.load(resolveURL(sourceUri, options.path), function (_texture) {\n if (isObjectURL) URL.revokeObjectURL(sourceUri);\n _texture.flipY = false;\n if (texture.name !== undefined) _texture.name = texture.name;\n _texture.format = texture.format !== undefined ? WEBGL_TEXTURE_FORMATS[texture.format] : THREE.RGBAFormat;\n\n if (texture.internalFormat !== undefined && _texture.format !== WEBGL_TEXTURE_FORMATS[texture.internalFormat]) {\n console.warn('threeExamples.LegacyGLTFLoader: Three.js doesn\\'t support texture internalFormat which is different from texture format. ' + 'internalFormat will be forced to be the same value as format.');\n }\n\n _texture.type = texture.type !== undefined ? WEBGL_TEXTURE_DATATYPES[texture.type] : THREE.UnsignedByteType;\n\n if (texture.sampler) {\n var sampler = json.samplers[texture.sampler];\n _texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || THREE.LinearFilter;\n _texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || THREE.NearestMipMapLinearFilter;\n _texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || THREE.RepeatWrapping;\n _texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || THREE.RepeatWrapping;\n }\n\n resolve(_texture);\n }, undefined, function () {\n if (isObjectURL) URL.revokeObjectURL(sourceUri);\n resolve();\n });\n });\n }\n });\n });\n };\n\n GLTFParser.prototype.loadMaterials = function () {\n var json = this.json;\n return this._withDependencies([\"shaders\", \"textures\"]).then(function (dependencies) {\n return _each(json.materials, function (material) {\n var materialType;\n var materialValues = {};\n var materialParams = {};\n var khr_material;\n\n if (material.extensions && material.extensions[EXTENSIONS.KHR_MATERIALS_COMMON]) {\n khr_material = material.extensions[EXTENSIONS.KHR_MATERIALS_COMMON];\n }\n\n if (khr_material) {\n // don't copy over unused values to avoid material warning spam\n var keys = ['ambient', 'emission', 'transparent', 'transparency', 'doubleSided'];\n\n switch (khr_material.technique) {\n case 'BLINN':\n case 'PHONG':\n materialType = THREE.MeshPhongMaterial;\n keys.push('diffuse', 'specular', 'shininess');\n break;\n\n case 'LAMBERT':\n materialType = THREE.MeshLambertMaterial;\n keys.push('diffuse');\n break;\n\n case 'CONSTANT':\n default:\n materialType = THREE.MeshBasicMaterial;\n break;\n }\n\n keys.forEach(function (v) {\n if (khr_material.values[v] !== undefined) materialValues[v] = khr_material.values[v];\n });\n\n if (khr_material.doubleSided || materialValues.doubleSided) {\n materialParams.side = THREE.DoubleSide;\n }\n\n if (khr_material.transparent || materialValues.transparent) {\n materialParams.transparent = true;\n materialParams.opacity = materialValues.transparency !== undefined ? materialValues.transparency : 1;\n }\n } else if (material.technique === undefined) {\n materialType = THREE.MeshPhongMaterial;\n Object.assign(materialValues, material.values);\n } else {\n materialType = DeferredShaderMaterial;\n var technique = json.techniques[material.technique];\n materialParams.uniforms = {};\n var program = json.programs[technique.program];\n\n if (program) {\n materialParams.fragmentShader = dependencies.shaders[program.fragmentShader];\n\n if (!materialParams.fragmentShader) {\n console.warn(\"ERROR: Missing fragment shader definition:\", program.fragmentShader);\n materialType = THREE.MeshPhongMaterial;\n }\n\n var vertexShader = dependencies.shaders[program.vertexShader];\n\n if (!vertexShader) {\n console.warn(\"ERROR: Missing vertex shader definition:\", program.vertexShader);\n materialType = THREE.MeshPhongMaterial;\n } // IMPORTANT: FIX VERTEX SHADER ATTRIBUTE DEFINITIONS\n\n\n materialParams.vertexShader = replaceTHREEShaderAttributes(vertexShader, technique);\n var uniforms = technique.uniforms;\n\n for (var uniformId in uniforms) {\n var pname = uniforms[uniformId];\n var shaderParam = technique.parameters[pname];\n var ptype = shaderParam.type;\n\n if (WEBGL_TYPE[ptype]) {\n var pcount = shaderParam.count;\n var value;\n if (material.values !== undefined) value = material.values[pname];\n var uvalue = new WEBGL_TYPE[ptype]();\n var usemantic = shaderParam.semantic;\n var unode = shaderParam.node;\n\n switch (ptype) {\n case WEBGL_CONSTANTS.FLOAT:\n uvalue = shaderParam.value;\n\n if (pname == \"transparency\") {\n materialParams.transparent = true;\n }\n\n if (value !== undefined) {\n uvalue = value;\n }\n\n break;\n\n case WEBGL_CONSTANTS.FLOAT_VEC2:\n case WEBGL_CONSTANTS.FLOAT_VEC3:\n case WEBGL_CONSTANTS.FLOAT_VEC4:\n case WEBGL_CONSTANTS.FLOAT_MAT3:\n if (shaderParam && shaderParam.value) {\n uvalue.fromArray(shaderParam.value);\n }\n\n if (value) {\n uvalue.fromArray(value);\n }\n\n break;\n\n case WEBGL_CONSTANTS.FLOAT_MAT2:\n // what to do?\n console.warn(\"FLOAT_MAT2 is not a supported uniform type\");\n break;\n\n case WEBGL_CONSTANTS.FLOAT_MAT4:\n if (pcount) {\n uvalue = new Array(pcount);\n\n for (var mi = 0; mi < pcount; mi++) {\n uvalue[mi] = new WEBGL_TYPE[ptype]();\n }\n\n if (shaderParam && shaderParam.value) {\n var m4v = shaderParam.value;\n uvalue.fromArray(m4v);\n }\n\n if (value) {\n uvalue.fromArray(value);\n }\n } else {\n if (shaderParam && shaderParam.value) {\n var m4 = shaderParam.value;\n uvalue.fromArray(m4);\n }\n\n if (value) {\n uvalue.fromArray(value);\n }\n }\n\n break;\n\n case WEBGL_CONSTANTS.SAMPLER_2D:\n if (value !== undefined) {\n uvalue = dependencies.textures[value];\n } else if (shaderParam.value !== undefined) {\n uvalue = dependencies.textures[shaderParam.value];\n } else {\n uvalue = null;\n }\n\n break;\n }\n\n materialParams.uniforms[uniformId] = {\n value: uvalue,\n semantic: usemantic,\n node: unode\n };\n } else {\n throw new Error(\"Unknown shader uniform param type: \" + ptype);\n }\n }\n\n var states = technique.states || {};\n var enables = states.enable || [];\n var functions = states.functions || {};\n var enableCullFace = false;\n var enableDepthTest = false;\n var enableBlend = false;\n\n for (var i = 0, il = enables.length; i < il; i++) {\n var enable = enables[i];\n\n switch (STATES_ENABLES[enable]) {\n case 'CULL_FACE':\n enableCullFace = true;\n break;\n\n case 'DEPTH_TEST':\n enableDepthTest = true;\n break;\n\n case 'BLEND':\n enableBlend = true;\n break;\n // TODO: implement\n\n case 'SCISSOR_TEST':\n case 'POLYGON_OFFSET_FILL':\n case 'SAMPLE_ALPHA_TO_COVERAGE':\n break;\n\n default:\n throw new Error(\"Unknown technique.states.enable: \" + enable);\n }\n }\n\n if (enableCullFace) {\n materialParams.side = functions.cullFace !== undefined ? WEBGL_SIDES[functions.cullFace] : THREE.FrontSide;\n } else {\n materialParams.side = THREE.DoubleSide;\n }\n\n materialParams.depthTest = enableDepthTest;\n materialParams.depthFunc = functions.depthFunc !== undefined ? WEBGL_DEPTH_FUNCS[functions.depthFunc] : THREE.LessDepth;\n materialParams.depthWrite = functions.depthMask !== undefined ? functions.depthMask[0] : true;\n materialParams.blending = enableBlend ? THREE.CustomBlending : THREE.NoBlending;\n materialParams.transparent = enableBlend;\n var blendEquationSeparate = functions.blendEquationSeparate;\n\n if (blendEquationSeparate !== undefined) {\n materialParams.blendEquation = WEBGL_BLEND_EQUATIONS[blendEquationSeparate[0]];\n materialParams.blendEquationAlpha = WEBGL_BLEND_EQUATIONS[blendEquationSeparate[1]];\n } else {\n materialParams.blendEquation = THREE.AddEquation;\n materialParams.blendEquationAlpha = THREE.AddEquation;\n }\n\n var blendFuncSeparate = functions.blendFuncSeparate;\n\n if (blendFuncSeparate !== undefined) {\n materialParams.blendSrc = WEBGL_BLEND_FUNCS[blendFuncSeparate[0]];\n materialParams.blendDst = WEBGL_BLEND_FUNCS[blendFuncSeparate[1]];\n materialParams.blendSrcAlpha = WEBGL_BLEND_FUNCS[blendFuncSeparate[2]];\n materialParams.blendDstAlpha = WEBGL_BLEND_FUNCS[blendFuncSeparate[3]];\n } else {\n materialParams.blendSrc = THREE.OneFactor;\n materialParams.blendDst = THREE.ZeroFactor;\n materialParams.blendSrcAlpha = THREE.OneFactor;\n materialParams.blendDstAlpha = THREE.ZeroFactor;\n }\n }\n }\n\n if (Array.isArray(materialValues.diffuse)) {\n materialParams.color = new THREE.Color().fromArray(materialValues.diffuse);\n } else if (typeof materialValues.diffuse === 'string') {\n materialParams.map = dependencies.textures[materialValues.diffuse];\n }\n\n delete materialParams.diffuse;\n\n if (typeof materialValues.reflective === 'string') {\n materialParams.envMap = dependencies.textures[materialValues.reflective];\n }\n\n if (typeof materialValues.bump === 'string') {\n materialParams.bumpMap = dependencies.textures[materialValues.bump];\n }\n\n if (Array.isArray(materialValues.emission)) {\n if (materialType === THREE.MeshBasicMaterial) {\n materialParams.color = new THREE.Color().fromArray(materialValues.emission);\n } else {\n materialParams.emissive = new THREE.Color().fromArray(materialValues.emission);\n }\n } else if (typeof materialValues.emission === 'string') {\n if (materialType === THREE.MeshBasicMaterial) {\n materialParams.map = dependencies.textures[materialValues.emission];\n } else {\n materialParams.emissiveMap = dependencies.textures[materialValues.emission];\n }\n }\n\n if (Array.isArray(materialValues.specular)) {\n materialParams.specular = new THREE.Color().fromArray(materialValues.specular);\n } else if (typeof materialValues.specular === 'string') {\n materialParams.specularMap = dependencies.textures[materialValues.specular];\n }\n\n if (materialValues.shininess !== undefined) {\n materialParams.shininess = materialValues.shininess;\n }\n\n var _material = new materialType(materialParams);\n\n if (material.name !== undefined) _material.name = material.name;\n return _material;\n });\n });\n };\n\n GLTFParser.prototype.loadMeshes = function () {\n var json = this.json;\n return this._withDependencies([\"accessors\", \"materials\"]).then(function (dependencies) {\n return _each(json.meshes, function (mesh) {\n var group = new THREE.Group();\n if (mesh.name !== undefined) group.name = mesh.name;\n if (mesh.extras) group.userData = mesh.extras;\n var primitives = mesh.primitives || [];\n\n for (var name in primitives) {\n var primitive = primitives[name];\n\n if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === undefined) {\n var geometry = new THREE.BufferGeometry();\n var attributes = primitive.attributes;\n\n for (var attributeId in attributes) {\n var attributeEntry = attributes[attributeId];\n if (!attributeEntry) return;\n var bufferAttribute = dependencies.accessors[attributeEntry];\n\n switch (attributeId) {\n case 'POSITION':\n geometry.addAttribute('position', bufferAttribute);\n break;\n\n case 'NORMAL':\n geometry.addAttribute('normal', bufferAttribute);\n break;\n\n case 'TEXCOORD_0':\n case 'TEXCOORD0':\n case 'TEXCOORD':\n geometry.addAttribute('uv', bufferAttribute);\n break;\n\n case 'TEXCOORD_1':\n geometry.addAttribute('uv2', bufferAttribute);\n break;\n\n case 'COLOR_0':\n case 'COLOR0':\n case 'COLOR':\n geometry.addAttribute('color', bufferAttribute);\n break;\n\n case 'WEIGHT':\n geometry.addAttribute('skinWeight', bufferAttribute);\n break;\n\n case 'JOINT':\n geometry.addAttribute('skinIndex', bufferAttribute);\n break;\n\n case '_BATCHID':\n geometry.addAttribute('_BATCHID', bufferAttribute);\n break;\n\n default:\n if (!primitive.material) break;\n var material = json.materials[primitive.material];\n if (!material.technique) break;\n var parameters = json.techniques[material.technique].parameters || {};\n\n for (var attributeName in parameters) {\n if (parameters[attributeName]['semantic'] === attributeId) {\n geometry.addAttribute(attributeName, bufferAttribute);\n }\n }\n\n }\n }\n\n if (primitive.indices) {\n geometry.setIndex(dependencies.accessors[primitive.indices]);\n }\n\n var material = dependencies.materials !== undefined ? dependencies.materials[primitive.material] : createDefaultMaterial();\n var meshNode = new THREE.Mesh(geometry, material);\n meshNode.castShadow = true;\n meshNode.name = name === \"0\" ? group.name : group.name + name;\n if (primitive.extras) meshNode.userData = primitive.extras;\n group.add(meshNode);\n } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n var geometry = new THREE.BufferGeometry();\n var attributes = primitive.attributes;\n\n for (var attributeId in attributes) {\n var attributeEntry = attributes[attributeId];\n if (!attributeEntry) return;\n var bufferAttribute = dependencies.accessors[attributeEntry];\n\n switch (attributeId) {\n case 'POSITION':\n geometry.addAttribute('position', bufferAttribute);\n break;\n\n case 'COLOR_0':\n case 'COLOR0':\n case 'COLOR':\n geometry.addAttribute('color', bufferAttribute);\n break;\n }\n }\n\n var material = dependencies.materials[primitive.material];\n var meshNode;\n\n if (primitive.indices) {\n geometry.setIndex(dependencies.accessors[primitive.indices]);\n meshNode = new THREE.LineSegments(geometry, material);\n } else {\n meshNode = new THREE.Line(geometry, material);\n }\n\n meshNode.name = name === \"0\" ? group.name : group.name + name;\n if (primitive.extras) meshNode.userData = primitive.extras;\n group.add(meshNode);\n } else {\n console.warn(\"Only triangular and line primitives are supported\");\n }\n }\n\n return group;\n });\n });\n };\n\n GLTFParser.prototype.loadCameras = function () {\n var json = this.json;\n return _each(json.cameras, function (camera) {\n if (camera.type == \"perspective\" && camera.perspective) {\n var yfov = camera.perspective.yfov;\n var aspectRatio = camera.perspective.aspectRatio !== undefined ? camera.perspective.aspectRatio : 1; // According to COLLADA spec...\n // aspectRatio = xfov / yfov\n\n var _camera = new THREE.PerspectiveCamera(THREE.Math.radToDeg(yfov * aspectRatio), aspectRatio, camera.perspective.znear || 1, camera.perspective.zfar || 2e6);\n\n if (camera.name !== undefined) _camera.name = camera.name;\n if (camera.extras) _camera.userData = camera.extras;\n return _camera;\n } else if (camera.type == \"orthographic\" && camera.orthographic) {\n var _camera = new THREE.OrthographicCamera(window.innerWidth / -2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / -2, camera.orthographic.znear, camera.orthographic.zfar);\n\n if (camera.name !== undefined) _camera.name = camera.name;\n if (camera.extras) _camera.userData = camera.extras;\n return _camera;\n }\n });\n };\n\n GLTFParser.prototype.loadSkins = function () {\n var json = this.json;\n return this._withDependencies([\"accessors\"]).then(function (dependencies) {\n return _each(json.skins, function (skin) {\n var bindShapeMatrix = new THREE.Matrix4();\n if (skin.bindShapeMatrix !== undefined) bindShapeMatrix.fromArray(skin.bindShapeMatrix);\n var _skin = {\n bindShapeMatrix: bindShapeMatrix,\n jointNames: skin.jointNames,\n inverseBindMatrices: dependencies.accessors[skin.inverseBindMatrices]\n };\n return _skin;\n });\n });\n };\n\n GLTFParser.prototype.loadAnimations = function () {\n var json = this.json;\n return this._withDependencies([\"accessors\", \"nodes\"]).then(function (dependencies) {\n return _each(json.animations, function (animation, animationId) {\n var tracks = [];\n\n for (var channelId in animation.channels) {\n var channel = animation.channels[channelId];\n var sampler = animation.samplers[channel.sampler];\n\n if (sampler) {\n var target = channel.target;\n var name = target.id;\n var input = animation.parameters !== undefined ? animation.parameters[sampler.input] : sampler.input;\n var output = animation.parameters !== undefined ? animation.parameters[sampler.output] : sampler.output;\n var inputAccessor = dependencies.accessors[input];\n var outputAccessor = dependencies.accessors[output];\n var node = dependencies.nodes[name];\n\n if (node) {\n node.updateMatrix();\n node.matrixAutoUpdate = true;\n var TypedKeyframeTrack = PATH_PROPERTIES[target.path] === PATH_PROPERTIES.rotation ? THREE.QuaternionKeyframeTrack : THREE.VectorKeyframeTrack;\n var targetName = node.name ? node.name : node.uuid;\n var interpolation = sampler.interpolation !== undefined ? INTERPOLATION[sampler.interpolation] : THREE.InterpolateLinear; // KeyframeTrack.optimize() will modify given 'times' and 'values'\n // buffers before creating a truncated copy to keep. Because buffers may\n // be reused by other tracks, make copies here.\n\n tracks.push(new TypedKeyframeTrack(targetName + '.' + PATH_PROPERTIES[target.path], THREE.AnimationUtils.arraySlice(inputAccessor.array, 0), THREE.AnimationUtils.arraySlice(outputAccessor.array, 0), interpolation));\n }\n }\n }\n\n var name = animation.name !== undefined ? animation.name : \"animation_\" + animationId;\n return new THREE.AnimationClip(name, undefined, tracks);\n });\n });\n };\n\n GLTFParser.prototype.loadNodes = function () {\n var json = this.json;\n var extensions = this.extensions;\n var scope = this;\n return _each(json.nodes, function (node) {\n var matrix = new THREE.Matrix4();\n\n var _node;\n\n if (node.jointName) {\n _node = new THREE.Bone();\n _node.name = node.name !== undefined ? node.name : node.jointName;\n _node.jointName = node.jointName;\n } else {\n _node = new THREE.Object3D();\n if (node.name !== undefined) _node.name = node.name;\n }\n\n if (node.extras) _node.userData = node.extras;\n\n if (node.matrix !== undefined) {\n matrix.fromArray(node.matrix);\n\n _node.applyMatrix(matrix);\n } else {\n if (node.translation !== undefined) {\n _node.position.fromArray(node.translation);\n }\n\n if (node.rotation !== undefined) {\n _node.quaternion.fromArray(node.rotation);\n }\n\n if (node.scale !== undefined) {\n _node.scale.fromArray(node.scale);\n }\n }\n\n return _node;\n }).then(function (__nodes) {\n return scope._withDependencies([\"meshes\", \"skins\", \"cameras\"]).then(function (dependencies) {\n return _each(__nodes, function (_node, nodeId) {\n var node = json.nodes[nodeId];\n\n if (node.meshes !== undefined) {\n for (var meshId in node.meshes) {\n var mesh = node.meshes[meshId];\n var group = dependencies.meshes[mesh];\n\n if (group === undefined) {\n console.warn('LegacyGLTFLoader: Couldn\\'t find node \"' + mesh + '\".');\n continue;\n }\n\n for (var childrenId in group.children) {\n var child = group.children[childrenId]; // clone Mesh to add to _node\n\n var originalMaterial = child.material;\n var originalGeometry = child.geometry;\n var originalUserData = child.userData;\n var originalName = child.name;\n var material;\n\n if (originalMaterial.isDeferredShaderMaterial) {\n originalMaterial = material = originalMaterial.create();\n } else {\n material = originalMaterial;\n }\n\n switch (child.type) {\n case 'LineSegments':\n child = new THREE.LineSegments(originalGeometry, material);\n break;\n\n case 'LineLoop':\n child = new THREE.LineLoop(originalGeometry, material);\n break;\n\n case 'Line':\n child = new THREE.Line(originalGeometry, material);\n break;\n\n default:\n child = new THREE.Mesh(originalGeometry, material);\n }\n\n child.castShadow = true;\n child.userData = originalUserData;\n child.name = originalName;\n var skinEntry;\n\n if (node.skin) {\n skinEntry = dependencies.skins[node.skin];\n } // Replace Mesh with SkinnedMesh in library\n\n\n if (skinEntry) {\n var getJointNode = function (jointId) {\n var keys = Object.keys(__nodes);\n\n for (var i = 0, il = keys.length; i < il; i++) {\n var n = __nodes[keys[i]];\n if (n.jointName === jointId) return n;\n }\n\n return null;\n };\n\n var material = originalMaterial;\n material.skinning = true;\n child = new THREE.SkinnedMesh(originalGeometry, material);\n child.castShadow = true;\n child.userData = originalUserData;\n child.name = originalName;\n var bones = [];\n var boneInverses = [];\n\n for (var i = 0, l = skinEntry.jointNames.length; i < l; i++) {\n var jointId = skinEntry.jointNames[i];\n var jointNode = getJointNode(jointId);\n\n if (jointNode) {\n bones.push(jointNode);\n var m = skinEntry.inverseBindMatrices.array;\n var mat = new THREE.Matrix4().fromArray(m, i * 16);\n boneInverses.push(mat);\n } else {\n console.warn(\"WARNING: joint: '\" + jointId + \"' could not be found\");\n }\n }\n\n child.bind(new THREE.Skeleton(bones, boneInverses), skinEntry.bindShapeMatrix);\n\n var buildBoneGraph = function (parentJson, parentObject, property) {\n var children = parentJson[property];\n if (children === undefined) return;\n\n for (var i = 0, il = children.length; i < il; i++) {\n var nodeId = children[i];\n var bone = __nodes[nodeId];\n var boneJson = json.nodes[nodeId];\n\n if (bone !== undefined && bone.isBone === true && boneJson !== undefined) {\n parentObject.add(bone);\n buildBoneGraph(boneJson, bone, 'children');\n }\n }\n };\n\n buildBoneGraph(node, child, 'skeletons');\n }\n\n _node.add(child);\n }\n }\n }\n\n if (node.camera !== undefined) {\n var camera = dependencies.cameras[node.camera];\n\n _node.add(camera);\n }\n\n if (node.extensions && node.extensions[EXTENSIONS.KHR_MATERIALS_COMMON] && node.extensions[EXTENSIONS.KHR_MATERIALS_COMMON].light) {\n var extensionLights = extensions[EXTENSIONS.KHR_MATERIALS_COMMON].lights;\n var light = extensionLights[node.extensions[EXTENSIONS.KHR_MATERIALS_COMMON].light];\n\n _node.add(light);\n }\n\n return _node;\n });\n });\n });\n };\n\n GLTFParser.prototype.loadScenes = function () {\n var json = this.json; // scene node hierachy builder\n\n function buildNodeHierachy(nodeId, parentObject, allNodes) {\n var _node = allNodes[nodeId];\n parentObject.add(_node);\n var node = json.nodes[nodeId];\n\n if (node.children) {\n var children = node.children;\n\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n buildNodeHierachy(child, _node, allNodes);\n }\n }\n }\n\n return this._withDependencies([\"nodes\"]).then(function (dependencies) {\n return _each(json.scenes, function (scene) {\n var _scene = new THREE.Scene();\n\n if (scene.name !== undefined) _scene.name = scene.name;\n if (scene.extras) _scene.userData = scene.extras;\n var nodes = scene.nodes || [];\n\n for (var i = 0, l = nodes.length; i < l; i++) {\n var nodeId = nodes[i];\n buildNodeHierachy(nodeId, _scene, dependencies.nodes);\n }\n\n _scene.traverse(function (child) {\n // Register raw material meshes with LegacyGLTFLoader.Shaders\n if (child.material && child.material.isRawShaderMaterial) {\n child.gltfShader = new GLTFShader(child, dependencies.nodes);\n\n child.onBeforeRender = function (renderer, scene, camera) {\n this.gltfShader.update(scene, camera);\n };\n }\n });\n\n return _scene;\n });\n });\n };\n\n return LegacyGLTFLoader;\n}();\n\nexport default threeExamples.LegacyGLTFLoader;","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport * as THREE from 'three';\nimport Capabilities from \"../Core/System/Capabilities\";\nimport GLTFLoader from \"../ThreeExtended/loaders/GLTFLoader\";\nimport DRACOLoader from \"../ThreeExtended/loaders/DRACOLoader\";\nimport LegacyGLTFLoader from \"../ThreeExtended/loaders/deprecated/LegacyGLTFLoader\";\nimport shaderUtils from \"../Renderer/Shader/ShaderUtils\";\nimport utf8Decoder from \"../Utils/Utf8Decoder\";\nimport BatchTableParser from \"./BatchTableParser\";\nvar matrixChangeUpVectorZtoY = new THREE.Matrix4().makeRotationX(Math.PI / 2); // For gltf rotation\n\nvar matrixChangeUpVectorZtoX = new THREE.Matrix4().makeRotationZ(-Math.PI / 2);\nexport var glTFLoader = new GLTFLoader();\nexport var legacyGLTFLoader = new LegacyGLTFLoader();\n\nfunction filterUnsupportedSemantics(obj) {\n // see GLTFLoader GLTFShader.prototype.update function\n var supported = ['MODELVIEW', 'MODELVIEWINVERSETRANSPOSE', 'PROJECTION', 'JOINTMATRIX'];\n\n if (obj.gltfShader) {\n var names = []; // eslint-disable-next-line guard-for-in\n\n for (var name in obj.gltfShader.boundUniforms) {\n names.push(name);\n }\n\n for (var _i = 0, _names = names; _i < _names.length; _i++) {\n var _name = _names[_i];\n var semantic = obj.gltfShader.boundUniforms[_name].semantic;\n\n if (!supported.includes(semantic)) {\n delete obj.gltfShader.boundUniforms[_name];\n }\n }\n }\n}\n/**\n * @module B3dmParser\n */\n\n/**\n * Enable Draco decoding for gltf.\n * @param {string} path to draco library folder.\n * This library is mandatory to load b3dm with Draco compression.\n * @param {object} config optional configuration for Draco compression.\n *\n * The Draco library files are in folder itowns/examples/libs/draco/.\n * You are obliged to indicate this path when you want enable the Draco Decoding.\n *\n * For more information on Draco, read file in /itowns/examples/libs/draco/README.md.\n *\n * @example Enable draco decoder\n * // if you copied the folder from /itowns/examples/libs/draco/ to your root project,\n * // You could set path with './'.\n * itowns.enableDracoLoader('./');\n */\n\n\nexport function enableDracoLoader(path, config) {\n if (!path) {\n throw new Error('Path to draco folder is mandatory');\n }\n\n DRACOLoader.setDecoderPath(path);\n\n if (config) {\n DRACOLoader.setDecoderConfig(config);\n }\n\n var dracoLoader = new DRACOLoader();\n glTFLoader.setDRACOLoader(dracoLoader);\n DRACOLoader.getDecoderModule();\n}\nvar FT_RTC = new THREE.Vector3();\nexport default {\n /** Parse b3dm buffer and extract THREE.Scene and batch table\n * @param {ArrayBuffer} buffer - the b3dm buffer.\n * @param {Object} options - additional properties.\n * @param {string=} [options.gltfUpAxis='Y'] - embedded glTF model up axis.\n * @param {string} options.urlBase - the base url of the b3dm file (used to fetch textures for the embedded glTF model).\n * @param {boolean=} [options.doNotPatchMaterial='false'] - disable patching material with logarithmic depth buffer support.\n * @param {float} [options.opacity=1.0] - the b3dm opacity.\n * @param {boolean|Material=} [options.overrideMaterials='false'] - override b3dm's embedded glTF materials. If overrideMaterials is a three.js material, it will be the material used to override.\n * @return {Promise} - a promise that resolves with an object containig a THREE.Scene (gltf) and a batch table (batchTable).\n *\n */\n parse: function parse(buffer, options) {\n var gltfUpAxis = options.gltfUpAxis;\n var urlBase = options.urlBase;\n\n if (!buffer) {\n throw new Error('No array buffer provided.');\n }\n\n var view = new DataView(buffer, 4); // starts after magic\n\n var byteOffset = 0;\n var b3dmHeader = {}; // Magic type is unsigned char [4]\n\n var magicNumberByteLength = 4;\n b3dmHeader.magic = utf8Decoder.decode(new Uint8Array(buffer, 0, magicNumberByteLength));\n\n if (b3dmHeader.magic) {\n // Version, byteLength, batchTableJSONByteLength, batchTableBinaryByteLength and batchTable types are uint32\n b3dmHeader.version = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n b3dmHeader.byteLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n b3dmHeader.FTJSONLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n b3dmHeader.FTBinaryLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n b3dmHeader.BTJSONLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n b3dmHeader.BTBinaryLength = view.getUint32(byteOffset, true);\n byteOffset += Uint32Array.BYTES_PER_ELEMENT;\n var headerByteLength = byteOffset + magicNumberByteLength;\n var promises = [];\n var FTJSON = {};\n\n if (b3dmHeader.FTJSONLength > 0) {\n var sizeBegin = headerByteLength;\n var jsonBuffer = buffer.slice(sizeBegin, b3dmHeader.FTJSONLength + sizeBegin);\n var content = utf8Decoder.decode(new Uint8Array(jsonBuffer));\n FTJSON = JSON.parse(content);\n\n if (FTJSON.RTC_CENTER) {\n FT_RTC.fromArray(FTJSON.RTC_CENTER);\n } else {\n FT_RTC.set(0, 0, 0);\n }\n }\n\n if (b3dmHeader.FTBinaryLength > 0) {\n console.warn('3D Tiles feature table binary not supported yet.');\n } // Parse batch table\n\n\n if (b3dmHeader.BTJSONLength > 0) {\n // sizeBegin is an index to the beginning of the batch table\n var _sizeBegin = headerByteLength + b3dmHeader.FTJSONLength + b3dmHeader.FTBinaryLength;\n\n promises.push(BatchTableParser.parse(buffer.slice(_sizeBegin, b3dmHeader.BTJSONLength + _sizeBegin), b3dmHeader.BTBinaryLength, FTJSON.BATCH_LENGTH));\n } else {\n promises.push(Promise.resolve({}));\n }\n\n var posGltf = headerByteLength + b3dmHeader.FTJSONLength + b3dmHeader.FTBinaryLength + b3dmHeader.BTJSONLength + b3dmHeader.BTBinaryLength;\n var gltfBuffer = buffer.slice(posGltf);\n var headerView = new DataView(gltfBuffer, 0, 20);\n promises.push(new Promise(function (resolve\n /* , reject */\n ) {\n var onload = function (gltf) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = gltf.scenes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var scene = _step.value;\n scene.traverse(filterUnsupportedSemantics);\n } // Rotation managed\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (gltfUpAxis === undefined || gltfUpAxis === 'Y') {\n gltf.scene.applyMatrix(matrixChangeUpVectorZtoY);\n } else if (gltfUpAxis === 'X') {\n gltf.scene.applyMatrix(matrixChangeUpVectorZtoX);\n } // Apply relative center from Feature table.\n\n\n gltf.scene.position.copy(FT_RTC); // Apply relative center from gltf json.\n\n var contentArray = new Uint8Array(gltfBuffer, 20, headerView.getUint32(12, true));\n var content = utf8Decoder.decode(new Uint8Array(contentArray));\n var json = JSON.parse(content);\n\n if (json.extensions && json.extensions.CESIUM_RTC) {\n gltf.scene.position.fromArray(json.extensions.CESIUM_RTC.center);\n gltf.scene.updateMatrixWorld(true);\n }\n\n gltf.scene.traverse(function (mesh) {\n mesh.frustumCulled = false;\n\n if (mesh.material) {\n if (options.overrideMaterials) {\n mesh.material.dispose();\n\n if (_typeof(options.overrideMaterials) === 'object' && options.overrideMaterials.isMaterial) {\n mesh.material = options.overrideMaterials.clone();\n } else {\n mesh.material = new THREE.MeshLambertMaterial({\n color: 0xffffff\n });\n }\n } else if (Capabilities.isLogDepthBufferSupported() && mesh.material.isRawShaderMaterial && !options.doNotPatchMaterial) {\n shaderUtils.patchMaterialForLogDepthSupport(mesh.material);\n console.warn('b3dm shader has been patched to add log depth buffer support');\n }\n\n mesh.material.transparent = options.opacity < 1.0;\n mesh.material.opacity = options.opacity;\n }\n });\n resolve(gltf);\n };\n\n var version = headerView.getUint32(4, true);\n\n if (version === 1) {\n legacyGLTFLoader.parse(gltfBuffer, urlBase, onload);\n } else {\n glTFLoader.parse(gltfBuffer, urlBase, onload);\n }\n }));\n return Promise.all(promises).then(function (values) {\n return {\n gltf: values[1],\n batchTable: values[0]\n };\n });\n } else {\n throw new Error('Invalid b3dm file.');\n }\n }\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport { CRS_DEFINES, ELEVATION_MODES } from \"./LayeredMaterial\";\nimport { checkNodeElevationTextureValidity, insertSignificantValuesFromParent } from \"../Parser/XbilParser\";\nexport var EMPTY_TEXTURE_ZOOM = -1;\nvar pitch = new THREE.Vector4();\n\nfunction defineLayerProperty(layer, property, initValue, defaultValue) {\n var _value = initValue !== undefined ? initValue : defaultValue;\n\n Object.defineProperty(layer, property, {\n get: function get() {\n return _value;\n },\n set: function set(value) {\n if (_value !== value) {\n _value = value;\n }\n }\n });\n}\n\nvar MaterialLayer =\n/*#__PURE__*/\nfunction () {\n function MaterialLayer(material, layer) {\n var _this = this;\n\n _classCallCheck(this, MaterialLayer);\n\n this.id = layer.id;\n this.textureOffset = 0; // will be updated in updateUniforms()\n\n this.crs = CRS_DEFINES.findIndex(function (crs) {\n return crs.includes(layer.projection || 'WGS84');\n });\n\n if (this.crs == -1) {\n console.error('Unknown crs:', layer.projection);\n } // Define color properties\n\n\n var _valueOpacity = layer.opacity !== undefined ? layer.opacity : true;\n\n Object.defineProperty(this, 'opacity', {\n get: function get() {\n return _valueOpacity;\n },\n set: function set(value) {\n if (_valueOpacity !== value) {\n if (value === 0 || _valueOpacity === 0) {\n _this.material.layersNeedUpdate = true;\n }\n\n _valueOpacity = value;\n }\n }\n });\n\n var _valueVisibility = layer.visible !== undefined ? layer.visible : true;\n\n Object.defineProperty(this, 'visible', {\n get: function get() {\n return _valueVisibility;\n },\n set: function set(value) {\n if (_valueVisibility !== value) {\n _this.material.layersNeedUpdate = true;\n _valueVisibility = value;\n }\n }\n });\n defineLayerProperty(this, 'effect', layer.fx, 0);\n var defaultEle = {\n bias: 0,\n scale: 1,\n mode: ELEVATION_MODES.DATA,\n zmin: 0,\n zmax: Infinity\n }; // Define elevation properties\n\n if (layer.useRgbaTextureElevation) {\n defaultEle.mode = ELEVATION_MODES.RGBA;\n defaultEle.zmax = 5000;\n throw new Error('Restore this feature');\n } else if (layer.useColorTextureElevation) {\n defaultEle.mode = ELEVATION_MODES.COLOR; // ?? pourquoi defaultEle.zmin et zmax ne sont pas\n\n var zmin = layer.colorTextureElevationMinZ;\n var zmax = layer.colorTextureElevationMaxZ;\n defaultEle.scale = zmax - zmin;\n defaultEle.bias = zmin;\n }\n\n defineLayerProperty(this, 'bias', layer.bias, defaultEle.bias);\n defineLayerProperty(this, 'scale', layer.scale, defaultEle.scale);\n defineLayerProperty(this, 'mode', layer.mode, defaultEle.mode);\n defineLayerProperty(this, 'zmin', layer.zmin, defaultEle.zmin);\n defineLayerProperty(this, 'zmax', layer.zmax, defaultEle.zmax);\n this.textures = [];\n this.offsetScales = [];\n this.level = EMPTY_TEXTURE_ZOOM;\n this.material = material;\n }\n\n _createClass(MaterialLayer, [{\n key: \"initFromParent\",\n value: function initFromParent(parent, extents) {\n if (parent && parent.level > this.level) {\n var index = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = extents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var c = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = parent.textures[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var texture = _step2.value;\n\n if (c.isInside(texture.coords)) {\n this.setTexture(index++, texture, c.offsetToParent(texture.coords));\n break;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2[\"return\"] != null) {\n _iterator2[\"return\"]();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n }, {\n key: \"replaceNoDataValueFromParent\",\n value: function replaceNoDataValueFromParent(parent, nodatavalue) {\n var dataElevation = this.textures[0].image.data;\n var parentTexture = parent && parent.textures[0];\n\n if (dataElevation && parentTexture && !checkNodeElevationTextureValidity(dataElevation, nodatavalue)) {\n var coords = this.textures[0].coords;\n coords.offsetToParent(parentTexture.coords, pitch);\n insertSignificantValuesFromParent(dataElevation, parentTexture.image.data, nodatavalue, pitch);\n }\n }\n }, {\n key: \"dispose\",\n value: function dispose() {\n // TODO: WARNING verify if textures to dispose aren't attached with ancestor\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.textures[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var texture = _step3.value;\n\n if (texture.isTexture) {\n texture.dispose();\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3[\"return\"] != null) {\n _iterator3[\"return\"]();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n this.level = EMPTY_TEXTURE_ZOOM;\n this.textures = [];\n this.offsetScales = [];\n this.material.layersNeedUpdate = true;\n }\n }, {\n key: \"setTexture\",\n value: function setTexture(index, texture, offsetScale) {\n this.level = texture && index == 0 ? texture.coords.zoom : this.level;\n this.textures[index] = texture || null;\n this.offsetScales[index] = offsetScale;\n this.material.layersNeedUpdate = true;\n }\n }, {\n key: \"setTextures\",\n value: function setTextures(textures, pitchs) {\n this.dispose(false);\n\n for (var i = 0, il = textures.length; i < il; ++i) {\n this.setTexture(i, textures[i], pitchs[i]);\n }\n }\n }]);\n\n return MaterialLayer;\n}();\n\nexport default MaterialLayer;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport utf8Decoder from \"../Utils/Utf8Decoder\";\nimport { $3dTilesExtensions } from \"../Provider/3dTilesProvider\";\n/** @classdesc\n * Class representing a 3D Tiles batch table\n */\n\nvar BatchTable =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {Object} json - batch table json part\n * @param {ArrayBuffer} binary - buffer representing the batch table\n * @param {number} batchLength the length of the batch.\n * binary part (not supported yet)\n */\n function BatchTable(json, binary, batchLength) {\n _classCallCheck(this, BatchTable);\n\n if (binary !== undefined) {\n console.warn('Binary batch table content not supported yet.');\n } // Store batch table content\n\n\n this.content = json; // Compute the length of the batch (i.e. the number of features)\n // Note: The batchLength could also be retrieved from the feature table\n // which is currently not supported\n\n if (batchLength != undefined) {\n this.batchLength = batchLength;\n } else if (Object.keys(this.content).length === 0) {\n console.warn('Batch table is empty.');\n this.batchLength = 0;\n } else {\n this.batchLength = this.content[Object.keys(this.content)[0]].length;\n } // Array storing extensions of the batch table. Key is\n // extension name (registered in $3dTilesExtensions global object).\n // Value is the object returned by the parser associated with the\n // extensions (mapping is done in $3dTilesExtensions global object)\n\n\n this.extensions = {};\n }\n /**\n * Creates and returns a javascript object holding the displayable\n * information from the batch table and from extensions of the batch table\n * for a given feature\n * @param {integer} featureId - id of the feature\n * @returns {Object} - displayable information relative to the batch table\n * and its extensions for the feature with id=featureId. Object is\n * formatted as follow: {BatchTable: {BatchTableFeatureProperties},\n * ExtensionName: {ExtensionDisplayableInfo}}\n */\n\n\n _createClass(BatchTable, [{\n key: \"getPickingInfo\",\n value: function getPickingInfo(featureId) {\n var _this = this;\n\n var featureDisplayableInfo = {};\n\n if (this.batchLength === 0) {\n return;\n }\n\n if (featureId < 0) {\n throw new Error(\"Batch Id (\".concat(featureId, \") must be positive to access\\n feature properties from the batch table.\"));\n }\n\n if (featureId < this.batchLength) {\n // Get properties from batch table content\n Object.keys(this.content).forEach(function (property) {\n featureDisplayableInfo[property] = _this.content[property][featureId];\n });\n } else {\n throw new Error(\"Batch Id (\".concat(featureId, \") must be inferior to batch length \\n (\").concat(this.batchLength, \") to access feature properties in batch \\n table.\"));\n }\n\n var BTDisplayableInfo = {\n BatchTable: featureDisplayableInfo\n }; // loop through extensions and append their displayable\n // information to featureDisplayableInfo\n\n if (this.extensions) {\n Object.keys(this.extensions).forEach(function (extName) {\n var extDisplayableInfo = _defineProperty({}, extName, _this.extensions[extName].getPickingInfo(featureId));\n\n Object.assign(BTDisplayableInfo, extDisplayableInfo);\n });\n }\n\n return BTDisplayableInfo;\n }\n /**\n * Remove an extension from this.content. Must be called when an extension\n * has been parsed and added to this.extensions\n * @param {string} extensionName - the name of the extension to remove\n */\n\n }, {\n key: \"removeExtensionFromContent\",\n value: function removeExtensionFromContent(extensionName) {\n // Delete extension from content\n if (this.content.extensions[extensionName]) {\n delete this.content.extensions[extensionName];\n } // Delete extensions from content if empty\n\n\n if (Object.keys(this.content.extensions).length === 0) {\n delete this.content.extensions;\n }\n }\n }]);\n\n return BatchTable;\n}();\n/**\n * @module BatchTableParser\n */\n\n\nexport default {\n /** Parse a batch table buffer and returns a promise that resolves with a\n * BatchTable object.\n * @param {ArrayBuffer} buffer - the batch table buffer.\n * @param {integer} BTBinaryLength - length of the binary part of the\n * batch table\n * @param {number} BATCH_LENGTH the length of the batch.\n * @return {Promise} - a promise that resolves with a BatchTable object.\n *\n */\n parse: function parse(buffer, BTBinaryLength, BATCH_LENGTH) {\n // Batch table has a json part and can have a binary part (not\n // supported yet)\n var binary;\n var jsonBuffer = buffer;\n\n if (BTBinaryLength > 0) {\n binary = buffer.slice(buffer.byteLength - BTBinaryLength);\n jsonBuffer = buffer.slice(0, buffer.byteLength - BTBinaryLength);\n }\n\n var content = utf8Decoder.decode(new Uint8Array(jsonBuffer));\n var json = JSON.parse(content);\n var batchTable = new BatchTable(json, binary, BATCH_LENGTH);\n var promises = []; // When an extension is found, we call its parser and append the\n // returned object to batchTable.extensions\n // Extensions must be registered in $3dTilesExtensions global object\n // where an extension name is mapped to a parser.\n\n if (json.extensions) {\n Object.keys(json.extensions).forEach(function (extName) {\n if ($3dTilesExtensions.isExtensionRegistered(extName)) {\n var extensionParser = $3dTilesExtensions.getParser(extName);\n promises.push(extensionParser(json.extensions[extName]).then(function (extObject) {\n batchTable.extensions[extName] = extObject;\n batchTable.removeExtensionFromContent(extName);\n }));\n }\n });\n } // values[0] is the results of the first promise pushed in promises,\n // i.e. batchTable\n\n\n return Promise.all(promises).then(function () {\n return batchTable;\n });\n }\n};","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport * as THREE from 'three';\nimport computeBuffers from \"./Prefab/computeBufferTileGeometry\";\n\nfunction defaultBuffers(params) {\n params.buildIndexAndWGS84 = true;\n params.center = params.builder.center(params.extent).clone();\n var buffers = computeBuffers(params);\n buffers.index = new THREE.BufferAttribute(buffers.index, 1);\n buffers.uv.wgs84 = new THREE.BufferAttribute(buffers.uv.wgs84, 2);\n buffers.position = new THREE.BufferAttribute(buffers.position, 3);\n buffers.normal = new THREE.BufferAttribute(buffers.normal, 3);\n buffers.uv.pm = new THREE.BufferAttribute(buffers.uv.pm, 1);\n return buffers;\n}\n\nvar TileGeometry =\n/*#__PURE__*/\nfunction (_THREE$BufferGeometry) {\n _inherits(TileGeometry, _THREE$BufferGeometry);\n\n function TileGeometry(params) {\n var _this;\n\n var buffers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultBuffers(params);\n\n _classCallCheck(this, TileGeometry);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(TileGeometry).call(this));\n _this.center = params.center;\n _this.extent = params.extent;\n\n _this.setIndex(buffers.index);\n\n _this.addAttribute('uv_wgs84', buffers.uv.wgs84);\n\n _this.addAttribute('position', buffers.position);\n\n _this.addAttribute('normal', buffers.normal);\n\n _this.addAttribute('uv_pm', buffers.uv.pm);\n\n _this.computeBoundingBox();\n\n _this.OBB = {};\n return _this;\n }\n\n return TileGeometry;\n}(THREE.BufferGeometry);\n\nexport default TileGeometry;","import * as THREE from 'three';\nexport default function computeBuffers(params) {\n // Create output buffers.\n var outBuffers = {\n index: null,\n position: null,\n normal: null,\n // 2 UV set per tile: wgs84 and pm\n // - wgs84: 1 texture per tile because tiles are using wgs84 projection\n // - pm: use multiple textures per tile.\n // +-------------------------+\n // | |\n // | Texture 0 |\n // +-------------------------+\n // | |\n // | Texture 1 |\n // +-------------------------+\n // | |\n // | Texture 2 |\n // +-------------------------+\n // * u = wgs84.u\n // * v = textureid + v in builder texture\n uv: {\n wgs84: null,\n pm: null\n }\n };\n var builder = params.builder;\n var nSeg = params.segment; // segments count :\n // Tile : (nSeg + 1) * (nSeg + 1)\n // Skirt : 8 * (nSeg - 1)\n\n var nVertex = (nSeg + 1) * (nSeg + 1) + (params.disableSkirt ? 0 : 4 * nSeg);\n var triangles = nSeg * nSeg * 2 + (params.disableSkirt ? 0 : 4 * nSeg * 2);\n outBuffers.position = new Float32Array(nVertex * 3);\n outBuffers.normal = new Float32Array(nVertex * 3);\n outBuffers.uv.pm = new Float32Array(nVertex);\n\n if (params.buildIndexAndWGS84) {\n outBuffers.index = new Uint32Array(triangles * 3);\n outBuffers.uv.wgs84 = new Float32Array(nVertex * 2);\n }\n\n var widthSegments = Math.max(2, Math.floor(nSeg) || 2);\n var heightSegments = Math.max(2, Math.floor(nSeg) || 2);\n var idVertex = 0;\n var vertices = [];\n var skirt = [];\n var skirtEnd = [];\n builder.prepare(params);\n\n var UV_WGS84 = function () {};\n\n var UV_PM = function () {}; // Define UV computation functions if needed\n\n\n if (params.buildIndexAndWGS84) {\n UV_WGS84 = function (out, id, u, v) {\n out.uv.wgs84[id * 2 + 0] = u;\n out.uv.wgs84[id * 2 + 1] = v;\n };\n }\n\n if (builder.getUV_PM) {\n UV_PM = function (out, id, u) {\n out.uv.pm[id] = u;\n };\n }\n\n for (var y = 0; y <= heightSegments; y++) {\n var verticesRow = [];\n var v = y / heightSegments;\n builder.vProjecte(v, params);\n var uv_pm = builder.getUV_PM ? builder.getUV_PM(params) : undefined;\n\n for (var x = 0; x <= widthSegments; x++) {\n var u = x / widthSegments;\n var id_m3 = idVertex * 3;\n builder.uProjecte(u, params);\n var vertex = builder.vertexPosition(params, params.projected);\n var normal = builder.vertexNormal(params); // move geometry to center world\n\n vertex.sub(params.center); // align normal to z axis\n\n if (params.quatNormalToZ) {\n vertex.applyQuaternion(params.quatNormalToZ);\n normal.applyQuaternion(params.quatNormalToZ);\n }\n\n vertex.toArray(outBuffers.position, id_m3);\n normal.toArray(outBuffers.normal, id_m3);\n UV_WGS84(outBuffers, idVertex, u, v);\n UV_PM(outBuffers, idVertex, uv_pm);\n\n if (!params.disableSkirt) {\n if (y !== 0 && y !== heightSegments) {\n if (x === widthSegments) {\n skirt.push(idVertex);\n } else if (x === 0) {\n skirtEnd.push(idVertex);\n }\n }\n }\n\n verticesRow.push(idVertex);\n idVertex++;\n }\n\n vertices.push(verticesRow);\n\n if (y === 0) {\n skirt = skirt.concat(verticesRow);\n } else if (y === heightSegments) {\n skirt = skirt.concat(verticesRow.slice().reverse());\n }\n }\n\n if (!params.disableSkirt) {\n skirt = skirt.concat(skirtEnd.reverse());\n }\n\n function bufferize(va, vb, vc, idVertex) {\n outBuffers.index[idVertex + 0] = va;\n outBuffers.index[idVertex + 1] = vb;\n outBuffers.index[idVertex + 2] = vc;\n return idVertex + 3;\n }\n\n var idVertex2 = 0;\n\n if (params.buildIndexAndWGS84) {\n for (var _y = 0; _y < heightSegments; _y++) {\n for (var _x = 0; _x < widthSegments; _x++) {\n var v1 = vertices[_y][_x + 1];\n var v2 = vertices[_y][_x];\n var v3 = vertices[_y + 1][_x];\n var v4 = vertices[_y + 1][_x + 1];\n idVertex2 = bufferize(v4, v2, v1, idVertex2);\n idVertex2 = bufferize(v4, v3, v2, idVertex2);\n }\n }\n }\n\n var iStart = idVertex; // TODO: WARNING beware skirt's size influences performance\n // The size of the skirt is now a ratio of the size of the tile.\n // To be perfect it should depend on the real elevation delta but too heavy to compute\n\n if (!params.disableSkirt) {\n // We compute the actual size of tile segment to use later for the skirt.\n var segmentSize = new THREE.Vector3().fromArray(outBuffers.position).distanceTo(new THREE.Vector3().fromArray(outBuffers.position, 3));\n\n var buildIndexSkirt = function () {};\n\n var buildUVSkirt = function () {};\n\n if (params.buildIndexAndWGS84) {\n buildIndexSkirt = function (id, v1, v2, v3, v4) {\n id = bufferize(v1, v2, v3, id);\n id = bufferize(v1, v3, v4, id);\n return id;\n };\n\n buildUVSkirt = function (id) {\n outBuffers.uv.wgs84[idVertex * 2 + 0] = outBuffers.uv.wgs84[id * 2 + 0];\n outBuffers.uv.wgs84[idVertex * 2 + 1] = outBuffers.uv.wgs84[id * 2 + 1];\n };\n }\n\n for (var i = 0; i < skirt.length; i++) {\n var id = skirt[i];\n\n var _id_m = idVertex * 3;\n\n var id2_m3 = id * 3;\n outBuffers.position[_id_m + 0] = outBuffers.position[id2_m3 + 0] - outBuffers.normal[id2_m3 + 0] * segmentSize;\n outBuffers.position[_id_m + 1] = outBuffers.position[id2_m3 + 1] - outBuffers.normal[id2_m3 + 1] * segmentSize;\n outBuffers.position[_id_m + 2] = outBuffers.position[id2_m3 + 2] - outBuffers.normal[id2_m3 + 2] * segmentSize;\n outBuffers.normal[_id_m + 0] = outBuffers.normal[id2_m3 + 0];\n outBuffers.normal[_id_m + 1] = outBuffers.normal[id2_m3 + 1];\n outBuffers.normal[_id_m + 2] = outBuffers.normal[id2_m3 + 2];\n buildUVSkirt(id);\n outBuffers.uv.pm[idVertex] = outBuffers.uv.pm[id];\n var idf = (i + 1) % skirt.length;\n var _v2 = idVertex;\n\n var _v3 = idf === 0 ? iStart : idVertex + 1;\n\n var _v4 = skirt[idf];\n idVertex2 = buildIndexSkirt(idVertex2, id, _v2, _v3, _v4);\n idVertex++;\n }\n }\n\n return outBuffers;\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport * as THREE from 'three';\nimport Coordinates from \"../../Geographic/Coordinates\";\nimport Projection from \"../../Geographic/Projection\";\nimport _OBB from \"../../../Renderer/OBB\";\nimport Extent from \"../../Geographic/Extent\";\nvar axisZ = new THREE.Vector3(0, 0, 1);\nvar axisY = new THREE.Vector3(0, 1, 0);\nvar quatToAlignLongitude = new THREE.Quaternion();\nvar quatToAlignLatitude = new THREE.Quaternion();\n\nfunction WGS84ToOneSubY(latitude) {\n return 1.0 - Projection.WGS84ToY(latitude);\n}\n\nvar BuilderEllipsoidTile =\n/*#__PURE__*/\nfunction () {\n function BuilderEllipsoidTile() {\n _classCallCheck(this, BuilderEllipsoidTile);\n\n this.type = 'e';\n this.tmp = {\n coords: [new Coordinates('EPSG:4326', 0, 0), new Coordinates('EPSG:4326', 0, 0)],\n position: new THREE.Vector3()\n };\n } // prepare params\n // init projected object -> params.projected\n\n\n _createClass(BuilderEllipsoidTile, [{\n key: \"prepare\",\n value: function prepare(params) {\n params.nbRow = Math.pow(2, params.level + 1.0);\n var st1 = WGS84ToOneSubY(params.extent.south);\n\n if (!isFinite(st1)) {\n st1 = 0;\n }\n\n var sizeTexture = 1.0 / params.nbRow;\n var start = st1 % sizeTexture;\n params.deltaUV1 = (st1 - start) * params.nbRow; // transformation to align tile's normal to z axis\n\n params.quatNormalToZ = new THREE.Quaternion().setFromAxisAngle(axisY, -(Math.PI * 0.5 - THREE.Math.degToRad(params.extent.center().latitude))); // let's avoid building too much temp objects\n\n params.projected = {\n longitude: 0,\n latitude: 0\n };\n } // get center tile in cartesian 3D\n\n }, {\n key: \"center\",\n value: function center(extent) {\n return extent.center(this.tmp.coords[0]).as('EPSG:4978', this.tmp.coords[1]).toVector3();\n } // get position 3D cartesian\n\n }, {\n key: \"vertexPosition\",\n value: function vertexPosition(params) {\n this.tmp.coords[0].setFromValues(params.projected.longitude, params.projected.latitude);\n this.tmp.coords[0].as('EPSG:4978', this.tmp.coords[1]).toVector3(this.tmp.position);\n return this.tmp.position;\n } // get normal for last vertex\n\n }, {\n key: \"vertexNormal\",\n value: function vertexNormal() {\n return this.tmp.coords[1].geodesicNormal;\n } // coord u tile to projected\n\n }, {\n key: \"uProjecte\",\n value: function uProjecte(u, params) {\n params.projected.longitude = Projection.UnitaryToLongitudeWGS84(u, params.extent);\n } // coord v tile to projected\n\n }, {\n key: \"vProjecte\",\n value: function vProjecte(v, params) {\n params.projected.latitude = Projection.UnitaryToLatitudeWGS84(v, params.extent);\n } // Compute uv 1, if isn't defined the uv1 isn't computed\n\n }, {\n key: \"getUV_PM\",\n value: function getUV_PM(params) {\n var t = WGS84ToOneSubY(params.projected.latitude) * params.nbRow;\n\n if (!isFinite(t)) {\n t = 0;\n }\n\n return t - params.deltaUV1;\n }\n }, {\n key: \"computeSharableExtent\",\n value: function computeSharableExtent(extent) {\n // Compute sharable extent to pool the geometries\n // the geometry in common extent is identical to the existing input\n // with a transformation (translation, rotation)\n // TODO: It should be possible to use equatorial plan symetrie,\n // but we should be reverse UV on tile\n // Common geometry is looking for only on longitude\n var sizeLongitude = Math.abs(extent.west - extent.east) / 2;\n var sharableExtent = new Extent(extent.crs, -sizeLongitude, sizeLongitude, extent.south, extent.north); // compute rotation to transform tile to position it on ellipsoid\n // this transformation take into account the transformation of the parents\n\n var rotLon = THREE.Math.degToRad(extent.west - sharableExtent.west);\n var rotLat = THREE.Math.degToRad(90 - extent.center(this.tmp.coords[0]).latitude);\n quatToAlignLongitude.setFromAxisAngle(axisZ, rotLon);\n quatToAlignLatitude.setFromAxisAngle(axisY, rotLat);\n quatToAlignLongitude.multiply(quatToAlignLatitude);\n return {\n sharableExtent: sharableExtent,\n quaternion: quatToAlignLongitude.clone(),\n position: this.center(extent)\n };\n } // use for region for adaptation boundingVolume\n\n }, {\n key: \"OBB\",\n value: function OBB(boundingBox) {\n return new _OBB(boundingBox.min, boundingBox.max);\n }\n }]);\n\n return BuilderEllipsoidTile;\n}();\n\nexport default BuilderEllipsoidTile;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport Extent from \"../Core/Geographic/Extent\";\n\nvar InfoLayer =\n/*#__PURE__*/\nfunction () {\n function InfoLayer(layer) {\n _classCallCheck(this, InfoLayer);\n\n this.layer = layer;\n } // eslint-disable-next-line\n\n\n _createClass(InfoLayer, [{\n key: \"clear\",\n value: function clear() {} // eslint-disable-next-line\n\n }, {\n key: \"update\",\n value: function update() {}\n }]);\n\n return InfoLayer;\n}();\n/**\n * InfoTiledGeometryLayer that provides some states layer informations. These\n * informations are displayed tiles, displayed {@link ColorLayer} and {@link\n * ElevationLayer} and extent of displayed tiles.\n *\n * @class InfoTiledGeometryLayer\n *\n * @property {object} displayed\n * @property {Layer[]} displayed.layers - Displayed {@link ColorLayer} and {@link ElevationLayer}.\n * @property {Extent} displayed.extent - {@link Extent} of displayed tiles.\n * @property {Set} displayed.tiles - Set of displayed tiles.\n */\n\n\nexport { InfoLayer as default };\nexport var InfoTiledGeometryLayer =\n/*#__PURE__*/\nfunction (_InfoLayer) {\n _inherits(InfoTiledGeometryLayer, _InfoLayer);\n\n function InfoTiledGeometryLayer(tiledGeometryLayer) {\n var _this;\n\n _classCallCheck(this, InfoTiledGeometryLayer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InfoTiledGeometryLayer).call(this, tiledGeometryLayer));\n _this.displayed = {\n tiles: new Set()\n };\n Object.defineProperty(_this.displayed, 'layers', {\n get: function get() {\n var layers = [];\n\n _this.displayed.tiles.forEach(function (tile) {\n var m = tile.material;\n layers = _toConsumableArray(new Set([].concat(_toConsumableArray(layers), _toConsumableArray(m.colorLayerIds.filter(function (id) {\n return m.getLayer(id);\n })), _toConsumableArray(m.elevationLayerIds))));\n });\n\n return _this.layer.attachedLayers.filter(function (l) {\n return layers.includes(l.id);\n });\n }\n });\n Object.defineProperty(_this.displayed, 'extent', {\n get: function get() {\n var extent = new Extent(_this.layer.extent.crs, Infinity, -Infinity, Infinity, -Infinity);\n extent.min = +Infinity;\n extent.max = -Infinity;\n\n _this.displayed.tiles.forEach(function (tile) {\n extent.union(tile.extent);\n extent.min = Math.min(tile.obb.z.min, extent.min);\n extent.max = Math.max(tile.obb.z.max, extent.max);\n });\n\n return extent;\n }\n });\n return _this;\n }\n\n _createClass(InfoTiledGeometryLayer, [{\n key: \"clear\",\n value: function clear() {\n this.displayed.tiles.clear();\n }\n }, {\n key: \"update\",\n value: function update(tile) {\n if (tile.material.visible) {\n this.displayed.tiles.add(tile);\n } else {\n this.displayed.tiles[\"delete\"](tile);\n }\n }\n }]);\n\n return InfoTiledGeometryLayer;\n}(InfoLayer);","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","'use strict';\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\n// contains true if JSZip can read/generate nodejs Buffer, false otherwise.\n// Browserify will provide a Buffer implementation for browsers, which is\n// an augmented Uint8Array (i.e., can be used as either Buffer or U8).\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob('application/zip').size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\n\nvar VectorTileFeature = require('./vectortilefeature.js');\n\nmodule.exports = VectorTileLayer;\n\nfunction VectorTileLayer(pbf, end) {\n // Public\n this.version = 1;\n this.name = null;\n this.extent = 4096;\n this.length = 0;\n\n // Private\n this._pbf = pbf;\n this._keys = [];\n this._values = [];\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n}\n\nfunction readLayer(tag, layer, pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n else if (tag === 2) layer._features.push(pbf.pos);\n else if (tag === 3) layer._keys.push(pbf.readString());\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n}\n\nfunction readValueMessage(pbf) {\n var value = null,\n end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var tag = pbf.readVarint() >> 3;\n\n value = tag === 1 ? pbf.readString() :\n tag === 2 ? pbf.readFloat() :\n tag === 3 ? pbf.readDouble() :\n tag === 4 ? pbf.readVarint64() :\n tag === 5 ? pbf.readVarint() :\n tag === 6 ? pbf.readSVarint() :\n tag === 7 ? pbf.readBoolean() : null;\n }\n\n return value;\n}\n\n// return feature `i` from this layer as a `VectorTileFeature`\nVectorTileLayer.prototype.feature = function(i) {\n if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds');\n\n this._pbf.pos = this._features[i];\n\n var end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n};\n","'use strict';\n\nvar Point = require('@mapbox/point-geometry');\n\nmodule.exports = VectorTileFeature;\n\nfunction VectorTileFeature(pbf, end, extent, keys, values) {\n // Public\n this.properties = {};\n this.extent = extent;\n this.type = 0;\n\n // Private\n this._pbf = pbf;\n this._geometry = -1;\n this._keys = keys;\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n}\n\nfunction readFeature(tag, feature, pbf) {\n if (tag == 1) feature.id = pbf.readVarint();\n else if (tag == 2) readTag(pbf, feature);\n else if (tag == 3) feature.type = pbf.readVarint();\n else if (tag == 4) feature._geometry = pbf.pos;\n}\n\nfunction readTag(pbf, feature) {\n var end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n var key = feature._keys[pbf.readVarint()],\n value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n\nVectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nVectorTileFeature.prototype.loadGeometry = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n lines = [],\n line;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) { // moveTo\n if (line) lines.push(line);\n line = [];\n }\n\n line.push(new Point(x, y));\n\n } else if (cmd === 7) {\n\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].clone()); // closePolygon\n }\n\n } else {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n};\n\nVectorTileFeature.prototype.bbox = function() {\n var pbf = this._pbf;\n pbf.pos = this._geometry;\n\n var end = pbf.readVarint() + pbf.pos,\n cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n x1 = Infinity,\n x2 = -Infinity,\n y1 = Infinity,\n y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n var cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n\n } else if (cmd !== 7) {\n throw new Error('unknown command ' + cmd);\n }\n }\n\n return [x1, y1, x2, y2];\n};\n\nVectorTileFeature.prototype.toGeoJSON = function(x, y, z) {\n var size = this.extent * Math.pow(2, z),\n x0 = this.extent * x,\n y0 = this.extent * y,\n coords = this.loadGeometry(),\n type = VectorTileFeature.types[this.type],\n i, j;\n\n function project(line) {\n for (var j = 0; j < line.length; j++) {\n var p = line[j], y2 = 180 - (p.y + y0) * 360 / size;\n line[j] = [\n (p.x + x0) * 360 / size - 180,\n 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90\n ];\n }\n }\n\n switch (this.type) {\n case 1:\n var points = [];\n for (i = 0; i < coords.length; i++) {\n points[i] = coords[i][0];\n }\n coords = points;\n project(coords);\n break;\n\n case 2:\n for (i = 0; i < coords.length; i++) {\n project(coords[i]);\n }\n break;\n\n case 3:\n coords = classifyRings(coords);\n for (i = 0; i < coords.length; i++) {\n for (j = 0; j < coords[i].length; j++) {\n project(coords[i][j]);\n }\n }\n break;\n }\n\n if (coords.length === 1) {\n coords = coords[0];\n } else {\n type = 'Multi' + type;\n }\n\n var result = {\n type: \"Feature\",\n geometry: {\n type: type,\n coordinates: coords\n },\n properties: this.properties\n };\n\n if ('id' in this) {\n result.id = this.id;\n }\n\n return result;\n};\n\n// classifies an array of rings into polygons with outer rings and holes\n\nfunction classifyRings(rings) {\n var len = rings.length;\n\n if (len <= 1) return [rings];\n\n var polygons = [],\n polygon,\n ccw;\n\n for (var i = 0; i < len; i++) {\n var area = signedArea(rings[i]);\n if (area === 0) continue;\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n polygon.push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\nfunction signedArea(ring) {\n var sum = 0;\n for (var i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.PriorityQueue = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o>> 1;\n if (comparator(array[mid], value) >= 0) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return low;\n};\n\nmodule.exports = ArrayStrategy = (function() {\n function ArrayStrategy(options) {\n var ref;\n this.options = options;\n this.comparator = this.options.comparator;\n this.data = ((ref = this.options.initialValues) != null ? ref.slice(0) : void 0) || [];\n this.data.sort(this.comparator).reverse();\n }\n\n ArrayStrategy.prototype.queue = function(value) {\n var pos;\n pos = binarySearchForIndexReversed(this.data, value, this.comparator);\n this.data.splice(pos, 0, value);\n return void 0;\n };\n\n ArrayStrategy.prototype.dequeue = function() {\n return this.data.pop();\n };\n\n ArrayStrategy.prototype.peek = function() {\n return this.data[this.data.length - 1];\n };\n\n ArrayStrategy.prototype.clear = function() {\n this.data.length = 0;\n return void 0;\n };\n\n return ArrayStrategy;\n\n})();\n\n\n},{}],4:[function(_dereq_,module,exports){\nvar BHeapStrategy;\n\nmodule.exports = BHeapStrategy = (function() {\n function BHeapStrategy(options) {\n var arr, i, j, k, len, ref, ref1, shift, value;\n this.comparator = (options != null ? options.comparator : void 0) || function(a, b) {\n return a - b;\n };\n this.pageSize = (options != null ? options.pageSize : void 0) || 512;\n this.length = 0;\n shift = 0;\n while ((1 << shift) < this.pageSize) {\n shift += 1;\n }\n if (1 << shift !== this.pageSize) {\n throw 'pageSize must be a power of two';\n }\n this._shift = shift;\n this._emptyMemoryPageTemplate = arr = [];\n for (i = j = 0, ref = this.pageSize; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {\n arr.push(null);\n }\n this._memory = [];\n this._mask = this.pageSize - 1;\n if (options.initialValues) {\n ref1 = options.initialValues;\n for (k = 0, len = ref1.length; k < len; k++) {\n value = ref1[k];\n this.queue(value);\n }\n }\n }\n\n BHeapStrategy.prototype.queue = function(value) {\n this.length += 1;\n this._write(this.length, value);\n this._bubbleUp(this.length, value);\n return void 0;\n };\n\n BHeapStrategy.prototype.dequeue = function() {\n var ret, val;\n ret = this._read(1);\n val = this._read(this.length);\n this.length -= 1;\n if (this.length > 0) {\n this._write(1, val);\n this._bubbleDown(1, val);\n }\n return ret;\n };\n\n BHeapStrategy.prototype.peek = function() {\n return this._read(1);\n };\n\n BHeapStrategy.prototype.clear = function() {\n this.length = 0;\n this._memory.length = 0;\n return void 0;\n };\n\n BHeapStrategy.prototype._write = function(index, value) {\n var page;\n page = index >> this._shift;\n while (page >= this._memory.length) {\n this._memory.push(this._emptyMemoryPageTemplate.slice(0));\n }\n return this._memory[page][index & this._mask] = value;\n };\n\n BHeapStrategy.prototype._read = function(index) {\n return this._memory[index >> this._shift][index & this._mask];\n };\n\n BHeapStrategy.prototype._bubbleUp = function(index, value) {\n var compare, indexInPage, parentIndex, parentValue;\n compare = this.comparator;\n while (index > 1) {\n indexInPage = index & this._mask;\n if (index < this.pageSize || indexInPage > 3) {\n parentIndex = (index & ~this._mask) | (indexInPage >> 1);\n } else if (indexInPage < 2) {\n parentIndex = (index - this.pageSize) >> this._shift;\n parentIndex += parentIndex & ~(this._mask >> 1);\n parentIndex |= this.pageSize >> 1;\n } else {\n parentIndex = index - 2;\n }\n parentValue = this._read(parentIndex);\n if (compare(parentValue, value) < 0) {\n break;\n }\n this._write(parentIndex, value);\n this._write(index, parentValue);\n index = parentIndex;\n }\n return void 0;\n };\n\n BHeapStrategy.prototype._bubbleDown = function(index, value) {\n var childIndex1, childIndex2, childValue1, childValue2, compare;\n compare = this.comparator;\n while (index < this.length) {\n if (index > this._mask && !(index & (this._mask - 1))) {\n childIndex1 = childIndex2 = index + 2;\n } else if (index & (this.pageSize >> 1)) {\n childIndex1 = (index & ~this._mask) >> 1;\n childIndex1 |= index & (this._mask >> 1);\n childIndex1 = (childIndex1 + 1) << this._shift;\n childIndex2 = childIndex1 + 1;\n } else {\n childIndex1 = index + (index & this._mask);\n childIndex2 = childIndex1 + 1;\n }\n if (childIndex1 !== childIndex2 && childIndex2 <= this.length) {\n childValue1 = this._read(childIndex1);\n childValue2 = this._read(childIndex2);\n if (compare(childValue1, value) < 0 && compare(childValue1, childValue2) <= 0) {\n this._write(childIndex1, value);\n this._write(index, childValue1);\n index = childIndex1;\n } else if (compare(childValue2, value) < 0) {\n this._write(childIndex2, value);\n this._write(index, childValue2);\n index = childIndex2;\n } else {\n break;\n }\n } else if (childIndex1 <= this.length) {\n childValue1 = this._read(childIndex1);\n if (compare(childValue1, value) < 0) {\n this._write(childIndex1, value);\n this._write(index, childValue1);\n index = childIndex1;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n return void 0;\n };\n\n return BHeapStrategy;\n\n})();\n\n\n},{}],5:[function(_dereq_,module,exports){\nvar BinaryHeapStrategy;\n\nmodule.exports = BinaryHeapStrategy = (function() {\n function BinaryHeapStrategy(options) {\n var ref;\n this.comparator = (options != null ? options.comparator : void 0) || function(a, b) {\n return a - b;\n };\n this.length = 0;\n this.data = ((ref = options.initialValues) != null ? ref.slice(0) : void 0) || [];\n this._heapify();\n }\n\n BinaryHeapStrategy.prototype._heapify = function() {\n var i, j, ref;\n if (this.data.length > 0) {\n for (i = j = 1, ref = this.data.length; 1 <= ref ? j < ref : j > ref; i = 1 <= ref ? ++j : --j) {\n this._bubbleUp(i);\n }\n }\n return void 0;\n };\n\n BinaryHeapStrategy.prototype.queue = function(value) {\n this.data.push(value);\n this._bubbleUp(this.data.length - 1);\n return void 0;\n };\n\n BinaryHeapStrategy.prototype.dequeue = function() {\n var last, ret;\n ret = this.data[0];\n last = this.data.pop();\n if (this.data.length > 0) {\n this.data[0] = last;\n this._bubbleDown(0);\n }\n return ret;\n };\n\n BinaryHeapStrategy.prototype.peek = function() {\n return this.data[0];\n };\n\n BinaryHeapStrategy.prototype.clear = function() {\n this.length = 0;\n this.data.length = 0;\n return void 0;\n };\n\n BinaryHeapStrategy.prototype._bubbleUp = function(pos) {\n var parent, x;\n while (pos > 0) {\n parent = (pos - 1) >>> 1;\n if (this.comparator(this.data[pos], this.data[parent]) < 0) {\n x = this.data[parent];\n this.data[parent] = this.data[pos];\n this.data[pos] = x;\n pos = parent;\n } else {\n break;\n }\n }\n return void 0;\n };\n\n BinaryHeapStrategy.prototype._bubbleDown = function(pos) {\n var last, left, minIndex, right, x;\n last = this.data.length - 1;\n while (true) {\n left = (pos << 1) + 1;\n right = left + 1;\n minIndex = pos;\n if (left <= last && this.comparator(this.data[left], this.data[minIndex]) < 0) {\n minIndex = left;\n }\n if (right <= last && this.comparator(this.data[right], this.data[minIndex]) < 0) {\n minIndex = right;\n }\n if (minIndex !== pos) {\n x = this.data[minIndex];\n this.data[minIndex] = this.data[pos];\n this.data[pos] = x;\n pos = minIndex;\n } else {\n break;\n }\n }\n return void 0;\n };\n\n return BinaryHeapStrategy;\n\n})();\n\n\n},{}]},{},[1])(1)\n});","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos,\n str = readUtf8(this.buf, this.pos, end);\n this.pos = end;\n return str;\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","module.exports.VectorTile = require('./lib/vectortile.js');\nmodule.exports.VectorTileFeature = require('./lib/vectortilefeature.js');\nmodule.exports.VectorTileLayer = require('./lib/vectortilelayer.js');\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.mapboxGlStyleSpecification = {}));\n}(this, function (exports) { 'use strict';\n\n var $version = 8;\n var $root = {\n \tversion: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: [\n \t\t\t8\n \t\t],\n \t\tdoc: \"Style specification version number. Must be 8.\",\n \t\texample: 8\n \t},\n \tname: {\n \t\ttype: \"string\",\n \t\tdoc: \"A human-readable name for the style.\",\n \t\texample: \"Bright\"\n \t},\n \tmetadata: {\n \t\ttype: \"*\",\n \t\tdoc: \"Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.\"\n \t},\n \tcenter: {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tdoc: \"Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \t\texample: [\n \t\t\t-73.9749,\n \t\t\t40.7736\n \t\t]\n \t},\n \tzoom: {\n \t\ttype: \"number\",\n \t\tdoc: \"Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \t\texample: 12.5\n \t},\n \tbearing: {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tperiod: 360,\n \t\tunits: \"degrees\",\n \t\tdoc: \"Default bearing, in degrees. The bearing is the compass direction that is \\\"up\\\"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \t\texample: 29\n \t},\n \tpitch: {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tunits: \"degrees\",\n \t\tdoc: \"Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n \t\texample: 50\n \t},\n \tlight: {\n \t\ttype: \"light\",\n \t\tdoc: \"The global light source.\",\n \t\texample: {\n \t\t\tanchor: \"viewport\",\n \t\t\tcolor: \"white\",\n \t\t\tintensity: 0.4\n \t\t}\n \t},\n \tsources: {\n \t\trequired: true,\n \t\ttype: \"sources\",\n \t\tdoc: \"Data source specifications.\",\n \t\texample: {\n \t\t\t\"mapbox-streets\": {\n \t\t\t\ttype: \"vector\",\n \t\t\t\turl: \"mapbox://mapbox.mapbox-streets-v6\"\n \t\t\t}\n \t\t}\n \t},\n \tsprite: {\n \t\ttype: \"string\",\n \t\tdoc: \"A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).\",\n \t\texample: \"mapbox://sprites/mapbox/bright-v8\"\n \t},\n \tglyphs: {\n \t\ttype: \"string\",\n \t\tdoc: \"A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).\",\n \t\texample: \"mapbox://fonts/mapbox/{fontstack}/{range}.pbf\"\n \t},\n \ttransition: {\n \t\ttype: \"transition\",\n \t\tdoc: \"A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.\",\n \t\texample: {\n \t\t\tduration: 300,\n \t\t\tdelay: 0\n \t\t}\n \t},\n \tlayers: {\n \t\trequired: true,\n \t\ttype: \"array\",\n \t\tvalue: \"layer\",\n \t\tdoc: \"Layers will be drawn in the order of this array.\",\n \t\texample: [\n \t\t\t{\n \t\t\t\tid: \"water\",\n \t\t\t\tsource: \"mapbox-streets\",\n \t\t\t\t\"source-layer\": \"water\",\n \t\t\t\ttype: \"fill\",\n \t\t\t\tpaint: {\n \t\t\t\t\t\"fill-color\": \"#00ffff\"\n \t\t\t\t}\n \t\t\t}\n \t\t]\n \t}\n };\n var sources = {\n \t\"*\": {\n \t\ttype: \"source\",\n \t\tdoc: \"Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided.\"\n \t}\n };\n var source = [\n \t\"source_vector\",\n \t\"source_raster\",\n \t\"source_raster_dem\",\n \t\"source_geojson\",\n \t\"source_video\",\n \t\"source_image\"\n ];\n var source_vector = {\n \ttype: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvector: {\n \t\t\t\tdoc: \"A vector tile source.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The type of the source.\"\n \t},\n \turl: {\n \t\ttype: \"string\",\n \t\tdoc: \"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\"\n \t},\n \ttiles: {\n \t\ttype: \"array\",\n \t\tvalue: \"string\",\n \t\tdoc: \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n \t},\n \tbounds: {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 4,\n \t\t\"default\": [\n \t\t\t-180,\n \t\t\t-85.051129,\n \t\t\t180,\n \t\t\t85.051129\n \t\t],\n \t\tdoc: \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.\"\n \t},\n \tscheme: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\txyz: {\n \t\t\t\tdoc: \"Slippy map tilenames scheme.\"\n \t\t\t},\n \t\t\ttms: {\n \t\t\t\tdoc: \"OSGeo spec scheme.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"xyz\",\n \t\tdoc: \"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.\"\n \t},\n \tminzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tdoc: \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n \t},\n \tmaxzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 22,\n \t\tdoc: \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n \t},\n \tattribution: {\n \t\ttype: \"string\",\n \t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n \t},\n \t\"*\": {\n \t\ttype: \"*\",\n \t\tdoc: \"Other keys to configure the data source.\"\n \t}\n };\n var source_raster = {\n \ttype: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\traster: {\n \t\t\t\tdoc: \"A raster tile source.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The type of the source.\"\n \t},\n \turl: {\n \t\ttype: \"string\",\n \t\tdoc: \"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\"\n \t},\n \ttiles: {\n \t\ttype: \"array\",\n \t\tvalue: \"string\",\n \t\tdoc: \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n \t},\n \tbounds: {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 4,\n \t\t\"default\": [\n \t\t\t-180,\n \t\t\t-85.051129,\n \t\t\t180,\n \t\t\t85.051129\n \t\t],\n \t\tdoc: \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.\"\n \t},\n \tminzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tdoc: \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n \t},\n \tmaxzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 22,\n \t\tdoc: \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n \t},\n \ttileSize: {\n \t\ttype: \"number\",\n \t\t\"default\": 512,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The minimum visual size to display tiles for this layer. Only configurable for raster layers.\"\n \t},\n \tscheme: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\txyz: {\n \t\t\t\tdoc: \"Slippy map tilenames scheme.\"\n \t\t\t},\n \t\t\ttms: {\n \t\t\t\tdoc: \"OSGeo spec scheme.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"xyz\",\n \t\tdoc: \"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.\"\n \t},\n \tattribution: {\n \t\ttype: \"string\",\n \t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n \t},\n \t\"*\": {\n \t\ttype: \"*\",\n \t\tdoc: \"Other keys to configure the data source.\"\n \t}\n };\n var source_raster_dem = {\n \ttype: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\t\"raster-dem\": {\n \t\t\t\tdoc: \"A RGB-encoded raster DEM source\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The type of the source.\"\n \t},\n \turl: {\n \t\ttype: \"string\",\n \t\tdoc: \"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\"\n \t},\n \ttiles: {\n \t\ttype: \"array\",\n \t\tvalue: \"string\",\n \t\tdoc: \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n \t},\n \tbounds: {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 4,\n \t\t\"default\": [\n \t\t\t-180,\n \t\t\t-85.051129,\n \t\t\t180,\n \t\t\t85.051129\n \t\t],\n \t\tdoc: \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.\"\n \t},\n \tminzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tdoc: \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n \t},\n \tmaxzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 22,\n \t\tdoc: \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n \t},\n \ttileSize: {\n \t\ttype: \"number\",\n \t\t\"default\": 512,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The minimum visual size to display tiles for this layer. Only configurable for raster layers.\"\n \t},\n \tattribution: {\n \t\ttype: \"string\",\n \t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n \t},\n \tencoding: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tterrarium: {\n \t\t\t\tdoc: \"Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info.\"\n \t\t\t},\n \t\t\tmapbox: {\n \t\t\t\tdoc: \"Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"mapbox\",\n \t\tdoc: \"The encoding used by this source. Mapbox Terrain RGB is used by default\"\n \t},\n \t\"*\": {\n \t\ttype: \"*\",\n \t\tdoc: \"Other keys to configure the data source.\"\n \t}\n };\n var source_geojson = {\n \ttype: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tgeojson: {\n \t\t\t\tdoc: \"A GeoJSON data source.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The data type of the GeoJSON source.\"\n \t},\n \tdata: {\n \t\ttype: \"*\",\n \t\tdoc: \"A URL to a GeoJSON file, or inline GeoJSON.\"\n \t},\n \tmaxzoom: {\n \t\ttype: \"number\",\n \t\t\"default\": 18,\n \t\tdoc: \"Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels).\"\n \t},\n \tattribution: {\n \t\ttype: \"string\",\n \t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n \t},\n \tbuffer: {\n \t\ttype: \"number\",\n \t\t\"default\": 128,\n \t\tmaximum: 512,\n \t\tminimum: 0,\n \t\tdoc: \"Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance.\"\n \t},\n \ttolerance: {\n \t\ttype: \"number\",\n \t\t\"default\": 0.375,\n \t\tdoc: \"Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance).\"\n \t},\n \tcluster: {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\\n * `cluster` Is `true` if the point is a cluster \\n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\\n * `point_count` Number of original points grouped into this cluster\\n * `point_count_abbreviated` An abbreviated point count\"\n \t},\n \tclusterRadius: {\n \t\ttype: \"number\",\n \t\t\"default\": 50,\n \t\tminimum: 0,\n \t\tdoc: \"Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile.\"\n \t},\n \tclusterMaxZoom: {\n \t\ttype: \"number\",\n \t\tdoc: \"Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered).\"\n \t},\n \tclusterProperties: {\n \t\ttype: \"*\",\n \t\tdoc: \"An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{\\\"property_name\\\": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `\\\"+\\\"` or `\\\"max\\\"`) — it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\\n\\nExample: `{\\\"sum\\\": [\\\"+\\\", [\\\"get\\\", \\\"scalerank\\\"]]}`.\\n\\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `[\\\"accumulated\\\"]` value, e.g.:\\n`{\\\"sum\\\": [[\\\"+\\\", [\\\"accumulated\\\"], [\\\"get\\\", \\\"sum\\\"]], [\\\"get\\\", \\\"scalerank\\\"]]}`\"\n \t},\n \tlineMetrics: {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values.\"\n \t},\n \tgenerateId: {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values.\"\n \t}\n };\n var source_video = {\n \ttype: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvideo: {\n \t\t\t\tdoc: \"A video data source.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The data type of the video source.\"\n \t},\n \turls: {\n \t\trequired: true,\n \t\ttype: \"array\",\n \t\tvalue: \"string\",\n \t\tdoc: \"URLs to video content in order of preferred format.\"\n \t},\n \tcoordinates: {\n \t\trequired: true,\n \t\tdoc: \"Corners of video specified in longitude, latitude pairs.\",\n \t\ttype: \"array\",\n \t\tlength: 4,\n \t\tvalue: {\n \t\t\ttype: \"array\",\n \t\t\tlength: 2,\n \t\t\tvalue: \"number\",\n \t\t\tdoc: \"A single longitude, latitude pair.\"\n \t\t}\n \t}\n };\n var source_image = {\n \ttype: {\n \t\trequired: true,\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\timage: {\n \t\t\t\tdoc: \"An image data source.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The data type of the image source.\"\n \t},\n \turl: {\n \t\trequired: true,\n \t\ttype: \"string\",\n \t\tdoc: \"URL that points to an image.\"\n \t},\n \tcoordinates: {\n \t\trequired: true,\n \t\tdoc: \"Corners of image specified in longitude, latitude pairs.\",\n \t\ttype: \"array\",\n \t\tlength: 4,\n \t\tvalue: {\n \t\t\ttype: \"array\",\n \t\t\tlength: 2,\n \t\t\tvalue: \"number\",\n \t\t\tdoc: \"A single longitude, latitude pair.\"\n \t\t}\n \t}\n };\n var layer = {\n \tid: {\n \t\ttype: \"string\",\n \t\tdoc: \"Unique layer name.\",\n \t\trequired: true\n \t},\n \ttype: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tfill: {\n \t\t\t\tdoc: \"A filled polygon with an optional stroked border.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.10.0\",\n \t\t\t\t\t\tandroid: \"2.0.1\",\n \t\t\t\t\t\tios: \"2.0.0\",\n \t\t\t\t\t\tmacos: \"0.1.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\tline: {\n \t\t\t\tdoc: \"A stroked line.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.10.0\",\n \t\t\t\t\t\tandroid: \"2.0.1\",\n \t\t\t\t\t\tios: \"2.0.0\",\n \t\t\t\t\t\tmacos: \"0.1.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\tsymbol: {\n \t\t\t\tdoc: \"An icon or a text label.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.10.0\",\n \t\t\t\t\t\tandroid: \"2.0.1\",\n \t\t\t\t\t\tios: \"2.0.0\",\n \t\t\t\t\t\tmacos: \"0.1.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\tcircle: {\n \t\t\t\tdoc: \"A filled circle.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.10.0\",\n \t\t\t\t\t\tandroid: \"2.0.1\",\n \t\t\t\t\t\tios: \"2.0.0\",\n \t\t\t\t\t\tmacos: \"0.1.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\theatmap: {\n \t\t\t\tdoc: \"A heatmap.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\t\"fill-extrusion\": {\n \t\t\t\tdoc: \"An extruded (3D) polygon.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.27.0\",\n \t\t\t\t\t\tandroid: \"5.1.0\",\n \t\t\t\t\t\tios: \"3.6.0\",\n \t\t\t\t\t\tmacos: \"0.5.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\traster: {\n \t\t\t\tdoc: \"Raster map textures such as satellite imagery.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.10.0\",\n \t\t\t\t\t\tandroid: \"2.0.1\",\n \t\t\t\t\t\tios: \"2.0.0\",\n \t\t\t\t\t\tmacos: \"0.1.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\thillshade: {\n \t\t\t\tdoc: \"Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.43.0\",\n \t\t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t},\n \t\t\tbackground: {\n \t\t\t\tdoc: \"The background color or pattern of the map.\",\n \t\t\t\t\"sdk-support\": {\n \t\t\t\t\t\"basic functionality\": {\n \t\t\t\t\t\tjs: \"0.10.0\",\n \t\t\t\t\t\tandroid: \"2.0.1\",\n \t\t\t\t\t\tios: \"2.0.0\",\n \t\t\t\t\t\tmacos: \"0.1.0\"\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tdoc: \"Rendering type of this layer.\",\n \t\trequired: true\n \t},\n \tmetadata: {\n \t\ttype: \"*\",\n \t\tdoc: \"Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.\"\n \t},\n \tsource: {\n \t\ttype: \"string\",\n \t\tdoc: \"Name of a source description to be used for this layer. Required for all layer types except `background`.\"\n \t},\n \t\"source-layer\": {\n \t\ttype: \"string\",\n \t\tdoc: \"Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources.\"\n \t},\n \tminzoom: {\n \t\ttype: \"number\",\n \t\tminimum: 0,\n \t\tmaximum: 24,\n \t\tdoc: \"The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden.\"\n \t},\n \tmaxzoom: {\n \t\ttype: \"number\",\n \t\tminimum: 0,\n \t\tmaximum: 24,\n \t\tdoc: \"The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden.\"\n \t},\n \tfilter: {\n \t\ttype: \"filter\",\n \t\tdoc: \"A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions.\"\n \t},\n \tlayout: {\n \t\ttype: \"layout\",\n \t\tdoc: \"Layout properties for the layer.\"\n \t},\n \tpaint: {\n \t\ttype: \"paint\",\n \t\tdoc: \"Default paint properties for this layer.\"\n \t}\n };\n var layout = [\n \t\"layout_fill\",\n \t\"layout_line\",\n \t\"layout_circle\",\n \t\"layout_heatmap\",\n \t\"layout_fill-extrusion\",\n \t\"layout_symbol\",\n \t\"layout_raster\",\n \t\"layout_hillshade\",\n \t\"layout_background\"\n ];\n var layout_background = {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_fill = {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_circle = {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_heatmap = {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_line = {\n \t\"line-cap\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tbutt: {\n \t\t\t\tdoc: \"A cap with a squared-off end which is drawn to the exact endpoint of the line.\"\n \t\t\t},\n \t\t\tround: {\n \t\t\t\tdoc: \"A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.\"\n \t\t\t},\n \t\t\tsquare: {\n \t\t\t\tdoc: \"A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"butt\",\n \t\tdoc: \"The display of line endings.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"line-join\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tbevel: {\n \t\t\t\tdoc: \"A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.\"\n \t\t\t},\n \t\t\tround: {\n \t\t\t\tdoc: \"A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.\"\n \t\t\t},\n \t\t\tmiter: {\n \t\t\t\tdoc: \"A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"miter\",\n \t\tdoc: \"The display of lines when joining.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.40.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-miter-limit\": {\n \t\ttype: \"number\",\n \t\t\"default\": 2,\n \t\tdoc: \"Used to automatically convert miter joins to bevel joins for sharp angles.\",\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"line-join\": \"miter\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"line-round-limit\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1.05,\n \t\tdoc: \"Used to automatically convert round joins to miter joins for shallow angles.\",\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"line-join\": \"round\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_symbol = {\n \t\"symbol-placement\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tpoint: {\n \t\t\t\tdoc: \"The label is placed at the point where the geometry is located.\"\n \t\t\t},\n \t\t\tline: {\n \t\t\t\tdoc: \"The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries.\"\n \t\t\t},\n \t\t\t\"line-center\": {\n \t\t\t\tdoc: \"The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"point\",\n \t\tdoc: \"Label placement relative to its geometry.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"`line-center` value\": {\n \t\t\t\tjs: \"0.47.0\",\n \t\t\t\tandroid: \"6.4.0\",\n \t\t\t\tios: \"4.3.0\",\n \t\t\t\tmacos: \"0.10.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"symbol-spacing\": {\n \t\ttype: \"number\",\n \t\t\"default\": 250,\n \t\tminimum: 1,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Distance between two symbol anchors.\",\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"symbol-placement\": \"line\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"symbol-avoid-edges\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"symbol-sort-key\": {\n \t\ttype: \"number\",\n \t\tdoc: \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key when they overlap. Features with a lower sort key will have priority over other features when doing placement.\",\n \t\t\"sdk-support\": {\n \t\t\tjs: \"0.53.0\"\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"symbol-z-order\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tauto: {\n \t\t\t\tdoc: \"If `symbol-sort-key` is set, sort based on that. Otherwise sort symbols by their position relative to the viewport.\"\n \t\t\t},\n \t\t\t\"viewport-y\": {\n \t\t\t\tdoc: \"Symbols will be sorted by their y-position relative to the viewport.\"\n \t\t\t},\n \t\t\tsource: {\n \t\t\t\tdoc: \"Symbols will be rendered in the same order as the source data with no sorting applied.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"auto\",\n \t\tdoc: \"Controls the order in which overlapping symbols in the same layer are rendered\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.49.0\",\n \t\t\t\tandroid: \"6.6.0\",\n \t\t\t\tios: \"4.5.0\",\n \t\t\t\tmacos: \"0.12.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-allow-overlap\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, the icon will be visible even if it collides with other previously drawn symbols.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-ignore-placement\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, other symbols can be visible even if they collide with the icon.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-optional\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.\",\n \t\trequires: [\n \t\t\t\"icon-image\",\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-rotation-alignment\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.\"\n \t\t\t},\n \t\t\tauto: {\n \t\t\t\tdoc: \"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"auto\",\n \t\tdoc: \"In combination with `symbol-placement`, determines the rotation behavior of icons.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"`auto` value\": {\n \t\t\t\tjs: \"0.25.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.3.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-size\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tunits: \"factor of the original icon size\",\n \t\tdoc: \"Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.35.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-text-fit\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tnone: {\n \t\t\t\tdoc: \"The icon is displayed at its intrinsic aspect ratio.\"\n \t\t\t},\n \t\t\twidth: {\n \t\t\t\tdoc: \"The icon is scaled in the x-dimension to fit the width of the text.\"\n \t\t\t},\n \t\t\theight: {\n \t\t\t\tdoc: \"The icon is scaled in the y-dimension to fit the height of the text.\"\n \t\t\t},\n \t\t\tboth: {\n \t\t\t\tdoc: \"The icon is scaled in both x- and y-dimensions.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"none\",\n \t\tdoc: \"Scales the icon to fit around the associated text.\",\n \t\trequires: [\n \t\t\t\"icon-image\",\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.21.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.2.1\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-text-fit-padding\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 4,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0,\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\tunits: \"pixels\",\n \t\tdoc: \"Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.\",\n \t\trequires: [\n \t\t\t\"icon-image\",\n \t\t\t\"text-field\",\n \t\t\t{\n \t\t\t\t\"icon-text-fit\": [\n \t\t\t\t\t\"both\",\n \t\t\t\t\t\"width\",\n \t\t\t\t\t\"height\"\n \t\t\t\t]\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.21.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.2.1\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-image\": {\n \t\ttype: \"string\",\n \t\tdoc: \"Name of image in sprite to use for drawing an image background.\",\n \t\ttokens: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.35.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-rotate\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tperiod: 360,\n \t\tunits: \"degrees\",\n \t\tdoc: \"Rotates the icon clockwise.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.21.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-padding\": {\n \t\ttype: \"number\",\n \t\t\"default\": 2,\n \t\tminimum: 0,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Size of the additional area around the icon bounding box used for detecting symbol collisions.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-keep-upright\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, the icon may be flipped to prevent it from being rendered upside-down.\",\n \t\trequires: [\n \t\t\t\"icon-image\",\n \t\t\t{\n \t\t\t\t\"icon-rotation-alignment\": \"map\"\n \t\t\t},\n \t\t\t{\n \t\t\t\t\"symbol-placement\": [\n \t\t\t\t\t\"line\",\n \t\t\t\t\t\"line-center\"\n \t\t\t\t]\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-offset\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\tdoc: \"Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tcenter: {\n \t\t\t\tdoc: \"The center of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tleft: {\n \t\t\t\tdoc: \"The left side of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tright: {\n \t\t\t\tdoc: \"The right side of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\ttop: {\n \t\t\t\tdoc: \"The top of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tbottom: {\n \t\t\t\tdoc: \"The bottom of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"top-left\": {\n \t\t\t\tdoc: \"The top left corner of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"top-right\": {\n \t\t\t\tdoc: \"The top right corner of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"bottom-left\": {\n \t\t\t\tdoc: \"The bottom left corner of the icon is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"bottom-right\": {\n \t\t\t\tdoc: \"The bottom right corner of the icon is placed closest to the anchor.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"center\",\n \t\tdoc: \"Part of the icon placed closest to the anchor.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.40.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.40.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-pitch-alignment\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The icon is aligned to the plane of the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The icon is aligned to the plane of the viewport.\"\n \t\t\t},\n \t\t\tauto: {\n \t\t\t\tdoc: \"Automatically matches the value of `icon-rotation-alignment`.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"auto\",\n \t\tdoc: \"Orientation of icon when map is pitched.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.39.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-pitch-alignment\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The text is aligned to the plane of the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The text is aligned to the plane of the viewport.\"\n \t\t\t},\n \t\t\tauto: {\n \t\t\t\tdoc: \"Automatically matches the value of `text-rotation-alignment`.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"auto\",\n \t\tdoc: \"Orientation of text when map is pitched.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.21.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.2.1\"\n \t\t\t},\n \t\t\t\"`auto` value\": {\n \t\t\t\tjs: \"0.25.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.3.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-rotation-alignment\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.\"\n \t\t\t},\n \t\t\tauto: {\n \t\t\t\tdoc: \"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"auto\",\n \t\tdoc: \"In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"`auto` value\": {\n \t\t\t\tjs: \"0.25.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.3.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-field\": {\n \t\ttype: \"formatted\",\n \t\t\"default\": \"\",\n \t\ttokens: true,\n \t\tdoc: \"Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-font\": {\n \t\ttype: \"array\",\n \t\tvalue: \"string\",\n \t\t\"default\": [\n \t\t\t\"Open Sans Regular\",\n \t\t\t\"Arial Unicode MS Regular\"\n \t\t],\n \t\tdoc: \"Font stack to use for displaying text.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-size\": {\n \t\ttype: \"number\",\n \t\t\"default\": 16,\n \t\tminimum: 0,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Font size.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.35.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-max-width\": {\n \t\ttype: \"number\",\n \t\t\"default\": 10,\n \t\tminimum: 0,\n \t\tunits: \"ems\",\n \t\tdoc: \"The maximum line width for text wrapping.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.40.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-line-height\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1.2,\n \t\tunits: \"ems\",\n \t\tdoc: \"Text leading value for multi-line text.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-letter-spacing\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tunits: \"ems\",\n \t\tdoc: \"Text tracking amount.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.40.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-justify\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tauto: {\n \t\t\t\tdoc: \"The text is aligned towards the anchor position.\"\n \t\t\t},\n \t\t\tleft: {\n \t\t\t\tdoc: \"The text is aligned to the left.\"\n \t\t\t},\n \t\t\tcenter: {\n \t\t\t\tdoc: \"The text is centered.\"\n \t\t\t},\n \t\t\tright: {\n \t\t\t\tdoc: \"The text is aligned to the right.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"center\",\n \t\tdoc: \"Text justification options.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.39.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t},\n \t\t\tauto: {\n \t\t\t\tjs: \"next\",\n \t\t\t\tandroid: \"Not yet supported\",\n \t\t\t\tios: \"Not yet supported\",\n \t\t\t\tmacos: \"Not yet supported\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-radial-offset\": {\n \t\ttype: \"number\",\n \t\tunits: \"ems\",\n \t\t\"default\": 0,\n \t\tdoc: \"Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which doesn't support the two-dimensional `text-offset`.\",\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"text-offset\"\n \t\t\t}\n \t\t],\n \t\t\"property-type\": \"data-driven\",\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t}\n \t},\n \t\"text-variable-anchor\": {\n \t\ttype: \"array\",\n \t\tvalue: \"enum\",\n \t\tvalues: {\n \t\t\tcenter: {\n \t\t\t\tdoc: \"The center of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tleft: {\n \t\t\t\tdoc: \"The left side of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tright: {\n \t\t\t\tdoc: \"The right side of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\ttop: {\n \t\t\t\tdoc: \"The top of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tbottom: {\n \t\t\t\tdoc: \"The bottom of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"top-left\": {\n \t\t\t\tdoc: \"The top left corner of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"top-right\": {\n \t\t\t\tdoc: \"The top right corner of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"bottom-left\": {\n \t\t\t\tdoc: \"The bottom left corner of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"bottom-right\": {\n \t\t\t\tdoc: \"The bottom right corner of the text is placed closest to the anchor.\"\n \t\t\t}\n \t\t},\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"text-anchor\"\n \t\t\t},\n \t\t\t{\n \t\t\t\t\"!\": \"text-offset\"\n \t\t\t},\n \t\t\t{\n \t\t\t\t\"symbol-placement\": [\n \t\t\t\t\t\"point\"\n \t\t\t\t]\n \t\t\t}\n \t\t],\n \t\tdoc: \"To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the render will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` instead of the two-dimensional `text-offset`.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"next\",\n \t\t\t\tandroid: \"Not yet supported\",\n \t\t\t\tios: \"Not yet supported\",\n \t\t\t\tmacos: \"Not yet supported\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"Not yet supported\",\n \t\t\t\tandroid: \"Not yet supported\",\n \t\t\t\tios: \"Not yet supported\",\n \t\t\t\tmacos: \"Not yet supported\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-anchor\": {\n \t\ttype: \"enum\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\tvalues: {\n \t\t\tcenter: {\n \t\t\t\tdoc: \"The center of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tleft: {\n \t\t\t\tdoc: \"The left side of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tright: {\n \t\t\t\tdoc: \"The right side of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\ttop: {\n \t\t\t\tdoc: \"The top of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\tbottom: {\n \t\t\t\tdoc: \"The bottom of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"top-left\": {\n \t\t\t\tdoc: \"The top left corner of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"top-right\": {\n \t\t\t\tdoc: \"The top right corner of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"bottom-left\": {\n \t\t\t\tdoc: \"The bottom left corner of the text is placed closest to the anchor.\"\n \t\t\t},\n \t\t\t\"bottom-right\": {\n \t\t\t\tdoc: \"The bottom right corner of the text is placed closest to the anchor.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"center\",\n \t\tdoc: \"Part of the text placed closest to the anchor.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.39.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-max-angle\": {\n \t\ttype: \"number\",\n \t\t\"default\": 45,\n \t\tunits: \"degrees\",\n \t\tdoc: \"Maximum angle change between adjacent characters.\",\n \t\trequires: [\n \t\t\t\"text-field\",\n \t\t\t{\n \t\t\t\t\"symbol-placement\": [\n \t\t\t\t\t\"line\",\n \t\t\t\t\t\"line-center\"\n \t\t\t\t]\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-rotate\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tperiod: 360,\n \t\tunits: \"degrees\",\n \t\tdoc: \"Rotates the text clockwise.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.35.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-padding\": {\n \t\ttype: \"number\",\n \t\t\"default\": 2,\n \t\tminimum: 0,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Size of the additional area around the text bounding box used for detecting symbol collisions.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-keep-upright\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": true,\n \t\tdoc: \"If true, the text may be flipped vertically to prevent it from being rendered upside-down.\",\n \t\trequires: [\n \t\t\t\"text-field\",\n \t\t\t{\n \t\t\t\t\"text-rotation-alignment\": \"map\"\n \t\t\t},\n \t\t\t{\n \t\t\t\t\"symbol-placement\": [\n \t\t\t\t\t\"line\",\n \t\t\t\t\t\"line-center\"\n \t\t\t\t]\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-transform\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tnone: {\n \t\t\t\tdoc: \"The text is not altered.\"\n \t\t\t},\n \t\t\tuppercase: {\n \t\t\t\tdoc: \"Forces all letters to be displayed in uppercase.\"\n \t\t\t},\n \t\t\tlowercase: {\n \t\t\t\tdoc: \"Forces all letters to be displayed in lowercase.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"none\",\n \t\tdoc: \"Specifies how to capitalize text, similar to the CSS `text-transform` property.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-offset\": {\n \t\ttype: \"array\",\n \t\tdoc: \"Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up.\",\n \t\tvalue: \"number\",\n \t\tunits: \"ems\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\trequires: [\n \t\t\t\"text-field\",\n \t\t\t{\n \t\t\t\t\"!\": \"text-radial-offset\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.35.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-allow-overlap\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, the text will be visible even if it collides with other previously drawn symbols.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-ignore-placement\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, other symbols can be visible even if they collide with the text.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-optional\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": false,\n \t\tdoc: \"If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.\",\n \t\trequires: [\n \t\t\t\"text-field\",\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_raster = {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var layout_hillshade = {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n };\n var filter = {\n \ttype: \"array\",\n \tvalue: \"*\",\n \tdoc: \"A filter selects specific features from a layer.\"\n };\n var filter_operator = {\n \ttype: \"enum\",\n \tvalues: {\n \t\t\"==\": {\n \t\t\tdoc: \"`[\\\"==\\\", key, value]` equality: `feature[key] = value`\"\n \t\t},\n \t\t\"!=\": {\n \t\t\tdoc: \"`[\\\"!=\\\", key, value]` inequality: `feature[key] ≠ value`\"\n \t\t},\n \t\t\">\": {\n \t\t\tdoc: \"`[\\\">\\\", key, value]` greater than: `feature[key] > value`\"\n \t\t},\n \t\t\">=\": {\n \t\t\tdoc: \"`[\\\">=\\\", key, value]` greater than or equal: `feature[key] ≥ value`\"\n \t\t},\n \t\t\"<\": {\n \t\t\tdoc: \"`[\\\"<\\\", key, value]` less than: `feature[key] < value`\"\n \t\t},\n \t\t\"<=\": {\n \t\t\tdoc: \"`[\\\"<=\\\", key, value]` less than or equal: `feature[key] ≤ value`\"\n \t\t},\n \t\t\"in\": {\n \t\t\tdoc: \"`[\\\"in\\\", key, v0, ..., vn]` set inclusion: `feature[key] ∈ {v0, ..., vn}`\"\n \t\t},\n \t\t\"!in\": {\n \t\t\tdoc: \"`[\\\"!in\\\", key, v0, ..., vn]` set exclusion: `feature[key] ∉ {v0, ..., vn}`\"\n \t\t},\n \t\tall: {\n \t\t\tdoc: \"`[\\\"all\\\", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`\"\n \t\t},\n \t\tany: {\n \t\t\tdoc: \"`[\\\"any\\\", f0, ..., fn]` logical `OR`: `f0 ∨ ... ∨ fn`\"\n \t\t},\n \t\tnone: {\n \t\t\tdoc: \"`[\\\"none\\\", f0, ..., fn]` logical `NOR`: `¬f0 ∧ ... ∧ ¬fn`\"\n \t\t},\n \t\thas: {\n \t\t\tdoc: \"`[\\\"has\\\", key]` `feature[key]` exists\"\n \t\t},\n \t\t\"!has\": {\n \t\t\tdoc: \"`[\\\"!has\\\", key]` `feature[key]` does not exist\"\n \t\t}\n \t},\n \tdoc: \"The filter operator.\"\n };\n var geometry_type = {\n \ttype: \"enum\",\n \tvalues: {\n \t\tPoint: {\n \t\t\tdoc: \"Filter to point geometries.\"\n \t\t},\n \t\tLineString: {\n \t\t\tdoc: \"Filter to line geometries.\"\n \t\t},\n \t\tPolygon: {\n \t\t\tdoc: \"Filter to polygon geometries.\"\n \t\t}\n \t},\n \tdoc: \"The geometry type for the filter to select.\"\n };\n var function_stop = {\n \ttype: \"array\",\n \tminimum: 0,\n \tmaximum: 22,\n \tvalue: [\n \t\t\"number\",\n \t\t\"color\"\n \t],\n \tlength: 2,\n \tdoc: \"Zoom level and value pair.\"\n };\n var expression = {\n \ttype: \"array\",\n \tvalue: \"*\",\n \tminimum: 1,\n \tdoc: \"An expression defines a function that can be used for data-driven style properties or feature filters.\"\n };\n var expression_name = {\n \tdoc: \"\",\n \ttype: \"enum\",\n \tvalues: {\n \t\t\"let\": {\n \t\t\tdoc: \"Binds expressions to named variables, which can then be referenced in the result expression using [\\\"var\\\", \\\"variable_name\\\"].\",\n \t\t\tgroup: \"Variable binding\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"var\": {\n \t\t\tdoc: \"References variable bound using \\\"let\\\".\",\n \t\t\tgroup: \"Variable binding\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tliteral: {\n \t\t\tdoc: \"Provides a literal array or object value.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tarray: {\n \t\t\tdoc: \"Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tat: {\n \t\t\tdoc: \"Retrieves an item from an array.\",\n \t\t\tgroup: \"Lookup\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"case\": {\n \t\t\tdoc: \"Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tmatch: {\n \t\t\tdoc: \"Selects the output whose label value matches the input value, or the fallback value if no match is found. The input can be any expression (e.g. `[\\\"get\\\", \\\"building_type\\\"]`). Each label must be either:\\n * a single literal value; or\\n * an array of literal values, whose values must be all strings or all numbers (e.g. `[100, 101]` or `[\\\"c\\\", \\\"b\\\"]`). The input matches if any of the values in the array matches, similar to the deprecated `\\\"in\\\"` operator.\\n\\nEach label must be unique. If the input type does not match the type of the labels, the result will be the fallback value.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tcoalesce: {\n \t\t\tdoc: \"Evaluates each expression in turn until the first non-null value is obtained, and returns that value.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tstep: {\n \t\t\tdoc: \"Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values (\\\"stops\\\"). The `input` may be any numeric expression (e.g., `[\\\"get\\\", \\\"population\\\"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first input if the input is less than the first stop.\",\n \t\t\tgroup: \"Ramps, scales, curves\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.42.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tinterpolate: {\n \t\t\tdoc: \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). The `input` may be any numeric expression (e.g., `[\\\"get\\\", \\\"population\\\"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array`, or `color`.\\n\\nInterpolation types:\\n- `[\\\"linear\\\"]`: interpolates linearly between the pair of stops just less than and just greater than the input.\\n- `[\\\"exponential\\\", base]`: interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\\n- `[\\\"cubic-bezier\\\", x1, y1, x2, y2]`: interpolates using the cubic bezier curve defined by the given control points.\",\n \t\t\tgroup: \"Ramps, scales, curves\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.42.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"interpolate-hcl\": {\n \t\t\tdoc: \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.\",\n \t\t\tgroup: \"Ramps, scales, curves\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.49.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"interpolate-lab\": {\n \t\t\tdoc: \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.\",\n \t\t\tgroup: \"Ramps, scales, curves\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.49.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tln2: {\n \t\t\tdoc: \"Returns mathematical constant ln(2).\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tpi: {\n \t\t\tdoc: \"Returns the mathematical constant pi.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\te: {\n \t\t\tdoc: \"Returns the mathematical constant e.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"typeof\": {\n \t\t\tdoc: \"Returns a string describing the type of the given value.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tstring: {\n \t\t\tdoc: \"Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tnumber: {\n \t\t\tdoc: \"Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tboolean: {\n \t\t\tdoc: \"Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tobject: {\n \t\t\tdoc: \"Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tcollator: {\n \t\t\tdoc: \"Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tformat: {\n \t\t\tdoc: \"Returns `formatted` text containing annotations for use in mixed-format `text-field` entries. If set, the `text-font` argument overrides the font specified by the root layout properties. If set, the `font-scale` argument specifies a scaling factor relative to the `text-size` specified in the root layout properties.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.48.0\",\n \t\t\t\t\tandroid: \"6.7.0\",\n \t\t\t\t\tios: \"4.6.0\",\n \t\t\t\t\tmacos: \"0.12.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"number-format\": {\n \t\t\tdoc: \"Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.54.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"to-string\": {\n \t\t\tdoc: \"Converts the input value to a string. If the input is `null`, the result is `\\\"\\\"`. If the input is a boolean, the result is `\\\"true\\\"` or `\\\"false\\\"`. If the input is a number, it is converted to a string as specified by the [\\\"NumberToString\\\" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `\\\"rgba(r,g,b,a)\\\"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"to-number\": {\n \t\t\tdoc: \"Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the [\\\"ToNumber Applied to the String Type\\\" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"to-boolean\": {\n \t\t\tdoc: \"Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"to-rgba\": {\n \t\t\tdoc: \"Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.\",\n \t\t\tgroup: \"Color\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"to-color\": {\n \t\t\tdoc: \"Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.\",\n \t\t\tgroup: \"Types\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\trgb: {\n \t\t\tdoc: \"Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.\",\n \t\t\tgroup: \"Color\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\trgba: {\n \t\t\tdoc: \"Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.\",\n \t\t\tgroup: \"Color\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tget: {\n \t\t\tdoc: \"Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.\",\n \t\t\tgroup: \"Lookup\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\thas: {\n \t\t\tdoc: \"Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.\",\n \t\t\tgroup: \"Lookup\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tlength: {\n \t\t\tdoc: \"Gets the length of an array or string.\",\n \t\t\tgroup: \"Lookup\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tproperties: {\n \t\t\tdoc: \"Gets the feature properties object. Note that in some cases, it may be more efficient to use [\\\"get\\\", \\\"property_name\\\"] directly.\",\n \t\t\tgroup: \"Feature data\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"feature-state\": {\n \t\t\tdoc: \"Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Note that [\\\"feature-state\\\"] can only be used with paint properties that support data-driven styling.\",\n \t\t\tgroup: \"Feature data\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.46.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"geometry-type\": {\n \t\t\tdoc: \"Gets the feature's geometry type: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.\",\n \t\t\tgroup: \"Feature data\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tid: {\n \t\t\tdoc: \"Gets the feature's id, if it has one.\",\n \t\t\tgroup: \"Feature data\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tzoom: {\n \t\t\tdoc: \"Gets the current zoom level. Note that in style layout and paint properties, [\\\"zoom\\\"] may only appear as the input to a top-level \\\"step\\\" or \\\"interpolate\\\" expression.\",\n \t\t\tgroup: \"Zoom\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"heatmap-density\": {\n \t\t\tdoc: \"Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.\",\n \t\t\tgroup: \"Heatmap\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"line-progress\": {\n \t\t\tdoc: \"Gets the progress along a gradient line. Can only be used in the `line-gradient` property.\",\n \t\t\tgroup: \"Feature data\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.6.0\",\n \t\t\t\t\tmacos: \"0.12.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\taccumulated: {\n \t\t\tdoc: \"Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.\",\n \t\t\tgroup: \"Feature data\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.53.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"+\": {\n \t\t\tdoc: \"Returns the sum of the inputs.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"*\": {\n \t\t\tdoc: \"Returns the product of the inputs.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"-\": {\n \t\t\tdoc: \"For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"/\": {\n \t\t\tdoc: \"Returns the result of floating point division of the first input by the second.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"%\": {\n \t\t\tdoc: \"Returns the remainder after integer division of the first input by the second.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"^\": {\n \t\t\tdoc: \"Returns the result of raising the first input to the power specified by the second.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tsqrt: {\n \t\t\tdoc: \"Returns the square root of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.42.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tlog10: {\n \t\t\tdoc: \"Returns the base-ten logarithm of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tln: {\n \t\t\tdoc: \"Returns the natural logarithm of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tlog2: {\n \t\t\tdoc: \"Returns the base-two logarithm of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tsin: {\n \t\t\tdoc: \"Returns the sine of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tcos: {\n \t\t\tdoc: \"Returns the cosine of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\ttan: {\n \t\t\tdoc: \"Returns the tangent of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tasin: {\n \t\t\tdoc: \"Returns the arcsine of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tacos: {\n \t\t\tdoc: \"Returns the arccosine of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tatan: {\n \t\t\tdoc: \"Returns the arctangent of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tmin: {\n \t\t\tdoc: \"Returns the minimum value of the inputs.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tmax: {\n \t\t\tdoc: \"Returns the maximum value of the inputs.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tround: {\n \t\t\tdoc: \"Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `[\\\"round\\\", -1.5]` evaluates to -2.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tabs: {\n \t\t\tdoc: \"Returns the absolute value of the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tceil: {\n \t\t\tdoc: \"Returns the smallest integer that is greater than or equal to the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tfloor: {\n \t\t\tdoc: \"Returns the largest integer that is less than or equal to the input.\",\n \t\t\tgroup: \"Math\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"==\": {\n \t\t\tdoc: \"Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t},\n \t\t\t\tcollator: {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"!=\": {\n \t\t\tdoc: \"Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t},\n \t\t\t\tcollator: {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\">\": {\n \t\t\tdoc: \"Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t},\n \t\t\t\tcollator: {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"<\": {\n \t\t\tdoc: \"Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t},\n \t\t\t\tcollator: {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\">=\": {\n \t\t\tdoc: \"Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t},\n \t\t\t\tcollator: {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"<=\": {\n \t\t\tdoc: \"Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t},\n \t\t\t\tcollator: {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tall: {\n \t\t\tdoc: \"Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tany: {\n \t\t\tdoc: \"Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"!\": {\n \t\t\tdoc: \"Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.\",\n \t\t\tgroup: \"Decision\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"is-supported-script\": {\n \t\t\tdoc: \"Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).\",\n \t\t\tgroup: \"String\"\n \t\t},\n \t\tupcase: {\n \t\t\tdoc: \"Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.\",\n \t\t\tgroup: \"String\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tdowncase: {\n \t\t\tdoc: \"Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.\",\n \t\t\tgroup: \"String\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\tconcat: {\n \t\t\tdoc: \"Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.\",\n \t\t\tgroup: \"String\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.41.0\",\n \t\t\t\t\tandroid: \"6.0.0\",\n \t\t\t\t\tios: \"4.0.0\",\n \t\t\t\t\tmacos: \"0.7.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t\"resolved-locale\": {\n \t\t\tdoc: \"Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.\",\n \t\t\tgroup: \"String\",\n \t\t\t\"sdk-support\": {\n \t\t\t\t\"basic functionality\": {\n \t\t\t\t\tjs: \"0.45.0\",\n \t\t\t\t\tandroid: \"6.5.0\",\n \t\t\t\t\tios: \"4.2.0\",\n \t\t\t\t\tmacos: \"0.9.0\"\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t}\n };\n var light = {\n \tanchor: {\n \t\ttype: \"enum\",\n \t\t\"default\": \"viewport\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The position of the light source is aligned to the rotation of the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The position of the light source is aligned to the rotation of the viewport.\"\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"data-constant\",\n \t\ttransition: false,\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\tdoc: \"Whether extruded geometries are lit relative to the map or viewport.\",\n \t\texample: \"map\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t}\n \t},\n \tposition: {\n \t\ttype: \"array\",\n \t\t\"default\": [\n \t\t\t1.15,\n \t\t\t210,\n \t\t\t30\n \t\t],\n \t\tlength: 3,\n \t\tvalue: \"number\",\n \t\t\"property-type\": \"data-constant\",\n \t\ttransition: true,\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\tdoc: \"Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).\",\n \t\texample: [\n \t\t\t1.5,\n \t\t\t90,\n \t\t\t80\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t}\n \t},\n \tcolor: {\n \t\ttype: \"color\",\n \t\t\"property-type\": \"data-constant\",\n \t\t\"default\": \"#ffffff\",\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\ttransition: true,\n \t\tdoc: \"Color tint for lighting extruded geometries.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t}\n \t},\n \tintensity: {\n \t\ttype: \"number\",\n \t\t\"property-type\": \"data-constant\",\n \t\t\"default\": 0.5,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\ttransition: true,\n \t\tdoc: \"Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t}\n \t}\n };\n var paint = [\n \t\"paint_fill\",\n \t\"paint_line\",\n \t\"paint_circle\",\n \t\"paint_heatmap\",\n \t\"paint_fill-extrusion\",\n \t\"paint_symbol\",\n \t\"paint_raster\",\n \t\"paint_hillshade\",\n \t\"paint_background\"\n ];\n var paint_fill = {\n \t\"fill-antialias\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": true,\n \t\tdoc: \"Whether or not the fill should be antialiased.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"fill-opacity\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\tdoc: \"The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.21.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"fill-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"fill-pattern\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.19.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"fill-outline-color\": {\n \t\ttype: \"color\",\n \t\tdoc: \"The outline color of the fill. Matches the value of `fill-color` if unspecified.\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"fill-pattern\"\n \t\t\t},\n \t\t\t{\n \t\t\t\t\"fill-antialias\": true\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.19.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"fill-translate\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"fill-translate-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The fill is translated relative to the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The fill is translated relative to the viewport.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"Controls the frame of reference for `fill-translate`.\",\n \t\t\"default\": \"map\",\n \t\trequires: [\n \t\t\t\"fill-translate\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"fill-pattern\": {\n \t\ttype: \"string\",\n \t\ttransition: true,\n \t\tdoc: \"Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.49.0\",\n \t\t\t\tandroid: \"6.5.0\",\n \t\t\t\tmacos: \"0.11.0\",\n \t\t\t\tios: \"4.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"cross-faded-data-driven\"\n \t}\n };\n var paint_line = {\n \t\"line-opacity\": {\n \t\ttype: \"number\",\n \t\tdoc: \"The opacity at which the line will be drawn.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-color\": {\n \t\ttype: \"color\",\n \t\tdoc: \"The color with which the line will be drawn.\",\n \t\t\"default\": \"#000000\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"line-pattern\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.23.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-translate\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"line-translate-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The line is translated relative to the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The line is translated relative to the viewport.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"Controls the frame of reference for `line-translate`.\",\n \t\t\"default\": \"map\",\n \t\trequires: [\n \t\t\t\"line-translate\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"line-width\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Stroke thickness.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.39.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-gap-width\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\tdoc: \"Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.\",\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-offset\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tdoc: \"The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.\",\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.12.1\",\n \t\t\t\tandroid: \"3.0.0\",\n \t\t\t\tios: \"3.1.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-blur\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Blur applied to the line, in pixels.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"line-dasharray\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tdoc: \"Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"line widths\",\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"line-pattern\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"cross-faded\"\n \t},\n \t\"line-pattern\": {\n \t\ttype: \"string\",\n \t\ttransition: true,\n \t\tdoc: \"Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.49.0\",\n \t\t\t\tandroid: \"6.5.0\",\n \t\t\t\tmacos: \"0.11.0\",\n \t\t\t\tios: \"4.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"cross-faded-data-driven\"\n \t},\n \t\"line-gradient\": {\n \t\ttype: \"color\",\n \t\tdoc: \"Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `\\\"lineMetrics\\\": true`.\",\n \t\ttransition: false,\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"line-dasharray\"\n \t\t\t},\n \t\t\t{\n \t\t\t\t\"!\": \"line-pattern\"\n \t\t\t},\n \t\t\t{\n \t\t\t\tsource: \"geojson\",\n \t\t\t\thas: {\n \t\t\t\t\tlineMetrics: true\n \t\t\t\t}\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.45.0\",\n \t\t\t\tandroid: \"6.5.0\",\n \t\t\t\tios: \"4.4.0\",\n \t\t\t\tmacos: \"0.11.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"line-progress\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"color-ramp\"\n \t}\n };\n var paint_circle = {\n \t\"circle-radius\": {\n \t\ttype: \"number\",\n \t\t\"default\": 5,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Circle radius.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.18.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"circle-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The fill color of the circle.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.18.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"circle-blur\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tdoc: \"Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.20.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"circle-opacity\": {\n \t\ttype: \"number\",\n \t\tdoc: \"The opacity at which the circle will be drawn.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.20.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"circle-translate\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"circle-translate-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The circle is translated relative to the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The circle is translated relative to the viewport.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"Controls the frame of reference for `circle-translate`.\",\n \t\t\"default\": \"map\",\n \t\trequires: [\n \t\t\t\"circle-translate\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"circle-pitch-scale\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"Circles are scaled according to their apparent distance to the camera.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"Circles are not scaled.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"map\",\n \t\tdoc: \"Controls the scaling behavior of the circle when the map is pitched.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.21.0\",\n \t\t\t\tandroid: \"4.2.0\",\n \t\t\t\tios: \"3.4.0\",\n \t\t\t\tmacos: \"0.2.1\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"circle-pitch-alignment\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The circle is aligned to the plane of the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The circle is aligned to the plane of the viewport.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"viewport\",\n \t\tdoc: \"Orientation of circle when map is pitched.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.39.0\",\n \t\t\t\tandroid: \"5.2.0\",\n \t\t\t\tios: \"3.7.0\",\n \t\t\t\tmacos: \"0.6.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"circle-stroke-width\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"circle-stroke-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The stroke color of the circle.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"circle-stroke-opacity\": {\n \t\ttype: \"number\",\n \t\tdoc: \"The opacity of the circle's stroke.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.29.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t}\n };\n var paint_heatmap = {\n \t\"heatmap-radius\": {\n \t\ttype: \"number\",\n \t\t\"default\": 30,\n \t\tminimum: 1,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"heatmap-weight\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\ttransition: false,\n \t\tdoc: \"A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"heatmap-intensity\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tdoc: \"Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"heatmap-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": [\n \t\t\t\"interpolate\",\n \t\t\t[\n \t\t\t\t\"linear\"\n \t\t\t],\n \t\t\t[\n \t\t\t\t\"heatmap-density\"\n \t\t\t],\n \t\t\t0,\n \t\t\t\"rgba(0, 0, 255, 0)\",\n \t\t\t0.1,\n \t\t\t\"royalblue\",\n \t\t\t0.3,\n \t\t\t\"cyan\",\n \t\t\t0.5,\n \t\t\t\"lime\",\n \t\t\t0.7,\n \t\t\t\"yellow\",\n \t\t\t1,\n \t\t\t\"red\"\n \t\t],\n \t\tdoc: \"Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `[\\\"heatmap-density\\\"]` as input.\",\n \t\ttransition: false,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"heatmap-density\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"color-ramp\"\n \t},\n \t\"heatmap-opacity\": {\n \t\ttype: \"number\",\n \t\tdoc: \"The global opacity at which the heatmap layer will be drawn.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.41.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t}\n };\n var paint_symbol = {\n \t\"icon-opacity\": {\n \t\tdoc: \"The opacity at which the icon will be drawn.\",\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\ttransition: true,\n \t\tdoc: \"The color of the icon. This can only be used with sdf icons.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-halo-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"rgba(0, 0, 0, 0)\",\n \t\ttransition: true,\n \t\tdoc: \"The color of the icon's halo. Icon halos can only be used with SDF icons.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-halo-width\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Distance of halo to the icon outline.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-halo-blur\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Fade out the halo towards the outside.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"icon-translate\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.\",\n \t\trequires: [\n \t\t\t\"icon-image\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"icon-translate-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"Icons are translated relative to the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"Icons are translated relative to the viewport.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"Controls the frame of reference for `icon-translate`.\",\n \t\t\"default\": \"map\",\n \t\trequires: [\n \t\t\t\"icon-image\",\n \t\t\t\"icon-translate\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-opacity\": {\n \t\ttype: \"number\",\n \t\tdoc: \"The opacity at which the text will be drawn.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-color\": {\n \t\ttype: \"color\",\n \t\tdoc: \"The color with which the text will be drawn.\",\n \t\t\"default\": \"#000000\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-halo-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"rgba(0, 0, 0, 0)\",\n \t\ttransition: true,\n \t\tdoc: \"The color of the text's halo, which helps it stand out from backgrounds.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-halo-width\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-halo-blur\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The halo's fadeout distance towards the outside.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.33.0\",\n \t\t\t\tandroid: \"5.0.0\",\n \t\t\t\tios: \"3.5.0\",\n \t\t\t\tmacos: \"0.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"text-translate\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.\",\n \t\trequires: [\n \t\t\t\"text-field\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"text-translate-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The text is translated relative to the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The text is translated relative to the viewport.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"Controls the frame of reference for `text-translate`.\",\n \t\t\"default\": \"map\",\n \t\trequires: [\n \t\t\t\"text-field\",\n \t\t\t\"text-translate\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t}\n };\n var paint_raster = {\n \t\"raster-opacity\": {\n \t\ttype: \"number\",\n \t\tdoc: \"The opacity at which the image will be drawn.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-hue-rotate\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tperiod: 360,\n \t\ttransition: true,\n \t\tunits: \"degrees\",\n \t\tdoc: \"Rotates hues around the color wheel.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-brightness-min\": {\n \t\ttype: \"number\",\n \t\tdoc: \"Increase or reduce the brightness of the image. The value is the minimum brightness.\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-brightness-max\": {\n \t\ttype: \"number\",\n \t\tdoc: \"Increase or reduce the brightness of the image. The value is the maximum brightness.\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-saturation\": {\n \t\ttype: \"number\",\n \t\tdoc: \"Increase or reduce the saturation of the image.\",\n \t\t\"default\": 0,\n \t\tminimum: -1,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-contrast\": {\n \t\ttype: \"number\",\n \t\tdoc: \"Increase or reduce the contrast of the image.\",\n \t\t\"default\": 0,\n \t\tminimum: -1,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-resampling\": {\n \t\ttype: \"enum\",\n \t\tdoc: \"The resampling/interpolation method to use for overscaling, also known as texture magnification filter\",\n \t\tvalues: {\n \t\t\tlinear: {\n \t\t\t\tdoc: \"(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled\"\n \t\t\t},\n \t\t\tnearest: {\n \t\t\t\tdoc: \"Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"linear\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.47.0\",\n \t\t\t\tandroid: \"6.3.0\",\n \t\t\t\tios: \"4.2.0\",\n \t\t\t\tmacos: \"0.9.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"raster-fade-duration\": {\n \t\ttype: \"number\",\n \t\t\"default\": 300,\n \t\tminimum: 0,\n \t\ttransition: false,\n \t\tunits: \"milliseconds\",\n \t\tdoc: \"Fade duration when a new tile is added.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t}\n };\n var paint_hillshade = {\n \t\"hillshade-illumination-direction\": {\n \t\ttype: \"number\",\n \t\t\"default\": 335,\n \t\tminimum: 0,\n \t\tmaximum: 359,\n \t\tdoc: \"The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.\",\n \t\ttransition: false,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"hillshade-illumination-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The hillshade illumination is relative to the north direction.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The hillshade illumination is relative to the top of the viewport.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"viewport\",\n \t\tdoc: \"Direction of light source when map is rotated.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"hillshade-exaggeration\": {\n \t\ttype: \"number\",\n \t\tdoc: \"Intensity of the hillshade\",\n \t\t\"default\": 0.5,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"hillshade-shadow-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The shading color of areas that face away from the light source.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"hillshade-highlight-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#FFFFFF\",\n \t\tdoc: \"The shading color of areas that faces towards the light source.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"hillshade-accent-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The shading color used to accentuate rugged terrain like sharp cliffs and gorges.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.43.0\",\n \t\t\t\tandroid: \"6.0.0\",\n \t\t\t\tios: \"4.0.0\",\n \t\t\t\tmacos: \"0.7.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t}\n };\n var paint_background = {\n \t\"background-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The color with which the background will be drawn.\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"background-pattern\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"background-pattern\": {\n \t\ttype: \"string\",\n \t\ttransition: true,\n \t\tdoc: \"Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"cross-faded\"\n \t},\n \t\"background-opacity\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\tdoc: \"The opacity at which the background will be drawn.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.10.0\",\n \t\t\t\tandroid: \"2.0.1\",\n \t\t\t\tios: \"2.0.0\",\n \t\t\t\tmacos: \"0.1.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t}\n };\n var transition = {\n \tduration: {\n \t\ttype: \"number\",\n \t\t\"default\": 300,\n \t\tminimum: 0,\n \t\tunits: \"milliseconds\",\n \t\tdoc: \"Time allotted for transitions to complete.\"\n \t},\n \tdelay: {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\tunits: \"milliseconds\",\n \t\tdoc: \"Length of time before a transition begins.\"\n \t}\n };\n var v8 = {\n \t$version: $version,\n \t$root: $root,\n \tsources: sources,\n \tsource: source,\n \tsource_vector: source_vector,\n \tsource_raster: source_raster,\n \tsource_raster_dem: source_raster_dem,\n \tsource_geojson: source_geojson,\n \tsource_video: source_video,\n \tsource_image: source_image,\n \tlayer: layer,\n \tlayout: layout,\n \tlayout_background: layout_background,\n \tlayout_fill: layout_fill,\n \tlayout_circle: layout_circle,\n \tlayout_heatmap: layout_heatmap,\n \t\"layout_fill-extrusion\": {\n \tvisibility: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tvisible: {\n \t\t\t\tdoc: \"The layer is shown.\"\n \t\t\t},\n \t\t\tnone: {\n \t\t\t\tdoc: \"The layer is not shown.\"\n \t\t\t}\n \t\t},\n \t\t\"default\": \"visible\",\n \t\tdoc: \"Whether this layer is displayed.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\t\"property-type\": \"constant\"\n \t}\n },\n \tlayout_line: layout_line,\n \tlayout_symbol: layout_symbol,\n \tlayout_raster: layout_raster,\n \tlayout_hillshade: layout_hillshade,\n \tfilter: filter,\n \tfilter_operator: filter_operator,\n \tgeometry_type: geometry_type,\n \t\"function\": {\n \texpression: {\n \t\ttype: \"expression\",\n \t\tdoc: \"An expression.\"\n \t},\n \tstops: {\n \t\ttype: \"array\",\n \t\tdoc: \"An array of stops.\",\n \t\tvalue: \"function_stop\"\n \t},\n \tbase: {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tdoc: \"The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly.\"\n \t},\n \tproperty: {\n \t\ttype: \"string\",\n \t\tdoc: \"The name of a feature property to use as the function input.\",\n \t\t\"default\": \"$zoom\"\n \t},\n \ttype: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tidentity: {\n \t\t\t\tdoc: \"Return the input value as the output value.\"\n \t\t\t},\n \t\t\texponential: {\n \t\t\t\tdoc: \"Generate an output by interpolating between stops just less than and just greater than the function input.\"\n \t\t\t},\n \t\t\tinterval: {\n \t\t\t\tdoc: \"Return the output value of the stop just less than the function input.\"\n \t\t\t},\n \t\t\tcategorical: {\n \t\t\t\tdoc: \"Return the output value of the stop equal to the function input.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The interpolation strategy to use in function evaluation.\",\n \t\t\"default\": \"exponential\"\n \t},\n \tcolorSpace: {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\trgb: {\n \t\t\t\tdoc: \"Use the RGB color space to interpolate color values\"\n \t\t\t},\n \t\t\tlab: {\n \t\t\t\tdoc: \"Use the LAB color space to interpolate color values.\"\n \t\t\t},\n \t\t\thcl: {\n \t\t\t\tdoc: \"Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.\",\n \t\t\"default\": \"rgb\"\n \t},\n \t\"default\": {\n \t\ttype: \"*\",\n \t\trequired: false,\n \t\tdoc: \"A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\\n* In categorical functions, when the feature value does not match any of the stop domain values.\\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\\nIf no default is provided, the style property's default is used in these circumstances.\"\n \t}\n },\n \tfunction_stop: function_stop,\n \texpression: expression,\n \texpression_name: expression_name,\n \tlight: light,\n \tpaint: paint,\n \tpaint_fill: paint_fill,\n \t\"paint_fill-extrusion\": {\n \t\"fill-extrusion-opacity\": {\n \t\ttype: \"number\",\n \t\t\"default\": 1,\n \t\tminimum: 0,\n \t\tmaximum: 1,\n \t\tdoc: \"The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"fill-extrusion-color\": {\n \t\ttype: \"color\",\n \t\t\"default\": \"#000000\",\n \t\tdoc: \"The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t{\n \t\t\t\t\"!\": \"fill-extrusion-pattern\"\n \t\t\t}\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"fill-extrusion-translate\": {\n \t\ttype: \"array\",\n \t\tvalue: \"number\",\n \t\tlength: 2,\n \t\t\"default\": [\n \t\t\t0,\n \t\t\t0\n \t\t],\n \t\ttransition: true,\n \t\tunits: \"pixels\",\n \t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"fill-extrusion-translate-anchor\": {\n \t\ttype: \"enum\",\n \t\tvalues: {\n \t\t\tmap: {\n \t\t\t\tdoc: \"The fill extrusion is translated relative to the map.\"\n \t\t\t},\n \t\t\tviewport: {\n \t\t\t\tdoc: \"The fill extrusion is translated relative to the viewport.\"\n \t\t\t}\n \t\t},\n \t\tdoc: \"Controls the frame of reference for `fill-extrusion-translate`.\",\n \t\t\"default\": \"map\",\n \t\trequires: [\n \t\t\t\"fill-extrusion-translate\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t},\n \t\"fill-extrusion-pattern\": {\n \t\ttype: \"string\",\n \t\ttransition: true,\n \t\tdoc: \"Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.49.0\",\n \t\t\t\tandroid: \"6.5.0\",\n \t\t\t\tmacos: \"0.11.0\",\n \t\t\t\tios: \"4.4.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"cross-faded-data-driven\"\n \t},\n \t\"fill-extrusion-height\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\tunits: \"meters\",\n \t\tdoc: \"The height with which to extrude this layer.\",\n \t\ttransition: true,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"fill-extrusion-base\": {\n \t\ttype: \"number\",\n \t\t\"default\": 0,\n \t\tminimum: 0,\n \t\tunits: \"meters\",\n \t\tdoc: \"The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.\",\n \t\ttransition: true,\n \t\trequires: [\n \t\t\t\"fill-extrusion-height\"\n \t\t],\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t},\n \t\t\t\"data-driven styling\": {\n \t\t\t\tjs: \"0.27.0\",\n \t\t\t\tandroid: \"5.1.0\",\n \t\t\t\tios: \"3.6.0\",\n \t\t\t\tmacos: \"0.5.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: true,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\",\n \t\t\t\t\"feature\",\n \t\t\t\t\"feature-state\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-driven\"\n \t},\n \t\"fill-extrusion-vertical-gradient\": {\n \t\ttype: \"boolean\",\n \t\t\"default\": true,\n \t\tdoc: \"Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.\",\n \t\ttransition: false,\n \t\t\"sdk-support\": {\n \t\t\t\"basic functionality\": {\n \t\t\t\tjs: \"0.50.0\",\n \t\t\t\tios: \"4.7.0\",\n \t\t\t\tmacos: \"0.13.0\"\n \t\t\t}\n \t\t},\n \t\texpression: {\n \t\t\tinterpolated: false,\n \t\t\tparameters: [\n \t\t\t\t\"zoom\"\n \t\t\t]\n \t\t},\n \t\t\"property-type\": \"data-constant\"\n \t}\n },\n \tpaint_line: paint_line,\n \tpaint_circle: paint_circle,\n \tpaint_heatmap: paint_heatmap,\n \tpaint_symbol: paint_symbol,\n \tpaint_raster: paint_raster,\n \tpaint_hillshade: paint_hillshade,\n \tpaint_background: paint_background,\n \ttransition: transition,\n \t\"property-type\": {\n \t\"data-driven\": {\n \t\ttype: \"property-type\",\n \t\tdoc: \"Property is interpolable and can be represented using a property expression.\"\n \t},\n \t\"cross-faded\": {\n \t\ttype: \"property-type\",\n \t\tdoc: \"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms.\"\n \t},\n \t\"cross-faded-data-driven\": {\n \t\ttype: \"property-type\",\n \t\tdoc: \"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression.\"\n \t},\n \t\"color-ramp\": {\n \t\ttype: \"property-type\",\n \t\tdoc: \"Property should be specified using a color ramp from which the output color can be sampled based on a property calculation.\"\n \t},\n \t\"data-constant\": {\n \t\ttype: \"property-type\",\n \t\tdoc: \"Property is interpolable but cannot be represented using a property expression.\"\n \t},\n \tconstant: {\n \t\ttype: \"property-type\",\n \t\tdoc: \"Property is constant across all zoom levels and property values.\"\n \t}\n }\n };\n\n // Note: This regex matches even invalid JSON strings, but since we’re\n // working on the output of `JSON.stringify` we know that only valid strings\n // are present (unless the user supplied a weird `options.indent` but in\n // that case we don’t care since the output would be invalid anyway).\n var stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\n var jsonStringifyPrettyCompact = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function(match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n };\n\n function sortKeysBy(obj, reference) {\n var result = {};\n for (var key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (var key$1 in obj) {\n if (result[key$1] === undefined) {\n result[key$1] = obj[key$1];\n }\n }\n return result;\n }\n function format(style, space) {\n if (space === void 0)\n space = 2;\n style = sortKeysBy(style, v8.$root);\n if (style.layers) {\n style.layers = style.layers.map(function (layer) {\n return sortKeysBy(layer, v8.layer);\n });\n }\n return jsonStringifyPrettyCompact(style, { indent: space });\n }\n\n var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n function commonjsRequire () {\n \tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var punycode = createCommonjsModule(function (module, exports) {\n (function(root) {\n\n \t/** Detect free variables */\n \tvar freeExports = exports &&\n \t\t!exports.nodeType && exports;\n \tvar freeModule = module &&\n \t\t!module.nodeType && module;\n \tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;\n \tif (\n \t\tfreeGlobal.global === freeGlobal ||\n \t\tfreeGlobal.window === freeGlobal ||\n \t\tfreeGlobal.self === freeGlobal\n \t) {\n \t\troot = freeGlobal;\n \t}\n\n \t/**\n \t * The `punycode` object.\n \t * @name punycode\n \t * @type Object\n \t */\n \tvar punycode,\n\n \t/** Highest positive signed 32-bit float value */\n \tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n \t/** Bootstring parameters */\n \tbase = 36,\n \ttMin = 1,\n \ttMax = 26,\n \tskew = 38,\n \tdamp = 700,\n \tinitialBias = 72,\n \tinitialN = 128, // 0x80\n \tdelimiter = '-', // '\\x2D'\n\n \t/** Regular expressions */\n \tregexPunycode = /^xn--/,\n \tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n \tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n \t/** Error messages */\n \terrors = {\n \t\t'overflow': 'Overflow: input needs wider integers to process',\n \t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n \t\t'invalid-input': 'Invalid input'\n \t},\n\n \t/** Convenience shortcuts */\n \tbaseMinusTMin = base - tMin,\n \tfloor = Math.floor,\n \tstringFromCharCode = String.fromCharCode,\n\n \t/** Temporary variable */\n \tkey;\n\n \t/*--------------------------------------------------------------------------*/\n\n \t/**\n \t * A generic error utility function.\n \t * @private\n \t * @param {String} type The error type.\n \t * @returns {Error} Throws a `RangeError` with the applicable error message.\n \t */\n \tfunction error(type) {\n \t\tthrow RangeError(errors[type]);\n \t}\n\n \t/**\n \t * A generic `Array#map` utility function.\n \t * @private\n \t * @param {Array} array The array to iterate over.\n \t * @param {Function} callback The function that gets called for every array\n \t * item.\n \t * @returns {Array} A new array of values returned by the callback function.\n \t */\n \tfunction map(array, fn) {\n \t\tvar length = array.length;\n \t\tvar result = [];\n \t\twhile (length--) {\n \t\t\tresult[length] = fn(array[length]);\n \t\t}\n \t\treturn result;\n \t}\n\n \t/**\n \t * A simple `Array#map`-like wrapper to work with domain name strings or email\n \t * addresses.\n \t * @private\n \t * @param {String} domain The domain name or email address.\n \t * @param {Function} callback The function that gets called for every\n \t * character.\n \t * @returns {Array} A new string of characters returned by the callback\n \t * function.\n \t */\n \tfunction mapDomain(string, fn) {\n \t\tvar parts = string.split('@');\n \t\tvar result = '';\n \t\tif (parts.length > 1) {\n \t\t\t// In email addresses, only the domain name should be punycoded. Leave\n \t\t\t// the local part (i.e. everything up to `@`) intact.\n \t\t\tresult = parts[0] + '@';\n \t\t\tstring = parts[1];\n \t\t}\n \t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n \t\tstring = string.replace(regexSeparators, '\\x2E');\n \t\tvar labels = string.split('.');\n \t\tvar encoded = map(labels, fn).join('.');\n \t\treturn result + encoded;\n \t}\n\n \t/**\n \t * Creates an array containing the numeric code points of each Unicode\n \t * character in the string. While JavaScript uses UCS-2 internally,\n \t * this function will convert a pair of surrogate halves (each of which\n \t * UCS-2 exposes as separate characters) into a single code point,\n \t * matching UTF-16.\n \t * @see `punycode.ucs2.encode`\n \t * @see \n \t * @memberOf punycode.ucs2\n \t * @name decode\n \t * @param {String} string The Unicode input string (UCS-2).\n \t * @returns {Array} The new array of code points.\n \t */\n \tfunction ucs2decode(string) {\n \t\tvar output = [],\n \t\t counter = 0,\n \t\t length = string.length,\n \t\t value,\n \t\t extra;\n \t\twhile (counter < length) {\n \t\t\tvalue = string.charCodeAt(counter++);\n \t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n \t\t\t\t// high surrogate, and there is a next character\n \t\t\t\textra = string.charCodeAt(counter++);\n \t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n \t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n \t\t\t\t} else {\n \t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n \t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n \t\t\t\t\toutput.push(value);\n \t\t\t\t\tcounter--;\n \t\t\t\t}\n \t\t\t} else {\n \t\t\t\toutput.push(value);\n \t\t\t}\n \t\t}\n \t\treturn output;\n \t}\n\n \t/**\n \t * Creates a string based on an array of numeric code points.\n \t * @see `punycode.ucs2.decode`\n \t * @memberOf punycode.ucs2\n \t * @name encode\n \t * @param {Array} codePoints The array of numeric code points.\n \t * @returns {String} The new Unicode string (UCS-2).\n \t */\n \tfunction ucs2encode(array) {\n \t\treturn map(array, function(value) {\n \t\t\tvar output = '';\n \t\t\tif (value > 0xFFFF) {\n \t\t\t\tvalue -= 0x10000;\n \t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n \t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n \t\t\t}\n \t\t\toutput += stringFromCharCode(value);\n \t\t\treturn output;\n \t\t}).join('');\n \t}\n\n \t/**\n \t * Converts a basic code point into a digit/integer.\n \t * @see `digitToBasic()`\n \t * @private\n \t * @param {Number} codePoint The basic numeric code point value.\n \t * @returns {Number} The numeric value of a basic code point (for use in\n \t * representing integers) in the range `0` to `base - 1`, or `base` if\n \t * the code point does not represent a value.\n \t */\n \tfunction basicToDigit(codePoint) {\n \t\tif (codePoint - 48 < 10) {\n \t\t\treturn codePoint - 22;\n \t\t}\n \t\tif (codePoint - 65 < 26) {\n \t\t\treturn codePoint - 65;\n \t\t}\n \t\tif (codePoint - 97 < 26) {\n \t\t\treturn codePoint - 97;\n \t\t}\n \t\treturn base;\n \t}\n\n \t/**\n \t * Converts a digit/integer into a basic code point.\n \t * @see `basicToDigit()`\n \t * @private\n \t * @param {Number} digit The numeric value of a basic code point.\n \t * @returns {Number} The basic code point whose value (when used for\n \t * representing integers) is `digit`, which needs to be in the range\n \t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n \t * used; else, the lowercase form is used. The behavior is undefined\n \t * if `flag` is non-zero and `digit` has no uppercase form.\n \t */\n \tfunction digitToBasic(digit, flag) {\n \t\t// 0..25 map to ASCII a..z or A..Z\n \t\t// 26..35 map to ASCII 0..9\n \t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n \t}\n\n \t/**\n \t * Bias adaptation function as per section 3.4 of RFC 3492.\n \t * http://tools.ietf.org/html/rfc3492#section-3.4\n \t * @private\n \t */\n \tfunction adapt(delta, numPoints, firstTime) {\n \t\tvar k = 0;\n \t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n \t\tdelta += floor(delta / numPoints);\n \t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n \t\t\tdelta = floor(delta / baseMinusTMin);\n \t\t}\n \t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n \t}\n\n \t/**\n \t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n \t * symbols.\n \t * @memberOf punycode\n \t * @param {String} input The Punycode string of ASCII-only symbols.\n \t * @returns {String} The resulting string of Unicode symbols.\n \t */\n \tfunction decode(input) {\n \t\t// Don't use UCS-2\n \t\tvar output = [],\n \t\t inputLength = input.length,\n \t\t out,\n \t\t i = 0,\n \t\t n = initialN,\n \t\t bias = initialBias,\n \t\t basic,\n \t\t j,\n \t\t index,\n \t\t oldi,\n \t\t w,\n \t\t k,\n \t\t digit,\n \t\t t,\n \t\t /** Cached calculation results */\n \t\t baseMinusT;\n\n \t\t// Handle the basic code points: let `basic` be the number of input code\n \t\t// points before the last delimiter, or `0` if there is none, then copy\n \t\t// the first basic code points to the output.\n\n \t\tbasic = input.lastIndexOf(delimiter);\n \t\tif (basic < 0) {\n \t\t\tbasic = 0;\n \t\t}\n\n \t\tfor (j = 0; j < basic; ++j) {\n \t\t\t// if it's not a basic code point\n \t\t\tif (input.charCodeAt(j) >= 0x80) {\n \t\t\t\terror('not-basic');\n \t\t\t}\n \t\t\toutput.push(input.charCodeAt(j));\n \t\t}\n\n \t\t// Main decoding loop: start just after the last delimiter if any basic code\n \t\t// points were copied; start at the beginning otherwise.\n\n \t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n \t\t\t// `index` is the index of the next character to be consumed.\n \t\t\t// Decode a generalized variable-length integer into `delta`,\n \t\t\t// which gets added to `i`. The overflow checking is easier\n \t\t\t// if we increase `i` as we go, then subtract off its starting\n \t\t\t// value at the end to obtain `delta`.\n \t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n \t\t\t\tif (index >= inputLength) {\n \t\t\t\t\terror('invalid-input');\n \t\t\t\t}\n\n \t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n \t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n \t\t\t\t\terror('overflow');\n \t\t\t\t}\n\n \t\t\t\ti += digit * w;\n \t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n \t\t\t\tif (digit < t) {\n \t\t\t\t\tbreak;\n \t\t\t\t}\n\n \t\t\t\tbaseMinusT = base - t;\n \t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n \t\t\t\t\terror('overflow');\n \t\t\t\t}\n\n \t\t\t\tw *= baseMinusT;\n\n \t\t\t}\n\n \t\t\tout = output.length + 1;\n \t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n \t\t\t// `i` was supposed to wrap around from `out` to `0`,\n \t\t\t// incrementing `n` each time, so we'll fix that now:\n \t\t\tif (floor(i / out) > maxInt - n) {\n \t\t\t\terror('overflow');\n \t\t\t}\n\n \t\t\tn += floor(i / out);\n \t\t\ti %= out;\n\n \t\t\t// Insert `n` at position `i` of the output\n \t\t\toutput.splice(i++, 0, n);\n\n \t\t}\n\n \t\treturn ucs2encode(output);\n \t}\n\n \t/**\n \t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n \t * Punycode string of ASCII-only symbols.\n \t * @memberOf punycode\n \t * @param {String} input The string of Unicode symbols.\n \t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n \t */\n \tfunction encode(input) {\n \t\tvar n,\n \t\t delta,\n \t\t handledCPCount,\n \t\t basicLength,\n \t\t bias,\n \t\t j,\n \t\t m,\n \t\t q,\n \t\t k,\n \t\t t,\n \t\t currentValue,\n \t\t output = [],\n \t\t /** `inputLength` will hold the number of code points in `input`. */\n \t\t inputLength,\n \t\t /** Cached calculation results */\n \t\t handledCPCountPlusOne,\n \t\t baseMinusT,\n \t\t qMinusT;\n\n \t\t// Convert the input in UCS-2 to Unicode\n \t\tinput = ucs2decode(input);\n\n \t\t// Cache the length\n \t\tinputLength = input.length;\n\n \t\t// Initialize the state\n \t\tn = initialN;\n \t\tdelta = 0;\n \t\tbias = initialBias;\n\n \t\t// Handle the basic code points\n \t\tfor (j = 0; j < inputLength; ++j) {\n \t\t\tcurrentValue = input[j];\n \t\t\tif (currentValue < 0x80) {\n \t\t\t\toutput.push(stringFromCharCode(currentValue));\n \t\t\t}\n \t\t}\n\n \t\thandledCPCount = basicLength = output.length;\n\n \t\t// `handledCPCount` is the number of code points that have been handled;\n \t\t// `basicLength` is the number of basic code points.\n\n \t\t// Finish the basic string - if it is not empty - with a delimiter\n \t\tif (basicLength) {\n \t\t\toutput.push(delimiter);\n \t\t}\n\n \t\t// Main encoding loop:\n \t\twhile (handledCPCount < inputLength) {\n\n \t\t\t// All non-basic code points < n have been handled already. Find the next\n \t\t\t// larger one:\n \t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n \t\t\t\tcurrentValue = input[j];\n \t\t\t\tif (currentValue >= n && currentValue < m) {\n \t\t\t\t\tm = currentValue;\n \t\t\t\t}\n \t\t\t}\n\n \t\t\t// Increase `delta` enough to advance the decoder's state to ,\n \t\t\t// but guard against overflow\n \t\t\thandledCPCountPlusOne = handledCPCount + 1;\n \t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n \t\t\t\terror('overflow');\n \t\t\t}\n\n \t\t\tdelta += (m - n) * handledCPCountPlusOne;\n \t\t\tn = m;\n\n \t\t\tfor (j = 0; j < inputLength; ++j) {\n \t\t\t\tcurrentValue = input[j];\n\n \t\t\t\tif (currentValue < n && ++delta > maxInt) {\n \t\t\t\t\terror('overflow');\n \t\t\t\t}\n\n \t\t\t\tif (currentValue == n) {\n \t\t\t\t\t// Represent delta as a generalized variable-length integer\n \t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n \t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n \t\t\t\t\t\tif (q < t) {\n \t\t\t\t\t\t\tbreak;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tqMinusT = q - t;\n \t\t\t\t\t\tbaseMinusT = base - t;\n \t\t\t\t\t\toutput.push(\n \t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n \t\t\t\t\t\t);\n \t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n \t\t\t\t\t}\n\n \t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n \t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n \t\t\t\t\tdelta = 0;\n \t\t\t\t\t++handledCPCount;\n \t\t\t\t}\n \t\t\t}\n\n \t\t\t++delta;\n \t\t\t++n;\n\n \t\t}\n \t\treturn output.join('');\n \t}\n\n \t/**\n \t * Converts a Punycode string representing a domain name or an email address\n \t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n \t * it doesn't matter if you call it on a string that has already been\n \t * converted to Unicode.\n \t * @memberOf punycode\n \t * @param {String} input The Punycoded domain name or email address to\n \t * convert to Unicode.\n \t * @returns {String} The Unicode representation of the given Punycode\n \t * string.\n \t */\n \tfunction toUnicode(input) {\n \t\treturn mapDomain(input, function(string) {\n \t\t\treturn regexPunycode.test(string)\n \t\t\t\t? decode(string.slice(4).toLowerCase())\n \t\t\t\t: string;\n \t\t});\n \t}\n\n \t/**\n \t * Converts a Unicode string representing a domain name or an email address to\n \t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n \t * i.e. it doesn't matter if you call it with a domain that's already in\n \t * ASCII.\n \t * @memberOf punycode\n \t * @param {String} input The domain name or email address to convert, as a\n \t * Unicode string.\n \t * @returns {String} The Punycode representation of the given domain name or\n \t * email address.\n \t */\n \tfunction toASCII(input) {\n \t\treturn mapDomain(input, function(string) {\n \t\t\treturn regexNonASCII.test(string)\n \t\t\t\t? 'xn--' + encode(string)\n \t\t\t\t: string;\n \t\t});\n \t}\n\n \t/*--------------------------------------------------------------------------*/\n\n \t/** Define the public API */\n \tpunycode = {\n \t\t/**\n \t\t * A string representing the current Punycode.js version number.\n \t\t * @memberOf punycode\n \t\t * @type String\n \t\t */\n \t\t'version': '1.3.2',\n \t\t/**\n \t\t * An object of methods to convert from JavaScript's internal character\n \t\t * representation (UCS-2) to Unicode code points, and back.\n \t\t * @see \n \t\t * @memberOf punycode\n \t\t * @type Object\n \t\t */\n \t\t'ucs2': {\n \t\t\t'decode': ucs2decode,\n \t\t\t'encode': ucs2encode\n \t\t},\n \t\t'decode': decode,\n \t\t'encode': encode,\n \t\t'toASCII': toASCII,\n \t\t'toUnicode': toUnicode\n \t};\n\n \t/** Expose `punycode` */\n \t// Some AMD build optimizers, like r.js, check for specific condition patterns\n \t// like the following:\n \tif (freeExports && freeModule) {\n \t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n \t\t\tfreeModule.exports = punycode;\n \t\t} else { // in Narwhal or RingoJS v0.7.0-\n \t\t\tfor (key in punycode) {\n \t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n \t\t\t}\n \t\t}\n \t} else { // in Rhino or a web browser\n \t\troot.punycode = punycode;\n \t}\n\n }(commonjsGlobal));\n });\n\n var util = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n };\n\n // Copyright Joyent, Inc. and other Node contributors.\n\n // If obj.hasOwnProperty has been overridden, then calling\n // obj.hasOwnProperty(prop) will break.\n // See: https://github.com/joyent/node/issues/1707\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n var decode = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n };\n\n // Copyright Joyent, Inc. and other Node contributors.\n\n var stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n };\n\n var encode = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) { return ''; }\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n };\n\n var querystring = createCommonjsModule(function (module, exports) {\n\n exports.decode = exports.parse = decode;\n exports.encode = exports.stringify = encode;\n });\n var querystring_1 = querystring.decode;\n var querystring_2 = querystring.parse;\n var querystring_3 = querystring.encode;\n var querystring_4 = querystring.stringify;\n\n var parse = urlParse;\n var resolve = urlResolve;\n var resolveObject = urlResolveObject;\n var format$1 = urlFormat;\n\n var Url_1 = Url;\n\n function Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n }\n\n // Reference: RFC 3986, RFC 1808, RFC 2396\n\n // define these here so at least they only have to be\n // compiled once on the first module load.\n var protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n\n function urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) { return url; }\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n }\n\n Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n { hostEnd = hec; }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n };\n\n // format a parsed object into a url string\n function urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n }\n\n Url.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n };\n\n function urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n }\n\n Url.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n };\n\n function urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n }\n\n Url.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n { result[rkey] = relative[rkey]; }\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())){ }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; }\n else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; }\n else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n };\n\n Url.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n };\n\n var url = {\n \tparse: parse,\n \tresolve: resolve,\n \tresolveObject: resolveObject,\n \tformat: format$1,\n \tUrl: Url_1\n };\n\n function getPropertyReference(propertyName) {\n for (var i = 0; i < v8.layout.length; i++) {\n for (var key in v8[v8.layout[i]]) {\n if (key === propertyName) {\n return v8[v8.layout[i]][key];\n }\n }\n }\n for (var i$1 = 0; i$1 < v8.paint.length; i$1++) {\n for (var key$1 in v8[v8.paint[i$1]]) {\n if (key$1 === propertyName) {\n return v8[v8.paint[i$1]][key$1];\n }\n }\n }\n return null;\n }\n function eachSource(style, callback) {\n for (var k in style.sources) {\n callback(style.sources[k]);\n }\n }\n function eachLayer(style, callback) {\n for (var i = 0, list = style.layers; i < list.length; i += 1) {\n var layer = list[i];\n callback(layer);\n }\n }\n function eachProperty(style, options, callback) {\n function inner(layer, propertyType) {\n var properties = layer[propertyType];\n if (!properties) {\n return;\n }\n Object.keys(properties).forEach(function (key) {\n callback({\n path: [\n layer.id,\n propertyType,\n key\n ],\n key: key,\n value: properties[key],\n reference: getPropertyReference(key),\n set: function set(x) {\n properties[key] = x;\n }\n });\n });\n }\n eachLayer(style, function (layer) {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n }\n\n function eachLayout(layer, callback) {\n for (var k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n }\n function eachPaint(layer, callback) {\n for (var k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n }\n function resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n } else {\n return value;\n }\n }\n function isFunction(value) {\n return Array.isArray(value.stops);\n }\n function renameProperty(obj, from, to) {\n obj[to] = obj[from];\n delete obj[from];\n }\n function migrateToV8 (style) {\n style.version = 8;\n eachSource(style, function (source) {\n if (source.type === 'video' && source.url !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach(function (coord) {\n return coord.reverse();\n });\n }\n });\n eachLayer(style, function (layer) {\n eachLayout(layer, function (layout) {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n eachPaint(layer, function (paint) {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n eachProperty(style, {\n paint: true,\n layout: true\n }, function (property) {\n var value = resolveConstant(style, property.value);\n if (isFunction(value)) {\n value.stops.forEach(function (stop) {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n property.set(value);\n });\n delete style.constants;\n eachLayer(style, function (layer) {\n eachLayout(layer, function (layout) {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n eachPaint(layer, function (paint) {\n if (paint['text-size']) {\n if (!layer.layout) {\n layer.layout = {};\n }\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n if (paint['icon-size']) {\n if (!layer.layout) {\n layer.layout = {};\n }\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n function migrateFontstackURL(input) {\n var inputParsed = url.parse(input);\n var inputPathnameParts = inputParsed.pathname.split('/');\n if (inputParsed.protocol !== 'mapbox:') {\n return input;\n } else if (inputParsed.hostname === 'fontstack') {\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n } else if (inputParsed.hostname === 'fonts') {\n return 'mapbox://fonts/' + inputPathnameParts[2] + '/{fontstack}/{range}.pbf';\n }\n }\n if (style.glyphs) {\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map(function (s) {\n return s.trim();\n });\n }\n if (Array.isArray(font)) {\n return font;\n } else if (typeof font === 'string') {\n return splitAndTrim(font);\n } else if (typeof font === 'object') {\n font.stops.forEach(function (stop) {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n } else {\n throw new Error('unexpected font value');\n }\n }\n eachLayer(style, function (layer) {\n eachLayout(layer, function (layout) {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n var firstSymbolLayer = 0;\n for (var i = style.layers.length - 1; i >= 0; i--) {\n var layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n var symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n return style;\n }\n\n function extend (output) {\n var inputs = [], len = arguments.length - 1;\n while (len-- > 0)\n inputs[len] = arguments[len + 1];\n for (var i = 0, list = inputs; i < list.length; i += 1) {\n var input = list[i];\n for (var k in input) {\n output[k] = input[k];\n }\n }\n return output;\n }\n\n var ParsingError = function (Error) {\n function ParsingError(key, message) {\n Error.call(this, message);\n this.message = message;\n this.key = key;\n }\n if (Error)\n ParsingError.__proto__ = Error;\n ParsingError.prototype = Object.create(Error && Error.prototype);\n ParsingError.prototype.constructor = ParsingError;\n return ParsingError;\n }(Error);\n\n var Scope = function Scope(parent, bindings) {\n if (bindings === void 0)\n bindings = [];\n this.parent = parent;\n this.bindings = {};\n for (var i = 0, list = bindings; i < list.length; i += 1) {\n var ref = list[i];\n var name = ref[0];\n var expression = ref[1];\n this.bindings[name] = expression;\n }\n };\n Scope.prototype.concat = function concat(bindings) {\n return new Scope(this, bindings);\n };\n Scope.prototype.get = function get(name) {\n if (this.bindings[name]) {\n return this.bindings[name];\n }\n if (this.parent) {\n return this.parent.get(name);\n }\n throw new Error(name + ' not found in scope.');\n };\n Scope.prototype.has = function has(name) {\n if (this.bindings[name]) {\n return true;\n }\n return this.parent ? this.parent.has(name) : false;\n };\n\n var NullType = { kind: 'null' };\n var NumberType = { kind: 'number' };\n var StringType = { kind: 'string' };\n var BooleanType = { kind: 'boolean' };\n var ColorType = { kind: 'color' };\n var ObjectType = { kind: 'object' };\n var ValueType = { kind: 'value' };\n var ErrorType = { kind: 'error' };\n var CollatorType = { kind: 'collator' };\n var FormattedType = { kind: 'formatted' };\n function array(itemType, N) {\n return {\n kind: 'array',\n itemType: itemType,\n N: N\n };\n }\n function toString(type) {\n if (type.kind === 'array') {\n var itemType = toString(type.itemType);\n return typeof type.N === 'number' ? 'array<' + itemType + ', ' + type.N + '>' : type.itemType.kind === 'value' ? 'array' : 'array<' + itemType + '>';\n } else {\n return type.kind;\n }\n }\n var valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType)\n ];\n function checkSubtype(expected, t) {\n if (t.kind === 'error') {\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' && (t.N === 0 && t.itemType.kind === 'value' || !checkSubtype(expected.itemType, t.itemType)) && (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (var i = 0, list = valueMemberTypes; i < list.length; i += 1) {\n var memberType = list[i];\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n return 'Expected ' + toString(expected) + ' but found ' + toString(t) + ' instead.';\n }\n\n var csscolorparser = createCommonjsModule(function (module, exports) {\n // (c) Dean McNamee , 2012.\n //\n // https://github.com/deanm/css-color-parser-js\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\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell 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\n // all 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\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n\n // http://www.w3.org/TR/css3-color/\n var kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]};\n\n function clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n }\n\n function clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n }\n\n function parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n { return clamp_css_byte(parseFloat(str) / 100 * 255); }\n return clamp_css_byte(parseInt(str));\n }\n\n function parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n { return clamp_css_float(parseFloat(str) / 100); }\n return clamp_css_float(parseFloat(str));\n }\n\n function css_hue_to_rgb(m1, m2, h) {\n if (h < 0) { h += 1; }\n else if (h > 1) { h -= 1; }\n\n if (h * 6 < 1) { return m1 + (m2 - m1) * h * 6; }\n if (h * 2 < 1) { return m2; }\n if (h * 3 < 2) { return m1 + (m2 - m1) * (2/3 - h) * 6; }\n return m1;\n }\n\n function parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) { return kCSSColorTable[str].slice(); } // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) { return null; } // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) { return null; } // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) { return null; }\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) { return null; }\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) { return null; }\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) { return null; }\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n }\n\n try { exports.parseCSSColor = parseCSSColor; } catch(e) { }\n });\n var csscolorparser_1 = csscolorparser.parseCSSColor;\n\n var Color = function Color(r, g, b, a) {\n if (a === void 0)\n a = 1;\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n };\n Color.parse = function parse(input) {\n if (!input) {\n return undefined;\n }\n if (input instanceof Color) {\n return input;\n }\n if (typeof input !== 'string') {\n return undefined;\n }\n var rgba = csscolorparser_1(input);\n if (!rgba) {\n return undefined;\n }\n return new Color(rgba[0] / 255 * rgba[3], rgba[1] / 255 * rgba[3], rgba[2] / 255 * rgba[3], rgba[3]);\n };\n Color.prototype.toString = function toString() {\n var ref = this.toArray();\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n return 'rgba(' + Math.round(r) + ',' + Math.round(g) + ',' + Math.round(b) + ',' + a + ')';\n };\n Color.prototype.toArray = function toArray() {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var a = ref.a;\n return a === 0 ? [\n 0,\n 0,\n 0,\n 0\n ] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n };\n Color.black = new Color(0, 0, 0, 1);\n Color.white = new Color(1, 1, 1, 1);\n Color.transparent = new Color(0, 0, 0, 0);\n Color.red = new Color(1, 0, 0, 1);\n\n var Collator = function Collator(caseSensitive, diacriticSensitive, locale) {\n if (caseSensitive) {\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n } else {\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n }\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [], {\n sensitivity: this.sensitivity,\n usage: 'search'\n });\n };\n Collator.prototype.compare = function compare(lhs, rhs) {\n return this.collator.compare(lhs, rhs);\n };\n Collator.prototype.resolvedLocale = function resolvedLocale() {\n return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;\n };\n\n var FormattedSection = function FormattedSection(text, scale, fontStack) {\n this.text = text;\n this.scale = scale;\n this.fontStack = fontStack;\n };\n var Formatted = function Formatted(sections) {\n this.sections = sections;\n };\n Formatted.fromString = function fromString(unformatted) {\n return new Formatted([new FormattedSection(unformatted, null, null)]);\n };\n Formatted.prototype.toString = function toString() {\n return this.sections.map(function (section) {\n return section.text;\n }).join('');\n };\n Formatted.prototype.serialize = function serialize() {\n var serialized = ['format'];\n for (var i = 0, list = this.sections; i < list.length; i += 1) {\n var section = list[i];\n serialized.push(section.text);\n var options = {};\n if (section.fontStack) {\n options['text-font'] = [\n 'literal',\n section.fontStack.split(',')\n ];\n }\n if (section.scale) {\n options['font-scale'] = section.scale;\n }\n serialized.push(options);\n }\n return serialized;\n };\n\n function validateRGBA(r, g, b, a) {\n if (!(typeof r === 'number' && r >= 0 && r <= 255 && typeof g === 'number' && g >= 0 && g <= 255 && typeof b === 'number' && b >= 0 && b <= 255)) {\n var value = typeof a === 'number' ? [\n r,\n g,\n b,\n a\n ] : [\n r,\n g,\n b\n ];\n return 'Invalid rgba value [' + value.join(', ') + ']: \\'r\\', \\'g\\', and \\'b\\' must be between 0 and 255.';\n }\n if (!(typeof a === 'undefined' || typeof a === 'number' && a >= 0 && a <= 1)) {\n return 'Invalid rgba value [' + [\n r,\n g,\n b,\n a\n ].join(', ') + ']: \\'a\\' must be between 0 and 1.';\n }\n return null;\n }\n function isValue(mixed) {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (var i = 0, list = mixed; i < list.length; i += 1) {\n var item = list[i];\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (var key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n function typeOf(value) {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (Array.isArray(value)) {\n var length = value.length;\n var itemType;\n for (var i = 0, list = value; i < list.length; i += 1) {\n var item = list[i];\n var t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n return array(itemType || ValueType, length);\n } else {\n return ObjectType;\n }\n }\n function toString$1(value) {\n var type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof Formatted) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n }\n\n var Literal = function Literal(type, value) {\n this.type = type;\n this.value = value;\n };\n Literal.parse = function parse(args, context) {\n if (args.length !== 2) {\n return context.error('\\'literal\\' expression requires exactly one argument, but found ' + (args.length - 1) + ' instead.');\n }\n if (!isValue(args[1])) {\n return context.error('invalid value');\n }\n var value = args[1];\n var type = typeOf(value);\n var expected = context.expectedType;\n if (type.kind === 'array' && type.N === 0 && expected && expected.kind === 'array' && (typeof expected.N !== 'number' || expected.N === 0)) {\n type = expected;\n }\n return new Literal(type, value);\n };\n Literal.prototype.evaluate = function evaluate() {\n return this.value;\n };\n Literal.prototype.eachChild = function eachChild() {\n };\n Literal.prototype.possibleOutputs = function possibleOutputs() {\n return [this.value];\n };\n Literal.prototype.serialize = function serialize() {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\n 'literal',\n this.value\n ];\n } else if (this.value instanceof Color) {\n return ['rgba'].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n return this.value.serialize();\n } else {\n return this.value;\n }\n };\n\n var RuntimeError = function RuntimeError(message) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n };\n RuntimeError.prototype.toJSON = function toJSON() {\n return this.message;\n };\n\n var types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n };\n var Assertion = function Assertion(type, args) {\n this.type = type;\n this.args = args;\n };\n Assertion.parse = function parse(args, context) {\n if (args.length < 2) {\n return context.error('Expected at least one argument.');\n }\n var i = 1;\n var type;\n var name = args[0];\n if (name === 'array') {\n var itemType;\n if (args.length > 2) {\n var type$1 = args[1];\n if (typeof type$1 !== 'string' || !(type$1 in types) || type$1 === 'object') {\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n }\n itemType = types[type$1];\n i++;\n } else {\n itemType = ValueType;\n }\n var N;\n if (args.length > 3) {\n if (args[2] !== null && (typeof args[2] !== 'number' || args[2] < 0 || args[2] !== Math.floor(args[2]))) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n type = array(itemType, N);\n } else {\n type = types[name];\n }\n var parsed = [];\n for (; i < args.length; i++) {\n var input = context.parse(args[i], i, ValueType);\n if (!input) {\n return null;\n }\n parsed.push(input);\n }\n return new Assertion(type, parsed);\n };\n Assertion.prototype.evaluate = function evaluate(ctx) {\n for (var i = 0; i < this.args.length; i++) {\n var value = this.args[i].evaluate(ctx);\n var error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError('Expected value to be of type ' + toString(this.type) + ', but found ' + toString(typeOf(value)) + ' instead.');\n }\n }\n return null;\n };\n Assertion.prototype.eachChild = function eachChild(fn) {\n this.args.forEach(fn);\n };\n Assertion.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.args.map(function (arg) {\n return arg.possibleOutputs();\n }));\n };\n Assertion.prototype.serialize = function serialize() {\n var type = this.type;\n var serialized = [type.kind];\n if (type.kind === 'array') {\n var itemType = type.itemType;\n if (itemType.kind === 'string' || itemType.kind === 'number' || itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n var N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(function (arg) {\n return arg.serialize();\n }));\n };\n\n var FormatExpression = function FormatExpression(sections) {\n this.type = FormattedType;\n this.sections = sections;\n };\n FormatExpression.parse = function parse(args, context) {\n if (args.length < 3) {\n return context.error('Expected at least two arguments.');\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n var sections = [];\n for (var i = 1; i < args.length - 1; i += 2) {\n var text = context.parse(args[i], 1, ValueType);\n if (!text) {\n return null;\n }\n var kind = text.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null') {\n return context.error('Formatted text type must be \\'string\\', \\'value\\', or \\'null\\'.');\n }\n var options = args[i + 1];\n if (typeof options !== 'object' || Array.isArray(options)) {\n return context.error('Format options argument must be an object.');\n }\n var scale = null;\n if (options['font-scale']) {\n scale = context.parse(options['font-scale'], 1, NumberType);\n if (!scale) {\n return null;\n }\n }\n var font = null;\n if (options['text-font']) {\n font = context.parse(options['text-font'], 1, array(StringType));\n if (!font) {\n return null;\n }\n }\n sections.push({\n text: text,\n scale: scale,\n font: font\n });\n }\n return new FormatExpression(sections);\n };\n FormatExpression.prototype.evaluate = function evaluate(ctx) {\n return new Formatted(this.sections.map(function (section) {\n return new FormattedSection(toString$1(section.text.evaluate(ctx)), section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null);\n }));\n };\n FormatExpression.prototype.eachChild = function eachChild(fn) {\n for (var i = 0, list = this.sections; i < list.length; i += 1) {\n var section = list[i];\n fn(section.text);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n }\n };\n FormatExpression.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n FormatExpression.prototype.serialize = function serialize() {\n var serialized = ['format'];\n for (var i = 0, list = this.sections; i < list.length; i += 1) {\n var section = list[i];\n serialized.push(section.text.serialize());\n var options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n };\n\n var types$1 = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n };\n var Coercion = function Coercion(type, args) {\n this.type = type;\n this.args = args;\n };\n Coercion.parse = function parse(args, context) {\n if (args.length < 2) {\n return context.error('Expected at least one argument.');\n }\n var name = args[0];\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2) {\n return context.error('Expected one argument.');\n }\n var type = types$1[name];\n var parsed = [];\n for (var i = 1; i < args.length; i++) {\n var input = context.parse(args[i], i, ValueType);\n if (!input) {\n return null;\n }\n parsed.push(input);\n }\n return new Coercion(type, parsed);\n };\n Coercion.prototype.evaluate = function evaluate(ctx) {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n var input;\n var error;\n for (var i = 0, list = this.args; i < list.length; i += 1) {\n var arg = list[i];\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n var c = ctx.parseColor(input);\n if (c) {\n return c;\n }\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = 'Invalid rbga value ' + JSON.stringify(input) + ': expected an array containing either three or four numeric values.';\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n }\n }\n }\n throw new RuntimeError(error || 'Could not parse color from value \\'' + (typeof input === 'string' ? input : String(JSON.stringify(input))) + '\\'');\n } else if (this.type.kind === 'number') {\n var value = null;\n for (var i$1 = 0, list$1 = this.args; i$1 < list$1.length; i$1 += 1) {\n var arg$1 = list$1[i$1];\n value = arg$1.evaluate(ctx);\n if (value === null) {\n return 0;\n }\n var num = Number(value);\n if (isNaN(num)) {\n continue;\n }\n return num;\n }\n throw new RuntimeError('Could not convert ' + JSON.stringify(value) + ' to number.');\n } else if (this.type.kind === 'formatted') {\n return Formatted.fromString(toString$1(this.args[0].evaluate(ctx)));\n } else {\n return toString$1(this.args[0].evaluate(ctx));\n }\n };\n Coercion.prototype.eachChild = function eachChild(fn) {\n this.args.forEach(fn);\n };\n Coercion.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.args.map(function (arg) {\n return arg.possibleOutputs();\n }));\n };\n Coercion.prototype.serialize = function serialize() {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{\n text: this.args[0],\n scale: null,\n font: null\n }]).serialize();\n }\n var serialized = ['to-' + this.type.kind];\n this.eachChild(function (child) {\n serialized.push(child.serialize());\n });\n return serialized;\n };\n\n var geometryTypes = [\n 'Unknown',\n 'Point',\n 'LineString',\n 'Polygon'\n ];\n var EvaluationContext = function EvaluationContext() {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this._parseColorCache = {};\n };\n EvaluationContext.prototype.id = function id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n };\n EvaluationContext.prototype.geometryType = function geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n };\n EvaluationContext.prototype.properties = function properties() {\n return this.feature && this.feature.properties || {};\n };\n EvaluationContext.prototype.parseColor = function parseColor(input) {\n var cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n };\n\n var CompoundExpression = function CompoundExpression(name, type, evaluate, args) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n };\n CompoundExpression.prototype.evaluate = function evaluate(ctx) {\n return this._evaluate(ctx, this.args);\n };\n CompoundExpression.prototype.eachChild = function eachChild(fn) {\n this.args.forEach(fn);\n };\n CompoundExpression.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n CompoundExpression.prototype.serialize = function serialize() {\n return [this.name].concat(this.args.map(function (arg) {\n return arg.serialize();\n }));\n };\n CompoundExpression.parse = function parse(args, context) {\n var ref$1;\n var op = args[0];\n var definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error('Unknown expression \"' + op + '\". If you wanted a literal array, use [\"literal\", [...]].', 0);\n }\n var type = Array.isArray(definition) ? definition[0] : definition.type;\n var availableOverloads = Array.isArray(definition) ? [[\n definition[1],\n definition[2]\n ]] : definition.overloads;\n var overloads = availableOverloads.filter(function (ref) {\n var signature = ref[0];\n return !Array.isArray(signature) || signature.length === args.length - 1;\n });\n var signatureContext = null;\n for (var i$3 = 0, list = overloads; i$3 < list.length; i$3 += 1) {\n var ref = list[i$3];\n var params = ref[0];\n var evaluate = ref[1];\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n var parsedArgs = [];\n var argParseFailed = false;\n for (var i = 1; i < args.length; i++) {\n var arg = args[i];\n var expectedType = Array.isArray(params) ? params[i - 1] : params.type;\n var parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n continue;\n }\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error('Expected ' + params.length + ' arguments, but found ' + parsedArgs.length + ' instead.');\n continue;\n }\n }\n for (var i$1 = 0; i$1 < parsedArgs.length; i$1++) {\n var expected = Array.isArray(params) ? params[i$1] : params.type;\n var arg$1 = parsedArgs[i$1];\n signatureContext.concat(i$1 + 1).checkSubtype(expected, arg$1.type);\n }\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n if (overloads.length === 1) {\n (ref$1 = context.errors).push.apply(ref$1, signatureContext.errors);\n } else {\n var expected$1 = overloads.length ? overloads : availableOverloads;\n var signatures = expected$1.map(function (ref) {\n var params = ref[0];\n return stringifySignature(params);\n }).join(' | ');\n var actualTypes = [];\n for (var i$2 = 1; i$2 < args.length; i$2++) {\n var parsed$1 = context.parse(args[i$2], 1 + actualTypes.length);\n if (!parsed$1) {\n return null;\n }\n actualTypes.push(toString(parsed$1.type));\n }\n context.error('Expected arguments of type ' + signatures + ', but found (' + actualTypes.join(', ') + ') instead.');\n }\n return null;\n };\n CompoundExpression.register = function register(registry, definitions) {\n CompoundExpression.definitions = definitions;\n for (var name in definitions) {\n registry[name] = CompoundExpression;\n }\n };\n function stringifySignature(signature) {\n if (Array.isArray(signature)) {\n return '(' + signature.map(toString).join(', ') + ')';\n } else {\n return '(' + toString(signature.type) + '...)';\n }\n }\n\n var CollatorExpression = function CollatorExpression(caseSensitive, diacriticSensitive, locale) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n };\n CollatorExpression.parse = function parse(args, context) {\n if (args.length !== 2) {\n return context.error('Expected one argument.');\n }\n var options = args[1];\n if (typeof options !== 'object' || Array.isArray(options)) {\n return context.error('Collator options argument must be an object.');\n }\n var caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive) {\n return null;\n }\n var diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive) {\n return null;\n }\n var locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) {\n return null;\n }\n }\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n };\n CollatorExpression.prototype.evaluate = function evaluate(ctx) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n };\n CollatorExpression.prototype.eachChild = function eachChild(fn) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n };\n CollatorExpression.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n CollatorExpression.prototype.serialize = function serialize() {\n var options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\n 'collator',\n options\n ];\n };\n\n function isFeatureConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (e.name === 'properties' || e.name === 'geometry-type' || e.name === 'id') {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n var result = true;\n e.eachChild(function (arg) {\n if (result && !isFeatureConstant(arg)) {\n result = false;\n }\n });\n return result;\n }\n function isStateConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n var result = true;\n e.eachChild(function (arg) {\n if (result && !isStateConstant(arg)) {\n result = false;\n }\n });\n return result;\n }\n function isGlobalPropertyConstant(e, properties) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) {\n return false;\n }\n var result = true;\n e.eachChild(function (arg) {\n if (result && !isGlobalPropertyConstant(arg, properties)) {\n result = false;\n }\n });\n return result;\n }\n\n var Var = function Var(name, boundExpression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n };\n Var.parse = function parse(args, context) {\n if (args.length !== 2 || typeof args[1] !== 'string') {\n return context.error('\\'var\\' expression requires exactly one string literal argument.');\n }\n var name = args[1];\n if (!context.scope.has(name)) {\n return context.error('Unknown variable \"' + name + '\". Make sure \"' + name + '\" has been bound in an enclosing \"let\" expression before using it.', 1);\n }\n return new Var(name, context.scope.get(name));\n };\n Var.prototype.evaluate = function evaluate(ctx) {\n return this.boundExpression.evaluate(ctx);\n };\n Var.prototype.eachChild = function eachChild() {\n };\n Var.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n Var.prototype.serialize = function serialize() {\n return [\n 'var',\n this.name\n ];\n };\n\n var ParsingContext = function ParsingContext(registry, path, expectedType, scope, errors) {\n if (path === void 0)\n path = [];\n if (scope === void 0)\n scope = new Scope();\n if (errors === void 0)\n errors = [];\n this.registry = registry;\n this.path = path;\n this.key = path.map(function (part) {\n return '[' + part + ']';\n }).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n };\n ParsingContext.prototype.parse = function parse(expr, index, expectedType, bindings, options) {\n if (options === void 0)\n options = {};\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n };\n ParsingContext.prototype._parse = function _parse(expr, options) {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = [\n 'literal',\n expr\n ];\n }\n function annotate(parsed, type, typeAnnotation) {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');\n }\n var op = expr[0];\n if (typeof op !== 'string') {\n this.error('Expression name must be a string, but found ' + typeof op + ' instead. If you wanted a literal array, use [\"literal\", [...]].', 0);\n return null;\n }\n var Expr = this.registry[op];\n if (Expr) {\n var parsed = Expr.parse(expr, this);\n if (!parsed) {\n return null;\n }\n if (this.expectedType) {\n var expected = this.expectedType;\n var actual = parsed.type;\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n if (!(parsed instanceof Literal) && isConstant(parsed)) {\n var ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n return parsed;\n }\n return this.error('Unknown expression \"' + op + '\". If you wanted a literal array, use [\"literal\", [...]].', 0);\n } else if (typeof expr === 'undefined') {\n return this.error('\\'undefined\\' value invalid. Use null instead.');\n } else if (typeof expr === 'object') {\n return this.error('Bare objects invalid. Use [\"literal\", {...}] instead.');\n } else {\n return this.error('Expected an array, but found ' + typeof expr + ' instead.');\n }\n };\n ParsingContext.prototype.concat = function concat(index, expectedType, bindings) {\n var path = typeof index === 'number' ? this.path.concat(index) : this.path;\n var scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(this.registry, path, expectedType || null, scope, this.errors);\n };\n ParsingContext.prototype.error = function error(error$1) {\n var keys = [], len = arguments.length - 1;\n while (len-- > 0)\n keys[len] = arguments[len + 1];\n var key = '' + this.key + keys.map(function (k) {\n return '[' + k + ']';\n }).join('');\n this.errors.push(new ParsingError(key, error$1));\n };\n ParsingContext.prototype.checkSubtype = function checkSubtype$1(expected, t) {\n var error = checkSubtype(expected, t);\n if (error) {\n this.error(error);\n }\n return error;\n };\n function isConstant(expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n return false;\n }\n var isTypeAnnotation = expression instanceof Coercion || expression instanceof Assertion;\n var childrenConstant = true;\n expression.eachChild(function (child) {\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n return isFeatureConstant(expression) && isGlobalPropertyConstant(expression, [\n 'zoom',\n 'heatmap-density',\n 'line-progress',\n 'accumulated',\n 'is-supported-script'\n ]);\n }\n\n function findStopLessThanOrEqualTo(stops, input) {\n var n = stops.length;\n var lowerIndex = 0;\n var upperIndex = n - 1;\n var currentIndex = 0;\n var currentValue, upperValue;\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n upperValue = stops[currentIndex + 1];\n if (input === currentValue || input > currentValue && input < upperValue) {\n return currentIndex;\n } else if (currentValue < input) {\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n return Math.max(currentIndex - 1, 0);\n }\n\n var Step = function Step(type, input, stops) {\n this.type = type;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (var i = 0, list = stops; i < list.length; i += 1) {\n var ref = list[i];\n var label = ref[0];\n var expression = ref[1];\n this.labels.push(label);\n this.outputs.push(expression);\n }\n };\n Step.parse = function parse(args, context) {\n var input = args[1];\n var rest = args.slice(2);\n if (args.length - 1 < 4) {\n return context.error('Expected at least 4 arguments, but found only ' + (args.length - 1) + '.');\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n input = context.parse(input, 1, NumberType);\n if (!input) {\n return null;\n }\n var stops = [];\n var outputType = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n rest.unshift(-Infinity);\n for (var i = 0; i < rest.length; i += 2) {\n var label = rest[i];\n var value = rest[i + 1];\n var labelKey = i + 1;\n var valueKey = i + 2;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n var parsed = context.parse(value, valueKey, outputType);\n if (!parsed) {\n return null;\n }\n outputType = outputType || parsed.type;\n stops.push([\n label,\n parsed\n ]);\n }\n return new Step(outputType, input, stops);\n };\n Step.prototype.evaluate = function evaluate(ctx) {\n var labels = this.labels;\n var outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n var value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n var stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n var index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n };\n Step.prototype.eachChild = function eachChild(fn) {\n fn(this.input);\n for (var i = 0, list = this.outputs; i < list.length; i += 1) {\n var expression = list[i];\n fn(expression);\n }\n };\n Step.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.outputs.map(function (output) {\n return output.possibleOutputs();\n }));\n };\n Step.prototype.serialize = function serialize() {\n var serialized = [\n 'step',\n this.input.serialize()\n ];\n for (var i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n };\n\n /*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\n var unitbezier = UnitBezier;\n\n function UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n }\n\n UnitBezier.prototype.sampleCurveX = function(t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n };\n\n UnitBezier.prototype.sampleCurveY = function(t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n };\n\n UnitBezier.prototype.sampleCurveDerivativeX = function(t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n };\n\n UnitBezier.prototype.solveCurveX = function(x, epsilon) {\n if (typeof epsilon === 'undefined') { epsilon = 1e-6; }\n\n var t0, t1, t2, x2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon) { return t2; }\n\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 1e-6) { break; }\n\n t2 = t2 - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n t0 = 0.0;\n t1 = 1.0;\n t2 = x;\n\n if (t2 < t0) { return t0; }\n if (t2 > t1) { return t1; }\n\n while (t0 < t1) {\n\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon) { return t2; }\n\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n\n t2 = (t1 - t0) * 0.5 + t0;\n }\n\n // Failure.\n return t2;\n };\n\n UnitBezier.prototype.solve = function(x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n };\n\n function number(a, b, t) {\n return a * (1 - t) + b * t;\n }\n function color(from, to, t) {\n return new Color(number(from.r, to.r, t), number(from.g, to.g, t), number(from.b, to.b, t), number(from.a, to.a, t));\n }\n function array$1(from, to, t) {\n return from.map(function (d, i) {\n return number(d, to[i], t);\n });\n }\n\n var interpolate = /*#__PURE__*/Object.freeze({\n number: number,\n color: color,\n array: array$1\n });\n\n var Xn = 0.95047, Yn = 1, Zn = 1.08883, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI;\n function xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n }\n function lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n }\n function xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n }\n function rgb2xyz(x) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n }\n function rgbToLab(rgbColor) {\n var b = rgb2xyz(rgbColor.r), a = rgb2xyz(rgbColor.g), l = rgb2xyz(rgbColor.b), x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.072175 * l) / Yn), z = xyz2lab((0.0193339 * b + 0.119192 * a + 0.9503041 * l) / Zn);\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n }\n function labToRgb(labColor) {\n var y = (labColor.l + 16) / 116, x = isNaN(labColor.a) ? y : y + labColor.a / 500, z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), xyz2rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), labColor.alpha);\n }\n function interpolateLab(from, to, t) {\n return {\n l: number(from.l, to.l, t),\n a: number(from.a, to.a, t),\n b: number(from.b, to.b, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n }\n function rgbToHcl(rgbColor) {\n var ref = rgbToLab(rgbColor);\n var l = ref.l;\n var a = ref.a;\n var b = ref.b;\n var h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l: l,\n alpha: rgbColor.a\n };\n }\n function hclToRgb(hclColor) {\n var h = hclColor.h * deg2rad, c = hclColor.c, l = hclColor.l;\n return labToRgb({\n l: l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n }\n function interpolateHue(a, b, t) {\n var d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n }\n function interpolateHcl(from, to, t) {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: number(from.c, to.c, t),\n l: number(from.l, to.l, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n }\n var lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n };\n var hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n };\n\n var colorSpaces = /*#__PURE__*/Object.freeze({\n lab: lab,\n hcl: hcl\n });\n\n var Interpolate = function Interpolate(type, operator, interpolation, input, stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (var i = 0, list = stops; i < list.length; i += 1) {\n var ref = list[i];\n var label = ref[0];\n var expression = ref[1];\n this.labels.push(label);\n this.outputs.push(expression);\n }\n };\n Interpolate.interpolationFactor = function interpolationFactor(interpolation, input, lower, upper) {\n var t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n var c = interpolation.controlPoints;\n var ub = new unitbezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n };\n Interpolate.parse = function parse(args, context) {\n var operator = args[0];\n var interpolation = args[1];\n var input = args[2];\n var rest = args.slice(3);\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error('Expected an interpolation type expression.', 1);\n }\n if (interpolation[0] === 'linear') {\n interpolation = { name: 'linear' };\n } else if (interpolation[0] === 'exponential') {\n var base = interpolation[1];\n if (typeof base !== 'number') {\n return context.error('Exponential interpolation requires a numeric base.', 1, 1);\n }\n interpolation = {\n name: 'exponential',\n base: base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n var controlPoints = interpolation.slice(1);\n if (controlPoints.length !== 4 || controlPoints.some(function (t) {\n return typeof t !== 'number' || t < 0 || t > 1;\n })) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: controlPoints\n };\n } else {\n return context.error('Unknown interpolation type ' + String(interpolation[0]), 1, 0);\n }\n if (args.length - 1 < 4) {\n return context.error('Expected at least 4 arguments, but found only ' + (args.length - 1) + '.');\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n input = context.parse(input, 2, NumberType);\n if (!input) {\n return null;\n }\n var stops = [];\n var outputType = null;\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (var i = 0; i < rest.length; i += 2) {\n var label = rest[i];\n var value = rest[i + 1];\n var labelKey = i + 3;\n var valueKey = i + 4;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n var parsed = context.parse(value, valueKey, outputType);\n if (!parsed) {\n return null;\n }\n outputType = outputType || parsed.type;\n stops.push([\n label,\n parsed\n ]);\n }\n if (outputType.kind !== 'number' && outputType.kind !== 'color' && !(outputType.kind === 'array' && outputType.itemType.kind === 'number' && typeof outputType.N === 'number')) {\n return context.error('Type ' + toString(outputType) + ' is not interpolatable.');\n }\n return new Interpolate(outputType, operator, interpolation, input, stops);\n };\n Interpolate.prototype.evaluate = function evaluate(ctx) {\n var labels = this.labels;\n var outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n var value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n var stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n var index = findStopLessThanOrEqualTo(labels, value);\n var lower = labels[index];\n var upper = labels[index + 1];\n var t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n var outputLower = outputs[index].evaluate(ctx);\n var outputUpper = outputs[index + 1].evaluate(ctx);\n if (this.operator === 'interpolate') {\n return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t);\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n };\n Interpolate.prototype.eachChild = function eachChild(fn) {\n fn(this.input);\n for (var i = 0, list = this.outputs; i < list.length; i += 1) {\n var expression = list[i];\n fn(expression);\n }\n };\n Interpolate.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.outputs.map(function (output) {\n return output.possibleOutputs();\n }));\n };\n Interpolate.prototype.serialize = function serialize() {\n var interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = ['linear'];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = ['linear'];\n } else {\n interpolation = [\n 'exponential',\n this.interpolation.base\n ];\n }\n } else {\n interpolation = ['cubic-bezier'].concat(this.interpolation.controlPoints);\n }\n var serialized = [\n this.operator,\n interpolation,\n this.input.serialize()\n ];\n for (var i = 0; i < this.labels.length; i++) {\n serialized.push(this.labels[i], this.outputs[i].serialize());\n }\n return serialized;\n };\n function exponentialInterpolation(input, base, lowerValue, upperValue) {\n var difference = upperValue - lowerValue;\n var progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n }\n\n var Coalesce = function Coalesce(type, args) {\n this.type = type;\n this.args = args;\n };\n Coalesce.parse = function parse(args, context) {\n if (args.length < 2) {\n return context.error('Expectected at least one argument.');\n }\n var outputType = null;\n var expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n var parsedArgs = [];\n for (var i = 0, list = args.slice(1); i < list.length; i += 1) {\n var arg = list[i];\n var parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n if (!parsed) {\n return null;\n }\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n var needsAnnotation = expectedType && parsedArgs.some(function (arg) {\n return checkSubtype(expectedType, arg.type);\n });\n return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : new Coalesce(outputType, parsedArgs);\n };\n Coalesce.prototype.evaluate = function evaluate(ctx) {\n var result = null;\n for (var i = 0, list = this.args; i < list.length; i += 1) {\n var arg = list[i];\n result = arg.evaluate(ctx);\n if (result !== null) {\n break;\n }\n }\n return result;\n };\n Coalesce.prototype.eachChild = function eachChild(fn) {\n this.args.forEach(fn);\n };\n Coalesce.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.args.map(function (arg) {\n return arg.possibleOutputs();\n }));\n };\n Coalesce.prototype.serialize = function serialize() {\n var serialized = ['coalesce'];\n this.eachChild(function (child) {\n serialized.push(child.serialize());\n });\n return serialized;\n };\n\n var Let = function Let(bindings, result) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n };\n Let.prototype.evaluate = function evaluate(ctx) {\n return this.result.evaluate(ctx);\n };\n Let.prototype.eachChild = function eachChild(fn) {\n for (var i = 0, list = this.bindings; i < list.length; i += 1) {\n var binding = list[i];\n fn(binding[1]);\n }\n fn(this.result);\n };\n Let.parse = function parse(args, context) {\n if (args.length < 4) {\n return context.error('Expected at least 3 arguments, but found ' + (args.length - 1) + ' instead.');\n }\n var bindings = [];\n for (var i = 1; i < args.length - 1; i += 2) {\n var name = args[i];\n if (typeof name !== 'string') {\n return context.error('Expected string, but found ' + typeof name + ' instead.', i);\n }\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error('Variable names must contain only alphanumeric characters or \\'_\\'.', i);\n }\n var value = context.parse(args[i + 1], i + 1);\n if (!value) {\n return null;\n }\n bindings.push([\n name,\n value\n ]);\n }\n var result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) {\n return null;\n }\n return new Let(bindings, result);\n };\n Let.prototype.possibleOutputs = function possibleOutputs() {\n return this.result.possibleOutputs();\n };\n Let.prototype.serialize = function serialize() {\n var serialized = ['let'];\n for (var i = 0, list = this.bindings; i < list.length; i += 1) {\n var ref = list[i];\n var name = ref[0];\n var expr = ref[1];\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n };\n\n var At = function At(type, index, input) {\n this.type = type;\n this.index = index;\n this.input = input;\n };\n At.parse = function parse(args, context) {\n if (args.length !== 3) {\n return context.error('Expected 2 arguments, but found ' + (args.length - 1) + ' instead.');\n }\n var index = context.parse(args[1], 1, NumberType);\n var input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n if (!index || !input) {\n return null;\n }\n var t = input.type;\n return new At(t.itemType, index, input);\n };\n At.prototype.evaluate = function evaluate(ctx) {\n var index = this.index.evaluate(ctx);\n var array = this.input.evaluate(ctx);\n if (index < 0) {\n throw new RuntimeError('Array index out of bounds: ' + index + ' < 0.');\n }\n if (index >= array.length) {\n throw new RuntimeError('Array index out of bounds: ' + index + ' > ' + (array.length - 1) + '.');\n }\n if (index !== Math.floor(index)) {\n throw new RuntimeError('Array index must be an integer, but found ' + index + ' instead.');\n }\n return array[index];\n };\n At.prototype.eachChild = function eachChild(fn) {\n fn(this.index);\n fn(this.input);\n };\n At.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n At.prototype.serialize = function serialize() {\n return [\n 'at',\n this.index.serialize(),\n this.input.serialize()\n ];\n };\n\n var Match = function Match(inputType, outputType, input, cases, outputs, otherwise) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n };\n Match.parse = function parse(args, context) {\n if (args.length < 5) {\n return context.error('Expected at least 4 arguments, but found only ' + (args.length - 1) + '.');\n }\n if (args.length % 2 !== 1) {\n return context.error('Expected an even number of arguments.');\n }\n var inputType;\n var outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n var cases = {};\n var outputs = [];\n for (var i = 2; i < args.length - 1; i += 2) {\n var labels = args[i];\n var value = args[i + 1];\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n var labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n for (var i$1 = 0, list = labels; i$1 < list.length; i$1 += 1) {\n var label = list[i$1];\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error('Branch labels must be numbers or strings.');\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error('Branch labels must be integers no larger than ' + Number.MAX_SAFE_INTEGER + '.');\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error('Numeric branch labels must be integer values.');\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n cases[String(label)] = outputs.length;\n }\n var result = context.parse(value, i, outputType);\n if (!result) {\n return null;\n }\n outputType = outputType || result.type;\n outputs.push(result);\n }\n var input = context.parse(args[1], 1, ValueType);\n if (!input) {\n return null;\n }\n var otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) {\n return null;\n }\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n return null;\n }\n return new Match(inputType, outputType, input, cases, outputs, otherwise);\n };\n Match.prototype.evaluate = function evaluate(ctx) {\n var input = this.input.evaluate(ctx);\n var output = typeOf(input) === this.inputType && this.outputs[this.cases[input]] || this.otherwise;\n return output.evaluate(ctx);\n };\n Match.prototype.eachChild = function eachChild(fn) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n };\n Match.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.outputs.map(function (out) {\n return out.possibleOutputs();\n })).concat(this.otherwise.possibleOutputs());\n };\n Match.prototype.serialize = function serialize() {\n var this$1 = this;\n var serialized = [\n 'match',\n this.input.serialize()\n ];\n var sortedLabels = Object.keys(this.cases).sort();\n var groupedByOutput = [];\n var outputLookup = {};\n for (var i = 0, list = sortedLabels; i < list.length; i += 1) {\n var label = list[i];\n var outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([\n this.cases[label],\n [label]\n ]);\n } else {\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n var coerceLabel = function (label) {\n return this$1.inputType.kind === 'number' ? Number(label) : label;\n };\n for (var i$1 = 0, list$1 = groupedByOutput; i$1 < list$1.length; i$1 += 1) {\n var ref = list$1[i$1];\n var outputIndex = ref[0];\n var labels = ref[1];\n if (labels.length === 1) {\n serialized.push(coerceLabel(labels[0]));\n } else {\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex$1].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n };\n\n var Case = function Case(type, branches, otherwise) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n };\n Case.parse = function parse(args, context) {\n if (args.length < 4) {\n return context.error('Expected at least 3 arguments, but found only ' + (args.length - 1) + '.');\n }\n if (args.length % 2 !== 0) {\n return context.error('Expected an odd number of arguments.');\n }\n var outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n var branches = [];\n for (var i = 1; i < args.length - 1; i += 2) {\n var test = context.parse(args[i], i, BooleanType);\n if (!test) {\n return null;\n }\n var result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) {\n return null;\n }\n branches.push([\n test,\n result\n ]);\n outputType = outputType || result.type;\n }\n var otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) {\n return null;\n }\n return new Case(outputType, branches, otherwise);\n };\n Case.prototype.evaluate = function evaluate(ctx) {\n for (var i = 0, list = this.branches; i < list.length; i += 1) {\n var ref = list[i];\n var test = ref[0];\n var expression = ref[1];\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n };\n Case.prototype.eachChild = function eachChild(fn) {\n for (var i = 0, list = this.branches; i < list.length; i += 1) {\n var ref = list[i];\n var test = ref[0];\n var expression = ref[1];\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n };\n Case.prototype.possibleOutputs = function possibleOutputs() {\n var ref;\n return (ref = []).concat.apply(ref, this.branches.map(function (ref) {\n var _ = ref[0];\n var out = ref[1];\n return out.possibleOutputs();\n })).concat(this.otherwise.possibleOutputs());\n };\n Case.prototype.serialize = function serialize() {\n var serialized = ['case'];\n this.eachChild(function (child) {\n serialized.push(child.serialize());\n });\n return serialized;\n };\n\n function isComparableType(op, type) {\n if (op === '==' || op === '!=') {\n return type.kind === 'boolean' || type.kind === 'string' || type.kind === 'number' || type.kind === 'null' || type.kind === 'value';\n } else {\n return type.kind === 'string' || type.kind === 'number' || type.kind === 'value';\n }\n }\n function eq(ctx, a, b) {\n return a === b;\n }\n function neq(ctx, a, b) {\n return a !== b;\n }\n function lt(ctx, a, b) {\n return a < b;\n }\n function gt(ctx, a, b) {\n return a > b;\n }\n function lteq(ctx, a, b) {\n return a <= b;\n }\n function gteq(ctx, a, b) {\n return a >= b;\n }\n function eqCollate(ctx, a, b, c) {\n return c.compare(a, b) === 0;\n }\n function neqCollate(ctx, a, b, c) {\n return !eqCollate(ctx, a, b, c);\n }\n function ltCollate(ctx, a, b, c) {\n return c.compare(a, b) < 0;\n }\n function gtCollate(ctx, a, b, c) {\n return c.compare(a, b) > 0;\n }\n function lteqCollate(ctx, a, b, c) {\n return c.compare(a, b) <= 0;\n }\n function gteqCollate(ctx, a, b, c) {\n return c.compare(a, b) >= 0;\n }\n function makeComparison(op, compareBasic, compareWithCollator) {\n var isOrderComparison = op !== '==' && op !== '!=';\n return function () {\n function Comparison(lhs, rhs, collator) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n Comparison.parse = function parse(args, context) {\n if (args.length !== 3 && args.length !== 4) {\n return context.error('Expected two or three arguments.');\n }\n var op = args[0];\n var lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) {\n return null;\n }\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error('\"' + op + '\" comparisons are not supported for type \\'' + toString(lhs.type) + '\\'.');\n }\n var rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) {\n return null;\n }\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error('\"' + op + '\" comparisons are not supported for type \\'' + toString(rhs.type) + '\\'.');\n }\n if (lhs.type.kind !== rhs.type.kind && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n return context.error('Cannot compare types \\'' + toString(lhs.type) + '\\' and \\'' + toString(rhs.type) + '\\'.');\n }\n if (isOrderComparison) {\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n var collator = null;\n if (args.length === 4) {\n if (lhs.type.kind !== 'string' && rhs.type.kind !== 'string' && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n return context.error('Cannot use collator to compare non-string types.');\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) {\n return null;\n }\n }\n return new Comparison(lhs, rhs, collator);\n };\n Comparison.prototype.evaluate = function evaluate(ctx) {\n var lhs = this.lhs.evaluate(ctx);\n var rhs = this.rhs.evaluate(ctx);\n if (isOrderComparison && this.hasUntypedArgument) {\n var lt = typeOf(lhs);\n var rt = typeOf(rhs);\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError('Expected arguments for \"' + op + '\" to be (string, string) or (number, number), but found (' + lt.kind + ', ' + rt.kind + ') instead.');\n }\n }\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n var lt$1 = typeOf(lhs);\n var rt$1 = typeOf(rhs);\n if (lt$1.kind !== 'string' || rt$1.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n return this.collator ? compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) : compareBasic(ctx, lhs, rhs);\n };\n Comparison.prototype.eachChild = function eachChild(fn) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n };\n Comparison.prototype.possibleOutputs = function possibleOutputs() {\n return [\n true,\n false\n ];\n };\n Comparison.prototype.serialize = function serialize() {\n var serialized = [op];\n this.eachChild(function (child) {\n serialized.push(child.serialize());\n });\n return serialized;\n };\n return Comparison;\n }();\n }\n var Equals = makeComparison('==', eq, eqCollate);\n var NotEquals = makeComparison('!=', neq, neqCollate);\n var LessThan = makeComparison('<', lt, ltCollate);\n var GreaterThan = makeComparison('>', gt, gtCollate);\n var LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\n var GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\n var NumberFormat = function NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n };\n NumberFormat.parse = function parse(args, context) {\n if (args.length !== 3) {\n return context.error('Expected two arguments.');\n }\n var number = context.parse(args[1], 1, NumberType);\n if (!number) {\n return null;\n }\n var options = args[2];\n if (typeof options !== 'object' || Array.isArray(options)) {\n return context.error('NumberFormat options argument must be an object.');\n }\n var locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) {\n return null;\n }\n }\n var currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency) {\n return null;\n }\n }\n var minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits) {\n return null;\n }\n }\n var maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits) {\n return null;\n }\n }\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n };\n NumberFormat.prototype.evaluate = function evaluate(ctx) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n style: this.currency ? 'currency' : 'decimal',\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined\n }).format(this.number.evaluate(ctx));\n };\n NumberFormat.prototype.eachChild = function eachChild(fn) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n };\n NumberFormat.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n NumberFormat.prototype.serialize = function serialize() {\n var options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\n 'number-format',\n this.number.serialize(),\n options\n ];\n };\n\n var Length = function Length(input) {\n this.type = NumberType;\n this.input = input;\n };\n Length.parse = function parse(args, context) {\n if (args.length !== 2) {\n return context.error('Expected 1 argument, but found ' + (args.length - 1) + ' instead.');\n }\n var input = context.parse(args[1], 1);\n if (!input) {\n return null;\n }\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value') {\n return context.error('Expected argument of type string or array, but found ' + toString(input.type) + ' instead.');\n }\n return new Length(input);\n };\n Length.prototype.evaluate = function evaluate(ctx) {\n var input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError('Expected value to be of type string or array, but found ' + toString(typeOf(input)) + ' instead.');\n }\n };\n Length.prototype.eachChild = function eachChild(fn) {\n fn(this.input);\n };\n Length.prototype.possibleOutputs = function possibleOutputs() {\n return [undefined];\n };\n Length.prototype.serialize = function serialize() {\n var serialized = ['length'];\n this.eachChild(function (child) {\n serialized.push(child.serialize());\n });\n return serialized;\n };\n\n var expressions = {\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var\n };\n function rgba(ctx, ref) {\n var r = ref[0];\n var g = ref[1];\n var b = ref[2];\n var a = ref[3];\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n var alpha = a ? a.evaluate(ctx) : 1;\n var error = validateRGBA(r, g, b, alpha);\n if (error) {\n throw new RuntimeError(error);\n }\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n }\n function has(key, obj) {\n return key in obj;\n }\n function get(key, obj) {\n var v = obj[key];\n return typeof v === 'undefined' ? null : v;\n }\n function binarySearch(v, a, i, j) {\n while (i <= j) {\n var m = i + j >> 1;\n if (a[m] === v) {\n return true;\n }\n if (a[m] > v) {\n j = m - 1;\n } else {\n i = m + 1;\n }\n }\n return false;\n }\n function varargs(type) {\n return { type: type };\n }\n CompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n function (ctx, ref) {\n var v = ref[0];\n throw new RuntimeError(v.evaluate(ctx));\n }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n function (ctx, ref) {\n var v = ref[0];\n return toString(typeOf(v.evaluate(ctx)));\n }\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n function (ctx, ref) {\n var v = ref[0];\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [\n NumberType,\n NumberType,\n NumberType\n ],\n rgba\n ],\n 'rgba': [\n ColorType,\n [\n NumberType,\n NumberType,\n NumberType,\n NumberType\n ],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n function (ctx, ref) {\n var key = ref[0];\n return has(key.evaluate(ctx), ctx.properties());\n }\n ],\n [\n [\n StringType,\n ObjectType\n ],\n function (ctx, ref) {\n var key = ref[0];\n var obj = ref[1];\n return has(key.evaluate(ctx), obj.evaluate(ctx));\n }\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n function (ctx, ref) {\n var key = ref[0];\n return get(key.evaluate(ctx), ctx.properties());\n }\n ],\n [\n [\n StringType,\n ObjectType\n ],\n function (ctx, ref) {\n var key = ref[0];\n var obj = ref[1];\n return get(key.evaluate(ctx), obj.evaluate(ctx));\n }\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n function (ctx, ref) {\n var key = ref[0];\n return get(key.evaluate(ctx), ctx.featureState || {});\n }\n ],\n 'properties': [\n ObjectType,\n [],\n function (ctx) {\n return ctx.properties();\n }\n ],\n 'geometry-type': [\n StringType,\n [],\n function (ctx) {\n return ctx.geometryType();\n }\n ],\n 'id': [\n ValueType,\n [],\n function (ctx) {\n return ctx.id();\n }\n ],\n 'zoom': [\n NumberType,\n [],\n function (ctx) {\n return ctx.globals.zoom;\n }\n ],\n 'heatmap-density': [\n NumberType,\n [],\n function (ctx) {\n return ctx.globals.heatmapDensity || 0;\n }\n ],\n 'line-progress': [\n NumberType,\n [],\n function (ctx) {\n return ctx.globals.lineProgress || 0;\n }\n ],\n 'accumulated': [\n ValueType,\n [],\n function (ctx) {\n return ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated;\n }\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n function (ctx, args) {\n var result = 0;\n for (var i = 0, list = args; i < list.length; i += 1) {\n var arg = list[i];\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n function (ctx, args) {\n var result = 1;\n for (var i = 0, list = args; i < list.length; i += 1) {\n var arg = list[i];\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [\n NumberType,\n NumberType\n ],\n function (ctx, ref) {\n var a = ref[0];\n var b = ref[1];\n return a.evaluate(ctx) - b.evaluate(ctx);\n }\n ],\n [\n [NumberType],\n function (ctx, ref) {\n var a = ref[0];\n return -a.evaluate(ctx);\n }\n ]\n ]\n },\n '/': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n function (ctx, ref) {\n var a = ref[0];\n var b = ref[1];\n return a.evaluate(ctx) / b.evaluate(ctx);\n }\n ],\n '%': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n function (ctx, ref) {\n var a = ref[0];\n var b = ref[1];\n return a.evaluate(ctx) % b.evaluate(ctx);\n }\n ],\n 'ln2': [\n NumberType,\n [],\n function () {\n return Math.LN2;\n }\n ],\n 'pi': [\n NumberType,\n [],\n function () {\n return Math.PI;\n }\n ],\n 'e': [\n NumberType,\n [],\n function () {\n return Math.E;\n }\n ],\n '^': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n function (ctx, ref) {\n var b = ref[0];\n var e = ref[1];\n return Math.pow(b.evaluate(ctx), e.evaluate(ctx));\n }\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var x = ref[0];\n return Math.sqrt(x.evaluate(ctx));\n }\n ],\n 'log10': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.log(n.evaluate(ctx)) / Math.LN10;\n }\n ],\n 'ln': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.log(n.evaluate(ctx));\n }\n ],\n 'log2': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.log(n.evaluate(ctx)) / Math.LN2;\n }\n ],\n 'sin': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.sin(n.evaluate(ctx));\n }\n ],\n 'cos': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.cos(n.evaluate(ctx));\n }\n ],\n 'tan': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.tan(n.evaluate(ctx));\n }\n ],\n 'asin': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.asin(n.evaluate(ctx));\n }\n ],\n 'acos': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.acos(n.evaluate(ctx));\n }\n ],\n 'atan': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.atan(n.evaluate(ctx));\n }\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n function (ctx, args) {\n return Math.min.apply(Math, args.map(function (arg) {\n return arg.evaluate(ctx);\n }));\n }\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n function (ctx, args) {\n return Math.max.apply(Math, args.map(function (arg) {\n return arg.evaluate(ctx);\n }));\n }\n ],\n 'abs': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.abs(n.evaluate(ctx));\n }\n ],\n 'round': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n var v = n.evaluate(ctx);\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.floor(n.evaluate(ctx));\n }\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n function (ctx, ref) {\n var n = ref[0];\n return Math.ceil(n.evaluate(ctx));\n }\n ],\n 'filter-==': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n return ctx.properties()[k.value] === v.value;\n }\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n function (ctx, ref) {\n var v = ref[0];\n return ctx.id() === v.value;\n }\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n function (ctx, ref) {\n var v = ref[0];\n return ctx.geometryType() === v.value;\n }\n ],\n 'filter-<': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n var a = ctx.properties()[k.value];\n var b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n function (ctx, ref) {\n var v = ref[0];\n var a = ctx.id();\n var b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n var a = ctx.properties()[k.value];\n var b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n function (ctx, ref) {\n var v = ref[0];\n var a = ctx.id();\n var b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n var a = ctx.properties()[k.value];\n var b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n function (ctx, ref) {\n var v = ref[0];\n var a = ctx.id();\n var b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n var a = ctx.properties()[k.value];\n var b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n function (ctx, ref) {\n var v = ref[0];\n var a = ctx.id();\n var b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n function (ctx, ref) {\n var k = ref[0];\n return k.value in ctx.properties();\n }\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n function (ctx) {\n return ctx.id() !== null;\n }\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n function (ctx, ref) {\n var v = ref[0];\n return v.value.indexOf(ctx.geometryType()) >= 0;\n }\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n function (ctx, ref) {\n var v = ref[0];\n return v.value.indexOf(ctx.id()) >= 0;\n }\n ],\n 'filter-in-small': [\n BooleanType,\n [\n StringType,\n array(ValueType)\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n return v.value.indexOf(ctx.properties()[k.value]) >= 0;\n }\n ],\n 'filter-in-large': [\n BooleanType,\n [\n StringType,\n array(ValueType)\n ],\n function (ctx, ref) {\n var k = ref[0];\n var v = ref[1];\n return binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1);\n }\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [\n BooleanType,\n BooleanType\n ],\n function (ctx, ref) {\n var a = ref[0];\n var b = ref[1];\n return a.evaluate(ctx) && b.evaluate(ctx);\n }\n ],\n [\n varargs(BooleanType),\n function (ctx, args) {\n for (var i = 0, list = args; i < list.length; i += 1) {\n var arg = list[i];\n if (!arg.evaluate(ctx)) {\n return false;\n }\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [\n BooleanType,\n BooleanType\n ],\n function (ctx, ref) {\n var a = ref[0];\n var b = ref[1];\n return a.evaluate(ctx) || b.evaluate(ctx);\n }\n ],\n [\n varargs(BooleanType),\n function (ctx, args) {\n for (var i = 0, list = args; i < list.length; i += 1) {\n var arg = list[i];\n if (arg.evaluate(ctx)) {\n return true;\n }\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n function (ctx, ref) {\n var b = ref[0];\n return !b.evaluate(ctx);\n }\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n function (ctx, ref) {\n var s = ref[0];\n var isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n function (ctx, ref) {\n var s = ref[0];\n return s.evaluate(ctx).toUpperCase();\n }\n ],\n 'downcase': [\n StringType,\n [StringType],\n function (ctx, ref) {\n var s = ref[0];\n return s.evaluate(ctx).toLowerCase();\n }\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n function (ctx, args) {\n return args.map(function (arg) {\n return toString$1(arg.evaluate(ctx));\n }).join('');\n }\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n function (ctx, ref) {\n var collator = ref[0];\n return collator.evaluate(ctx).resolvedLocale();\n }\n ]\n });\n\n function success(value) {\n return {\n result: 'success',\n value: value\n };\n }\n function error(value) {\n return {\n result: 'error',\n value: value\n };\n }\n\n function supportsPropertyExpression(spec) {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n }\n function supportsZoomExpression(spec) {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n }\n function supportsInterpolation(spec) {\n return !!spec.expression && spec.expression.interpolated;\n }\n\n function getType(val) {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n }\n\n function isFunction$1(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n }\n function identityFunction(x) {\n return x;\n }\n function createFunction(parameters, propertySpec) {\n var isColor = propertySpec.type === 'color';\n var zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n var featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n var zoomDependent = zoomAndFeatureDependent || !featureDependent;\n var type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n if (isColor) {\n parameters = extend({}, parameters);\n if (parameters.stops) {\n parameters.stops = parameters.stops.map(function (stop) {\n return [\n stop[0],\n Color.parse(stop[1])\n ];\n });\n }\n if (parameters.default) {\n parameters.default = Color.parse(parameters.default);\n } else {\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) {\n throw new Error('Unknown color space: ' + parameters.colorSpace);\n }\n var innerFun;\n var hashedStops;\n var categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n hashedStops = Object.create(null);\n for (var i = 0, list = parameters.stops; i < list.length; i += 1) {\n var stop = list[i];\n hashedStops[stop[0]] = stop[1];\n }\n categoricalKeyType = typeof parameters.stops[0][0];\n } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error('Unknown function type \"' + type + '\"');\n }\n if (zoomAndFeatureDependent) {\n var featureFunctions = {};\n var zoomStops = [];\n for (var s = 0; s < parameters.stops.length; s++) {\n var stop$1 = parameters.stops[s];\n var zoom = stop$1[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom: zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([\n stop$1[0].value,\n stop$1[1]\n ]);\n }\n var featureFunctionStops = [];\n for (var i$1 = 0, list$1 = zoomStops; i$1 < list$1.length; i$1 += 1) {\n var z = list$1[i$1];\n featureFunctionStops.push([\n featureFunctions[z].zoom,\n createFunction(featureFunctions[z], propertySpec)\n ]);\n }\n return {\n kind: 'composite',\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, { name: 'linear' }),\n zoomStops: featureFunctionStops.map(function (s) {\n return s[0];\n }),\n evaluate: function evaluate(ref, properties) {\n var zoom = ref.zoom;\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n return {\n kind: 'camera',\n interpolationFactor: type === 'exponential' ? Interpolate.interpolationFactor.bind(undefined, {\n name: 'exponential',\n base: parameters.base !== undefined ? parameters.base : 1\n }) : function () {\n return 0;\n },\n zoomStops: parameters.stops.map(function (s) {\n return s[0];\n }),\n evaluate: function (ref) {\n var zoom = ref.zoom;\n return innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType);\n }\n };\n } else {\n return {\n kind: 'source',\n evaluate: function evaluate(_, feature) {\n var value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n }\n function coalesce(a, b, c) {\n if (a !== undefined) {\n return a;\n }\n if (b !== undefined) {\n return b;\n }\n if (c !== undefined) {\n return c;\n }\n }\n function evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n var evaluated = typeof input === keyType ? hashedStops[input] : undefined;\n return coalesce(evaluated, parameters.default, propertySpec.default);\n }\n function evaluateIntervalFunction(parameters, propertySpec, input) {\n if (getType(input) !== 'number') {\n return coalesce(parameters.default, propertySpec.default);\n }\n var n = parameters.stops.length;\n if (n === 1) {\n return parameters.stops[0][1];\n }\n if (input <= parameters.stops[0][0]) {\n return parameters.stops[0][1];\n }\n if (input >= parameters.stops[n - 1][0]) {\n return parameters.stops[n - 1][1];\n }\n var index = findStopLessThanOrEqualTo$1(parameters.stops, input);\n return parameters.stops[index][1];\n }\n function evaluateExponentialFunction(parameters, propertySpec, input) {\n var base = parameters.base !== undefined ? parameters.base : 1;\n if (getType(input) !== 'number') {\n return coalesce(parameters.default, propertySpec.default);\n }\n var n = parameters.stops.length;\n if (n === 1) {\n return parameters.stops[0][1];\n }\n if (input <= parameters.stops[0][0]) {\n return parameters.stops[0][1];\n }\n if (input >= parameters.stops[n - 1][0]) {\n return parameters.stops[n - 1][1];\n }\n var index = findStopLessThanOrEqualTo$1(parameters.stops, input);\n var t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);\n var outputLower = parameters.stops[index][1];\n var outputUpper = parameters.stops[index + 1][1];\n var interp = interpolate[propertySpec.type] || identityFunction;\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n var colorspace = colorSpaces[parameters.colorSpace];\n interp = function (a, b) {\n return colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n };\n }\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate: function evaluate() {\n var args = [], len = arguments.length;\n while (len--)\n args[len] = arguments[len];\n var evaluatedLower = outputLower.evaluate.apply(undefined, args);\n var evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n return interp(outputLower, outputUpper, t);\n }\n function evaluateIdentityFunction(parameters, propertySpec, input) {\n if (propertySpec.type === 'color') {\n input = Color.parse(input);\n } else if (propertySpec.type === 'formatted') {\n input = Formatted.fromString(input.toString());\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n return coalesce(input, parameters.default, propertySpec.default);\n }\n function findStopLessThanOrEqualTo$1(stops, input) {\n var n = stops.length;\n var lowerIndex = 0;\n var upperIndex = n - 1;\n var currentIndex = 0;\n var currentValue, upperValue;\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex][0];\n upperValue = stops[currentIndex + 1][0];\n if (input === currentValue || input > currentValue && input < upperValue) {\n return currentIndex;\n } else if (currentValue < input) {\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n }\n }\n return Math.max(currentIndex - 1, 0);\n }\n function interpolationFactor(input, base, lowerValue, upperValue) {\n var difference = upperValue - lowerValue;\n var progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n }\n\n var StyleExpression = function StyleExpression(expression, propertySpec) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n };\n StyleExpression.prototype.evaluateWithoutErrorHandling = function evaluateWithoutErrorHandling(globals, feature, featureState) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n return this.expression.evaluate(this._evaluator);\n };\n StyleExpression.prototype.evaluate = function evaluate(globals, feature, featureState) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n try {\n var val = this.expression.evaluate(this._evaluator);\n if (val === null || val === undefined) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError('Expected value to be one of ' + Object.keys(this._enumValues).map(function (v) {\n return JSON.stringify(v);\n }).join(', ') + ', but found ' + JSON.stringify(val) + ' instead.');\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n };\n function isExpression(expression) {\n return Array.isArray(expression) && expression.length > 0 && typeof expression[0] === 'string' && expression[0] in expressions;\n }\n function createExpression(expression, propertySpec) {\n var parser = new ParsingContext(expressions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n var parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n if (!parsed) {\n return error(parser.errors);\n }\n return success(new StyleExpression(parsed, propertySpec));\n }\n var ZoomConstantExpression = function ZoomConstantExpression(kind, expression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n };\n ZoomConstantExpression.prototype.evaluateWithoutErrorHandling = function evaluateWithoutErrorHandling(globals, feature, featureState) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState);\n };\n ZoomConstantExpression.prototype.evaluate = function evaluate(globals, feature, featureState) {\n return this._styleExpression.evaluate(globals, feature, featureState);\n };\n var ZoomDependentExpression = function ZoomDependentExpression(kind, expression, zoomCurve) {\n this.kind = kind;\n this.zoomStops = zoomCurve.labels;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n if (zoomCurve instanceof Interpolate) {\n this._interpolationType = zoomCurve.interpolation;\n }\n };\n ZoomDependentExpression.prototype.evaluateWithoutErrorHandling = function evaluateWithoutErrorHandling(globals, feature, featureState) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState);\n };\n ZoomDependentExpression.prototype.evaluate = function evaluate(globals, feature, featureState) {\n return this._styleExpression.evaluate(globals, feature, featureState);\n };\n ZoomDependentExpression.prototype.interpolationFactor = function interpolationFactor(input, lower, upper) {\n if (this._interpolationType) {\n return Interpolate.interpolationFactor(this._interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n };\n function createPropertyExpression(expression, propertySpec) {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n var parsed = expression.value.expression;\n var isFeatureConstant$1 = isFeatureConstant(parsed);\n if (!isFeatureConstant$1 && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n var isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n var zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n if (!zoomCurve) {\n return success(isFeatureConstant$1 ? new ZoomConstantExpression('constant', expression.value) : new ZoomConstantExpression('source', expression.value));\n }\n return success(isFeatureConstant$1 ? new ZoomDependentExpression('camera', expression.value, zoomCurve) : new ZoomDependentExpression('composite', expression.value, zoomCurve));\n }\n var StylePropertyFunction = function StylePropertyFunction(parameters, specification) {\n this._parameters = parameters;\n this._specification = specification;\n extend(this, createFunction(this._parameters, this._specification));\n };\n StylePropertyFunction.deserialize = function deserialize(serialized) {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n };\n StylePropertyFunction.serialize = function serialize(input) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n };\n function normalizePropertyExpression(value, specification) {\n if (isFunction$1(value)) {\n return new StylePropertyFunction(value, specification);\n } else if (isExpression(value)) {\n var expression = createPropertyExpression(value, specification);\n if (expression.result === 'error') {\n throw new Error(expression.value.map(function (err) {\n return err.key + ': ' + err.message;\n }).join(', '));\n }\n return expression.value;\n } else {\n var constant = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: function () {\n return constant;\n }\n };\n }\n }\n function findZoomCurve(expression) {\n var result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n } else if (expression instanceof Coalesce) {\n for (var i = 0, list = expression.args; i < list.length; i += 1) {\n var arg = list[i];\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n } else if ((expression instanceof Step || expression instanceof Interpolate) && expression.input instanceof CompoundExpression && expression.input.name === 'zoom') {\n result = expression;\n }\n if (result instanceof ParsingError) {\n return result;\n }\n expression.eachChild(function (child) {\n var childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n return result;\n }\n function getExpectedType(spec) {\n var types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType\n };\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n return types[spec.type];\n }\n function getDefaultValue(spec) {\n if (spec.type === 'color' && isFunction$1(spec.default)) {\n return new Color(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n }\n\n function convertLiteral(value) {\n return typeof value === 'object' ? [\n 'literal',\n value\n ] : value;\n }\n function convertFunction(parameters, propertySpec) {\n var stops = parameters.stops;\n if (!stops) {\n return convertIdentityFunction(parameters, propertySpec);\n }\n var zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n var featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n var zoomDependent = zoomAndFeatureDependent || !featureDependent;\n stops = stops.map(function (stop) {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [\n stop[0],\n convertTokenString(stop[1])\n ];\n }\n return [\n stop[0],\n convertLiteral(stop[1])\n ];\n });\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n }\n function convertIdentityFunction(parameters, propertySpec) {\n var get = [\n 'get',\n parameters.property\n ];\n if (parameters.default === undefined) {\n return propertySpec.type === 'string' ? [\n 'string',\n get\n ] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n var expression = [\n propertySpec.type === 'color' ? 'to-color' : propertySpec.type,\n get,\n convertLiteral(parameters.default)\n ];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n }\n function getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl':\n return 'interpolate-hcl';\n case 'lab':\n return 'interpolate-lab';\n default:\n return 'interpolate';\n }\n }\n function convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n var featureFunctionParameters = {};\n var featureFunctionStops = {};\n var zoomStops = [];\n for (var s = 0; s < stops.length; s++) {\n var stop = stops[s];\n var zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom: zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([\n stop[0].value,\n stop[1]\n ]);\n }\n var functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n var expression = [\n getInterpolateOperator(parameters),\n ['linear'],\n ['zoom']\n ];\n for (var i = 0, list = zoomStops; i < list.length; i += 1) {\n var z = list[i];\n var output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n return expression;\n } else {\n var expression$1 = [\n 'step',\n ['zoom']\n ];\n for (var i$1 = 0, list$1 = zoomStops; i$1 < list$1.length; i$1 += 1) {\n var z$1 = list$1[i$1];\n var output$1 = convertPropertyFunction(featureFunctionParameters[z$1], propertySpec, featureFunctionStops[z$1]);\n appendStopPair(expression$1, z$1, output$1, true);\n }\n fixupDegenerateStepCurve(expression$1);\n return expression$1;\n }\n }\n function coalesce$1(a, b) {\n if (a !== undefined) {\n return a;\n }\n if (b !== undefined) {\n return b;\n }\n }\n function convertPropertyFunction(parameters, propertySpec, stops) {\n var type = getFunctionType(parameters, propertySpec);\n var get = [\n 'get',\n parameters.property\n ];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n var expression = ['case'];\n for (var i = 0, list = stops; i < list.length; i += 1) {\n var stop = list[i];\n expression.push([\n '==',\n get,\n stop[0]\n ], stop[1]);\n }\n expression.push(convertLiteral(coalesce$1(parameters.default, propertySpec.default)));\n return expression;\n } else if (type === 'categorical') {\n var expression$1 = [\n 'match',\n get\n ];\n for (var i$1 = 0, list$1 = stops; i$1 < list$1.length; i$1 += 1) {\n var stop$1 = list$1[i$1];\n appendStopPair(expression$1, stop$1[0], stop$1[1], false);\n }\n expression$1.push(convertLiteral(coalesce$1(parameters.default, propertySpec.default)));\n return expression$1;\n } else if (type === 'interval') {\n var expression$2 = [\n 'step',\n [\n 'number',\n get\n ]\n ];\n for (var i$2 = 0, list$2 = stops; i$2 < list$2.length; i$2 += 1) {\n var stop$2 = list$2[i$2];\n appendStopPair(expression$2, stop$2[0], stop$2[1], true);\n }\n fixupDegenerateStepCurve(expression$2);\n return parameters.default === undefined ? expression$2 : [\n 'case',\n [\n '==',\n [\n 'typeof',\n get\n ],\n 'number'\n ],\n expression$2,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n var base = parameters.base !== undefined ? parameters.base : 1;\n var expression$3 = [\n getInterpolateOperator(parameters),\n [\n 'exponential',\n base\n ],\n [\n 'number',\n get\n ]\n ];\n for (var i$3 = 0, list$3 = stops; i$3 < list$3.length; i$3 += 1) {\n var stop$3 = list$3[i$3];\n appendStopPair(expression$3, stop$3[0], stop$3[1], false);\n }\n return parameters.default === undefined ? expression$3 : [\n 'case',\n [\n '==',\n [\n 'typeof',\n get\n ],\n 'number'\n ],\n expression$3,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error('Unknown property function type ' + type);\n }\n }\n function convertZoomFunction(parameters, propertySpec, stops, input) {\n if (input === void 0)\n input = ['zoom'];\n var type = getFunctionType(parameters, propertySpec);\n var expression;\n var isStep = false;\n if (type === 'interval') {\n expression = [\n 'step',\n input\n ];\n isStep = true;\n } else if (type === 'exponential') {\n var base = parameters.base !== undefined ? parameters.base : 1;\n expression = [\n getInterpolateOperator(parameters),\n [\n 'exponential',\n base\n ],\n input\n ];\n } else {\n throw new Error('Unknown zoom function type \"' + type + '\"');\n }\n for (var i = 0, list = stops; i < list.length; i += 1) {\n var stop = list[i];\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n }\n function fixupDegenerateStepCurve(expression) {\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n }\n function appendStopPair(curve, input, output, isStep) {\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n }\n function getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n }\n }\n function convertTokenString(s) {\n var result = ['concat'];\n var re = /{([^{}]+)}/g;\n var pos = 0;\n for (var match = re.exec(s); match !== null; match = re.exec(s)) {\n var literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0) {\n result.push(literal);\n }\n result.push([\n 'get',\n match[1]\n ]);\n }\n if (result.length === 1) {\n return s;\n }\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return [\n 'to-string',\n result[1]\n ];\n }\n return result;\n }\n\n function isExpressionFilter(filter) {\n if (filter === true || filter === false) {\n return true;\n }\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n case 'in':\n case '!in':\n case '!has':\n case 'none':\n return false;\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n case 'any':\n case 'all':\n for (var i = 0, list = filter.slice(1); i < list.length; i += 1) {\n var f = list[i];\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n default:\n return true;\n }\n }\n var filterSpec = {\n 'type': 'boolean',\n 'default': false,\n 'transition': false,\n 'property-type': 'data-driven',\n 'expression': {\n 'interpolated': false,\n 'parameters': [\n 'zoom',\n 'feature'\n ]\n }\n };\n function createFilter(filter) {\n if (filter === null || filter === undefined) {\n return function () {\n return true;\n };\n }\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n var compiled = createExpression(filter, filterSpec);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map(function (err) {\n return err.key + ': ' + err.message;\n }).join(', '));\n } else {\n return function (globalProperties, feature) {\n return compiled.value.evaluate(globalProperties, feature);\n };\n }\n }\n function compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n function convertFilter(filter) {\n if (!filter) {\n return true;\n }\n var op = filter[0];\n if (filter.length <= 1) {\n return op !== 'any';\n }\n var converted = op === '==' ? convertComparisonOp(filter[1], filter[2], '==') : op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || op === '>=' ? convertComparisonOp(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) : op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : op === 'in' ? convertInOp(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp(filter[1]) : op === '!has' ? convertNegation(convertHasOp(filter[1])) : true;\n return converted;\n }\n function convertComparisonOp(property, value, op) {\n switch (property) {\n case '$type':\n return [\n 'filter-type-' + op,\n value\n ];\n case '$id':\n return [\n 'filter-id-' + op,\n value\n ];\n default:\n return [\n 'filter-' + op,\n property,\n value\n ];\n }\n }\n function convertDisjunctionOp(filters) {\n return ['any'].concat(filters.map(convertFilter));\n }\n function convertInOp(property, values) {\n if (values.length === 0) {\n return false;\n }\n switch (property) {\n case '$type':\n return [\n 'filter-type-in',\n [\n 'literal',\n values\n ]\n ];\n case '$id':\n return [\n 'filter-id-in',\n [\n 'literal',\n values\n ]\n ];\n default:\n if (values.length > 200 && !values.some(function (v) {\n return typeof v !== typeof values[0];\n })) {\n return [\n 'filter-in-large',\n property,\n [\n 'literal',\n values.sort(compare)\n ]\n ];\n } else {\n return [\n 'filter-in-small',\n property,\n [\n 'literal',\n values\n ]\n ];\n }\n }\n }\n function convertHasOp(property) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return ['filter-has-id'];\n default:\n return [\n 'filter-has',\n property\n ];\n }\n }\n function convertNegation(filter) {\n return [\n '!',\n filter\n ];\n }\n\n function convertFilter$1(filter) {\n return _convertFilter(filter, {});\n }\n function _convertFilter(filter, expectedTypes) {\n var ref$1;\n if (isExpressionFilter(filter)) {\n return filter;\n }\n if (!filter) {\n return true;\n }\n var op = filter[0];\n if (filter.length <= 1) {\n return op !== 'any';\n }\n var converted;\n if (op === '==' || op === '!=' || op === '<' || op === '>' || op === '<=' || op === '>=') {\n var ref = filter;\n var property = ref[1];\n var value = ref[2];\n converted = convertComparisonOp$1(property, value, op, expectedTypes);\n } else if (op === 'any') {\n var children = filter.slice(1).map(function (f) {\n var types = {};\n var child = _convertFilter(f, types);\n var typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : [\n 'case',\n typechecks,\n child,\n false\n ];\n });\n return ['any'].concat(children);\n } else if (op === 'all') {\n var children$1 = filter.slice(1).map(function (f) {\n return _convertFilter(f, expectedTypes);\n });\n return children$1.length > 1 ? ['all'].concat(children$1) : (ref$1 = []).concat.apply(ref$1, children$1);\n } else if (op === 'none') {\n return [\n '!',\n _convertFilter(['any'].concat(filter.slice(1)), {})\n ];\n } else if (op === 'in') {\n converted = convertInOp$1(filter[1], filter.slice(2));\n } else if (op === '!in') {\n converted = convertInOp$1(filter[1], filter.slice(2), true);\n } else if (op === 'has') {\n converted = convertHasOp$1(filter[1]);\n } else if (op === '!has') {\n converted = [\n '!',\n convertHasOp$1(filter[1])\n ];\n } else {\n converted = true;\n }\n return converted;\n }\n function runtimeTypeChecks(expectedTypes) {\n var conditions = [];\n for (var property in expectedTypes) {\n var get = property === '$id' ? ['id'] : [\n 'get',\n property\n ];\n conditions.push([\n '==',\n [\n 'typeof',\n get\n ],\n expectedTypes[property]\n ]);\n }\n if (conditions.length === 0) {\n return true;\n }\n if (conditions.length === 1) {\n return conditions[0];\n }\n return ['all'].concat(conditions);\n }\n function convertComparisonOp$1(property, value, op, expectedTypes) {\n var get;\n if (property === '$type') {\n return [\n op,\n ['geometry-type'],\n value\n ];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = [\n 'get',\n property\n ];\n }\n if (expectedTypes && value !== null) {\n var type = typeof value;\n expectedTypes[property] = type;\n }\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n [\n 'has',\n property\n ],\n [\n '==',\n get,\n null\n ]\n ];\n } else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n [\n '!',\n [\n 'has',\n property\n ]\n ],\n [\n '!=',\n get,\n null\n ]\n ];\n }\n return [\n op,\n get,\n value\n ];\n }\n function convertInOp$1(property, values, negate) {\n if (negate === void 0)\n negate = false;\n if (values.length === 0) {\n return negate;\n }\n var get;\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = [\n 'get',\n property\n ];\n }\n var uniformTypes = true;\n var type = typeof values[0];\n for (var i = 0, list = values; i < list.length; i += 1) {\n var value = list[i];\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n if (uniformTypes && (type === 'string' || type === 'number')) {\n return [\n 'match',\n get,\n values,\n !negate,\n negate\n ];\n }\n return [negate ? 'all' : 'any'].concat(values.map(function (v) {\n return [\n negate ? '!=' : '==',\n get,\n v\n ];\n }));\n }\n function convertHasOp$1(property) {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return [\n '!=',\n ['id'],\n null\n ];\n } else {\n return [\n 'has',\n property\n ];\n }\n }\n\n function migrateToExpressions (style) {\n var converted = [];\n eachLayer(style, function (layer) {\n if (layer.filter) {\n layer.filter = convertFilter$1(layer.filter);\n }\n });\n eachProperty(style, {\n paint: true,\n layout: true\n }, function (ref) {\n var path = ref.path;\n var value = ref.value;\n var reference = ref.reference;\n var set = ref.set;\n if (isExpression(value)) {\n return;\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n return style;\n }\n\n function migrate (style) {\n var migrated = false;\n if (style.version === 7) {\n style = migrateToV8(style);\n migrated = true;\n }\n if (style.version === 8) {\n migrated = migrateToExpressions(style);\n migrated = true;\n }\n if (!migrated) {\n throw new Error('cannot migrate from', style.version);\n }\n return style;\n }\n\n function composite (style) {\n var styleIDs = [];\n var sourceIDs = [];\n var compositedSourceLayers = [];\n for (var id in style.sources) {\n var source = style.sources[id];\n if (source.type !== 'vector') {\n continue;\n }\n var match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match) {\n continue;\n }\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n if (styleIDs.length < 2) {\n return style;\n }\n styleIDs.forEach(function (id) {\n delete style.sources[id];\n });\n var compositeID = sourceIDs.join(',');\n style.sources[compositeID] = {\n 'type': 'vector',\n 'url': 'mapbox://' + compositeID\n };\n style.layers.forEach(function (layer) {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n } else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n return style;\n }\n\n function deepEqual(a, b) {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) {\n return false;\n }\n var keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) {\n return false;\n }\n for (var key in a) {\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a === b;\n }\n\n var operations = {\n setStyle: 'setStyle',\n addLayer: 'addLayer',\n removeLayer: 'removeLayer',\n setPaintProperty: 'setPaintProperty',\n setLayoutProperty: 'setLayoutProperty',\n setFilter: 'setFilter',\n addSource: 'addSource',\n removeSource: 'removeSource',\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n setLayerZoomRange: 'setLayerZoomRange',\n setLayerProperty: 'setLayerProperty',\n setCenter: 'setCenter',\n setZoom: 'setZoom',\n setBearing: 'setBearing',\n setPitch: 'setPitch',\n setSprite: 'setSprite',\n setGlyphs: 'setGlyphs',\n setTransition: 'setTransition',\n setLight: 'setLight'\n };\n function addSource(sourceId, after, commands) {\n commands.push({\n command: operations.addSource,\n args: [\n sourceId,\n after[sourceId]\n ]\n });\n }\n function removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({\n command: operations.removeSource,\n args: [sourceId]\n });\n sourcesRemoved[sourceId] = true;\n }\n function updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n }\n function canUpdateGeoJSON(before, after, sourceId) {\n var prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) {\n continue;\n }\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) {\n continue;\n }\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n }\n function diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n var sourceId;\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) {\n continue;\n }\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) {\n continue;\n }\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!deepEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({\n command: operations.setGeoJSONSourceData,\n args: [\n sourceId,\n after[sourceId].data\n ]\n });\n } else {\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n }\n function diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n var prop;\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) {\n continue;\n }\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({\n command: command,\n args: [\n layerId,\n prop,\n after[prop],\n klass\n ]\n });\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) {\n continue;\n }\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({\n command: command,\n args: [\n layerId,\n prop,\n after[prop],\n klass\n ]\n });\n }\n }\n }\n function pluckId(layer) {\n return layer.id;\n }\n function indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n }\n function diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n var beforeOrder = before.map(pluckId);\n var afterOrder = after.map(pluckId);\n var beforeIndex = before.reduce(indexById, {});\n var afterIndex = after.reduce(indexById, {});\n var tracker = beforeOrder.slice();\n var clean = Object.create(null);\n var i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({\n command: operations.removeLayer,\n args: [layerId]\n });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n d++;\n }\n }\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[afterOrder.length - 1 - i];\n if (tracker[tracker.length - 1 - i] === layerId) {\n continue;\n }\n if (beforeIndex.hasOwnProperty(layerId)) {\n commands.push({\n command: operations.removeLayer,\n args: [layerId]\n });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n d++;\n }\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({\n command: operations.addLayer,\n args: [\n afterIndex[layerId],\n insertBeforeLayerId\n ]\n });\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n if (clean[layerId] || deepEqual(beforeLayer, afterLayer)) {\n continue;\n }\n if (!deepEqual(beforeLayer.source, afterLayer.source) || !deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !deepEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({\n command: operations.removeLayer,\n args: [layerId]\n });\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({\n command: operations.addLayer,\n args: [\n afterLayer,\n insertBeforeLayerId\n ]\n });\n continue;\n }\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!deepEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({\n command: operations.setFilter,\n args: [\n layerId,\n afterLayer.filter\n ]\n });\n }\n if (!deepEqual(beforeLayer.minzoom, afterLayer.minzoom) || !deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({\n command: operations.setLayerZoomRange,\n args: [\n layerId,\n afterLayer.minzoom,\n afterLayer.maxzoom\n ]\n });\n }\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) {\n continue;\n }\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') {\n continue;\n }\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({\n command: operations.setLayerProperty,\n args: [\n layerId,\n prop,\n afterLayer[prop]\n ]\n });\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) {\n continue;\n }\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') {\n continue;\n }\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({\n command: operations.setLayerProperty,\n args: [\n layerId,\n prop,\n afterLayer[prop]\n ]\n });\n }\n }\n }\n }\n function diffStyles(before, after) {\n if (!before) {\n return [{\n command: operations.setStyle,\n args: [after]\n }];\n }\n var commands = [];\n try {\n if (!deepEqual(before.version, after.version)) {\n return [{\n command: operations.setStyle,\n args: [after]\n }];\n }\n if (!deepEqual(before.center, after.center)) {\n commands.push({\n command: operations.setCenter,\n args: [after.center]\n });\n }\n if (!deepEqual(before.zoom, after.zoom)) {\n commands.push({\n command: operations.setZoom,\n args: [after.zoom]\n });\n }\n if (!deepEqual(before.bearing, after.bearing)) {\n commands.push({\n command: operations.setBearing,\n args: [after.bearing]\n });\n }\n if (!deepEqual(before.pitch, after.pitch)) {\n commands.push({\n command: operations.setPitch,\n args: [after.pitch]\n });\n }\n if (!deepEqual(before.sprite, after.sprite)) {\n commands.push({\n command: operations.setSprite,\n args: [after.sprite]\n });\n }\n if (!deepEqual(before.glyphs, after.glyphs)) {\n commands.push({\n command: operations.setGlyphs,\n args: [after.glyphs]\n });\n }\n if (!deepEqual(before.transition, after.transition)) {\n commands.push({\n command: operations.setTransition,\n args: [after.transition]\n });\n }\n if (!deepEqual(before.light, after.light)) {\n commands.push({\n command: operations.setLight,\n args: [after.light]\n });\n }\n var sourcesRemoved = {};\n var removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n var beforeLayers = [];\n if (before.layers) {\n before.layers.forEach(function (layer) {\n if (sourcesRemoved[layer.source]) {\n commands.push({\n command: operations.removeLayer,\n args: [layer.id]\n });\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n diffLayers(beforeLayers, after.layers, commands);\n } catch (e) {\n console.warn('Unable to compute style diff:', e);\n commands = [{\n command: operations.setStyle,\n args: [after]\n }];\n }\n return commands;\n }\n\n var ValidationError = function ValidationError(key, value, message, identifier) {\n this.message = (key ? key + ': ' : '') + message;\n if (identifier) {\n this.identifier = identifier;\n }\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n };\n\n function ParsingError$1(error) {\n this.error = error;\n this.message = error.message;\n var match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n\n function validateConstants(options) {\n var key = options.key;\n var constants = options.value;\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n } else {\n return [];\n }\n }\n\n function unbundle(value) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n }\n function deepUnbundle(value) {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n }\n return unbundle(value);\n }\n\n function validateObject(options) {\n var key = options.key;\n var object = options.value;\n var elementSpecs = options.valueSpec || {};\n var elementValidators = options.objectElementValidators || {};\n var style = options.style;\n var styleSpec = options.styleSpec;\n var errors = [];\n var type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, 'object expected, ' + type + ' found')];\n }\n for (var objectKey in object) {\n var elementSpecKey = objectKey.split('.')[0];\n var elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n var validateElement = void 0;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validate;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validate;\n } else {\n errors.push(new ValidationError(key, object[objectKey], 'unknown property \"' + objectKey + '\"'));\n continue;\n }\n errors = errors.concat(validateElement({\n key: (key ? key + '.' : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style: style,\n styleSpec: styleSpec,\n object: object,\n objectKey: objectKey\n }, object));\n }\n for (var elementSpecKey$1 in elementSpecs) {\n if (elementValidators[elementSpecKey$1]) {\n continue;\n }\n if (elementSpecs[elementSpecKey$1].required && elementSpecs[elementSpecKey$1]['default'] === undefined && object[elementSpecKey$1] === undefined) {\n errors.push(new ValidationError(key, object, 'missing required property \"' + elementSpecKey$1 + '\"'));\n }\n }\n return errors;\n }\n\n function validateArray(options) {\n var array = options.value;\n var arraySpec = options.valueSpec;\n var style = options.style;\n var styleSpec = options.styleSpec;\n var key = options.key;\n var validateArrayElement = options.arrayElementValidator || validate;\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, 'array expected, ' + getType(array) + ' found')];\n }\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, 'array length ' + arraySpec.length + ' expected, length ' + array.length + ' found')];\n }\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, 'array length at least ' + arraySpec['min-length'] + ' expected, length ' + array.length + ' found')];\n }\n var arrayElementSpec = {\n 'type': arraySpec.value,\n 'values': arraySpec.values\n };\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = arraySpec.function;\n }\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n var errors = [];\n for (var i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array: array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n style: style,\n styleSpec: styleSpec,\n key: key + '[' + i + ']'\n }));\n }\n return errors;\n }\n\n function validateNumber(options) {\n var key = options.key;\n var value = options.value;\n var valueSpec = options.valueSpec;\n var type = getType(value);\n if (type !== 'number') {\n return [new ValidationError(key, value, 'number expected, ' + type + ' found')];\n }\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [new ValidationError(key, value, value + ' is less than the minimum value ' + valueSpec.minimum)];\n }\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [new ValidationError(key, value, value + ' is greater than the maximum value ' + valueSpec.maximum)];\n }\n return [];\n }\n\n function validateFunction(options) {\n var functionValueSpec = options.valueSpec;\n var functionType = unbundle(options.value.type);\n var stopKeyType;\n var stopDomainValues = {};\n var previousStopDomainValue;\n var previousStopDomainZoom;\n var isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n var isPropertyFunction = !isZoomFunction;\n var isZoomAndPropertyFunction = getType(options.value.stops) === 'array' && getType(options.value.stops[0]) === 'array' && getType(options.value.stops[0][0]) === 'object';\n var errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n return errors;\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n var errors = [];\n var value = options.value;\n errors = errors.concat(validateArray({\n key: options.key,\n value: value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n return errors;\n }\n function validateFunctionStop(options) {\n var errors = [];\n var value = options.value;\n var key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, 'array expected, ' + getType(value) + ' found')];\n }\n if (value.length !== 2) {\n return [new ValidationError(key, value, 'array length 2 expected, length ' + value.length + ' found')];\n }\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, 'object expected, ' + getType(value[0]) + ' found')];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: key + '[0]',\n value: value[0],\n valueSpec: { zoom: {} },\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n zoom: validateNumber,\n value: validateStopDomainValue\n }\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: key + '[0]',\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(key + '[1]', value[1], 'expressions are not allowed in function stops.')]);\n }\n return errors.concat(validate({\n key: key + '[1]',\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n function validateStopDomainValue(options, stop) {\n var type = getType(options.value);\n var value = unbundle(options.value);\n var reportValue = options.value !== null ? options.value : stop;\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, type + ' stop domain type must match previous stop domain type ' + stopKeyType)];\n }\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n if (type !== 'number' && functionType !== 'categorical') {\n var message = 'number expected, ' + type + ' found';\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, 'integer expected, found ' + value)];\n }\n if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n if (functionType === 'categorical' && value in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[value] = true;\n }\n return [];\n }\n function validateFunctionDefault(options) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n }\n\n function validateExpression(options) {\n var expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map(function (error) {\n return new ValidationError('' + options.key + error.key, options.value, error.message);\n });\n }\n var expressionObj = expression.value.expression || expression.value._styleExpression.expression;\n if (options.expressionContext === 'property' && options.propertyKey === 'text-font' && expressionObj.possibleOutputs().indexOf(undefined) !== -1) {\n return [new ValidationError(options.key, options.value, 'Invalid data expression for \"' + options.propertyKey + '\". Output values must be contained as literals within the expression.')];\n }\n if (options.expressionContext === 'property' && options.propertyType === 'layout' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n }\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, [\n 'zoom',\n 'feature-state'\n ])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n return [];\n }\n\n function validateBoolean(options) {\n var value = options.value;\n var key = options.key;\n var type = getType(value);\n if (type !== 'boolean') {\n return [new ValidationError(key, value, 'boolean expected, ' + type + ' found')];\n }\n return [];\n }\n\n function validateColor(options) {\n var key = options.key;\n var value = options.value;\n var type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, 'color expected, ' + type + ' found')];\n }\n if (csscolorparser_1(value) === null) {\n return [new ValidationError(key, value, 'color expected, \"' + value + '\" found')];\n }\n return [];\n }\n\n function validateEnum(options) {\n var key = options.key;\n var value = options.value;\n var valueSpec = options.valueSpec;\n var errors = [];\n if (Array.isArray(valueSpec.values)) {\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, 'expected one of [' + valueSpec.values.join(', ') + '], ' + JSON.stringify(value) + ' found'));\n }\n } else {\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, 'expected one of [' + Object.keys(valueSpec.values).join(', ') + '], ' + JSON.stringify(value) + ' found'));\n }\n }\n return errors;\n }\n\n function validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: { value: 'boolean' }\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n }\n function validateNonExpressionFilter(options) {\n var value = options.value;\n var key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, 'array expected, ' + getType(value) + ' found')];\n }\n var styleSpec = options.styleSpec;\n var type;\n var errors = [];\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n errors = errors.concat(validateEnum({\n key: key + '[0]',\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, '\"$type\" cannot be use with operator \"' + value[0] + '\"'));\n }\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, 'filter array for operator \"' + value[0] + '\" must have 3 elements'));\n }\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(key + '[1]', value[1], 'string expected, ' + type + ' found'));\n }\n }\n for (var i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: key + '[' + i + ']',\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(key + '[' + i + ']', value[i], 'string, number, or boolean expected, ' + type + ' found'));\n }\n }\n break;\n case 'any':\n case 'all':\n case 'none':\n for (var i$1 = 1; i$1 < value.length; i$1++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: key + '[' + i$1 + ']',\n value: value[i$1],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, 'filter array for \"' + value[0] + '\" operator must have 2 elements'));\n } else if (type !== 'string') {\n errors.push(new ValidationError(key + '[1]', value[1], 'string expected, ' + type + ' found'));\n }\n break;\n }\n return errors;\n }\n\n function validateProperty(options, propertyType) {\n var key = options.key;\n var style = options.style;\n var styleSpec = options.styleSpec;\n var value = options.value;\n var propertyKey = options.objectKey;\n var layerSpec = styleSpec[propertyType + '_' + options.layerType];\n if (!layerSpec) {\n return [];\n }\n var transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key: key,\n value: value,\n valueSpec: styleSpec.transition,\n style: style,\n styleSpec: styleSpec\n });\n }\n var valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, 'unknown property \"' + propertyKey + '\"')];\n }\n var tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(key, value, '\"' + propertyKey + '\" does not support interpolation syntax\\n' + 'Use an identity property function instead: `{ \"type\": \"identity\", \"property\": ' + JSON.stringify(tokenMatch[1]) + ' }`.')];\n }\n var errors = [];\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction$1(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n return errors.concat(validate({\n key: options.key,\n value: value,\n valueSpec: valueSpec,\n style: style,\n styleSpec: styleSpec,\n expressionContext: 'property',\n propertyType: propertyType,\n propertyKey: propertyKey\n }));\n }\n\n function validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n }\n\n function validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n }\n\n function validateLayer(options) {\n var errors = [];\n var layer = options.value;\n var key = options.key;\n var style = options.style;\n var styleSpec = options.styleSpec;\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n var type = unbundle(layer.type);\n var ref = unbundle(layer.ref);\n if (layer.id) {\n var layerId = unbundle(layer.id);\n for (var i = 0; i < options.arrayIndex; i++) {\n var otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, 'duplicate layer id \"' + layer.id + '\", previously used at line ' + otherLayer.id.__line__));\n }\n }\n }\n if ('ref' in layer) {\n [\n 'type',\n 'source',\n 'source-layer',\n 'filter',\n 'layout'\n ].forEach(function (p) {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], '\"' + p + '\" is prohibited for ref layers'));\n }\n });\n var parent;\n style.layers.forEach(function (layer) {\n if (unbundle(layer.id) === ref) {\n parent = layer;\n }\n });\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, 'ref layer \"' + ref + '\" not found'));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (type !== 'background') {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else {\n var source = style.sources && style.sources[layer.source];\n var sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, 'source \"' + layer.source + '\" not found'));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, 'layer \"' + layer.id + '\" requires a raster source'));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, 'layer \"' + layer.id + '\" requires a vector source'));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, 'layer \"' + layer.id + '\" must specify a \"source-layer\"'));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (type === 'line' && layer.paint && layer.paint['line-gradient'] && (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, 'layer \"' + layer.id + '\" specifies a line-gradient, which requires a GeoJSON source with `lineMetrics` enabled.'));\n }\n }\n }\n errors = errors.concat(validateObject({\n key: key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*': function _() {\n return [];\n },\n type: function type() {\n return validate({\n key: key + '.type',\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout: function layout(options) {\n return validateObject({\n layer: layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*': function _(options) {\n return validateLayoutProperty(extend({ layerType: type }, options));\n }\n }\n });\n },\n paint: function paint(options) {\n return validateObject({\n layer: layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*': function _(options) {\n return validatePaintProperty(extend({ layerType: type }, options));\n }\n }\n });\n }\n }\n }));\n return errors;\n }\n\n function validateSource(options) {\n var value = options.value;\n var key = options.key;\n var styleSpec = options.styleSpec;\n var style = options.style;\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n var type = unbundle(value.type);\n var errors;\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key: key,\n value: value,\n valueSpec: styleSpec['source_' + type.replace('-', '_')],\n style: options.style,\n styleSpec: styleSpec\n });\n if ('url' in value) {\n for (var prop in value) {\n if ([\n 'type',\n 'url',\n 'tileSize'\n ].indexOf(prop) < 0) {\n errors.push(new ValidationError(key + '.' + prop, value[prop], 'a source with a \"url\" property may not include a \"' + prop + '\" property'));\n }\n }\n }\n return errors;\n case 'geojson':\n errors = validateObject({\n key: key,\n value: value,\n valueSpec: styleSpec.source_geojson,\n style: style,\n styleSpec: styleSpec\n });\n if (value.cluster) {\n for (var prop$1 in value.clusterProperties) {\n var ref = value.clusterProperties[prop$1];\n var operator = ref[0];\n var mapExpr = ref[1];\n var reduceExpr = typeof operator === 'string' ? [\n operator,\n ['accumulated'],\n [\n 'get',\n prop$1\n ]\n ] : operator;\n errors.push.apply(errors, validateExpression({\n key: key + '.' + prop$1 + '.map',\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push.apply(errors, validateExpression({\n key: key + '.' + prop$1 + '.reduce',\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n case 'video':\n return validateObject({\n key: key,\n value: value,\n valueSpec: styleSpec.source_video,\n style: style,\n styleSpec: styleSpec\n });\n case 'image':\n return validateObject({\n key: key,\n value: value,\n valueSpec: styleSpec.source_image,\n style: style,\n styleSpec: styleSpec\n });\n case 'canvas':\n return [new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')];\n default:\n return validateEnum({\n key: key + '.type',\n value: value.type,\n valueSpec: {\n values: [\n 'vector',\n 'raster',\n 'raster-dem',\n 'geojson',\n 'video',\n 'image'\n ]\n },\n style: style,\n styleSpec: styleSpec\n });\n }\n }\n\n function validateLight(options) {\n var light = options.value;\n var styleSpec = options.styleSpec;\n var lightSpec = styleSpec.light;\n var style = options.style;\n var errors = [];\n var rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, 'object expected, ' + rootType + ' found')]);\n return errors;\n }\n for (var key in light) {\n var transitionMatch = key.match(/^(.*)-transition$/);\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key: key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style: style,\n styleSpec: styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key: key,\n value: light[key],\n valueSpec: lightSpec[key],\n style: style,\n styleSpec: styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], 'unknown property \"' + key + '\"')]);\n }\n }\n return errors;\n }\n\n function validateString(options) {\n var value = options.value;\n var key = options.key;\n var type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, 'string expected, ' + type + ' found')];\n }\n return [];\n }\n\n function validateFormatted(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n }\n\n var VALIDATORS = {\n '*': function _() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'constants': validateConstants,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'string': validateString,\n 'formatted': validateFormatted\n };\n function validate(options) {\n var value = options.value;\n var valueSpec = options.valueSpec;\n var styleSpec = options.styleSpec;\n if (valueSpec.expression && isFunction$1(unbundle(value))) {\n return validateFunction(options);\n } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n } else {\n var valid = validateObject(extend({}, options, { valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec }));\n return valid;\n }\n }\n\n function validateGlyphsURL (options) {\n var value = options.value;\n var key = options.key;\n var errors = validateString(options);\n if (errors.length) {\n return errors;\n }\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n return errors;\n }\n\n function validateStyleMin(style, styleSpec) {\n styleSpec = styleSpec || v8;\n var errors = [];\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec: styleSpec,\n style: style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*': function _() {\n return [];\n }\n }\n }));\n if (style.constants) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style.constants,\n style: style,\n styleSpec: styleSpec\n }));\n }\n return sortErrors(errors);\n }\n validateStyleMin.source = wrapCleanErrors(validateSource);\n validateStyleMin.light = wrapCleanErrors(validateLight);\n validateStyleMin.layer = wrapCleanErrors(validateLayer);\n validateStyleMin.filter = wrapCleanErrors(validateFilter);\n validateStyleMin.paintProperty = wrapCleanErrors(validatePaintProperty);\n validateStyleMin.layoutProperty = wrapCleanErrors(validateLayoutProperty);\n function sortErrors(errors) {\n return [].concat(errors).sort(function (a, b) {\n return a.line - b.line;\n });\n }\n function wrapCleanErrors(inner) {\n return function () {\n var args = [], len = arguments.length;\n while (len--)\n args[len] = arguments[len];\n return sortErrors(inner.apply(this, args));\n };\n }\n\n var jsonlint = createCommonjsModule(function (module, exports) {\n /* parser generated by jison 0.4.15 */\n /*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n */\n var parser = (function(){\n var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v){ }return o},$V0=[1,12],$V1=[1,13],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,14],$V6=[1,15],$V7=[14,18,22,24],$V8=[18,22],$V9=[22,24];\n var parser = {trace: function trace() { },\n yy: {},\n symbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\n terminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\n productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n /* this == yyval */\n\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n // replace escaped characters with actual character\n this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\n .replace(/\\\\n/g,'\\n')\n .replace(/\\\\r/g,'\\r')\n .replace(/\\\\t/g,'\\t')\n .replace(/\\\\v/g,'\\v')\n .replace(/\\\\f/g,'\\f')\n .replace(/\\\\b/g,'\\b'));\n this.$.__line__ = this._$.first_line;\n \n break;\n case 2:\n\n this.$ = new Number(yytext);\n this.$.__line__ = this._$.first_line;\n \n break;\n case 3:\n\n this.$ = null;\n \n break;\n case 4:\n\n this.$ = new Boolean(true);\n this.$.__line__ = this._$.first_line;\n \n break;\n case 5:\n\n this.$ = new Boolean(false);\n this.$.__line__ = this._$.first_line;\n \n break;\n case 6:\n return this.$ = $$[$0-1];\n break;\n case 13:\n this.$ = {}; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n });\n break;\n case 14: case 19:\n this.$ = $$[$0-1]; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n });\n break;\n case 15:\n this.$ = [$$[$0-2], $$[$0]];\n break;\n case 16:\n this.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\n break;\n case 17:\n this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\n break;\n case 18:\n this.$ = []; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n });\n break;\n case 20:\n this.$ = [$$[$0]];\n break;\n case 21:\n this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\n break;\n }\n },\n table: [{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,12:1,13:2,15:7,16:8,17:$V5,23:$V6},{1:[3]},{14:[1,16]},o($V7,[2,7]),o($V7,[2,8]),o($V7,[2,9]),o($V7,[2,10]),o($V7,[2,11]),o($V7,[2,12]),o($V7,[2,3]),o($V7,[2,4]),o($V7,[2,5]),o([14,18,21,22,24],[2,1]),o($V7,[2,2]),{3:20,4:$V0,18:[1,17],19:18,20:19},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:23,15:7,16:8,17:$V5,23:$V6,24:[1,21],25:22},{1:[2,6]},o($V7,[2,13]),{18:[1,24],22:[1,25]},o($V8,[2,16]),{21:[1,26]},o($V7,[2,18]),{22:[1,28],24:[1,27]},o($V9,[2,20]),o($V7,[2,14]),{3:20,4:$V0,20:29},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:30,15:7,16:8,17:$V5,23:$V6},o($V7,[2,19]),{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:31,15:7,16:8,17:$V5,23:$V6},o($V8,[2,17]),o($V8,[2,15]),o($V9,[2,21])],\n defaultActions: {16:[2,6]},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n throw new Error(str);\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n \n function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }};\n /* generated by jison-lex 0.3.4 */\n var lexer = (function(){\n var lexer = ({\n\n EOF:1,\n\n parseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n // resets the lexer, sets new input\n setInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n // consumes and returns one char from the input\n input:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n // unshifts one char (or a string) into the input\n unput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n // When called from action, caches matched text and appends it on next action\n more:function () {\n this._more = true;\n return this;\n },\n\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n // retain first n characters of the match\n less:function (n) {\n this.unput(this.match.slice(n));\n },\n\n // displays already matched input, i.e. for error messages\n pastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n // displays upcoming input, i.e. for error messages\n upcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n // return next match in input\n next:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n // return next match that has a token\n lex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n // pop the previously active lexer condition state off the condition stack\n popState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n // alias for begin(condition)\n pushState:function pushState(condition) {\n this.begin(condition);\n },\n\n // return the number of states currently on the stack\n stateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n switch($avoiding_name_collisions) {\n case 0:/* skip whitespace */\n break;\n case 1:return 6\n break;\n case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\n break;\n case 3:return 17\n break;\n case 4:return 18\n break;\n case 5:return 23\n break;\n case 6:return 24\n break;\n case 7:return 22\n break;\n case 8:return 21\n break;\n case 9:return 10\n break;\n case 10:return 11\n break;\n case 11:return 8\n break;\n case 12:return 14\n break;\n case 13:return 'INVALID'\n break;\n }\n },\n rules: [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],\n conditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}}\n });\n return lexer;\n })();\n parser.lexer = lexer;\n function Parser () {\n this.yy = {};\n }\n Parser.prototype = parser;parser.Parser = Parser;\n return new Parser;\n })();\n\n\n if (typeof commonjsRequire !== 'undefined' && 'object' !== 'undefined') {\n exports.parser = parser;\n exports.Parser = parser.Parser;\n exports.parse = function () { return parser.parse.apply(parser, arguments); };\n }\n });\n var jsonlint_1 = jsonlint.parser;\n var jsonlint_2 = jsonlint.Parser;\n var jsonlint_3 = jsonlint.parse;\n\n function validateStyle(style, styleSpec) {\n if (style instanceof String || typeof style === 'string' || style instanceof Buffer) {\n try {\n style = jsonlint.parse(style.toString());\n } catch (e) {\n return [new ParsingError$1(e)];\n }\n }\n styleSpec = styleSpec || v8;\n return validateStyleMin(style, styleSpec);\n }\n\n var expression$1 = {\n StyleExpression: StyleExpression,\n isExpression: isExpression,\n createExpression: createExpression,\n createPropertyExpression: createPropertyExpression,\n normalizePropertyExpression: normalizePropertyExpression,\n ZoomConstantExpression: ZoomConstantExpression,\n ZoomDependentExpression: ZoomDependentExpression,\n StylePropertyFunction: StylePropertyFunction\n };\n var styleFunction = {\n convertFunction: convertFunction,\n createFunction: createFunction,\n isFunction: isFunction$1\n };\n var visit = {\n eachSource: eachSource,\n eachLayer: eachLayer,\n eachProperty: eachProperty\n };\n validateStyle.parsed = validateStyle;\n validateStyle.latest = validateStyle;\n\n exports.Color = Color;\n exports.ParsingError = ParsingError$1;\n exports.ValidationError = ValidationError;\n exports.composite = composite;\n exports.diff = diffStyles;\n exports.expression = expression$1;\n exports.featureFilter = createFilter;\n exports.format = format;\n exports.function = styleFunction;\n exports.latest = v8;\n exports.migrate = migrate;\n exports.v8 = v8;\n exports.validate = validateStyle;\n exports.visit = visit;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=index.js.map\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","'use strict';\nvar proj4 = require('proj4');\nif (proj4.default) {\n proj4 = proj4.default;\n}\nvar unzip = require('./unzip');\nvar binaryAjax = require('./binaryajax');\nvar parseShp = require('./parseShp');\nvar parseDbf = require('parsedbf');\nvar Promise = require('lie');\nvar Cache = require('lru-cache');\nvar cache = new Cache({\n max: 20\n});\n\nfunction toBuffer(b) {\n if (!b) {\n throw new Error('forgot to pass buffer');\n }\n if (Buffer.isBuffer(b)) {\n return b;\n }\n if (b instanceof global.ArrayBuffer) {\n return new Buffer(b);\n }\n if (b.buffer instanceof global.ArrayBuffer) {\n if (b.BYTES_PER_ELEMENT === 1) {\n return new Buffer(b);\n }\n return new Buffer(b.buffer);\n }\n}\n\nfunction shp(base, whiteList) {\n if (typeof base === 'string' && cache.has(base)) {\n return Promise.resolve(cache.get(base));\n }\n return shp.getShapefile(base, whiteList).then(function(resp) {\n if (typeof base === 'string') {\n cache.set(base, resp);\n }\n return resp;\n });\n}\nshp.combine = function(arr) {\n var out = {};\n out.type = 'FeatureCollection';\n out.features = [];\n var i = 0;\n var len = arr[0].length;\n while (i < len) {\n out.features.push({\n 'type': 'Feature',\n 'geometry': arr[0][i],\n 'properties': arr[1][i]\n });\n i++;\n }\n return out;\n};\nshp.parseZip = function(buffer, whiteList) {\n var key;\n buffer = toBuffer(buffer);\n var zip = unzip(buffer);\n var names = [];\n whiteList = whiteList || [];\n for (key in zip) {\n if (key.indexOf('__MACOSX') !== -1) {\n continue;\n }\n if (key.slice(-3).toLowerCase() === 'shp') {\n names.push(key.slice(0, -4));\n zip[key.slice(0, -3) + key.slice(-3).toLowerCase()] = zip[key];\n } else if (key.slice(-3).toLowerCase() === 'prj') {\n zip[key.slice(0, -3) + key.slice(-3).toLowerCase()] = proj4(zip[key]);\n } else if (key.slice(-4).toLowerCase() === 'json' || whiteList.indexOf(key.split('.').pop()) > -1) {\n names.push(key.slice(0, -3) + key.slice(-3).toLowerCase());\n } else if (key.slice(-3).toLowerCase() === 'dbf' || key.slice(-3).toLowerCase() === 'cpg') {\n zip[key.slice(0, -3) + key.slice(-3).toLowerCase()] = zip[key];\n }\n }\n if (!names.length) {\n throw new Error('no layers founds');\n }\n var geojson = names.map(function(name) {\n var parsed, dbf;\n var lastDotIdx = name.lastIndexOf('.');\n if (lastDotIdx > -1 && name.slice(lastDotIdx).indexOf('json') > -1) {\n parsed = JSON.parse(zip[name]);\n parsed.fileName = name.slice(0, lastDotIdx);\n } else if (whiteList.indexOf(name.slice(lastDotIdx + 1)) > -1) {\n parsed = zip[name];\n parsed.fileName = name;\n } else {\n if (zip[name + '.dbf']) {\n dbf = parseDbf(zip[name + '.dbf'], zip[name + '.cpg']);\n }\n parsed = shp.combine([parseShp(zip[name + '.shp'], zip[name + '.prj']), dbf]);\n parsed.fileName = name;\n }\n return parsed;\n });\n if (geojson.length === 1) {\n return geojson[0];\n } else {\n return geojson;\n }\n};\n\nfunction getZip(base, whiteList) {\n return binaryAjax(base).then(function(a) {\n return shp.parseZip(a, whiteList);\n });\n}\nshp.getShapefile = function(base, whiteList) {\n if (typeof base === 'string') {\n if (base.slice(-4).toLowerCase() === '.zip') {\n return getZip(base, whiteList);\n } else {\n return Promise.all([\n Promise.all([\n binaryAjax(base + '.shp'),\n binaryAjax(base + '.prj')\n ]).then(function(args) {\n return parseShp(args[0], args[1] ? proj4(args[1]) : false);\n }),\n Promise.all([\n binaryAjax(base + '.dbf'),\n binaryAjax(base + '.cpg')\n ]).then(function(args) {\n return parseDbf(args[0], args[1]);\n })\n ]).then(shp.combine);\n }\n } else {\n return new Promise(function(resolve) {\n resolve(shp.parseZip(base));\n });\n }\n};\nshp.parseShp = function(shp, prj) {\n shp = toBuffer(shp);\n if (Buffer.isBuffer(prj)) {\n prj = prj.toString();\n }\n if (typeof prj === 'string') {\n prj = proj4(prj);\n return parseShp(shp, prj);\n } else {\n return parseShp(shp);\n }\n};\nshp.parseDbf = function(dbf, cpg) {\n dbf = toBuffer(dbf);\n return parseDbf(dbf, cpg);\n};\nmodule.exports = shp;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var toGeoJSON = (function() {\n 'use strict';\n\n var removeSpace = /\\s*/g,\n trimSpace = /^\\s*|\\s*$/g,\n splitSpace = /\\s+/;\n // generate a short, numeric hash of a string\n function okhash(x) {\n if (!x || !x.length) return 0;\n for (var i = 0, h = 0; i < x.length; i++) {\n h = ((h << 5) - h) + x.charCodeAt(i) | 0;\n } return h;\n }\n // all Y children of X\n function get(x, y) { return x.getElementsByTagName(y); }\n function attr(x, y) { return x.getAttribute(y); }\n function attrf(x, y) { return parseFloat(attr(x, y)); }\n // one Y child of X, if any, otherwise null\n function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }\n // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize\n function norm(el) { if (el.normalize) { el.normalize(); } return el; }\n // cast array x into numbers\n function numarray(x) {\n for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); }\n return o;\n }\n // get the content of a text node, if any\n function nodeVal(x) {\n if (x) { norm(x); }\n return (x && x.textContent) || '';\n }\n // get the contents of multiple text nodes, if present\n function getMulti(x, ys) {\n var o = {}, n, k;\n for (k = 0; k < ys.length; k++) {\n n = get1(x, ys[k]);\n if (n) o[ys[k]] = nodeVal(n);\n }\n return o;\n }\n // add properties of Y to X, overwriting if present in both\n function extend(x, y) { for (var k in y) x[k] = y[k]; }\n // get one coordinate from a coordinate array, if any\n function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }\n // get all coordinates from a coordinate array as [[],[]]\n function coord(v) {\n var coords = v.replace(trimSpace, '').split(splitSpace),\n o = [];\n for (var i = 0; i < coords.length; i++) {\n o.push(coord1(coords[i]));\n }\n return o;\n }\n function coordPair(x) {\n var ll = [attrf(x, 'lon'), attrf(x, 'lat')],\n ele = get1(x, 'ele'),\n // handle namespaced attribute in browser\n heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'),\n time = get1(x, 'time'),\n e;\n if (ele) {\n e = parseFloat(nodeVal(ele));\n if (!isNaN(e)) {\n ll.push(e);\n }\n }\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null\n };\n }\n\n // create a new feature collection parent object\n function fc() {\n return {\n type: 'FeatureCollection',\n features: []\n };\n }\n\n var serializer;\n if (typeof XMLSerializer !== 'undefined') {\n /* istanbul ignore next */\n serializer = new XMLSerializer();\n // only require xmldom in a node environment\n } else if (typeof exports === 'object' && typeof process === 'object' && !process.browser) {\n serializer = new (require('xmldom').XMLSerializer)();\n }\n function xml2str(str) {\n // IE9 will create a new XMLSerializer but it'll crash immediately.\n // This line is ignored because we don't run coverage tests in IE9\n /* istanbul ignore next */\n if (str.xml !== undefined) return str.xml;\n return serializer.serializeToString(str);\n }\n\n var t = {\n kml: function(doc) {\n\n var gj = fc(),\n // styleindex keeps track of hashed styles in order to match features\n styleIndex = {}, styleByHash = {},\n // stylemapindex keeps track of style maps to expose in properties\n styleMapIndex = {},\n // atomic geospatial types supported by KML - MultiGeometry is\n // handled separately\n geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'],\n // all root placemarks in the file\n placemarks = get(doc, 'Placemark'),\n styles = get(doc, 'Style'),\n styleMaps = get(doc, 'StyleMap');\n\n for (var k = 0; k < styles.length; k++) {\n var hash = okhash(xml2str(styles[k])).toString(16);\n styleIndex['#' + attr(styles[k], 'id')] = hash;\n styleByHash[hash] = styles[k];\n }\n for (var l = 0; l < styleMaps.length; l++) {\n styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16);\n var pairs = get(styleMaps[l], 'Pair');\n var pairsMap = {};\n for (var m = 0; m < pairs.length; m++) {\n pairsMap[nodeVal(get1(pairs[m], 'key'))] = nodeVal(get1(pairs[m], 'styleUrl'));\n }\n styleMapIndex['#' + attr(styleMaps[l], 'id')] = pairsMap;\n\n }\n for (var j = 0; j < placemarks.length; j++) {\n gj.features = gj.features.concat(getPlacemark(placemarks[j]));\n }\n function kmlColor(v) {\n var color, opacity;\n v = v || '';\n if (v.substr(0, 1) === '#') { v = v.substr(1); }\n if (v.length === 6 || v.length === 3) { color = v; }\n if (v.length === 8) {\n opacity = parseInt(v.substr(0, 2), 16) / 255;\n color = '#' + v.substr(6, 2) +\n v.substr(4, 2) +\n v.substr(2, 2);\n }\n return [color, isNaN(opacity) ? undefined : opacity];\n }\n function gxCoord(v) { return numarray(v.split(' ')); }\n function gxCoords(root) {\n var elems = get(root, 'coord', 'gx'), coords = [], times = [];\n if (elems.length === 0) elems = get(root, 'gx:coord');\n for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));\n var timeElems = get(root, 'when');\n for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j]));\n return {\n coords: coords,\n times: times\n };\n }\n function getGeometry(root) {\n var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = [];\n if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); }\n if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); }\n if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); }\n for (i = 0; i < geotypes.length; i++) {\n geomNodes = get(root, geotypes[i]);\n if (geomNodes) {\n for (j = 0; j < geomNodes.length; j++) {\n geomNode = geomNodes[j];\n if (geotypes[i] === 'Point') {\n geoms.push({\n type: 'Point',\n coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))\n });\n } else if (geotypes[i] === 'LineString') {\n geoms.push({\n type: 'LineString',\n coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))\n });\n } else if (geotypes[i] === 'Polygon') {\n var rings = get(geomNode, 'LinearRing'),\n coords = [];\n for (k = 0; k < rings.length; k++) {\n coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));\n }\n geoms.push({\n type: 'Polygon',\n coordinates: coords\n });\n } else if (geotypes[i] === 'Track' ||\n geotypes[i] === 'gx:Track') {\n var track = gxCoords(geomNode);\n geoms.push({\n type: 'LineString',\n coordinates: track.coords\n });\n if (track.times.length) coordTimes.push(track.times);\n }\n }\n }\n }\n return {\n geoms: geoms,\n coordTimes: coordTimes\n };\n }\n function getPlacemark(root) {\n var geomsAndTimes = getGeometry(root), i, properties = {},\n name = nodeVal(get1(root, 'name')),\n address = nodeVal(get1(root, 'address')),\n styleUrl = nodeVal(get1(root, 'styleUrl')),\n description = nodeVal(get1(root, 'description')),\n timeSpan = get1(root, 'TimeSpan'),\n timeStamp = get1(root, 'TimeStamp'),\n extendedData = get1(root, 'ExtendedData'),\n lineStyle = get1(root, 'LineStyle'),\n polyStyle = get1(root, 'PolyStyle'),\n visibility = get1(root, 'visibility');\n\n if (!geomsAndTimes.geoms.length) return [];\n if (name) properties.name = name;\n if (address) properties.address = address;\n if (styleUrl) {\n if (styleUrl[0] !== '#') {\n styleUrl = '#' + styleUrl;\n }\n\n properties.styleUrl = styleUrl;\n if (styleIndex[styleUrl]) {\n properties.styleHash = styleIndex[styleUrl];\n }\n if (styleMapIndex[styleUrl]) {\n properties.styleMapHash = styleMapIndex[styleUrl];\n properties.styleHash = styleIndex[styleMapIndex[styleUrl].normal];\n }\n // Try to populate the lineStyle or polyStyle since we got the style hash\n var style = styleByHash[properties.styleHash];\n if (style) {\n if (!lineStyle) lineStyle = get1(style, 'LineStyle');\n if (!polyStyle) polyStyle = get1(style, 'PolyStyle');\n }\n }\n if (description) properties.description = description;\n if (timeSpan) {\n var begin = nodeVal(get1(timeSpan, 'begin'));\n var end = nodeVal(get1(timeSpan, 'end'));\n properties.timespan = { begin: begin, end: end };\n }\n if (timeStamp) {\n properties.timestamp = nodeVal(get1(timeStamp, 'when'));\n }\n if (lineStyle) {\n var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))),\n color = linestyles[0],\n opacity = linestyles[1],\n width = parseFloat(nodeVal(get1(lineStyle, 'width')));\n if (color) properties.stroke = color;\n if (!isNaN(opacity)) properties['stroke-opacity'] = opacity;\n if (!isNaN(width)) properties['stroke-width'] = width;\n }\n if (polyStyle) {\n var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))),\n pcolor = polystyles[0],\n popacity = polystyles[1],\n fill = nodeVal(get1(polyStyle, 'fill')),\n outline = nodeVal(get1(polyStyle, 'outline'));\n if (pcolor) properties.fill = pcolor;\n if (!isNaN(popacity)) properties['fill-opacity'] = popacity;\n if (fill) properties['fill-opacity'] = fill === '1' ? properties['fill-opacity'] || 1 : 0;\n if (outline) properties['stroke-opacity'] = outline === '1' ? properties['stroke-opacity'] || 1 : 0;\n }\n if (extendedData) {\n var datas = get(extendedData, 'Data'),\n simpleDatas = get(extendedData, 'SimpleData');\n\n for (i = 0; i < datas.length; i++) {\n properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));\n }\n for (i = 0; i < simpleDatas.length; i++) {\n properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);\n }\n }\n if (visibility) {\n properties.visibility = nodeVal(visibility);\n }\n if (geomsAndTimes.coordTimes.length) {\n properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ?\n geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes;\n }\n var feature = {\n type: 'Feature',\n geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : {\n type: 'GeometryCollection',\n geometries: geomsAndTimes.geoms\n },\n properties: properties\n };\n if (attr(root, 'id')) feature.id = attr(root, 'id');\n return [feature];\n }\n return gj;\n },\n gpx: function(doc) {\n var i,\n tracks = get(doc, 'trk'),\n routes = get(doc, 'rte'),\n waypoints = get(doc, 'wpt'),\n // a feature collection\n gj = fc(),\n feature;\n for (i = 0; i < tracks.length; i++) {\n feature = getTrack(tracks[i]);\n if (feature) gj.features.push(feature);\n }\n for (i = 0; i < routes.length; i++) {\n feature = getRoute(routes[i]);\n if (feature) gj.features.push(feature);\n }\n for (i = 0; i < waypoints.length; i++) {\n gj.features.push(getPoint(waypoints[i]));\n }\n function getPoints(node, pointname) {\n var pts = get(node, pointname),\n line = [],\n times = [],\n heartRates = [],\n l = pts.length;\n if (l < 2) return {}; // Invalid line in GeoJSON\n for (var i = 0; i < l; i++) {\n var c = coordPair(pts[i]);\n line.push(c.coordinates);\n if (c.time) times.push(c.time);\n if (c.heartRate) heartRates.push(c.heartRate);\n }\n return {\n line: line,\n times: times,\n heartRates: heartRates\n };\n }\n function getTrack(node) {\n var segments = get(node, 'trkseg'),\n track = [],\n times = [],\n heartRates = [],\n line;\n for (var i = 0; i < segments.length; i++) {\n line = getPoints(segments[i], 'trkpt');\n if (line) {\n if (line.line) track.push(line.line);\n if (line.times && line.times.length) times.push(line.times);\n if (line.heartRates && line.heartRates.length) heartRates.push(line.heartRates);\n }\n }\n if (track.length === 0) return;\n var properties = getProperties(node);\n extend(properties, getLineStyle(get1(node, 'extensions')));\n if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times;\n if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates;\n return {\n type: 'Feature',\n properties: properties,\n geometry: {\n type: track.length === 1 ? 'LineString' : 'MultiLineString',\n coordinates: track.length === 1 ? track[0] : track\n }\n };\n }\n function getRoute(node) {\n var line = getPoints(node, 'rtept');\n if (!line.line) return;\n var prop = getProperties(node);\n extend(prop, getLineStyle(get1(node, 'extensions')));\n var routeObj = {\n type: 'Feature',\n properties: prop,\n geometry: {\n type: 'LineString',\n coordinates: line.line\n }\n };\n return routeObj;\n }\n function getPoint(node) {\n var prop = getProperties(node);\n extend(prop, getMulti(node, ['sym']));\n return {\n type: 'Feature',\n properties: prop,\n geometry: {\n type: 'Point',\n coordinates: coordPair(node).coordinates\n }\n };\n }\n function getLineStyle(extensions) {\n var style = {};\n if (extensions) {\n var lineStyle = get1(extensions, 'line');\n if (lineStyle) {\n var color = nodeVal(get1(lineStyle, 'color')),\n opacity = parseFloat(nodeVal(get1(lineStyle, 'opacity'))),\n width = parseFloat(nodeVal(get1(lineStyle, 'width')));\n if (color) style.stroke = color;\n if (!isNaN(opacity)) style['stroke-opacity'] = opacity;\n // GPX width is in mm, convert to px with 96 px per inch\n if (!isNaN(width)) style['stroke-width'] = width * 96 / 25.4;\n }\n }\n return style;\n }\n function getProperties(node) {\n var prop = getMulti(node, ['name', 'cmt', 'desc', 'type', 'time', 'keywords']),\n links = get(node, 'link');\n if (links.length) prop.links = [];\n for (var i = 0, link; i < links.length; i++) {\n link = { href: attr(links[i], 'href') };\n extend(link, getMulti(links[i], ['text', 'type']));\n prop.links.push(link);\n }\n return prop;\n }\n return gj;\n }\n };\n return t;\n})();\n\nif (typeof module !== 'undefined') module.exports = toGeoJSON;","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","exports.f = require('./_wks');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nvar VectorTileLayer = require('./vectortilelayer');\n\nmodule.exports = VectorTile;\n\nfunction VectorTile(pbf, end) {\n this.layers = pbf.readFields(readTile, {}, end);\n}\n\nfunction readTile(tag, layers, pbf) {\n if (tag === 3) {\n var layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length) layers[layer.name] = layer;\n }\n}\n\n","'use strict';\n\nmodule.exports = Point;\n\n/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class Point\n * @param {Number} x the x-coordinate. this could be longitude or screen\n * pixels, or any other sort of unit.\n * @param {Number} y the y-coordinate. this could be latitude or screen\n * pixels, or any other sort of unit.\n * @example\n * var point = new Point(-77, 38);\n */\nfunction Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone: function() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add: function(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub: function(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint: function(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint: function(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n mult: function(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {Point} k factor\n * @return {Point} output point\n */\n div: function(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate: function(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {Number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround: function(a,p) { return this.clone()._rotateAround(a,p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {Array} m transformation matrix\n * @return {Point} output point\n */\n matMult: function(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit: function() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp: function() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round: function() { return this.clone()._round(); },\n\n /**\n * Return the magitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {Number} magnitude\n */\n mag: function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals: function(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {Number} distance\n */\n dist: function(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {Number} distance\n */\n distSqr: function(p) {\n var dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {Number} angle\n */\n angle: function() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleTo: function(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {Number} angle\n */\n angleWith: function(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /*\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {Number} x the x-coordinate\n * @param {Number} y the y-coordinate\n * @return {Number} the angle in radians\n */\n angleWithSep: function(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n _matMult: function(m) {\n var x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _add: function(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n _sub: function(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n _mult: function(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n _div: function(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n _multByPoint: function(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n _divByPoint: function(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit: function() {\n this._div(this.mag());\n return this;\n },\n\n _perp: function() {\n var y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n _rotate: function(angle) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n _rotateAround: function(angle, p) {\n var cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round: function() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n }\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, or an unknown type, return it unchanged\n * @param {Array|Point|*} a any kind of input value\n * @return {Point} constructed point, or passed-through value.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (a) {\n if (a instanceof Point) {\n return a;\n }\n if (Array.isArray(a)) {\n return new Point(a[0], a[1]);\n }\n return a;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","'use strict';\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input, utf8) {\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n while (i < input.length) {\n\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n }\n else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\n\n }\n\n return output;\n};\n\n// public method for decoding\nexports.decode = function(input, utf8) {\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output = output + String.fromCharCode(chr1);\n\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n\n }\n\n return output;\n\n};\n","'use strict';\nvar support = require('./support');\nvar utils = require('./utils');\nvar crc32 = require('./crc32');\nvar signature = require('./signature');\nvar defaults = require('./defaults');\nvar base64 = require('./base64');\nvar compressions = require('./compressions');\nvar CompressedObject = require('./compressedObject');\nvar nodeBuffer = require('./nodeBuffer');\nvar utf8 = require('./utf8');\nvar StringWriter = require('./stringWriter');\nvar Uint8ArrayWriter = require('./uint8ArrayWriter');\n\n/**\n * Returns the raw data of a ZipObject, decompress the content if necessary.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getRawData = function(file) {\n if (file._data instanceof CompressedObject) {\n file._data = file._data.getContent();\n file.options.binary = true;\n file.options.base64 = false;\n\n if (utils.getTypeOf(file._data) === \"uint8array\") {\n var copy = file._data;\n // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array.\n // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file).\n file._data = new Uint8Array(copy.length);\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n if (copy.length !== 0) {\n file._data.set(copy, 0);\n }\n }\n }\n return file._data;\n};\n\n/**\n * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it.\n * @param {ZipObject} file the file to use.\n * @return {String|ArrayBuffer|Uint8Array|Buffer} the data.\n */\nvar getBinaryData = function(file) {\n var result = getRawData(file),\n type = utils.getTypeOf(result);\n if (type === \"string\") {\n if (!file.options.binary) {\n // unicode text !\n // unicode string => binary string is a painful process, check if we can avoid it.\n if (support.nodebuffer) {\n return nodeBuffer(result, \"utf-8\");\n }\n }\n return file.asBinary();\n }\n return result;\n};\n\n/**\n * Transform this._data into a string.\n * @param {function} filter a function String -> String, applied if not null on the result.\n * @return {String} the string representing this._data.\n */\nvar dataToString = function(asUTF8) {\n var result = getRawData(this);\n if (result === null || typeof result === \"undefined\") {\n return \"\";\n }\n // if the data is a base64 string, we decode it before checking the encoding !\n if (this.options.base64) {\n result = base64.decode(result);\n }\n if (asUTF8 && this.options.binary) {\n // JSZip.prototype.utf8decode supports arrays as input\n // skip to array => string step, utf8decode will do it.\n result = out.utf8decode(result);\n }\n else {\n // no utf8 transformation, do the array => string step.\n result = utils.transformTo(\"string\", result);\n }\n\n if (!asUTF8 && !this.options.binary) {\n result = utils.transformTo(\"string\", out.utf8encode(result));\n }\n return result;\n};\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this.options = options;\n\n /*\n * This object contains initial values for dir and date.\n * With them, we can check if the user changed the deprecated metadata in\n * `ZipObject#options` or not.\n */\n this._initialMetadata = {\n dir : options.dir,\n date : options.date\n };\n};\n\nZipObject.prototype = {\n /**\n * Return the content as UTF8 string.\n * @return {string} the UTF8 string.\n */\n asText: function() {\n return dataToString.call(this, true);\n },\n /**\n * Returns the binary content.\n * @return {string} the content as binary.\n */\n asBinary: function() {\n return dataToString.call(this, false);\n },\n /**\n * Returns the content as a nodejs Buffer.\n * @return {Buffer} the content as a Buffer.\n */\n asNodeBuffer: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"nodebuffer\", result);\n },\n /**\n * Returns the content as an Uint8Array.\n * @return {Uint8Array} the content as an Uint8Array.\n */\n asUint8Array: function() {\n var result = getBinaryData(this);\n return utils.transformTo(\"uint8array\", result);\n },\n /**\n * Returns the content as an ArrayBuffer.\n * @return {ArrayBuffer} the content as an ArrayBufer.\n */\n asArrayBuffer: function() {\n return this.asUint8Array().buffer;\n }\n};\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\",\n i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Transforms the (incomplete) options from the user into the complete\n * set of options to create a file.\n * @private\n * @param {Object} o the options from the user.\n * @return {Object} the complete set of options.\n */\nvar prepareFileAttrs = function(o) {\n o = o || {};\n if (o.base64 === true && (o.binary === null || o.binary === undefined)) {\n o.binary = true;\n }\n o = utils.extend(o, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) o.compression = o.compression.toUpperCase();\n\n return o;\n};\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} o the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, o) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n o = prepareFileAttrs(o);\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n if (o.dir || data === null || typeof data === \"undefined\") {\n o.base64 = false;\n o.binary = false;\n data = null;\n dataType = null;\n }\n else if (dataType === \"string\") {\n if (o.binary && !o.base64) {\n // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask\n if (o.optimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = utils.string2binary(data);\n }\n }\n }\n else { // arraybuffer, uint8array, ...\n o.base64 = false;\n o.binary = true;\n\n if (!dataType && !(data instanceof CompressedObject)) {\n throw new Error(\"The data of '\" + name + \"' is in an unsupported format !\");\n }\n\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = utils.transformTo(\"uint8array\", data);\n }\n }\n\n var object = new ZipObject(name, data, o);\n this.files[name] = object;\n return object;\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) == '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) != \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n createFolders = (typeof createFolders !== 'undefined') ? createFolders : false;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n * Generate a JSZip.CompressedObject for a given zipOject.\n * @param {ZipObject} file the object to read.\n * @param {JSZip.compression} compression the compression to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {JSZip.CompressedObject} the compressed result.\n */\nvar generateCompressedObjectFrom = function(file, compression, compressionOptions) {\n var result = new CompressedObject(),\n content;\n\n // the data has not been decompressed, we might reuse things !\n if (file._data instanceof CompressedObject) {\n result.uncompressedSize = file._data.uncompressedSize;\n result.crc32 = file._data.crc32;\n\n if (result.uncompressedSize === 0 || file.dir) {\n compression = compressions['STORE'];\n result.compressedContent = \"\";\n result.crc32 = 0;\n }\n else if (file._data.compressionMethod === compression.magic) {\n result.compressedContent = file._data.getCompressedContent();\n }\n else {\n content = file._data.getContent();\n // need to decompress / recompress\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);\n }\n }\n else {\n // have uncompressed data\n content = getBinaryData(file);\n if (!content || content.length === 0 || file.dir) {\n compression = compressions['STORE'];\n content = \"\";\n }\n result.uncompressedSize = content.length;\n result.crc32 = crc32(content);\n result.compressedContent = compression.compress(utils.transformTo(compression.compressInputType, content), compressionOptions);\n }\n\n result.compressedSize = result.compressedContent.length;\n result.compressionMethod = compression.magic;\n\n return result;\n};\n\n\n\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {string} name the file name.\n * @param {ZipObject} file the file content.\n * @param {JSZip.CompressedObject} compressedObject the compressed object.\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {object} the zip parts.\n */\nvar generateZipParts = function(name, file, compressedObject, offset, platform, encodeFileName) {\n var data = compressedObject.compressedContent,\n useCustomEncoding = encodeFileName !== utf8.utf8encode,\n encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment || \"\",\n encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n o = file.options,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir, date;\n\n\n // handle the deprecated options.dir\n if (file._initialMetadata.dir !== file.dir) {\n dir = file.dir;\n } else {\n dir = o.dir;\n }\n\n // handle the deprecated options.date\n if(file._initialMetadata.date !== file.date) {\n date = file.date;\n } else {\n date = o.date;\n }\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getSeconds() / 2;\n\n dosDate = date.getFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(this.crc32(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n // set bit 11 if utf8\n header += !useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment) ? \"\\x00\\x08\" : \"\\x00\\x00\";\n // compression method\n header += compressedObject.compressionMethod;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(compressedObject.crc32, 4);\n // compressed size\n header += decToHex(compressedObject.compressedSize, 4);\n // uncompressed size\n header += decToHex(compressedObject.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord,\n compressedObject: compressedObject\n };\n};\n\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * Read an existing zip and merge the data in the current JSZip object.\n * The implementation is in jszip-load.js, don't forget to include it.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} stream The stream to load\n * @param {Object} options Options for loading the stream.\n * options.base64 : is the stream in base64 ? default : false\n * @return {JSZip} the current JSZip object\n */\n load: function(stream, options) {\n throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\");\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [],\n filename, relativePath, file, fileClone;\n for (filename in this.files) {\n if (!this.files.hasOwnProperty(filename)) {\n continue;\n }\n file = this.files[filename];\n // return a new object, don't let the user mess with our internal objects :)\n fileClone = new ZipObject(file.name, file._data, utils.extend(file.options));\n relativePath = filename.slice(this.root.length, filename.length);\n if (filename.slice(0, this.root.length) === this.root && // the file is in the current root\n search(relativePath, fileClone)) { // and the file matches the function\n result.push(fileClone);\n }\n }\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (utils.isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n return this.filter(function(relativePath, file) {\n return !file.dir && relativePath === name;\n })[0] || null;\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (utils.isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) != \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - base64, (deprecated, use type instead) true to generate base64.\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate: function(options) {\n options = utils.extend(options || {}, {\n base64: true,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"base64\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8.utf8encode\n });\n\n utils.checkSupport(options.type);\n\n // accept nodejs `process.platform`\n if(\n options.platform === 'darwin' ||\n options.platform === 'freebsd' ||\n options.platform === 'linux' ||\n options.platform === 'sunos'\n ) {\n options.platform = \"UNIX\";\n }\n if (options.platform === 'win32') {\n options.platform = \"DOS\";\n }\n\n var zipData = [],\n localDirLength = 0,\n centralDirLength = 0,\n writer, i,\n encodedComment = utils.transformTo(\"string\", options.encodeFileName(options.comment || this.comment || \"\"));\n\n // first, generate all the zip parts.\n for (var name in this.files) {\n if (!this.files.hasOwnProperty(name)) {\n continue;\n }\n var file = this.files[name];\n\n var compressionName = file.options.compression || options.compression.toUpperCase();\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n\n var compressedObject = generateCompressedObjectFrom.call(this, file, compression, compressionOptions);\n\n var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength, options.platform, options.encodeFileName);\n localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;\n centralDirLength += zipPart.dirRecord.length;\n zipData.push(zipPart);\n }\n\n var dirEnd = \"\";\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(zipData.length, 2) +\n // total number of entries in the central directory\n decToHex(zipData.length, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n\n // we have all the parts (and the total length)\n // time to create a writer !\n var typeName = options.type.toLowerCase();\n if(typeName===\"uint8array\"||typeName===\"arraybuffer\"||typeName===\"blob\"||typeName===\"nodebuffer\") {\n writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);\n }else{\n writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);\n }\n\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].fileRecord);\n writer.append(zipData[i].compressedObject.compressedContent);\n }\n for (i = 0; i < zipData.length; i++) {\n writer.append(zipData[i].dirRecord);\n }\n\n writer.append(dirEnd);\n\n var zip = writer.finalize();\n\n\n\n switch(options.type.toLowerCase()) {\n // case \"zip is an Uint8Array\"\n case \"uint8array\" :\n case \"arraybuffer\" :\n case \"nodebuffer\" :\n return utils.transformTo(options.type.toLowerCase(), zip);\n case \"blob\" :\n return utils.arrayBuffer2Blob(utils.transformTo(\"arraybuffer\", zip), options.mimeType);\n // case \"zip is a string\"\n case \"base64\" :\n return (options.base64) ? base64.encode(zip) : zip;\n default : // case \"string\" :\n return zip;\n }\n\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n crc32: function (input, crc) {\n return crc32(input, crc);\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8encode: function (string) {\n return utils.transformTo(\"string\", utf8.utf8encode(string));\n },\n\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n utf8decode: function (input) {\n return utf8.utf8decode(input);\n }\n};\nmodule.exports = out;\n","'use strict';\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compress: function(content, compressionOptions) {\n return content; // no compression\n },\n uncompress: function(content) {\n return content; // no compression\n },\n compressInputType: null,\n uncompressInputType: null\n};\nexports.DEFLATE = require('./flate');\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\nmodule.exports = function(data, encoding){\n return new Buffer(data, encoding);\n};\nmodule.exports.test = function(b){\n return Buffer.isBuffer(b);\n};\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 1 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim);\n triangles.push(ear.i / dim);\n triangles.push(next.i / dim);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(ear, triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var p = ear.next.next;\n\n while (p !== ear.prev) {\n if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // triangle bbox; min & max are calculated like this for speed\n var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p !== ear.prev && p !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n !== ear.prev && n !== ear.next &&\n pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim);\n triangles.push(p.i / dim);\n triangles.push(b.i / dim);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return p;\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize);\n earcutLinked(c, triangles, dim, minX, minY, invSize);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n eliminateHole(queue[i], outerNode);\n outerNode = filterPoints(outerNode, outerNode.next);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n outerNode = findHoleBridge(hole, outerNode);\n if (outerNode) {\n var b = splitPolygon(outerNode, hole);\n filterPoints(b, b.next);\n }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n if (x === hx) {\n if (hy === p.y) return p;\n if (hy === p.next.y) return p.next;\n }\n m = p.x < p.next.x ? p : p.next;\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n if (hx === qx) return m.prev; // hole touches outer segment; pick lower endpoint\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m.next;\n\n while (p !== stop) {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if ((tan < tanMin || (tan === tanMin && p.x > m.x)) && locallyInside(p, hole)) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n }\n\n return m;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = 32767 * (x - minX) * invSize;\n y = 32767 * (y - minY) * invSize;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) &&\n locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b);\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n if ((equals(p1, q1) && equals(p2, q2)) ||\n (equals(p1, q2) && equals(p2, q1))) return true;\n return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 &&\n area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = null;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","var core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n","'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = false;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n","'use strict';\nfunction CompressedObject() {\n this.compressedSize = 0;\n this.uncompressedSize = 0;\n this.crc32 = 0;\n this.compressionMethod = null;\n this.compressedContent = null;\n}\n\nCompressedObject.prototype = {\n /**\n * Return the decompressed content in an unspecified format.\n * The format will depend on the decompressor.\n * @return {Object} the decompressed content.\n */\n getContent: function() {\n return null; // see implementation\n },\n /**\n * Return the compressed content in an unspecified format.\n * The format will depend on the compressed conten source.\n * @return {Object} the compressed content.\n */\n getCompressedContent: function() {\n return null; // see implementation\n }\n};\nmodule.exports = CompressedObject;\n","'use strict';\n\nvar utils = require('./utils');\nvar support = require('./support');\nvar nodeBuffer = require('./nodeBuffer');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var str, i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodeBuffer(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n // return buf2string(buf);\n // Chrome prefers to work with \"small\" chunks of data\n // for the method buf2string.\n // Firefox and Chrome has their own shortcut, IE doesn't seem to really care.\n var result = [], k = 0, len = buf.length, chunk = 65536;\n while (k < len) {\n var nextBoundary = utf8border(buf, Math.min(k + chunk, len));\n if (support.uint8array) {\n result.push(buf2string(buf.subarray(k, nextBoundary)));\n } else {\n result.push(buf2string(buf.slice(k, nextBoundary)));\n }\n k = nextBoundary;\n }\n return result.join(\"\");\n\n};\n// vim: set shiftwidth=4 softtabstop=4:\n","'use strict';\nvar DataReader = require('./dataReader');\nvar utils = require('./utils');\n\nfunction StringReader(data, optimizedBinaryString) {\n this.data = data;\n if (!optimizedBinaryString) {\n this.data = utils.string2binary(this.data);\n }\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n}\nStringReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n","'use strict';\nvar utils = require('./utils');\n\nfunction DataReader(data) {\n this.data = null; // type : see implementation\n this.length = 0;\n this.index = 0;\n this.zero = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specifed index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function(i) {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function(size) {\n // see implementations\n },\n /**\n * Find the last occurence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurence, -1 if not found.\n */\n lastIndexOfSignature: function(sig) {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1); // second\n }\n};\nmodule.exports = DataReader;\n","'use strict';\nvar ArrayReader = require('./arrayReader');\n\nfunction Uint8ArrayReader(data) {\n if (data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n }\n}\nUint8ArrayReader.prototype = new ArrayReader();\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n","'use strict';\nvar DataReader = require('./dataReader');\n\nfunction ArrayReader(data) {\n if (data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n\n for(var i = 0; i < this.data.length; i++) {\n data[i] = data[i] & 0xFF;\n }\n }\n}\nArrayReader.prototype = new DataReader();\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = ArrayReader;\n","'use strict';\nvar immediate = require('immediate');\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"finally\"] = function (callback) {\n if (typeof callback !== 'function') {\n return this;\n }\n var p = this.constructor;\n return this.then(resolve, reject);\n\n function resolve(value) {\n function yes () {\n return value;\n }\n return p.resolve(callback()).then(yes);\n }\n function reject(reason) {\n function no () {\n throw reason;\n }\n return p.resolve(callback()).then(no);\n }\n};\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n","\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (_global.default._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global.default._babelPolyfill = true;","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n if (!('URLSearchParams' in global) || (new global.URLSearchParams('?a=1').toString() !== 'a=1')) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c%20d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","'use strict';\n\nvar JSZip = require('jszip');\nmodule.exports = function(buffer) {\n\tvar zip = new JSZip(buffer);\n\tvar files = zip.file(/.+/);\n\tvar out = {};\n\tfiles.forEach(function(a) {\n\t\tif (a.name.slice(-3).toLowerCase() === 'shp' || a.name.slice(-3).toLowerCase() === 'dbf') {\n\t\t\tout[a.name] = a.asNodeBuffer();\n\t\t}\n\t\telse {\n\t\t\tout[a.name] = a.asText();\n\t\t}\n\t});\n\treturn out;\n};\n","'use strict';\n\nvar base64 = require('./base64');\n\n/**\nUsage:\n zip = new JSZip();\n zip.file(\"hello.txt\", \"Hello, World!\").file(\"tempfile\", \"nothing\");\n zip.folder(\"images\").file(\"smile.gif\", base64Data, {base64: true});\n zip.file(\"Xmas.txt\", \"Ho ho ho !\", {date : new Date(\"December 25, 2007 00:00:01\")});\n zip.remove(\"tempfile\");\n\n base64zip = zip.generate();\n\n**/\n\n/**\n * Representation a of zip file in js\n * @constructor\n * @param {String=|ArrayBuffer=|Uint8Array=} data the data to load, if any (optional).\n * @param {Object=} options the options for creating this objects (optional).\n */\nfunction JSZip(data, options) {\n // if this constructor is used without `new`, it adds `new` before itself:\n if(!(this instanceof JSZip)) return new JSZip(data, options);\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n this.files = {};\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n if (data) {\n this.load(data, options);\n }\n this.clone = function() {\n var newObj = new JSZip();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n}\nJSZip.prototype = require('./object');\nJSZip.prototype.load = require('./load');\nJSZip.support = require('./support');\nJSZip.defaults = require('./defaults');\n\n/**\n * @deprecated\n * This namespace will be removed in a future version without replacement.\n */\nJSZip.utils = require('./deprecatedPublicUtils');\n\nJSZip.base64 = {\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n encode : function(input) {\n return base64.encode(input);\n },\n /**\n * @deprecated\n * This method will be removed in a future version without replacement.\n */\n decode : function(input) {\n return base64.decode(input);\n }\n};\nJSZip.compressions = require('./compressions');\nmodule.exports = JSZip;\n","'use strict';\nvar USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\nvar pako = require(\"pako\");\nexports.uncompressInputType = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\nexports.compressInputType = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\nexports.compress = function(input, compressionOptions) {\n return pako.deflateRaw(input, {\n level : compressionOptions.level || -1 // default compression\n });\n};\nexports.uncompress = function(input) {\n return pako.inflateRaw(input);\n};\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\nvar utils = require('./utils');\n\nvar table = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n];\n\n/**\n *\n * Javascript crc32\n * http://www.webtoolkit.info/\n *\n */\nmodule.exports = function crc32(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if (typeof(crc) == \"undefined\") {\n crc = 0;\n }\n var x = 0;\n var y = 0;\n var b = 0;\n\n crc = crc ^ (-1);\n for (var i = 0, iTop = input.length; i < iTop; i++) {\n b = isArray ? input[i] : input.charCodeAt(i);\n y = (crc ^ b) & 0xFF;\n x = table[y];\n crc = (crc >>> 8) ^ x;\n }\n\n return crc ^ (-1);\n};\n// vim: set shiftwidth=4 softtabstop=4:\n","'use strict';\n\nvar utils = require('./utils');\n\n/**\n * An object to write any content to a string.\n * @constructor\n */\nvar StringWriter = function() {\n this.data = [];\n};\nStringWriter.prototype = {\n /**\n * Append any content to the current string.\n * @param {Object} input the content to add.\n */\n append: function(input) {\n input = utils.transformTo(\"string\", input);\n this.data.push(input);\n },\n /**\n * Finalize the construction an return the result.\n * @return {string} the generated string.\n */\n finalize: function() {\n return this.data.join(\"\");\n }\n};\n\nmodule.exports = StringWriter;\n","'use strict';\n\nvar utils = require('./utils');\n\n/**\n * An object to write any content to an Uint8Array.\n * @constructor\n * @param {number} length The length of the array.\n */\nvar Uint8ArrayWriter = function(length) {\n this.data = new Uint8Array(length);\n this.index = 0;\n};\nUint8ArrayWriter.prototype = {\n /**\n * Append any content to the current array.\n * @param {Object} input the content to add.\n */\n append: function(input) {\n if (input.length !== 0) {\n // with an empty Uint8Array, Opera fails with a \"Offset larger than array size\"\n input = utils.transformTo(\"uint8array\", input);\n this.data.set(input, this.index);\n this.index += input.length;\n }\n },\n /**\n * Finalize the construction an return the result.\n * @return {Uint8Array} the generated array.\n */\n finalize: function() {\n return this.data;\n }\n};\n\nmodule.exports = Uint8ArrayWriter;\n","'use strict';\nvar base64 = require('./base64');\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar ZipEntries = require('./zipEntries');\nmodule.exports = function(data, options) {\n var files, zipEntries, i, input;\n options = utils.extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString : false,\n createFolders: false,\n decodeFileName: utf8.utf8decode\n });\n if (options.base64) {\n data = base64.decode(data);\n }\n\n zipEntries = new ZipEntries(data, options);\n files = zipEntries.files;\n for (i = 0; i < files.length; i++) {\n input = files[i];\n this.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n this.comment = zipEntries.zipComment;\n }\n\n return this;\n};\n","'use strict';\nvar StringReader = require('./stringReader');\nvar NodeBufferReader = require('./nodeBufferReader');\nvar Uint8ArrayReader = require('./uint8ArrayReader');\nvar ArrayReader = require('./arrayReader');\nvar utils = require('./utils');\nvar sig = require('./signature');\nvar ZipEntry = require('./zipEntry');\nvar support = require('./support');\nvar jszipProto = require('./object');\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {String|ArrayBuffer|Uint8Array} data the binary stream to load.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(data, loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n if (data) {\n this.load(data);\n }\n}\nZipEntries.prototype = {\n /**\n * Check that the reader is on the speficied signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature: function(expectedSignature) {\n var signature = this.reader.readString(4);\n if (signature !== expectedSignature) {\n throw new Error(\"Corrupted zip or bug : unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n }\n },\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature: function(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n },\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral: function() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = utils.transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n },\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral: function() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.versionMadeBy = this.reader.readString(2);\n this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readString(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator: function() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n },\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles: function() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(sig.LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n },\n /**\n * Read the central directory.\n */\n readCentralDir: function() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readString(4) === sig.CENTRAL_FILE_HEADER) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n } else {\n // We found some records but not all.\n // Something is wrong but we got something for the user: no error here.\n // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n }\n }\n },\n /**\n * Read the end of central directory.\n */\n readEndOfCentral: function() {\n var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip : can't find end of central directory\");\n }\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : Javascript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n // The offsets seem wrong, but we have something at the specified offset.\n // So… we keep it.\n } else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n },\n prepareReader: function(data) {\n var type = utils.getTypeOf(data);\n utils.checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);\n }\n else if (type === \"nodebuffer\") {\n this.reader = new NodeBufferReader(data);\n }\n else if (support.uint8array) {\n this.reader = new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n } else if (support.array) {\n this.reader = new ArrayReader(utils.transformTo(\"array\", data));\n } else {\n throw new Error(\"Unexpected error: unsupported type '\" + type + \"'\");\n }\n },\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load: function(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n","'use strict';\nvar Uint8ArrayReader = require('./uint8ArrayReader');\n\nfunction NodeBufferReader(data) {\n this.data = data;\n this.length = this.data.length;\n this.index = 0;\n this.zero = 0;\n}\nNodeBufferReader.prototype = new Uint8ArrayReader();\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n this.checkOffset(size);\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = NodeBufferReader;\n","'use strict';\nvar StringReader = require('./stringReader');\nvar utils = require('./utils');\nvar CompressedObject = require('./compressedObject');\nvar jszipProto = require('./object');\nvar support = require('./support');\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted: function() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n },\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8: function() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n },\n /**\n * Prepare the function used to generate the compressed content from this ZipFile.\n * @param {DataReader} reader the reader to use.\n * @param {number} from the offset from where we should read the data.\n * @param {number} length the length of the data to read.\n * @return {Function} the callback to get the compressed content (the type depends of the DataReader class).\n */\n prepareCompressedContent: function(reader, from, length) {\n return function() {\n var previousIndex = reader.index;\n reader.setIndex(from);\n var compressedFileData = reader.readData(length);\n reader.setIndex(previousIndex);\n\n return compressedFileData;\n };\n },\n /**\n * Prepare the function used to generate the uncompressed content from this ZipFile.\n * @param {DataReader} reader the reader to use.\n * @param {number} from the offset from where we should read the data.\n * @param {number} length the length of the data to read.\n * @param {JSZip.compression} compression the compression used on this file.\n * @param {number} uncompressedSize the uncompressed size to expect.\n * @return {Function} the callback to get the uncompressed content (the type depends of the DataReader class).\n */\n prepareContent: function(reader, from, length, compression, uncompressedSize) {\n return function() {\n\n var compressedFileData = utils.transformTo(compression.uncompressInputType, this.getCompressedContent());\n var uncompressedFileData = compression.uncompress(compressedFileData);\n\n if (uncompressedFileData.length !== uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n\n return uncompressedFileData;\n };\n },\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart: function(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize == -1 || this.uncompressedSize == -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory \" + \"(compressedSize == -1 || uncompressedSize == -1)\");\n }\n\n compression = utils.findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject();\n this.decompressed.compressedSize = this.compressedSize;\n this.decompressed.uncompressedSize = this.uncompressedSize;\n this.decompressed.crc32 = this.crc32;\n this.decompressed.compressionMethod = this.compressionMethod;\n this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);\n this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);\n\n // we need to compute the crc32...\n if (this.loadOptions.checkCRC32) {\n this.decompressed = utils.transformTo(\"string\", this.decompressed.getContent());\n if (jszipProto.crc32(this.decompressed) !== this.crc32) {\n throw new Error(\"Corrupted zip : CRC32 mismatch\");\n }\n }\n },\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart: function(reader) {\n this.versionMadeBy = reader.readInt(2);\n this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n this.fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n this.fileName = reader.readData(this.fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n },\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes: function () {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n },\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField: function(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = new StringReader(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n },\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields: function(reader) {\n var start = reader.index,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n this.extraFields = this.extraFields || {};\n\n while (reader.index < start + this.extraFieldsLength) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readString(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8: function() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = jszipProto.utf8decode(this.fileName);\n this.fileCommentStr = jszipProto.utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n var fileNameByteArray = utils.transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n var commentByteArray = utils.transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n },\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath: function() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = new StringReader(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (jszipProto.crc32(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return jszipProto.utf8decode(extraReader.readString(upathField.length - 5));\n }\n return null;\n },\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment: function() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = new StringReader(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (jszipProto.crc32(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return jszipProto.utf8decode(extraReader.readString(ucommentField.length - 5));\n }\n return null;\n }\n};\nmodule.exports = ZipEntry;\n","'use strict';\nvar utils = require('./utils');\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2binary = function(str) {\n return utils.string2binary(str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2Uint8Array = function(str) {\n return utils.transformTo(\"uint8array\", str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.uint8Array2String = function(array) {\n return utils.transformTo(\"string\", array);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.string2Blob = function(str) {\n var buffer = utils.transformTo(\"arraybuffer\", str);\n return utils.arrayBuffer2Blob(buffer);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.arrayBuffer2Blob = function(buffer) {\n return utils.arrayBuffer2Blob(buffer);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.transformTo = function(outputType, input) {\n return utils.transformTo(outputType, input);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.getTypeOf = function(input) {\n return utils.getTypeOf(input);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.checkSupport = function(type) {\n return utils.checkSupport(type);\n};\n\n/**\n * @deprecated\n * This value will be removed in a future version without replacement.\n */\nexports.MAX_VALUE_16BITS = utils.MAX_VALUE_16BITS;\n\n/**\n * @deprecated\n * This value will be removed in a future version without replacement.\n */\nexports.MAX_VALUE_32BITS = utils.MAX_VALUE_32BITS;\n\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.pretty = function(str) {\n return utils.pretty(str);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.findCompression = function(compressionMethod) {\n return utils.findCompression(compressionMethod);\n};\n\n/**\n * @deprecated\n * This function will be removed in a future version without replacement.\n */\nexports.isRegExp = function (object) {\n return utils.isRegExp(object);\n};\n\n","'use strict';\nvar Promise = require('lie');\nmodule.exports = binaryAjax;\nfunction binaryAjax(url){\n\treturn new Promise(function(resolve,reject){\n\t\tvar type = url.slice(-3);\n\t\tvar ajax = new XMLHttpRequest();\n\t\tajax.open('GET',url,true);\n\t\tif(type !== 'prj' && type !== 'cpg'){\n\t\t\tajax.responseType='arraybuffer';\n\t\t}\n\t\tajax.addEventListener('load', function (){\n\t\t\tif(ajax.status>399){\n\t\t\t\tif(type==='prj' || type === 'cpg'){\n\t\t\t\t\treturn resolve(false);\n\t\t\t\t}else{\n\t\t\t\t\treturn reject(new Error(ajax.status));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(type !== 'prj' && type !== 'cpg'){\n\t\t\t\treturn resolve(new Buffer(ajax.response));\n\t\t\t} else {\n\t\t\t\treturn resolve(ajax.response);\n\t\t\t}\n\t\t}, false);\n\t\tajax.send();\n\t});\n}\n","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a